From a0534904c9a80612837b2d492c6c219714d1e420 Mon Sep 17 00:00:00 2001 From: Sergey Abramchuk Date: Sun, 9 Apr 2017 16:09:40 +0300 Subject: [PATCH] Delete polarise and add update mbedtls instead --- .../include/mbedtls}/aes.h | 147 +- .../include/mbedtls}/aesni.h | 65 +- .../include/mbedtls}/arc4.h | 55 +- .../include/mbedtls}/asn1.h | 189 +- .../include/mbedtls}/asn1write.h | 87 +- .../Vendors/mbedtls/include/mbedtls/base64.h | 88 + .../include/mbedtls}/bignum.h | 410 ++- .../include/mbedtls}/blowfish.h | 123 +- .../include/mbedtls}/bn_mul.h | 78 +- .../include/mbedtls}/camellia.h | 117 +- .../include/mbedtls}/ccm.h | 74 +- .../Vendors/mbedtls/include/mbedtls/certs.h | 99 + .../mbedtls/include/mbedtls/check_config.h | 628 ++++ .../include/mbedtls}/cipher.h | 511 ++-- .../mbedtls/include/mbedtls/cipher_internal.h | 109 + .../Vendors/mbedtls/include/mbedtls/cmac.h | 170 ++ .../mbedtls/include/mbedtls/compat-1.3.h | 2633 +++++++++++++++++ .../Vendors/mbedtls/include/mbedtls/config.h | 2600 ++++++++++++++++ .../include/mbedtls}/ctr_drbg.h | 165 +- .../Vendors/mbedtls/include/mbedtls/debug.h | 228 ++ .../include/mbedtls}/des.h | 133 +- .../include/mbedtls}/dhm.h | 189 +- .../include/mbedtls}/ecdh.h | 110 +- .../Vendors/mbedtls/include/mbedtls/ecdsa.h | 248 ++ .../Vendors/mbedtls/include/mbedtls/ecjpake.h | 238 ++ .../include/mbedtls}/ecp.h | 447 +-- .../Vendors/mbedtls/include/mbedtls/entropy.h | 287 ++ .../mbedtls/include/mbedtls/entropy_poll.h | 109 + .../include/mbedtls}/error.h | 63 +- .../include/mbedtls}/gcm.h | 98 +- .../Vendors/mbedtls/include/mbedtls/havege.h | 74 + .../include/mbedtls}/hmac_drbg.h | 160 +- .../Vendors/mbedtls/include/mbedtls/md.h | 354 +++ .../Vendors/mbedtls/include/mbedtls/md2.h | 136 + .../Vendors/mbedtls/include/mbedtls/md4.h | 136 + .../Vendors/mbedtls/include/mbedtls/md5.h | 136 + .../mbedtls/include/mbedtls/md_internal.h | 114 + .../include/mbedtls/memory_buffer_alloc.h | 150 + .../Vendors/mbedtls/include/mbedtls/net.h | 31 + .../mbedtls/include/mbedtls/net_sockets.h | 225 ++ .../Vendors/mbedtls/include/mbedtls/oid.h | 570 ++++ .../Vendors/mbedtls/include/mbedtls/padlock.h | 107 + .../include/mbedtls}/pem.h | 77 +- .../polarssl => mbedtls/include/mbedtls}/pk.h | 398 ++- .../mbedtls/include/mbedtls/pk_internal.h | 114 + .../include/mbedtls}/pkcs11.h | 93 +- .../Vendors/mbedtls/include/mbedtls/pkcs12.h | 119 + .../Vendors/mbedtls/include/mbedtls/pkcs5.h | 94 + .../mbedtls/include/mbedtls/platform.h | 295 ++ .../mbedtls/include/mbedtls/platform_time.h | 81 + .../mbedtls/include/mbedtls/ripemd160.h | 138 + .../include/mbedtls}/rsa.h | 341 +-- .../Vendors/mbedtls/include/mbedtls/sha1.h | 136 + .../Vendors/mbedtls/include/mbedtls/sha256.h | 141 + .../Vendors/mbedtls/include/mbedtls/sha512.h | 141 + .../Vendors/mbedtls/include/mbedtls/ssl.h | 2559 ++++++++++++++++ .../mbedtls/include/mbedtls/ssl_cache.h | 143 + .../include/mbedtls/ssl_ciphersuites.h | 321 ++ .../mbedtls/include/mbedtls/ssl_cookie.h | 108 + .../mbedtls/include/mbedtls/ssl_internal.h | 500 ++++ .../mbedtls/include/mbedtls/ssl_ticket.h | 135 + .../mbedtls/include/mbedtls/threading.h | 106 + .../Vendors/mbedtls/include/mbedtls/timing.h | 141 + .../Vendors/mbedtls/include/mbedtls/version.h | 111 + .../Vendors/mbedtls/include/mbedtls/x509.h | 331 +++ .../mbedtls/include/mbedtls/x509_crl.h | 173 ++ .../mbedtls/include/mbedtls/x509_crt.h | 654 ++++ .../include/mbedtls}/x509_csr.h | 152 +- .../Vendors/mbedtls/include/mbedtls/xtea.h | 139 + .../Vendors/mbedtls/lib/ios/libmbedcrypto.a | Bin 0 -> 1394432 bytes .../Vendors/mbedtls/lib/ios/libmbedtls.a | Bin 0 -> 738856 bytes .../Vendors/mbedtls/lib/ios/libmbedx509.a | Bin 0 -> 273024 bytes .../Vendors/mbedtls/lib/macos/libmbedcrypto.a | Bin 0 -> 1083520 bytes .../Vendors/mbedtls/lib/macos/libmbedtls.a | Bin 0 -> 542152 bytes .../Vendors/mbedtls/lib/macos/libmbedx509.a | Bin 0 -> 218720 bytes .../Vendors/mbedtls/lib/sim/libmbedcrypto.a | Bin 0 -> 1083408 bytes .../Vendors/mbedtls/lib/sim/libmbedtls.a | Bin 0 -> 542024 bytes .../Vendors/mbedtls/lib/sim/libmbedx509.a | Bin 0 -> 218648 bytes .../polarssl/include/polarssl/base64.h | 86 - .../Vendors/polarssl/include/polarssl/certs.h | 74 - .../polarssl/include/polarssl/check_config.h | 540 ---- .../polarssl/include/polarssl/cipher_wrap.h | 55 - .../polarssl/include/polarssl/compat-1.2.h | 392 --- .../polarssl/include/polarssl/config.h | 2227 -------------- .../polarssl/include/polarssl/config.h.orig | 2374 --------------- .../Vendors/polarssl/include/polarssl/debug.h | 154 - .../Vendors/polarssl/include/polarssl/ecdsa.h | 230 -- .../polarssl/include/polarssl/entropy.h | 243 -- .../polarssl/include/polarssl/entropy_poll.h | 76 - .../polarssl/include/polarssl/havege.h | 75 - .../Vendors/polarssl/include/polarssl/md.h | 397 --- .../Vendors/polarssl/include/polarssl/md2.h | 191 -- .../Vendors/polarssl/include/polarssl/md4.h | 197 -- .../Vendors/polarssl/include/polarssl/md5.h | 197 -- .../polarssl/include/polarssl/md_wrap.h | 69 - .../polarssl/include/polarssl/memory.h | 62 - .../include/polarssl/memory_buffer_alloc.h | 149 - .../Vendors/polarssl/include/polarssl/net.h | 157 - .../Vendors/polarssl/include/polarssl/oid.h | 571 ---- .../polarssl/include/polarssl/openssl.h | 148 - .../include/polarssl/openvpn-polarssl.h | 2 - .../polarssl/include/polarssl/padlock.h | 113 - .../polarssl/include/polarssl/pbkdf2.h | 90 - .../polarssl/include/polarssl/pk_wrap.h | 60 - .../polarssl/include/polarssl/pkcs12.h | 120 - .../Vendors/polarssl/include/polarssl/pkcs5.h | 101 - .../polarssl/include/polarssl/platform.h | 205 -- .../polarssl/include/polarssl/ripemd160.h | 201 -- .../Vendors/polarssl/include/polarssl/sha1.h | 197 -- .../polarssl/include/polarssl/sha256.h | 205 -- .../polarssl/include/polarssl/sha512.h | 204 -- .../Vendors/polarssl/include/polarssl/ssl.h | 2015 ------------- .../polarssl/include/polarssl/ssl_cache.h | 144 - .../include/polarssl/ssl_ciphersuites.h | 302 -- .../polarssl/include/polarssl/threading.h | 83 - .../polarssl/include/polarssl/timing.h | 99 - .../polarssl/include/polarssl/version.h | 111 - .../Vendors/polarssl/include/polarssl/x509.h | 342 --- .../polarssl/include/polarssl/x509_crl.h | 172 -- .../polarssl/include/polarssl/x509_crt.h | 568 ---- .../Vendors/polarssl/include/polarssl/xtea.h | 146 - .../Vendors/polarssl/lib/ios/libmbedtls.a | Bin 1266208 -> 0 bytes .../Vendors/polarssl/lib/macos/libmbedtls.a | Bin 1068632 -> 0 bytes .../Vendors/polarssl/lib/sim/libmbedtls.a | Bin 1018744 -> 0 bytes 124 files changed, 18232 insertions(+), 16344 deletions(-) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/aes.h (63%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/aesni.h (55%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/arc4.h (53%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/asn1.h (54%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/asn1write.h (71%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/base64.h rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/bignum.h (50%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/blowfish.h (57%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/bn_mul.h (94%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/camellia.h (64%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/ccm.h (60%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/certs.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/check_config.h rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/cipher.h (55%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/cipher_internal.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/cmac.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/compat-1.3.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/config.h rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/ctr_drbg.h (50%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/debug.h rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/des.h (63%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/dhm.h (56%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/ecdh.h (60%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecdsa.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecjpake.h rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/ecp.h (50%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/entropy.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/entropy_poll.h rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/error.h (57%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/gcm.h (67%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/havege.h rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/hmac_drbg.h (54%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md2.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md4.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md5.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md_internal.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/memory_buffer_alloc.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/net.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/net_sockets.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/oid.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/padlock.h rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/pem.h (50%) rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/pk.h (55%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pk_internal.h rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/pkcs11.h (54%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pkcs12.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pkcs5.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/platform.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/platform_time.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ripemd160.h rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/rsa.h (62%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha1.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha256.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha512.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_cache.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_ciphersuites.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_cookie.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_internal.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_ticket.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/threading.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/timing.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/version.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509_crl.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509_crt.h rename OpenVPN Adapter/Vendors/{polarssl/include/polarssl => mbedtls/include/mbedtls}/x509_csr.h (56%) create mode 100644 OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/xtea.h create mode 100644 OpenVPN Adapter/Vendors/mbedtls/lib/ios/libmbedcrypto.a create mode 100644 OpenVPN Adapter/Vendors/mbedtls/lib/ios/libmbedtls.a create mode 100644 OpenVPN Adapter/Vendors/mbedtls/lib/ios/libmbedx509.a create mode 100644 OpenVPN Adapter/Vendors/mbedtls/lib/macos/libmbedcrypto.a create mode 100644 OpenVPN Adapter/Vendors/mbedtls/lib/macos/libmbedtls.a create mode 100644 OpenVPN Adapter/Vendors/mbedtls/lib/macos/libmbedx509.a create mode 100644 OpenVPN Adapter/Vendors/mbedtls/lib/sim/libmbedcrypto.a create mode 100644 OpenVPN Adapter/Vendors/mbedtls/lib/sim/libmbedtls.a create mode 100644 OpenVPN Adapter/Vendors/mbedtls/lib/sim/libmbedx509.a delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/base64.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/certs.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/check_config.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/cipher_wrap.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/compat-1.2.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/config.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/config.h.orig delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/debug.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/ecdsa.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/entropy.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/entropy_poll.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/havege.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/md.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/md2.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/md4.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/md5.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/md_wrap.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/memory.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/memory_buffer_alloc.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/net.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/oid.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/openssl.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/openvpn-polarssl.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/padlock.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/pbkdf2.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/pk_wrap.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/pkcs12.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/pkcs5.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/platform.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/ripemd160.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/sha1.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/sha256.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/sha512.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/ssl.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/ssl_cache.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/ssl_ciphersuites.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/threading.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/timing.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/version.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/x509.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/x509_crl.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/x509_crt.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/include/polarssl/xtea.h delete mode 100644 OpenVPN Adapter/Vendors/polarssl/lib/ios/libmbedtls.a delete mode 100644 OpenVPN Adapter/Vendors/polarssl/lib/macos/libmbedtls.a delete mode 100644 OpenVPN Adapter/Vendors/polarssl/lib/sim/libmbedtls.a diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/aes.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/aes.h similarity index 63% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/aes.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/aes.h index 8bcc039..a36e825 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/aes.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/aes.h @@ -3,50 +3,43 @@ * * \brief AES block cipher * - * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_AES_H -#define POLARSSL_AES_H +#ifndef MBEDTLS_AES_H +#define MBEDTLS_AES_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif #include - -#if defined(_MSC_VER) && !defined(EFIX64) && !defined(EFI32) -#include -typedef UINT32 uint32_t; -#else -#include -#endif +#include /* padlock.c and aesni.c rely on these values! */ -#define AES_ENCRYPT 1 -#define AES_DECRYPT 0 +#define MBEDTLS_AES_ENCRYPT 1 +#define MBEDTLS_AES_DECRYPT 0 -#define POLARSSL_ERR_AES_INVALID_KEY_LENGTH -0x0020 /**< Invalid key length. */ -#define POLARSSL_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /**< Invalid data input length. */ +#define MBEDTLS_ERR_AES_INVALID_KEY_LENGTH -0x0020 /**< Invalid key length. */ +#define MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /**< Invalid data input length. */ -#if !defined(POLARSSL_AES_ALT) +#if !defined(MBEDTLS_AES_ALT) // Regular implementation // @@ -68,62 +61,62 @@ typedef struct uint32_t *rk; /*!< AES round keys */ uint32_t buf[68]; /*!< unaligned data */ } -aes_context; +mbedtls_aes_context; /** * \brief Initialize AES context * * \param ctx AES context to be initialized */ -void aes_init( aes_context *ctx ); +void mbedtls_aes_init( mbedtls_aes_context *ctx ); /** * \brief Clear AES context * * \param ctx AES context to be cleared */ -void aes_free( aes_context *ctx ); +void mbedtls_aes_free( mbedtls_aes_context *ctx ); /** * \brief AES key schedule (encryption) * * \param ctx AES context to be initialized * \param key encryption key - * \param keysize must be 128, 192 or 256 + * \param keybits must be 128, 192 or 256 * - * \return 0 if successful, or POLARSSL_ERR_AES_INVALID_KEY_LENGTH + * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_KEY_LENGTH */ -int aes_setkey_enc( aes_context *ctx, const unsigned char *key, - unsigned int keysize ); +int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key, + unsigned int keybits ); /** * \brief AES key schedule (decryption) * * \param ctx AES context to be initialized * \param key decryption key - * \param keysize must be 128, 192 or 256 + * \param keybits must be 128, 192 or 256 * - * \return 0 if successful, or POLARSSL_ERR_AES_INVALID_KEY_LENGTH + * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_KEY_LENGTH */ -int aes_setkey_dec( aes_context *ctx, const unsigned char *key, - unsigned int keysize ); +int mbedtls_aes_setkey_dec( mbedtls_aes_context *ctx, const unsigned char *key, + unsigned int keybits ); /** * \brief AES-ECB block encryption/decryption * * \param ctx AES context - * \param mode AES_ENCRYPT or AES_DECRYPT + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT * \param input 16-byte input block * \param output 16-byte output block * * \return 0 if successful */ -int aes_crypt_ecb( aes_context *ctx, +int mbedtls_aes_crypt_ecb( mbedtls_aes_context *ctx, int mode, const unsigned char input[16], unsigned char output[16] ); -#if defined(POLARSSL_CIPHER_MODE_CBC) +#if defined(MBEDTLS_CIPHER_MODE_CBC) /** * \brief AES-CBC buffer encryption/decryption * Length should be a multiple of the block @@ -138,29 +131,29 @@ int aes_crypt_ecb( aes_context *ctx, * module instead. * * \param ctx AES context - * \param mode AES_ENCRYPT or AES_DECRYPT + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT * \param length length of the input data * \param iv initialization vector (updated after use) * \param input buffer holding the input data * \param output buffer holding the output data * - * \return 0 if successful, or POLARSSL_ERR_AES_INVALID_INPUT_LENGTH + * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH */ -int aes_crypt_cbc( aes_context *ctx, +int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, int mode, size_t length, unsigned char iv[16], const unsigned char *input, unsigned char *output ); -#endif /* POLARSSL_CIPHER_MODE_CBC */ +#endif /* MBEDTLS_CIPHER_MODE_CBC */ -#if defined(POLARSSL_CIPHER_MODE_CFB) +#if defined(MBEDTLS_CIPHER_MODE_CFB) /** * \brief AES-CFB128 buffer encryption/decryption. * * Note: Due to the nature of CFB you should use the same key schedule for * both encryption and decryption. So a context initialized with - * aes_setkey_enc() for both AES_ENCRYPT and AES_DECRYPT. + * mbedtls_aes_setkey_enc() for both MBEDTLS_AES_ENCRYPT and MBEDTLS_AES_DECRYPT. * * \note Upon exit, the content of the IV is updated so that you can * call the function same function again on the following @@ -171,7 +164,7 @@ int aes_crypt_cbc( aes_context *ctx, * module instead. * * \param ctx AES context - * \param mode AES_ENCRYPT or AES_DECRYPT + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT * \param length length of the input data * \param iv_off offset in IV (updated after use) * \param iv initialization vector (updated after use) @@ -180,7 +173,7 @@ int aes_crypt_cbc( aes_context *ctx, * * \return 0 if successful */ -int aes_crypt_cfb128( aes_context *ctx, +int mbedtls_aes_crypt_cfb128( mbedtls_aes_context *ctx, int mode, size_t length, size_t *iv_off, @@ -193,7 +186,7 @@ int aes_crypt_cfb128( aes_context *ctx, * * Note: Due to the nature of CFB you should use the same key schedule for * both encryption and decryption. So a context initialized with - * aes_setkey_enc() for both AES_ENCRYPT and AES_DECRYPT. + * mbedtls_aes_setkey_enc() for both MBEDTLS_AES_ENCRYPT and MBEDTLS_AES_DECRYPT. * * \note Upon exit, the content of the IV is updated so that you can * call the function same function again on the following @@ -204,7 +197,7 @@ int aes_crypt_cfb128( aes_context *ctx, * module instead. * * \param ctx AES context - * \param mode AES_ENCRYPT or AES_DECRYPT + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT * \param length length of the input data * \param iv initialization vector (updated after use) * \param input buffer holding the input data @@ -212,15 +205,15 @@ int aes_crypt_cfb128( aes_context *ctx, * * \return 0 if successful */ -int aes_crypt_cfb8( aes_context *ctx, +int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, int mode, size_t length, unsigned char iv[16], const unsigned char *input, unsigned char *output ); -#endif /*POLARSSL_CIPHER_MODE_CFB */ +#endif /*MBEDTLS_CIPHER_MODE_CFB */ -#if defined(POLARSSL_CIPHER_MODE_CTR) +#if defined(MBEDTLS_CIPHER_MODE_CTR) /** * \brief AES-CTR buffer encryption/decryption * @@ -228,7 +221,7 @@ int aes_crypt_cfb8( aes_context *ctx, * * Note: Due to the nature of CTR you should use the same key schedule for * both encryption and decryption. So a context initialized with - * aes_setkey_enc() for both AES_ENCRYPT and AES_DECRYPT. + * mbedtls_aes_setkey_enc() for both MBEDTLS_AES_ENCRYPT and MBEDTLS_AES_DECRYPT. * * \param ctx AES context * \param length The length of the data @@ -243,22 +236,48 @@ int aes_crypt_cfb8( aes_context *ctx, * * \return 0 if successful */ -int aes_crypt_ctr( aes_context *ctx, +int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx, size_t length, size_t *nc_off, unsigned char nonce_counter[16], unsigned char stream_block[16], const unsigned char *input, unsigned char *output ); -#endif /* POLARSSL_CIPHER_MODE_CTR */ +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + +/** + * \brief Internal AES block encryption function + * (Only exposed to allow overriding it, + * see MBEDTLS_AES_ENCRYPT_ALT) + * + * \param ctx AES context + * \param input Plaintext block + * \param output Output (ciphertext) block + */ +void mbedtls_aes_encrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ); + +/** + * \brief Internal AES block decryption function + * (Only exposed to allow overriding it, + * see MBEDTLS_AES_DECRYPT_ALT) + * + * \param ctx AES context + * \param input Ciphertext block + * \param output Output (plaintext) block + */ +void mbedtls_aes_decrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ); #ifdef __cplusplus } #endif -#else /* POLARSSL_AES_ALT */ +#else /* MBEDTLS_AES_ALT */ #include "aes_alt.h" -#endif /* POLARSSL_AES_ALT */ +#endif /* MBEDTLS_AES_ALT */ #ifdef __cplusplus extern "C" { @@ -269,7 +288,7 @@ extern "C" { * * \return 0 if successful, or 1 if the test failed */ -int aes_self_test( int verbose ); +int mbedtls_aes_self_test( int verbose ); #ifdef __cplusplus } diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/aesni.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/aesni.h similarity index 55% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/aesni.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/aesni.h index 02419ed..b1b7f1c 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/aesni.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/aesni.h @@ -3,39 +3,38 @@ * * \brief AES-NI for hardware AES acceleration on some Intel processors * - * Copyright (C) 2013, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_AESNI_H -#define POLARSSL_AESNI_H +#ifndef MBEDTLS_AESNI_H +#define MBEDTLS_AESNI_H #include "aes.h" -#define POLARSSL_AESNI_AES 0x02000000u -#define POLARSSL_AESNI_CLMUL 0x00000002u +#define MBEDTLS_AESNI_AES 0x02000000u +#define MBEDTLS_AESNI_CLMUL 0x00000002u -#if defined(POLARSSL_HAVE_ASM) && defined(__GNUC__) && \ +#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) && \ ( defined(__amd64__) || defined(__x86_64__) ) && \ - ! defined(POLARSSL_HAVE_X86_64) -#define POLARSSL_HAVE_X86_64 + ! defined(MBEDTLS_HAVE_X86_64) +#define MBEDTLS_HAVE_X86_64 #endif -#if defined(POLARSSL_HAVE_X86_64) +#if defined(MBEDTLS_HAVE_X86_64) #ifdef __cplusplus extern "C" { @@ -45,23 +44,23 @@ extern "C" { * \brief AES-NI features detection routine * * \param what The feature to detect - * (POLARSSL_AESNI_AES or POLARSSL_AESNI_CLMUL) + * (MBEDTLS_AESNI_AES or MBEDTLS_AESNI_CLMUL) * * \return 1 if CPU has support for the feature, 0 otherwise */ -int aesni_supports( unsigned int what ); +int mbedtls_aesni_has_support( unsigned int what ); /** * \brief AES-NI AES-ECB block en(de)cryption * * \param ctx AES context - * \param mode AES_ENCRYPT or AES_DECRYPT + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT * \param input 16-byte input block * \param output 16-byte output block * * \return 0 on success (cannot fail) */ -int aesni_crypt_ecb( aes_context *ctx, +int mbedtls_aesni_crypt_ecb( mbedtls_aes_context *ctx, int mode, const unsigned char input[16], unsigned char output[16] ); @@ -76,7 +75,7 @@ int aesni_crypt_ecb( aes_context *ctx, * \note Both operands and result are bit strings interpreted as * elements of GF(2^128) as per the GCM spec. */ -void aesni_gcm_mult( unsigned char c[16], +void mbedtls_aesni_gcm_mult( unsigned char c[16], const unsigned char a[16], const unsigned char b[16] ); @@ -87,7 +86,7 @@ void aesni_gcm_mult( unsigned char c[16], * \param fwdkey Original round keys (for encryption) * \param nr Number of rounds (that is, number of round keys minus one) */ -void aesni_inverse_key( unsigned char *invkey, +void mbedtls_aesni_inverse_key( unsigned char *invkey, const unsigned char *fwdkey, int nr ); /** @@ -97,9 +96,9 @@ void aesni_inverse_key( unsigned char *invkey, * \param key Encryption key * \param bits Key size in bits (must be 128, 192 or 256) * - * \return 0 if successful, or POLARSSL_ERR_AES_INVALID_KEY_LENGTH + * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_KEY_LENGTH */ -int aesni_setkey_enc( unsigned char *rk, +int mbedtls_aesni_setkey_enc( unsigned char *rk, const unsigned char *key, size_t bits ); @@ -107,6 +106,6 @@ int aesni_setkey_enc( unsigned char *rk, } #endif -#endif /* POLARSSL_HAVE_X86_64 */ +#endif /* MBEDTLS_HAVE_X86_64 */ -#endif /* POLARSSL_AESNI_H */ +#endif /* MBEDTLS_AESNI_H */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/arc4.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/arc4.h similarity index 53% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/arc4.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/arc4.h index 9de0577..5fc5395 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/arc4.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/arc4.h @@ -3,36 +3,35 @@ * * \brief The ARCFOUR stream cipher * - * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_ARC4_H -#define POLARSSL_ARC4_H +#ifndef MBEDTLS_ARC4_H +#define MBEDTLS_ARC4_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif #include -#if !defined(POLARSSL_ARC4_ALT) +#if !defined(MBEDTLS_ARC4_ALT) // Regular implementation // @@ -49,21 +48,21 @@ typedef struct int y; /*!< permutation index */ unsigned char m[256]; /*!< permutation table */ } -arc4_context; +mbedtls_arc4_context; /** * \brief Initialize ARC4 context * * \param ctx ARC4 context to be initialized */ -void arc4_init( arc4_context *ctx ); +void mbedtls_arc4_init( mbedtls_arc4_context *ctx ); /** * \brief Clear ARC4 context * * \param ctx ARC4 context to be cleared */ -void arc4_free( arc4_context *ctx ); +void mbedtls_arc4_free( mbedtls_arc4_context *ctx ); /** * \brief ARC4 key schedule @@ -72,7 +71,7 @@ void arc4_free( arc4_context *ctx ); * \param key the secret key * \param keylen length of the key, in bytes */ -void arc4_setup( arc4_context *ctx, const unsigned char *key, +void mbedtls_arc4_setup( mbedtls_arc4_context *ctx, const unsigned char *key, unsigned int keylen ); /** @@ -85,16 +84,16 @@ void arc4_setup( arc4_context *ctx, const unsigned char *key, * * \return 0 if successful */ -int arc4_crypt( arc4_context *ctx, size_t length, const unsigned char *input, +int mbedtls_arc4_crypt( mbedtls_arc4_context *ctx, size_t length, const unsigned char *input, unsigned char *output ); #ifdef __cplusplus } #endif -#else /* POLARSSL_ARC4_ALT */ +#else /* MBEDTLS_ARC4_ALT */ #include "arc4_alt.h" -#endif /* POLARSSL_ARC4_ALT */ +#endif /* MBEDTLS_ARC4_ALT */ #ifdef __cplusplus extern "C" { @@ -105,7 +104,7 @@ extern "C" { * * \return 0 if successful, or 1 if the test failed */ -int arc4_self_test( int verbose ); +int mbedtls_arc4_self_test( int verbose ); #ifdef __cplusplus } diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/asn1.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/asn1.h similarity index 54% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/asn1.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/asn1.h index 0bfa929..082832c 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/asn1.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/asn1.h @@ -3,36 +3,35 @@ * * \brief Generic ASN.1 parsing * - * Copyright (C) 2006-2013, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_ASN1_H -#define POLARSSL_ASN1_H +#ifndef MBEDTLS_ASN1_H +#define MBEDTLS_ASN1_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif #include -#if defined(POLARSSL_BIGNUM_C) +#if defined(MBEDTLS_BIGNUM_C) #include "bignum.h" #endif @@ -48,13 +47,13 @@ * ASN1 is a standard to specify data structures. * \{ */ -#define POLARSSL_ERR_ASN1_OUT_OF_DATA -0x0060 /**< Out of data when parsing an ASN1 data structure. */ -#define POLARSSL_ERR_ASN1_UNEXPECTED_TAG -0x0062 /**< ASN1 tag was of an unexpected value. */ -#define POLARSSL_ERR_ASN1_INVALID_LENGTH -0x0064 /**< Error when trying to determine the length or invalid length. */ -#define POLARSSL_ERR_ASN1_LENGTH_MISMATCH -0x0066 /**< Actual length differs from expected length. */ -#define POLARSSL_ERR_ASN1_INVALID_DATA -0x0068 /**< Data is invalid. (not used) */ -#define POLARSSL_ERR_ASN1_MALLOC_FAILED -0x006A /**< Memory allocation failed */ -#define POLARSSL_ERR_ASN1_BUF_TOO_SMALL -0x006C /**< Buffer too small when writing ASN.1 data structure. */ +#define MBEDTLS_ERR_ASN1_OUT_OF_DATA -0x0060 /**< Out of data when parsing an ASN1 data structure. */ +#define MBEDTLS_ERR_ASN1_UNEXPECTED_TAG -0x0062 /**< ASN1 tag was of an unexpected value. */ +#define MBEDTLS_ERR_ASN1_INVALID_LENGTH -0x0064 /**< Error when trying to determine the length or invalid length. */ +#define MBEDTLS_ERR_ASN1_LENGTH_MISMATCH -0x0066 /**< Actual length differs from expected length. */ +#define MBEDTLS_ERR_ASN1_INVALID_DATA -0x0068 /**< Data is invalid. (not used) */ +#define MBEDTLS_ERR_ASN1_ALLOC_FAILED -0x006A /**< Memory allocation failed */ +#define MBEDTLS_ERR_ASN1_BUF_TOO_SMALL -0x006C /**< Buffer too small when writing ASN.1 data structure. */ /* \} name */ @@ -66,45 +65,43 @@ * - 0x02 -- tag indicating INTEGER * - 0x01 -- length in octets * - 0x05 -- value - * Such sequences are typically read into \c ::x509_buf. + * Such sequences are typically read into \c ::mbedtls_x509_buf. * \{ */ -#define ASN1_BOOLEAN 0x01 -#define ASN1_INTEGER 0x02 -#define ASN1_BIT_STRING 0x03 -#define ASN1_OCTET_STRING 0x04 -#define ASN1_NULL 0x05 -#define ASN1_OID 0x06 -#define ASN1_UTF8_STRING 0x0C -#define ASN1_SEQUENCE 0x10 -#define ASN1_SET 0x11 -#define ASN1_PRINTABLE_STRING 0x13 -#define ASN1_T61_STRING 0x14 -#define ASN1_IA5_STRING 0x16 -#define ASN1_UTC_TIME 0x17 -#define ASN1_GENERALIZED_TIME 0x18 -#define ASN1_UNIVERSAL_STRING 0x1C -#define ASN1_BMP_STRING 0x1E -#define ASN1_PRIMITIVE 0x00 -#define ASN1_CONSTRUCTED 0x20 -#define ASN1_CONTEXT_SPECIFIC 0x80 +#define MBEDTLS_ASN1_BOOLEAN 0x01 +#define MBEDTLS_ASN1_INTEGER 0x02 +#define MBEDTLS_ASN1_BIT_STRING 0x03 +#define MBEDTLS_ASN1_OCTET_STRING 0x04 +#define MBEDTLS_ASN1_NULL 0x05 +#define MBEDTLS_ASN1_OID 0x06 +#define MBEDTLS_ASN1_UTF8_STRING 0x0C +#define MBEDTLS_ASN1_SEQUENCE 0x10 +#define MBEDTLS_ASN1_SET 0x11 +#define MBEDTLS_ASN1_PRINTABLE_STRING 0x13 +#define MBEDTLS_ASN1_T61_STRING 0x14 +#define MBEDTLS_ASN1_IA5_STRING 0x16 +#define MBEDTLS_ASN1_UTC_TIME 0x17 +#define MBEDTLS_ASN1_GENERALIZED_TIME 0x18 +#define MBEDTLS_ASN1_UNIVERSAL_STRING 0x1C +#define MBEDTLS_ASN1_BMP_STRING 0x1E +#define MBEDTLS_ASN1_PRIMITIVE 0x00 +#define MBEDTLS_ASN1_CONSTRUCTED 0x20 +#define MBEDTLS_ASN1_CONTEXT_SPECIFIC 0x80 /* \} name */ /* \} addtogroup asn1_module */ /** Returns the size of the binary string, without the trailing \\0 */ -#define OID_SIZE(x) (sizeof(x) - 1) +#define MBEDTLS_OID_SIZE(x) (sizeof(x) - 1) /** - * Compares an asn1_buf structure to a reference OID. + * Compares an mbedtls_asn1_buf structure to a reference OID. * - * Only works for 'defined' oid_str values (OID_HMAC_SHA1), you cannot use a + * Only works for 'defined' oid_str values (MBEDTLS_OID_HMAC_SHA1), you cannot use a * 'unsigned char *oid' here! - * - * Warning: returns true when the OIDs are equal (unlike memcmp)! */ -#define OID_CMP(oid_str, oid_buf) \ - ( ( OID_SIZE(oid_str) == (oid_buf)->len ) && \ - memcmp( (oid_str), (oid_buf)->p, (oid_buf)->len) == 0 ) +#define MBEDTLS_OID_CMP(oid_str, oid_buf) \ + ( ( MBEDTLS_OID_SIZE(oid_str) != (oid_buf)->len ) || \ + memcmp( (oid_str), (oid_buf)->p, (oid_buf)->len) != 0 ) #ifdef __cplusplus extern "C" { @@ -118,46 +115,46 @@ extern "C" { /** * Type-length-value structure that allows for ASN1 using DER. */ -typedef struct _asn1_buf +typedef struct mbedtls_asn1_buf { - int tag; /**< ASN1 type, e.g. ASN1_UTF8_STRING. */ - size_t len; /**< ASN1 length, e.g. in octets. */ + int tag; /**< ASN1 type, e.g. MBEDTLS_ASN1_UTF8_STRING. */ + size_t len; /**< ASN1 length, in octets. */ unsigned char *p; /**< ASN1 data, e.g. in ASCII. */ } -asn1_buf; +mbedtls_asn1_buf; /** * Container for ASN1 bit strings. */ -typedef struct _asn1_bitstring +typedef struct mbedtls_asn1_bitstring { - size_t len; /**< ASN1 length, e.g. in octets. */ + size_t len; /**< ASN1 length, in octets. */ unsigned char unused_bits; /**< Number of unused bits at the end of the string */ unsigned char *p; /**< Raw ASN1 data for the bit string */ } -asn1_bitstring; +mbedtls_asn1_bitstring; /** * Container for a sequence of ASN.1 items */ -typedef struct _asn1_sequence +typedef struct mbedtls_asn1_sequence { - asn1_buf buf; /**< Buffer containing the given ASN.1 item. */ - struct _asn1_sequence *next; /**< The next entry in the sequence. */ + mbedtls_asn1_buf buf; /**< Buffer containing the given ASN.1 item. */ + struct mbedtls_asn1_sequence *next; /**< The next entry in the sequence. */ } -asn1_sequence; +mbedtls_asn1_sequence; /** * Container for a sequence or list of 'named' ASN.1 data items */ -typedef struct _asn1_named_data +typedef struct mbedtls_asn1_named_data { - asn1_buf oid; /**< The object identifier. */ - asn1_buf val; /**< The named value. */ - struct _asn1_named_data *next; /**< The next entry in the sequence. */ + mbedtls_asn1_buf oid; /**< The object identifier. */ + mbedtls_asn1_buf val; /**< The named value. */ + struct mbedtls_asn1_named_data *next; /**< The next entry in the sequence. */ unsigned char next_merged; /**< Merge next item into the current one? */ } -asn1_named_data; +mbedtls_asn1_named_data; /** * \brief Get the length of an ASN.1 element. @@ -167,11 +164,11 @@ asn1_named_data; * \param end End of data * \param len The variable that will receive the value * - * \return 0 if successful, POLARSSL_ERR_ASN1_OUT_OF_DATA on reaching - * end of data, POLARSSL_ERR_ASN1_INVALID_LENGTH if length is + * \return 0 if successful, MBEDTLS_ERR_ASN1_OUT_OF_DATA on reaching + * end of data, MBEDTLS_ERR_ASN1_INVALID_LENGTH if length is * unparseable. */ -int asn1_get_len( unsigned char **p, +int mbedtls_asn1_get_len( unsigned char **p, const unsigned char *end, size_t *len ); @@ -184,10 +181,10 @@ int asn1_get_len( unsigned char **p, * \param len The variable that will receive the length * \param tag The expected tag * - * \return 0 if successful, POLARSSL_ERR_ASN1_UNEXPECTED_TAG if tag did + * \return 0 if successful, MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if tag did * not match requested tag, or another specific ASN.1 error code. */ -int asn1_get_tag( unsigned char **p, +int mbedtls_asn1_get_tag( unsigned char **p, const unsigned char *end, size_t *len, int tag ); @@ -201,7 +198,7 @@ int asn1_get_tag( unsigned char **p, * * \return 0 if successful or a specific ASN.1 error code. */ -int asn1_get_bool( unsigned char **p, +int mbedtls_asn1_get_bool( unsigned char **p, const unsigned char *end, int *val ); @@ -215,7 +212,7 @@ int asn1_get_bool( unsigned char **p, * * \return 0 if successful or a specific ASN.1 error code. */ -int asn1_get_int( unsigned char **p, +int mbedtls_asn1_get_int( unsigned char **p, const unsigned char *end, int *val ); @@ -229,8 +226,8 @@ int asn1_get_int( unsigned char **p, * * \return 0 if successful or a specific ASN.1 error code. */ -int asn1_get_bitstring( unsigned char **p, const unsigned char *end, - asn1_bitstring *bs); +int mbedtls_asn1_get_bitstring( unsigned char **p, const unsigned char *end, + mbedtls_asn1_bitstring *bs); /** * \brief Retrieve a bitstring ASN.1 tag without unused bits and its @@ -243,7 +240,7 @@ int asn1_get_bitstring( unsigned char **p, const unsigned char *end, * * \return 0 if successful or a specific ASN.1 error code. */ -int asn1_get_bitstring_null( unsigned char **p, const unsigned char *end, +int mbedtls_asn1_get_bitstring_null( unsigned char **p, const unsigned char *end, size_t *len ); /** @@ -257,12 +254,12 @@ int asn1_get_bitstring_null( unsigned char **p, const unsigned char *end, * * \return 0 if successful or a specific ASN.1 error code. */ -int asn1_get_sequence_of( unsigned char **p, +int mbedtls_asn1_get_sequence_of( unsigned char **p, const unsigned char *end, - asn1_sequence *cur, + mbedtls_asn1_sequence *cur, int tag); -#if defined(POLARSSL_BIGNUM_C) +#if defined(MBEDTLS_BIGNUM_C) /** * \brief Retrieve a MPI value from an integer ASN.1 tag. * Updates the pointer to immediately behind the full tag. @@ -273,10 +270,10 @@ int asn1_get_sequence_of( unsigned char **p, * * \return 0 if successful or a specific ASN.1 or MPI error code. */ -int asn1_get_mpi( unsigned char **p, +int mbedtls_asn1_get_mpi( unsigned char **p, const unsigned char *end, - mpi *X ); -#endif /* POLARSSL_BIGNUM_C */ + mbedtls_mpi *X ); +#endif /* MBEDTLS_BIGNUM_C */ /** * \brief Retrieve an AlgorithmIdentifier ASN.1 sequence. @@ -290,9 +287,9 @@ int asn1_get_mpi( unsigned char **p, * * \return 0 if successful or a specific ASN.1 or MPI error code. */ -int asn1_get_alg( unsigned char **p, +int mbedtls_asn1_get_alg( unsigned char **p, const unsigned char *end, - asn1_buf *alg, asn1_buf *params ); + mbedtls_asn1_buf *alg, mbedtls_asn1_buf *params ); /** * \brief Retrieve an AlgorithmIdentifier ASN.1 sequence with NULL or no @@ -306,9 +303,9 @@ int asn1_get_alg( unsigned char **p, * * \return 0 if successful or a specific ASN.1 or MPI error code. */ -int asn1_get_alg_null( unsigned char **p, +int mbedtls_asn1_get_alg_null( unsigned char **p, const unsigned char *end, - asn1_buf *alg ); + mbedtls_asn1_buf *alg ); /** * \brief Find a specific named_data entry in a sequence or list based on @@ -320,23 +317,23 @@ int asn1_get_alg_null( unsigned char **p, * * \return NULL if not found, or a pointer to the existing entry. */ -asn1_named_data *asn1_find_named_data( asn1_named_data *list, +mbedtls_asn1_named_data *mbedtls_asn1_find_named_data( mbedtls_asn1_named_data *list, const char *oid, size_t len ); /** - * \brief Free a asn1_named_data entry + * \brief Free a mbedtls_asn1_named_data entry * * \param entry The named data entry to free */ -void asn1_free_named_data( asn1_named_data *entry ); +void mbedtls_asn1_free_named_data( mbedtls_asn1_named_data *entry ); /** - * \brief Free all entries in a asn1_named_data list + * \brief Free all entries in a mbedtls_asn1_named_data list * Head will be set to NULL * * \param head Pointer to the head of the list of named data entries to free */ -void asn1_free_named_data_list( asn1_named_data **head ); +void mbedtls_asn1_free_named_data_list( mbedtls_asn1_named_data **head ); #ifdef __cplusplus } diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/asn1write.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/asn1write.h similarity index 71% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/asn1write.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/asn1write.h index 154a6ba..73ff32b 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/asn1write.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/asn1write.h @@ -3,30 +3,29 @@ * * \brief ASN.1 buffer writing functionality * - * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_ASN1_WRITE_H -#define POLARSSL_ASN1_WRITE_H +#ifndef MBEDTLS_ASN1_WRITE_H +#define MBEDTLS_ASN1_WRITE_H #include "asn1.h" -#define ASN1_CHK_ADD(g, f) do { if( ( ret = f ) < 0 ) return( ret ); else \ +#define MBEDTLS_ASN1_CHK_ADD(g, f) do { if( ( ret = f ) < 0 ) return( ret ); else \ g += ret; } while( 0 ) #ifdef __cplusplus @@ -43,7 +42,7 @@ extern "C" { * * \return the length written or a negative error code */ -int asn1_write_len( unsigned char **p, unsigned char *start, size_t len ); +int mbedtls_asn1_write_len( unsigned char **p, unsigned char *start, size_t len ); /** * \brief Write a ASN.1 tag in ASN.1 format @@ -55,7 +54,7 @@ int asn1_write_len( unsigned char **p, unsigned char *start, size_t len ); * * \return the length written or a negative error code */ -int asn1_write_tag( unsigned char **p, unsigned char *start, +int mbedtls_asn1_write_tag( unsigned char **p, unsigned char *start, unsigned char tag ); /** @@ -69,12 +68,12 @@ int asn1_write_tag( unsigned char **p, unsigned char *start, * * \return the length written or a negative error code */ -int asn1_write_raw_buffer( unsigned char **p, unsigned char *start, +int mbedtls_asn1_write_raw_buffer( unsigned char **p, unsigned char *start, const unsigned char *buf, size_t size ); -#if defined(POLARSSL_BIGNUM_C) +#if defined(MBEDTLS_BIGNUM_C) /** - * \brief Write a big number (ASN1_INTEGER) in ASN.1 format + * \brief Write a big number (MBEDTLS_ASN1_INTEGER) in ASN.1 format * Note: function works backwards in data buffer * * \param p reference to current position pointer @@ -83,11 +82,11 @@ int asn1_write_raw_buffer( unsigned char **p, unsigned char *start, * * \return the length written or a negative error code */ -int asn1_write_mpi( unsigned char **p, unsigned char *start, mpi *X ); -#endif /* POLARSSL_BIGNUM_C */ +int mbedtls_asn1_write_mpi( unsigned char **p, unsigned char *start, const mbedtls_mpi *X ); +#endif /* MBEDTLS_BIGNUM_C */ /** - * \brief Write a NULL tag (ASN1_NULL) with zero data in ASN.1 format + * \brief Write a NULL tag (MBEDTLS_ASN1_NULL) with zero data in ASN.1 format * Note: function works backwards in data buffer * * \param p reference to current position pointer @@ -95,10 +94,10 @@ int asn1_write_mpi( unsigned char **p, unsigned char *start, mpi *X ); * * \return the length written or a negative error code */ -int asn1_write_null( unsigned char **p, unsigned char *start ); +int mbedtls_asn1_write_null( unsigned char **p, unsigned char *start ); /** - * \brief Write an OID tag (ASN1_OID) and data in ASN.1 format + * \brief Write an OID tag (MBEDTLS_ASN1_OID) and data in ASN.1 format * Note: function works backwards in data buffer * * \param p reference to current position pointer @@ -108,7 +107,7 @@ int asn1_write_null( unsigned char **p, unsigned char *start ); * * \return the length written or a negative error code */ -int asn1_write_oid( unsigned char **p, unsigned char *start, +int mbedtls_asn1_write_oid( unsigned char **p, unsigned char *start, const char *oid, size_t oid_len ); /** @@ -124,12 +123,12 @@ int asn1_write_oid( unsigned char **p, unsigned char *start, * * \return the length written or a negative error code */ -int asn1_write_algorithm_identifier( unsigned char **p, unsigned char *start, +int mbedtls_asn1_write_algorithm_identifier( unsigned char **p, unsigned char *start, const char *oid, size_t oid_len, size_t par_len ); /** - * \brief Write a boolean tag (ASN1_BOOLEAN) and value in ASN.1 format + * \brief Write a boolean tag (MBEDTLS_ASN1_BOOLEAN) and value in ASN.1 format * Note: function works backwards in data buffer * * \param p reference to current position pointer @@ -138,10 +137,10 @@ int asn1_write_algorithm_identifier( unsigned char **p, unsigned char *start, * * \return the length written or a negative error code */ -int asn1_write_bool( unsigned char **p, unsigned char *start, int boolean ); +int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, int boolean ); /** - * \brief Write an int tag (ASN1_INTEGER) and value in ASN.1 format + * \brief Write an int tag (MBEDTLS_ASN1_INTEGER) and value in ASN.1 format * Note: function works backwards in data buffer * * \param p reference to current position pointer @@ -150,10 +149,10 @@ int asn1_write_bool( unsigned char **p, unsigned char *start, int boolean ); * * \return the length written or a negative error code */ -int asn1_write_int( unsigned char **p, unsigned char *start, int val ); +int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val ); /** - * \brief Write a printable string tag (ASN1_PRINTABLE_STRING) and + * \brief Write a printable string tag (MBEDTLS_ASN1_PRINTABLE_STRING) and * value in ASN.1 format * Note: function works backwards in data buffer * @@ -164,11 +163,11 @@ int asn1_write_int( unsigned char **p, unsigned char *start, int val ); * * \return the length written or a negative error code */ -int asn1_write_printable_string( unsigned char **p, unsigned char *start, +int mbedtls_asn1_write_printable_string( unsigned char **p, unsigned char *start, const char *text, size_t text_len ); /** - * \brief Write an IA5 string tag (ASN1_IA5_STRING) and + * \brief Write an IA5 string tag (MBEDTLS_ASN1_IA5_STRING) and * value in ASN.1 format * Note: function works backwards in data buffer * @@ -179,11 +178,11 @@ int asn1_write_printable_string( unsigned char **p, unsigned char *start, * * \return the length written or a negative error code */ -int asn1_write_ia5_string( unsigned char **p, unsigned char *start, +int mbedtls_asn1_write_ia5_string( unsigned char **p, unsigned char *start, const char *text, size_t text_len ); /** - * \brief Write a bitstring tag (ASN1_BIT_STRING) and + * \brief Write a bitstring tag (MBEDTLS_ASN1_BIT_STRING) and * value in ASN.1 format * Note: function works backwards in data buffer * @@ -194,11 +193,11 @@ int asn1_write_ia5_string( unsigned char **p, unsigned char *start, * * \return the length written or a negative error code */ -int asn1_write_bitstring( unsigned char **p, unsigned char *start, +int mbedtls_asn1_write_bitstring( unsigned char **p, unsigned char *start, const unsigned char *buf, size_t bits ); /** - * \brief Write an octet string tag (ASN1_OCTET_STRING) and + * \brief Write an octet string tag (MBEDTLS_ASN1_OCTET_STRING) and * value in ASN.1 format * Note: function works backwards in data buffer * @@ -209,7 +208,7 @@ int asn1_write_bitstring( unsigned char **p, unsigned char *start, * * \return the length written or a negative error code */ -int asn1_write_octet_string( unsigned char **p, unsigned char *start, +int mbedtls_asn1_write_octet_string( unsigned char **p, unsigned char *start, const unsigned char *buf, size_t size ); /** @@ -228,7 +227,7 @@ int asn1_write_octet_string( unsigned char **p, unsigned char *start, * \return NULL if if there was a memory allocation error, or a pointer * to the new / existing entry. */ -asn1_named_data *asn1_store_named_data( asn1_named_data **list, +mbedtls_asn1_named_data *mbedtls_asn1_store_named_data( mbedtls_asn1_named_data **list, const char *oid, size_t oid_len, const unsigned char *val, size_t val_len ); @@ -237,4 +236,4 @@ asn1_named_data *asn1_store_named_data( asn1_named_data **list, } #endif -#endif /* POLARSSL_ASN1_WRITE_H */ +#endif /* MBEDTLS_ASN1_WRITE_H */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/base64.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/base64.h new file mode 100644 index 0000000..352c652 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/base64.h @@ -0,0 +1,88 @@ +/** + * \file base64.h + * + * \brief RFC 1521 base64 encoding/decoding + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_BASE64_H +#define MBEDTLS_BASE64_H + +#include + +#define MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL -0x002A /**< Output buffer too small. */ +#define MBEDTLS_ERR_BASE64_INVALID_CHARACTER -0x002C /**< Invalid character in input. */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Encode a buffer into base64 format + * + * \param dst destination buffer + * \param dlen size of the destination buffer + * \param olen number of bytes written + * \param src source buffer + * \param slen amount of data to be encoded + * + * \return 0 if successful, or MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL. + * *olen is always updated to reflect the amount + * of data that has (or would have) been written. + * If that length cannot be represented, then no data is + * written to the buffer and *olen is set to the maximum + * length representable as a size_t. + * + * \note Call this function with dlen = 0 to obtain the + * required buffer size in *olen + */ +int mbedtls_base64_encode( unsigned char *dst, size_t dlen, size_t *olen, + const unsigned char *src, size_t slen ); + +/** + * \brief Decode a base64-formatted buffer + * + * \param dst destination buffer (can be NULL for checking size) + * \param dlen size of the destination buffer + * \param olen number of bytes written + * \param src source buffer + * \param slen amount of data to be decoded + * + * \return 0 if successful, MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL, or + * MBEDTLS_ERR_BASE64_INVALID_CHARACTER if the input data is + * not correct. *olen is always updated to reflect the amount + * of data that has (or would have) been written. + * + * \note Call this function with *dst = NULL or dlen = 0 to obtain + * the required buffer size in *olen + */ +int mbedtls_base64_decode( unsigned char *dst, size_t dlen, size_t *olen, + const unsigned char *src, size_t slen ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_base64_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* base64.h */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/bignum.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/bignum.h similarity index 50% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/bignum.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/bignum.h index 2db29d5..aa51556 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/bignum.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/bignum.h @@ -3,175 +3,136 @@ * * \brief Multi-precision integer library * - * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_BIGNUM_H -#define POLARSSL_BIGNUM_H +#ifndef MBEDTLS_BIGNUM_H +#define MBEDTLS_BIGNUM_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif #include +#include -#if defined(POLARSSL_FS_IO) +#if defined(MBEDTLS_FS_IO) #include #endif -#if defined(_MSC_VER) && !defined(EFIX64) && !defined(EFI32) -#include -#if (_MSC_VER <= 1200) -typedef signed short int16_t; -typedef unsigned short uint16_t; -#else -typedef INT16 int16_t; -typedef UINT16 uint16_t; -#endif -typedef INT32 int32_t; -typedef INT64 int64_t; -typedef UINT32 uint32_t; -typedef UINT64 uint64_t; -#else -#include -#endif /* _MSC_VER && !EFIX64 && !EFI32 */ +#define MBEDTLS_ERR_MPI_FILE_IO_ERROR -0x0002 /**< An error occurred while reading from or writing to a file. */ +#define MBEDTLS_ERR_MPI_BAD_INPUT_DATA -0x0004 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_MPI_INVALID_CHARACTER -0x0006 /**< There is an invalid character in the digit string. */ +#define MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL -0x0008 /**< The buffer is too small to write to. */ +#define MBEDTLS_ERR_MPI_NEGATIVE_VALUE -0x000A /**< The input arguments are negative or result in illegal output. */ +#define MBEDTLS_ERR_MPI_DIVISION_BY_ZERO -0x000C /**< The input argument for division is zero, which is not allowed. */ +#define MBEDTLS_ERR_MPI_NOT_ACCEPTABLE -0x000E /**< The input arguments are not acceptable. */ +#define MBEDTLS_ERR_MPI_ALLOC_FAILED -0x0010 /**< Memory allocation failed. */ -#define POLARSSL_ERR_MPI_FILE_IO_ERROR -0x0002 /**< An error occurred while reading from or writing to a file. */ -#define POLARSSL_ERR_MPI_BAD_INPUT_DATA -0x0004 /**< Bad input parameters to function. */ -#define POLARSSL_ERR_MPI_INVALID_CHARACTER -0x0006 /**< There is an invalid character in the digit string. */ -#define POLARSSL_ERR_MPI_BUFFER_TOO_SMALL -0x0008 /**< The buffer is too small to write to. */ -#define POLARSSL_ERR_MPI_NEGATIVE_VALUE -0x000A /**< The input arguments are negative or result in illegal output. */ -#define POLARSSL_ERR_MPI_DIVISION_BY_ZERO -0x000C /**< The input argument for division is zero, which is not allowed. */ -#define POLARSSL_ERR_MPI_NOT_ACCEPTABLE -0x000E /**< The input arguments are not acceptable. */ -#define POLARSSL_ERR_MPI_MALLOC_FAILED -0x0010 /**< Memory allocation failed. */ - -#define MPI_CHK(f) do { if( ( ret = f ) != 0 ) goto cleanup; } while( 0 ) +#define MBEDTLS_MPI_CHK(f) do { if( ( ret = f ) != 0 ) goto cleanup; } while( 0 ) /* * Maximum size MPIs are allowed to grow to in number of limbs. */ -#define POLARSSL_MPI_MAX_LIMBS 10000 +#define MBEDTLS_MPI_MAX_LIMBS 10000 -#if !defined(POLARSSL_MPI_WINDOW_SIZE) +#if !defined(MBEDTLS_MPI_WINDOW_SIZE) /* * Maximum window size used for modular exponentiation. Default: 6 * Minimum value: 1. Maximum value: 6. * - * Result is an array of ( 2 << POLARSSL_MPI_WINDOW_SIZE ) MPIs used + * Result is an array of ( 2 << MBEDTLS_MPI_WINDOW_SIZE ) MPIs used * for the sliding window calculation. (So 64 by default) * * Reduction in size, reduces speed. */ -#define POLARSSL_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */ -#endif /* !POLARSSL_MPI_WINDOW_SIZE */ +#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */ +#endif /* !MBEDTLS_MPI_WINDOW_SIZE */ -#if !defined(POLARSSL_MPI_MAX_SIZE) +#if !defined(MBEDTLS_MPI_MAX_SIZE) /* * Maximum size of MPIs allowed in bits and bytes for user-MPIs. * ( Default: 512 bytes => 4096 bits, Maximum tested: 2048 bytes => 16384 bits ) * * Note: Calculations can results temporarily in larger MPIs. So the number - * of limbs required (POLARSSL_MPI_MAX_LIMBS) is higher. + * of limbs required (MBEDTLS_MPI_MAX_LIMBS) is higher. */ -#define POLARSSL_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */ -#endif /* !POLARSSL_MPI_MAX_SIZE */ +#define MBEDTLS_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */ +#endif /* !MBEDTLS_MPI_MAX_SIZE */ -#define POLARSSL_MPI_MAX_BITS ( 8 * POLARSSL_MPI_MAX_SIZE ) /**< Maximum number of bits for usable MPIs. */ +#define MBEDTLS_MPI_MAX_BITS ( 8 * MBEDTLS_MPI_MAX_SIZE ) /**< Maximum number of bits for usable MPIs. */ /* - * When reading from files with mpi_read_file() and writing to files with - * mpi_write_file() the buffer should have space + * When reading from files with mbedtls_mpi_read_file() and writing to files with + * mbedtls_mpi_write_file() the buffer should have space * for a (short) label, the MPI (in the provided radix), the newline * characters and the '\0'. * * By default we assume at least a 10 char label, a minimum radix of 10 * (decimal) and a maximum of 4096 bit numbers (1234 decimal chars). * Autosized at compile time for at least a 10 char label, a minimum radix - * of 10 (decimal) for a number of POLARSSL_MPI_MAX_BITS size. + * of 10 (decimal) for a number of MBEDTLS_MPI_MAX_BITS size. * * This used to be statically sized to 1250 for a maximum of 4096 bit * numbers (1234 decimal chars). * * Calculate using the formula: - * POLARSSL_MPI_RW_BUFFER_SIZE = ceil(POLARSSL_MPI_MAX_BITS / ln(10) * ln(2)) + + * MBEDTLS_MPI_RW_BUFFER_SIZE = ceil(MBEDTLS_MPI_MAX_BITS / ln(10) * ln(2)) + * LabelSize + 6 */ -#define POLARSSL_MPI_MAX_BITS_SCALE100 ( 100 * POLARSSL_MPI_MAX_BITS ) -#define LN_2_DIV_LN_10_SCALE100 332 -#define POLARSSL_MPI_RW_BUFFER_SIZE ( ((POLARSSL_MPI_MAX_BITS_SCALE100 + LN_2_DIV_LN_10_SCALE100 - 1) / LN_2_DIV_LN_10_SCALE100) + 10 + 6 ) +#define MBEDTLS_MPI_MAX_BITS_SCALE100 ( 100 * MBEDTLS_MPI_MAX_BITS ) +#define MBEDTLS_LN_2_DIV_LN_10_SCALE100 332 +#define MBEDTLS_MPI_RW_BUFFER_SIZE ( ((MBEDTLS_MPI_MAX_BITS_SCALE100 + MBEDTLS_LN_2_DIV_LN_10_SCALE100 - 1) / MBEDTLS_LN_2_DIV_LN_10_SCALE100) + 10 + 6 ) /* - * Define the base integer type, architecture-wise + * Define the base integer type, architecture-wise. + * + * 32-bit integers can be forced on 64-bit arches (eg. for testing purposes) + * by defining MBEDTLS_HAVE_INT32 and undefining MBEDTLS_HAVE_ASM */ -#if defined(POLARSSL_HAVE_INT8) -typedef signed char t_sint; -typedef unsigned char t_uint; -typedef uint16_t t_udbl; -#define POLARSSL_HAVE_UDBL +#if ( ! defined(MBEDTLS_HAVE_INT32) && \ + defined(_MSC_VER) && defined(_M_AMD64) ) + #define MBEDTLS_HAVE_INT64 + typedef int64_t mbedtls_mpi_sint; + typedef uint64_t mbedtls_mpi_uint; #else -#if defined(POLARSSL_HAVE_INT16) -typedef int16_t t_sint; -typedef uint16_t t_uint; -typedef uint32_t t_udbl; -#define POLARSSL_HAVE_UDBL -#else - /* - * 32-bit integers can be forced on 64-bit arches (eg. for testing purposes) - * by defining POLARSSL_HAVE_INT32 and undefining POLARSSL_HAVE_ASM - */ - #if ( ! defined(POLARSSL_HAVE_INT32) && \ - defined(_MSC_VER) && defined(_M_AMD64) ) - #define POLARSSL_HAVE_INT64 - typedef int64_t t_sint; - typedef uint64_t t_uint; + #if ( ! defined(MBEDTLS_HAVE_INT32) && \ + defined(__GNUC__) && ( \ + defined(__amd64__) || defined(__x86_64__) || \ + defined(__ppc64__) || defined(__powerpc64__) || \ + defined(__ia64__) || defined(__alpha__) || \ + (defined(__sparc__) && defined(__arch64__)) || \ + defined(__s390x__) || defined(__mips64) ) ) + #define MBEDTLS_HAVE_INT64 + typedef int64_t mbedtls_mpi_sint; + typedef uint64_t mbedtls_mpi_uint; + /* mbedtls_t_udbl defined as 128-bit unsigned int */ + typedef unsigned int mbedtls_t_udbl __attribute__((mode(TI))); + #define MBEDTLS_HAVE_UDBL #else - #if ( ! defined(POLARSSL_HAVE_INT32) && \ - defined(__GNUC__) && ( \ - defined(__amd64__) || defined(__x86_64__) || \ - defined(__ppc64__) || defined(__powerpc64__) || \ - defined(__ia64__) || defined(__alpha__) || \ - (defined(__sparc__) && defined(__arch64__)) || \ - defined(__s390x__) || defined(__mips64) ) ) - #define POLARSSL_HAVE_INT64 - typedef int64_t t_sint; - typedef uint64_t t_uint; - /* mbedtls_t_udbl defined as 128-bit unsigned int */ - typedef unsigned int t_udbl __attribute__((mode(TI))); - #define POLARSSL_HAVE_UDBL - #else - #define POLARSSL_HAVE_INT32 - typedef int32_t t_sint; - typedef uint32_t t_uint; - #if ( defined(_MSC_VER) && defined(_M_IX86) ) - typedef uint64_t t_udbl; - #define POLARSSL_HAVE_UDBL - #else - #if defined( POLARSSL_HAVE_LONGLONG ) - typedef unsigned long long t_udbl; - #define POLARSSL_HAVE_UDBL - #endif - #endif - #endif /* !POLARSSL_HAVE_INT32 && __GNUC__ && 64-bit platform */ - #endif /* !POLARSSL_HAVE_INT32 && _MSC_VER && _M_AMD64 */ -#endif /* POLARSSL_HAVE_INT16 */ -#endif /* POLARSSL_HAVE_INT8 */ + #define MBEDTLS_HAVE_INT32 + typedef int32_t mbedtls_mpi_sint; + typedef uint32_t mbedtls_mpi_uint; + typedef uint64_t mbedtls_t_udbl; + #define MBEDTLS_HAVE_UDBL + #endif /* !MBEDTLS_HAVE_INT32 && __GNUC__ && 64-bit platform */ +#endif /* !MBEDTLS_HAVE_INT32 && _MSC_VER && _M_AMD64 */ #ifdef __cplusplus extern "C" { @@ -184,9 +145,9 @@ typedef struct { int s; /*!< integer sign */ size_t n; /*!< total # of limbs */ - t_uint *p; /*!< pointer to limbs */ + mbedtls_mpi_uint *p; /*!< pointer to limbs */ } -mpi; +mbedtls_mpi; /** * \brief Initialize one MPI (make internal references valid) @@ -195,14 +156,14 @@ mpi; * * \param X One MPI to initialize. */ -void mpi_init( mpi *X ); +void mbedtls_mpi_init( mbedtls_mpi *X ); /** * \brief Unallocate one MPI * * \param X One MPI to unallocate. */ -void mpi_free( mpi *X ); +void mbedtls_mpi_free( mbedtls_mpi *X ); /** * \brief Enlarge to the specified number of limbs @@ -211,9 +172,9 @@ void mpi_free( mpi *X ); * \param nblimbs The target number of limbs * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_grow( mpi *X, size_t nblimbs ); +int mbedtls_mpi_grow( mbedtls_mpi *X, size_t nblimbs ); /** * \brief Resize down, keeping at least the specified number of limbs @@ -222,9 +183,9 @@ int mpi_grow( mpi *X, size_t nblimbs ); * \param nblimbs The minimum number of limbs to keep * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_shrink( mpi *X, size_t nblimbs ); +int mbedtls_mpi_shrink( mbedtls_mpi *X, size_t nblimbs ); /** * \brief Copy the contents of Y into X @@ -233,9 +194,9 @@ int mpi_shrink( mpi *X, size_t nblimbs ); * \param Y Source MPI * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_copy( mpi *X, const mpi *Y ); +int mbedtls_mpi_copy( mbedtls_mpi *X, const mbedtls_mpi *Y ); /** * \brief Swap the contents of X and Y @@ -243,7 +204,7 @@ int mpi_copy( mpi *X, const mpi *Y ); * \param X First MPI value * \param Y Second MPI value */ -void mpi_swap( mpi *X, mpi *Y ); +void mbedtls_mpi_swap( mbedtls_mpi *X, mbedtls_mpi *Y ); /** * \brief Safe conditional assignement X = Y if assign is 1 @@ -253,35 +214,35 @@ void mpi_swap( mpi *X, mpi *Y ); * \param assign 1: perform the assignment, 0: keep X's original value * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, * * \note This function is equivalent to - * if( assign ) mpi_copy( X, Y ); + * if( assign ) mbedtls_mpi_copy( X, Y ); * except that it avoids leaking any information about whether * the assignment was done or not (the above code may leak * information through branch prediction and/or memory access * patterns analysis). */ -int mpi_safe_cond_assign( mpi *X, const mpi *Y, unsigned char assign ); +int mbedtls_mpi_safe_cond_assign( mbedtls_mpi *X, const mbedtls_mpi *Y, unsigned char assign ); /** * \brief Safe conditional swap X <-> Y if swap is 1 * - * \param X First mpi value - * \param Y Second mpi value + * \param X First mbedtls_mpi value + * \param Y Second mbedtls_mpi value * \param assign 1: perform the swap, 0: keep X and Y's original values * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, * * \note This function is equivalent to - * if( assign ) mpi_swap( X, Y ); + * if( assign ) mbedtls_mpi_swap( X, Y ); * except that it avoids leaking any information about whether * the assignment was done or not (the above code may leak * information through branch prediction and/or memory access * patterns analysis). */ -int mpi_safe_cond_swap( mpi *X, mpi *Y, unsigned char assign ); +int mbedtls_mpi_safe_cond_swap( mbedtls_mpi *X, mbedtls_mpi *Y, unsigned char assign ); /** * \brief Set value from integer @@ -290,9 +251,9 @@ int mpi_safe_cond_swap( mpi *X, mpi *Y, unsigned char assign ); * \param z Value to use * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_lset( mpi *X, t_sint z ); +int mbedtls_mpi_lset( mbedtls_mpi *X, mbedtls_mpi_sint z ); /** * \brief Get a specific bit from X @@ -302,7 +263,7 @@ int mpi_lset( mpi *X, t_sint z ); * * \return Either a 0 or a 1 */ -int mpi_get_bit( const mpi *X, size_t pos ); +int mbedtls_mpi_get_bit( const mbedtls_mpi *X, size_t pos ); /** * \brief Set a bit of X to a specific value of 0 or 1 @@ -315,10 +276,10 @@ int mpi_get_bit( const mpi *X, size_t pos ); * \param val The value to set the bit to (0 or 1) * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, - * POLARSSL_ERR_MPI_BAD_INPUT_DATA if val is not 0 or 1 + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_BAD_INPUT_DATA if val is not 0 or 1 */ -int mpi_set_bit( mpi *X, size_t pos, unsigned char val ); +int mbedtls_mpi_set_bit( mbedtls_mpi *X, size_t pos, unsigned char val ); /** * \brief Return the number of zero-bits before the least significant @@ -328,7 +289,7 @@ int mpi_set_bit( mpi *X, size_t pos, unsigned char val ); * * \param X MPI to use */ -size_t mpi_lsb( const mpi *X ); +size_t mbedtls_mpi_lsb( const mbedtls_mpi *X ); /** * \brief Return the number of bits up to and including the most @@ -338,14 +299,14 @@ size_t mpi_lsb( const mpi *X ); * * \param X MPI to use */ -size_t mpi_msb( const mpi *X ); +size_t mbedtls_mpi_bitlen( const mbedtls_mpi *X ); /** * \brief Return the total size in bytes * * \param X MPI to use */ -size_t mpi_size( const mpi *X ); +size_t mbedtls_mpi_size( const mbedtls_mpi *X ); /** * \brief Import from an ASCII string @@ -354,28 +315,30 @@ size_t mpi_size( const mpi *X ); * \param radix Input numeric base * \param s Null-terminated string buffer * - * \return 0 if successful, or a POLARSSL_ERR_MPI_XXX error code + * \return 0 if successful, or a MBEDTLS_ERR_MPI_XXX error code */ -int mpi_read_string( mpi *X, int radix, const char *s ); +int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s ); /** * \brief Export into an ASCII string * * \param X Source MPI * \param radix Output numeric base - * \param s String buffer - * \param slen String buffer size + * \param buf Buffer to write the string to + * \param buflen Length of buf + * \param olen Length of the string written, including final NUL byte * - * \return 0 if successful, or a POLARSSL_ERR_MPI_XXX error code. - * *slen is always updated to reflect the amount + * \return 0 if successful, or a MBEDTLS_ERR_MPI_XXX error code. + * *olen is always updated to reflect the amount * of data that has (or would have) been written. * - * \note Call this function with *slen = 0 to obtain the - * minimum required buffer size in *slen. + * \note Call this function with buflen = 0 to obtain the + * minimum required buffer size in *olen. */ -int mpi_write_string( const mpi *X, int radix, char *s, size_t *slen ); +int mbedtls_mpi_write_string( const mbedtls_mpi *X, int radix, + char *buf, size_t buflen, size_t *olen ); -#if defined(POLARSSL_FS_IO) +#if defined(MBEDTLS_FS_IO) /** * \brief Read X from an opened file * @@ -383,11 +346,11 @@ int mpi_write_string( const mpi *X, int radix, char *s, size_t *slen ); * \param radix Input numeric base * \param fin Input file handle * - * \return 0 if successful, POLARSSL_ERR_MPI_BUFFER_TOO_SMALL if + * \return 0 if successful, MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL if * the file read buffer is too small or a - * POLARSSL_ERR_MPI_XXX error code + * MBEDTLS_ERR_MPI_XXX error code */ -int mpi_read_file( mpi *X, int radix, FILE *fin ); +int mbedtls_mpi_read_file( mbedtls_mpi *X, int radix, FILE *fin ); /** * \brief Write X into an opened file, or stdout if fout is NULL @@ -397,12 +360,12 @@ int mpi_read_file( mpi *X, int radix, FILE *fin ); * \param radix Output numeric base * \param fout Output file handle (can be NULL) * - * \return 0 if successful, or a POLARSSL_ERR_MPI_XXX error code + * \return 0 if successful, or a MBEDTLS_ERR_MPI_XXX error code * * \note Set fout == NULL to print X on the console. */ -int mpi_write_file( const char *p, const mpi *X, int radix, FILE *fout ); -#endif /* POLARSSL_FS_IO */ +int mbedtls_mpi_write_file( const char *p, const mbedtls_mpi *X, int radix, FILE *fout ); +#endif /* MBEDTLS_FS_IO */ /** * \brief Import X from unsigned binary data, big endian @@ -412,9 +375,9 @@ int mpi_write_file( const char *p, const mpi *X, int radix, FILE *fout ); * \param buflen Input buffer size * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_read_binary( mpi *X, const unsigned char *buf, size_t buflen ); +int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t buflen ); /** * \brief Export X into unsigned binary data, big endian. @@ -426,9 +389,9 @@ int mpi_read_binary( mpi *X, const unsigned char *buf, size_t buflen ); * \param buflen Output buffer size * * \return 0 if successful, - * POLARSSL_ERR_MPI_BUFFER_TOO_SMALL if buf isn't large enough + * MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL if buf isn't large enough */ -int mpi_write_binary( const mpi *X, unsigned char *buf, size_t buflen ); +int mbedtls_mpi_write_binary( const mbedtls_mpi *X, unsigned char *buf, size_t buflen ); /** * \brief Left-shift: X <<= count @@ -437,9 +400,9 @@ int mpi_write_binary( const mpi *X, unsigned char *buf, size_t buflen ); * \param count Amount to shift * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_shift_l( mpi *X, size_t count ); +int mbedtls_mpi_shift_l( mbedtls_mpi *X, size_t count ); /** * \brief Right-shift: X >>= count @@ -448,9 +411,9 @@ int mpi_shift_l( mpi *X, size_t count ); * \param count Amount to shift * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_shift_r( mpi *X, size_t count ); +int mbedtls_mpi_shift_r( mbedtls_mpi *X, size_t count ); /** * \brief Compare unsigned values @@ -462,7 +425,7 @@ int mpi_shift_r( mpi *X, size_t count ); * -1 if |X| is lesser than |Y| or * 0 if |X| is equal to |Y| */ -int mpi_cmp_abs( const mpi *X, const mpi *Y ); +int mbedtls_mpi_cmp_abs( const mbedtls_mpi *X, const mbedtls_mpi *Y ); /** * \brief Compare signed values @@ -474,7 +437,7 @@ int mpi_cmp_abs( const mpi *X, const mpi *Y ); * -1 if X is lesser than Y or * 0 if X is equal to Y */ -int mpi_cmp_mpi( const mpi *X, const mpi *Y ); +int mbedtls_mpi_cmp_mpi( const mbedtls_mpi *X, const mbedtls_mpi *Y ); /** * \brief Compare signed values @@ -486,7 +449,7 @@ int mpi_cmp_mpi( const mpi *X, const mpi *Y ); * -1 if X is lesser than z or * 0 if X is equal to z */ -int mpi_cmp_int( const mpi *X, t_sint z ); +int mbedtls_mpi_cmp_int( const mbedtls_mpi *X, mbedtls_mpi_sint z ); /** * \brief Unsigned addition: X = |A| + |B| @@ -496,9 +459,9 @@ int mpi_cmp_int( const mpi *X, t_sint z ); * \param B Right-hand MPI * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_add_abs( mpi *X, const mpi *A, const mpi *B ); +int mbedtls_mpi_add_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ); /** * \brief Unsigned subtraction: X = |A| - |B| @@ -508,9 +471,9 @@ int mpi_add_abs( mpi *X, const mpi *A, const mpi *B ); * \param B Right-hand MPI * * \return 0 if successful, - * POLARSSL_ERR_MPI_NEGATIVE_VALUE if B is greater than A + * MBEDTLS_ERR_MPI_NEGATIVE_VALUE if B is greater than A */ -int mpi_sub_abs( mpi *X, const mpi *A, const mpi *B ); +int mbedtls_mpi_sub_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ); /** * \brief Signed addition: X = A + B @@ -520,9 +483,9 @@ int mpi_sub_abs( mpi *X, const mpi *A, const mpi *B ); * \param B Right-hand MPI * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_add_mpi( mpi *X, const mpi *A, const mpi *B ); +int mbedtls_mpi_add_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ); /** * \brief Signed subtraction: X = A - B @@ -532,9 +495,9 @@ int mpi_add_mpi( mpi *X, const mpi *A, const mpi *B ); * \param B Right-hand MPI * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_sub_mpi( mpi *X, const mpi *A, const mpi *B ); +int mbedtls_mpi_sub_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ); /** * \brief Signed addition: X = A + b @@ -544,9 +507,9 @@ int mpi_sub_mpi( mpi *X, const mpi *A, const mpi *B ); * \param b The integer value to add * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_add_int( mpi *X, const mpi *A, t_sint b ); +int mbedtls_mpi_add_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint b ); /** * \brief Signed subtraction: X = A - b @@ -556,9 +519,9 @@ int mpi_add_int( mpi *X, const mpi *A, t_sint b ); * \param b The integer value to subtract * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_sub_int( mpi *X, const mpi *A, t_sint b ); +int mbedtls_mpi_sub_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint b ); /** * \brief Baseline multiplication: X = A * B @@ -568,27 +531,26 @@ int mpi_sub_int( mpi *X, const mpi *A, t_sint b ); * \param B Right-hand MPI * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_mul_mpi( mpi *X, const mpi *A, const mpi *B ); +int mbedtls_mpi_mul_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B ); /** * \brief Baseline multiplication: X = A * b - * Note: despite the functon signature, b is treated as a - * t_uint. Negative values of b are treated as large positive - * values. * * \param X Destination MPI * \param A Left-hand MPI - * \param b The integer value to multiply with + * \param b The unsigned integer value to multiply with + * + * \note b is unsigned * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_mul_int( mpi *X, const mpi *A, t_sint b ); +int mbedtls_mpi_mul_int( mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_uint b ); /** - * \brief Division by mpi: A = Q * B + R + * \brief Division by mbedtls_mpi: A = Q * B + R * * \param Q Destination MPI for the quotient * \param R Destination MPI for the rest value @@ -596,12 +558,12 @@ int mpi_mul_int( mpi *X, const mpi *A, t_sint b ); * \param B Right-hand MPI * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, - * POLARSSL_ERR_MPI_DIVISION_BY_ZERO if B == 0 + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_DIVISION_BY_ZERO if B == 0 * * \note Either Q or R can be NULL. */ -int mpi_div_mpi( mpi *Q, mpi *R, const mpi *A, const mpi *B ); +int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B ); /** * \brief Division by int: A = Q * b + R @@ -612,12 +574,12 @@ int mpi_div_mpi( mpi *Q, mpi *R, const mpi *A, const mpi *B ); * \param b Integer to divide by * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, - * POLARSSL_ERR_MPI_DIVISION_BY_ZERO if b == 0 + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_DIVISION_BY_ZERO if b == 0 * * \note Either Q or R can be NULL. */ -int mpi_div_int( mpi *Q, mpi *R, const mpi *A, t_sint b ); +int mbedtls_mpi_div_int( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, mbedtls_mpi_sint b ); /** * \brief Modulo: R = A mod B @@ -627,25 +589,25 @@ int mpi_div_int( mpi *Q, mpi *R, const mpi *A, t_sint b ); * \param B Right-hand MPI * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, - * POLARSSL_ERR_MPI_DIVISION_BY_ZERO if B == 0, - * POLARSSL_ERR_MPI_NEGATIVE_VALUE if B < 0 + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_DIVISION_BY_ZERO if B == 0, + * MBEDTLS_ERR_MPI_NEGATIVE_VALUE if B < 0 */ -int mpi_mod_mpi( mpi *R, const mpi *A, const mpi *B ); +int mbedtls_mpi_mod_mpi( mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B ); /** * \brief Modulo: r = A mod b * - * \param r Destination t_uint + * \param r Destination mbedtls_mpi_uint * \param A Left-hand MPI * \param b Integer to divide by * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, - * POLARSSL_ERR_MPI_DIVISION_BY_ZERO if b == 0, - * POLARSSL_ERR_MPI_NEGATIVE_VALUE if b < 0 + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_DIVISION_BY_ZERO if b == 0, + * MBEDTLS_ERR_MPI_NEGATIVE_VALUE if b < 0 */ -int mpi_mod_int( t_uint *r, const mpi *A, t_sint b ); +int mbedtls_mpi_mod_int( mbedtls_mpi_uint *r, const mbedtls_mpi *A, mbedtls_mpi_sint b ); /** * \brief Sliding-window exponentiation: X = A^E mod N @@ -657,15 +619,15 @@ int mpi_mod_int( t_uint *r, const mpi *A, t_sint b ); * \param _RR Speed-up MPI used for recalculations * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, - * POLARSSL_ERR_MPI_BAD_INPUT_DATA if N is negative or even or + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_BAD_INPUT_DATA if N is negative or even or * if E is negative * * \note _RR is used to avoid re-computing R*R mod N across * multiple calls, which speeds up things a bit. It can * be set to NULL if the extra performance is unneeded. */ -int mpi_exp_mod( mpi *X, const mpi *A, const mpi *E, const mpi *N, mpi *_RR ); +int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *E, const mbedtls_mpi *N, mbedtls_mpi *_RR ); /** * \brief Fill an MPI X with size bytes of random @@ -676,9 +638,9 @@ int mpi_exp_mod( mpi *X, const mpi *A, const mpi *E, const mpi *N, mpi *_RR ); * \param p_rng RNG parameter * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_fill_random( mpi *X, size_t size, +int mbedtls_mpi_fill_random( mbedtls_mpi *X, size_t size, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -690,9 +652,9 @@ int mpi_fill_random( mpi *X, size_t size, * \param B Right-hand MPI * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int mpi_gcd( mpi *G, const mpi *A, const mpi *B ); +int mbedtls_mpi_gcd( mbedtls_mpi *G, const mbedtls_mpi *A, const mbedtls_mpi *B ); /** * \brief Modular inverse: X = A^-1 mod N @@ -702,11 +664,11 @@ int mpi_gcd( mpi *G, const mpi *A, const mpi *B ); * \param N Right-hand MPI * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, - * POLARSSL_ERR_MPI_BAD_INPUT_DATA if N is negative or nil - POLARSSL_ERR_MPI_NOT_ACCEPTABLE if A has no inverse mod N + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_BAD_INPUT_DATA if N is negative or nil + MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if A has no inverse mod N */ -int mpi_inv_mod( mpi *X, const mpi *A, const mpi *N ); +int mbedtls_mpi_inv_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *N ); /** * \brief Miller-Rabin primality test @@ -716,10 +678,10 @@ int mpi_inv_mod( mpi *X, const mpi *A, const mpi *N ); * \param p_rng RNG parameter * * \return 0 if successful (probably prime), - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, - * POLARSSL_ERR_MPI_NOT_ACCEPTABLE if X is not prime + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if X is not prime */ -int mpi_is_prime( mpi *X, +int mbedtls_mpi_is_prime( const mbedtls_mpi *X, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -728,16 +690,16 @@ int mpi_is_prime( mpi *X, * * \param X Destination MPI * \param nbits Required size of X in bits - * ( 3 <= nbits <= POLARSSL_MPI_MAX_BITS ) + * ( 3 <= nbits <= MBEDTLS_MPI_MAX_BITS ) * \param dh_flag If 1, then (X-1)/2 will be prime too * \param f_rng RNG function * \param p_rng RNG parameter * * \return 0 if successful (probably prime), - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, - * POLARSSL_ERR_MPI_BAD_INPUT_DATA if nbits is < 3 + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_BAD_INPUT_DATA if nbits is < 3 */ -int mpi_gen_prime( mpi *X, size_t nbits, int dh_flag, +int mbedtls_mpi_gen_prime( mbedtls_mpi *X, size_t nbits, int dh_flag, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -746,7 +708,7 @@ int mpi_gen_prime( mpi *X, size_t nbits, int dh_flag, * * \return 0 if successful, or 1 if the test failed */ -int mpi_self_test( int verbose ); +int mbedtls_mpi_self_test( int verbose ); #ifdef __cplusplus } diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/blowfish.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/blowfish.h similarity index 57% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/blowfish.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/blowfish.h index 21ba7d4..34626ee 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/blowfish.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/blowfish.h @@ -3,53 +3,46 @@ * * \brief Blowfish block cipher * - * Copyright (C) 2012-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_BLOWFISH_H -#define POLARSSL_BLOWFISH_H +#ifndef MBEDTLS_BLOWFISH_H +#define MBEDTLS_BLOWFISH_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif #include +#include -#if defined(_MSC_VER) && !defined(EFIX64) && !defined(EFI32) -#include -typedef UINT32 uint32_t; -#else -#include -#endif +#define MBEDTLS_BLOWFISH_ENCRYPT 1 +#define MBEDTLS_BLOWFISH_DECRYPT 0 +#define MBEDTLS_BLOWFISH_MAX_KEY_BITS 448 +#define MBEDTLS_BLOWFISH_MIN_KEY_BITS 32 +#define MBEDTLS_BLOWFISH_ROUNDS 16 /**< Rounds to use. When increasing this value, make sure to extend the initialisation vectors */ +#define MBEDTLS_BLOWFISH_BLOCKSIZE 8 /* Blowfish uses 64 bit blocks */ -#define BLOWFISH_ENCRYPT 1 -#define BLOWFISH_DECRYPT 0 -#define BLOWFISH_MAX_KEY 448 -#define BLOWFISH_MIN_KEY 32 -#define BLOWFISH_ROUNDS 16 /**< Rounds to use. When increasing this value, make sure to extend the initialisation vectors */ -#define BLOWFISH_BLOCKSIZE 8 /* Blowfish uses 64 bit blocks */ +#define MBEDTLS_ERR_BLOWFISH_INVALID_KEY_LENGTH -0x0016 /**< Invalid key length. */ +#define MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH -0x0018 /**< Invalid data input length. */ -#define POLARSSL_ERR_BLOWFISH_INVALID_KEY_LENGTH -0x0016 /**< Invalid key length. */ -#define POLARSSL_ERR_BLOWFISH_INVALID_INPUT_LENGTH -0x0018 /**< Invalid data input length. */ - -#if !defined(POLARSSL_BLOWFISH_ALT) +#if !defined(MBEDTLS_BLOWFISH_ALT) // Regular implementation // @@ -62,53 +55,53 @@ extern "C" { */ typedef struct { - uint32_t P[BLOWFISH_ROUNDS + 2]; /*!< Blowfish round keys */ + uint32_t P[MBEDTLS_BLOWFISH_ROUNDS + 2]; /*!< Blowfish round keys */ uint32_t S[4][256]; /*!< key dependent S-boxes */ } -blowfish_context; +mbedtls_blowfish_context; /** * \brief Initialize Blowfish context * * \param ctx Blowfish context to be initialized */ -void blowfish_init( blowfish_context *ctx ); +void mbedtls_blowfish_init( mbedtls_blowfish_context *ctx ); /** * \brief Clear Blowfish context * * \param ctx Blowfish context to be cleared */ -void blowfish_free( blowfish_context *ctx ); +void mbedtls_blowfish_free( mbedtls_blowfish_context *ctx ); /** * \brief Blowfish key schedule * * \param ctx Blowfish context to be initialized * \param key encryption key - * \param keysize must be between 32 and 448 bits + * \param keybits must be between 32 and 448 bits * - * \return 0 if successful, or POLARSSL_ERR_BLOWFISH_INVALID_KEY_LENGTH + * \return 0 if successful, or MBEDTLS_ERR_BLOWFISH_INVALID_KEY_LENGTH */ -int blowfish_setkey( blowfish_context *ctx, const unsigned char *key, - unsigned int keysize ); +int mbedtls_blowfish_setkey( mbedtls_blowfish_context *ctx, const unsigned char *key, + unsigned int keybits ); /** * \brief Blowfish-ECB block encryption/decryption * * \param ctx Blowfish context - * \param mode BLOWFISH_ENCRYPT or BLOWFISH_DECRYPT + * \param mode MBEDTLS_BLOWFISH_ENCRYPT or MBEDTLS_BLOWFISH_DECRYPT * \param input 8-byte input block * \param output 8-byte output block * * \return 0 if successful */ -int blowfish_crypt_ecb( blowfish_context *ctx, +int mbedtls_blowfish_crypt_ecb( mbedtls_blowfish_context *ctx, int mode, - const unsigned char input[BLOWFISH_BLOCKSIZE], - unsigned char output[BLOWFISH_BLOCKSIZE] ); + const unsigned char input[MBEDTLS_BLOWFISH_BLOCKSIZE], + unsigned char output[MBEDTLS_BLOWFISH_BLOCKSIZE] ); -#if defined(POLARSSL_CIPHER_MODE_CBC) +#if defined(MBEDTLS_CIPHER_MODE_CBC) /** * \brief Blowfish-CBC buffer encryption/decryption * Length should be a multiple of the block @@ -123,24 +116,24 @@ int blowfish_crypt_ecb( blowfish_context *ctx, * module instead. * * \param ctx Blowfish context - * \param mode BLOWFISH_ENCRYPT or BLOWFISH_DECRYPT + * \param mode MBEDTLS_BLOWFISH_ENCRYPT or MBEDTLS_BLOWFISH_DECRYPT * \param length length of the input data * \param iv initialization vector (updated after use) * \param input buffer holding the input data * \param output buffer holding the output data * * \return 0 if successful, or - * POLARSSL_ERR_BLOWFISH_INVALID_INPUT_LENGTH + * MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH */ -int blowfish_crypt_cbc( blowfish_context *ctx, +int mbedtls_blowfish_crypt_cbc( mbedtls_blowfish_context *ctx, int mode, size_t length, - unsigned char iv[BLOWFISH_BLOCKSIZE], + unsigned char iv[MBEDTLS_BLOWFISH_BLOCKSIZE], const unsigned char *input, unsigned char *output ); -#endif /* POLARSSL_CIPHER_MODE_CBC */ +#endif /* MBEDTLS_CIPHER_MODE_CBC */ -#if defined(POLARSSL_CIPHER_MODE_CFB) +#if defined(MBEDTLS_CIPHER_MODE_CFB) /** * \brief Blowfish CFB buffer encryption/decryption. * @@ -153,7 +146,7 @@ int blowfish_crypt_cbc( blowfish_context *ctx, * module instead. * * \param ctx Blowfish context - * \param mode BLOWFISH_ENCRYPT or BLOWFISH_DECRYPT + * \param mode MBEDTLS_BLOWFISH_ENCRYPT or MBEDTLS_BLOWFISH_DECRYPT * \param length length of the input data * \param iv_off offset in IV (updated after use) * \param iv initialization vector (updated after use) @@ -162,16 +155,16 @@ int blowfish_crypt_cbc( blowfish_context *ctx, * * \return 0 if successful */ -int blowfish_crypt_cfb64( blowfish_context *ctx, +int mbedtls_blowfish_crypt_cfb64( mbedtls_blowfish_context *ctx, int mode, size_t length, size_t *iv_off, - unsigned char iv[BLOWFISH_BLOCKSIZE], + unsigned char iv[MBEDTLS_BLOWFISH_BLOCKSIZE], const unsigned char *input, unsigned char *output ); -#endif /*POLARSSL_CIPHER_MODE_CFB */ +#endif /*MBEDTLS_CIPHER_MODE_CFB */ -#if defined(POLARSSL_CIPHER_MODE_CTR) +#if defined(MBEDTLS_CIPHER_MODE_CTR) /** * \brief Blowfish-CTR buffer encryption/decryption * @@ -190,21 +183,21 @@ int blowfish_crypt_cfb64( blowfish_context *ctx, * * \return 0 if successful */ -int blowfish_crypt_ctr( blowfish_context *ctx, +int mbedtls_blowfish_crypt_ctr( mbedtls_blowfish_context *ctx, size_t length, size_t *nc_off, - unsigned char nonce_counter[BLOWFISH_BLOCKSIZE], - unsigned char stream_block[BLOWFISH_BLOCKSIZE], + unsigned char nonce_counter[MBEDTLS_BLOWFISH_BLOCKSIZE], + unsigned char stream_block[MBEDTLS_BLOWFISH_BLOCKSIZE], const unsigned char *input, unsigned char *output ); -#endif /* POLARSSL_CIPHER_MODE_CTR */ +#endif /* MBEDTLS_CIPHER_MODE_CTR */ #ifdef __cplusplus } #endif -#else /* POLARSSL_BLOWFISH_ALT */ +#else /* MBEDTLS_BLOWFISH_ALT */ #include "blowfish_alt.h" -#endif /* POLARSSL_BLOWFISH_ALT */ +#endif /* MBEDTLS_BLOWFISH_ALT */ #endif /* blowfish.h */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/bn_mul.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/bn_mul.h similarity index 94% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/bn_mul.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/bn_mul.h index 7877741..cac3f14 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/bn_mul.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/bn_mul.h @@ -3,23 +3,22 @@ * * \brief Multi-precision integer library * - * Copyright (C) 2006-2010, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* * Multiply source vector [s] with b, add result @@ -35,12 +34,16 @@ * . Alpha . MIPS32 * . C, longlong . C, generic */ -#ifndef POLARSSL_BN_MUL_H -#define POLARSSL_BN_MUL_H +#ifndef MBEDTLS_BN_MUL_H +#define MBEDTLS_BN_MUL_H #include "bignum.h" -#if defined(POLARSSL_HAVE_ASM) +#if defined(MBEDTLS_HAVE_ASM) + +#ifndef asm +#define asm __asm +#endif /* armcc5 --gnu defines __GNUC__ but doesn't support GNU's extended asm */ #if defined(__GNUC__) && \ @@ -65,7 +68,7 @@ "movl %%edx, %%ecx \n\t" \ "stosl \n\t" -#if defined(POLARSSL_HAVE_SSE2) +#if defined(MBEDTLS_HAVE_SSE2) #define MULADDC_HUIT \ "movd %%ecx, %%mm1 \n\t" \ @@ -159,10 +162,6 @@ #define MULADDC_INIT \ asm( \ - "movq %3, %%rsi \n\t" \ - "movq %4, %%rdi \n\t" \ - "movq %5, %%rcx \n\t" \ - "movq %6, %%rbx \n\t" \ "xorq %%r8, %%r8 \n\t" #define MULADDC_CORE \ @@ -178,12 +177,9 @@ "addq $8, %%rdi \n\t" #define MULADDC_STOP \ - "movq %%rcx, %0 \n\t" \ - "movq %%rdi, %1 \n\t" \ - "movq %%rsi, %2 \n\t" \ - : "=m" (c), "=m" (d), "=m" (s) \ - : "m" (s), "m" (d), "m" (c), "m" (b) \ - : "rax", "rcx", "rdx", "rbx", "rsi", "rdi", "r8" \ + : "+c" (c), "+D" (d), "+S" (s) \ + : "b" (b) \ + : "rax", "rdx", "r8" \ ); #endif /* AMD64 */ @@ -573,10 +569,10 @@ * the build error and is pretty reasonable anyway. */ #if defined(__GNUC__) && !defined(__OPTIMIZE__) -#define CANNOT_USE_R7 +#define MULADDC_CANNOT_USE_R7 #endif -#if defined(__arm__) && !defined(CANNOT_USE_R7) +#if defined(__arm__) && !defined(MULADDC_CANNOT_USE_R7) #if defined(__thumb__) && !defined(__thumb2__) @@ -754,7 +750,7 @@ __asm mov ecx, edx \ __asm stosd -#if defined(POLARSSL_HAVE_SSE2) +#if defined(MBEDTLS_HAVE_SSE2) #define EMIT __asm _emit @@ -837,20 +833,20 @@ #endif /* SSE2 */ #endif /* MSVC */ -#endif /* POLARSSL_HAVE_ASM */ +#endif /* MBEDTLS_HAVE_ASM */ #if !defined(MULADDC_CORE) -#if defined(POLARSSL_HAVE_UDBL) +#if defined(MBEDTLS_HAVE_UDBL) #define MULADDC_INIT \ { \ - t_udbl r; \ - t_uint r0, r1; + mbedtls_t_udbl r; \ + mbedtls_mpi_uint r0, r1; #define MULADDC_CORE \ - r = *(s++) * (t_udbl) b; \ - r0 = (t_uint) r; \ - r1 = (t_uint)( r >> biL ); \ + r = *(s++) * (mbedtls_t_udbl) b; \ + r0 = (mbedtls_mpi_uint) r; \ + r1 = (mbedtls_mpi_uint)( r >> biL ); \ r0 += c; r1 += (r0 < c); \ r0 += *d; r1 += (r0 < *d); \ c = r1; *(d++) = r0; @@ -861,8 +857,8 @@ #else #define MULADDC_INIT \ { \ - t_uint s0, s1, b0, b1; \ - t_uint r0, r1, rx, ry; \ + mbedtls_mpi_uint s0, s1, b0, b1; \ + mbedtls_mpi_uint r0, r1, rx, ry; \ b0 = ( b << biH ) >> biH; \ b1 = ( b >> biH ); diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/camellia.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/camellia.h similarity index 64% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/camellia.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/camellia.h index 03218d1..0424d62 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/camellia.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/camellia.h @@ -3,49 +3,42 @@ * * \brief Camellia block cipher * - * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_CAMELLIA_H -#define POLARSSL_CAMELLIA_H +#ifndef MBEDTLS_CAMELLIA_H +#define MBEDTLS_CAMELLIA_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif #include +#include -#if defined(_MSC_VER) && !defined(EFIX64) && !defined(EFI32) -#include -typedef UINT32 uint32_t; -#else -#include -#endif +#define MBEDTLS_CAMELLIA_ENCRYPT 1 +#define MBEDTLS_CAMELLIA_DECRYPT 0 -#define CAMELLIA_ENCRYPT 1 -#define CAMELLIA_DECRYPT 0 +#define MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH -0x0024 /**< Invalid key length. */ +#define MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH -0x0026 /**< Invalid data input length. */ -#define POLARSSL_ERR_CAMELLIA_INVALID_KEY_LENGTH -0x0024 /**< Invalid key length. */ -#define POLARSSL_ERR_CAMELLIA_INVALID_INPUT_LENGTH -0x0026 /**< Invalid data input length. */ - -#if !defined(POLARSSL_CAMELLIA_ALT) +#if !defined(MBEDTLS_CAMELLIA_ALT) // Regular implementation // @@ -61,62 +54,62 @@ typedef struct int nr; /*!< number of rounds */ uint32_t rk[68]; /*!< CAMELLIA round keys */ } -camellia_context; +mbedtls_camellia_context; /** * \brief Initialize CAMELLIA context * * \param ctx CAMELLIA context to be initialized */ -void camellia_init( camellia_context *ctx ); +void mbedtls_camellia_init( mbedtls_camellia_context *ctx ); /** * \brief Clear CAMELLIA context * * \param ctx CAMELLIA context to be cleared */ -void camellia_free( camellia_context *ctx ); +void mbedtls_camellia_free( mbedtls_camellia_context *ctx ); /** * \brief CAMELLIA key schedule (encryption) * * \param ctx CAMELLIA context to be initialized * \param key encryption key - * \param keysize must be 128, 192 or 256 + * \param keybits must be 128, 192 or 256 * - * \return 0 if successful, or POLARSSL_ERR_CAMELLIA_INVALID_KEY_LENGTH + * \return 0 if successful, or MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH */ -int camellia_setkey_enc( camellia_context *ctx, const unsigned char *key, - unsigned int keysize ); +int mbedtls_camellia_setkey_enc( mbedtls_camellia_context *ctx, const unsigned char *key, + unsigned int keybits ); /** * \brief CAMELLIA key schedule (decryption) * * \param ctx CAMELLIA context to be initialized * \param key decryption key - * \param keysize must be 128, 192 or 256 + * \param keybits must be 128, 192 or 256 * - * \return 0 if successful, or POLARSSL_ERR_CAMELLIA_INVALID_KEY_LENGTH + * \return 0 if successful, or MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH */ -int camellia_setkey_dec( camellia_context *ctx, const unsigned char *key, - unsigned int keysize ); +int mbedtls_camellia_setkey_dec( mbedtls_camellia_context *ctx, const unsigned char *key, + unsigned int keybits ); /** * \brief CAMELLIA-ECB block encryption/decryption * * \param ctx CAMELLIA context - * \param mode CAMELLIA_ENCRYPT or CAMELLIA_DECRYPT + * \param mode MBEDTLS_CAMELLIA_ENCRYPT or MBEDTLS_CAMELLIA_DECRYPT * \param input 16-byte input block * \param output 16-byte output block * * \return 0 if successful */ -int camellia_crypt_ecb( camellia_context *ctx, +int mbedtls_camellia_crypt_ecb( mbedtls_camellia_context *ctx, int mode, const unsigned char input[16], unsigned char output[16] ); -#if defined(POLARSSL_CIPHER_MODE_CBC) +#if defined(MBEDTLS_CIPHER_MODE_CBC) /** * \brief CAMELLIA-CBC buffer encryption/decryption * Length should be a multiple of the block @@ -131,30 +124,30 @@ int camellia_crypt_ecb( camellia_context *ctx, * module instead. * * \param ctx CAMELLIA context - * \param mode CAMELLIA_ENCRYPT or CAMELLIA_DECRYPT + * \param mode MBEDTLS_CAMELLIA_ENCRYPT or MBEDTLS_CAMELLIA_DECRYPT * \param length length of the input data * \param iv initialization vector (updated after use) * \param input buffer holding the input data * \param output buffer holding the output data * * \return 0 if successful, or - * POLARSSL_ERR_CAMELLIA_INVALID_INPUT_LENGTH + * MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH */ -int camellia_crypt_cbc( camellia_context *ctx, +int mbedtls_camellia_crypt_cbc( mbedtls_camellia_context *ctx, int mode, size_t length, unsigned char iv[16], const unsigned char *input, unsigned char *output ); -#endif /* POLARSSL_CIPHER_MODE_CBC */ +#endif /* MBEDTLS_CIPHER_MODE_CBC */ -#if defined(POLARSSL_CIPHER_MODE_CFB) +#if defined(MBEDTLS_CIPHER_MODE_CFB) /** * \brief CAMELLIA-CFB128 buffer encryption/decryption * * Note: Due to the nature of CFB you should use the same key schedule for * both encryption and decryption. So a context initialized with - * camellia_setkey_enc() for both CAMELLIA_ENCRYPT and CAMELLIE_DECRYPT. + * mbedtls_camellia_setkey_enc() for both MBEDTLS_CAMELLIA_ENCRYPT and CAMELLIE_DECRYPT. * * \note Upon exit, the content of the IV is updated so that you can * call the function same function again on the following @@ -165,7 +158,7 @@ int camellia_crypt_cbc( camellia_context *ctx, * module instead. * * \param ctx CAMELLIA context - * \param mode CAMELLIA_ENCRYPT or CAMELLIA_DECRYPT + * \param mode MBEDTLS_CAMELLIA_ENCRYPT or MBEDTLS_CAMELLIA_DECRYPT * \param length length of the input data * \param iv_off offset in IV (updated after use) * \param iv initialization vector (updated after use) @@ -173,18 +166,18 @@ int camellia_crypt_cbc( camellia_context *ctx, * \param output buffer holding the output data * * \return 0 if successful, or - * POLARSSL_ERR_CAMELLIA_INVALID_INPUT_LENGTH + * MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH */ -int camellia_crypt_cfb128( camellia_context *ctx, +int mbedtls_camellia_crypt_cfb128( mbedtls_camellia_context *ctx, int mode, size_t length, size_t *iv_off, unsigned char iv[16], const unsigned char *input, unsigned char *output ); -#endif /* POLARSSL_CIPHER_MODE_CFB */ +#endif /* MBEDTLS_CIPHER_MODE_CFB */ -#if defined(POLARSSL_CIPHER_MODE_CTR) +#if defined(MBEDTLS_CIPHER_MODE_CTR) /** * \brief CAMELLIA-CTR buffer encryption/decryption * @@ -192,7 +185,7 @@ int camellia_crypt_cfb128( camellia_context *ctx, * * Note: Due to the nature of CTR you should use the same key schedule for * both encryption and decryption. So a context initialized with - * camellia_setkey_enc() for both CAMELLIA_ENCRYPT and CAMELLIA_DECRYPT. + * mbedtls_camellia_setkey_enc() for both MBEDTLS_CAMELLIA_ENCRYPT and MBEDTLS_CAMELLIA_DECRYPT. * * \param ctx CAMELLIA context * \param length The length of the data @@ -207,22 +200,22 @@ int camellia_crypt_cfb128( camellia_context *ctx, * * \return 0 if successful */ -int camellia_crypt_ctr( camellia_context *ctx, +int mbedtls_camellia_crypt_ctr( mbedtls_camellia_context *ctx, size_t length, size_t *nc_off, unsigned char nonce_counter[16], unsigned char stream_block[16], const unsigned char *input, unsigned char *output ); -#endif /* POLARSSL_CIPHER_MODE_CTR */ +#endif /* MBEDTLS_CIPHER_MODE_CTR */ #ifdef __cplusplus } #endif -#else /* POLARSSL_CAMELLIA_ALT */ +#else /* MBEDTLS_CAMELLIA_ALT */ #include "camellia_alt.h" -#endif /* POLARSSL_CAMELLIA_ALT */ +#endif /* MBEDTLS_CAMELLIA_ALT */ #ifdef __cplusplus extern "C" { @@ -233,7 +226,7 @@ extern "C" { * * \return 0 if successful, or 1 if the test failed */ -int camellia_self_test( int verbose ); +int mbedtls_camellia_self_test( int verbose ); #ifdef __cplusplus } diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/ccm.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ccm.h similarity index 60% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/ccm.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ccm.h index f1f24bd..ef75839 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/ccm.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ccm.h @@ -3,31 +3,30 @@ * * \brief Counter with CBC-MAC (CCM) for 128-bit block ciphers * - * Copyright (C) 2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_CCM_H -#define POLARSSL_CCM_H +#ifndef MBEDTLS_CCM_H +#define MBEDTLS_CCM_H #include "cipher.h" -#define POLARSSL_ERR_CCM_BAD_INPUT -0x000D /**< Bad input parameters to function. */ -#define POLARSSL_ERR_CCM_AUTH_FAILED -0x000F /**< Authenticated decryption failed. */ +#define MBEDTLS_ERR_CCM_BAD_INPUT -0x000D /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_CCM_AUTH_FAILED -0x000F /**< Authenticated decryption failed. */ #ifdef __cplusplus extern "C" { @@ -37,9 +36,18 @@ extern "C" { * \brief CCM context structure */ typedef struct { - cipher_context_t cipher_ctx; /*!< cipher context used */ + mbedtls_cipher_context_t cipher_ctx; /*!< cipher context used */ } -ccm_context; +mbedtls_ccm_context; + +/** + * \brief Initialize CCM context (just makes references valid) + * Makes the context ready for mbedtls_ccm_setkey() or + * mbedtls_ccm_free(). + * + * \param ctx CCM context to initialize + */ +void mbedtls_ccm_init( mbedtls_ccm_context *ctx ); /** * \brief CCM initialization (encryption and decryption) @@ -47,19 +55,21 @@ ccm_context; * \param ctx CCM context to be initialized * \param cipher cipher to use (a 128-bit block cipher) * \param key encryption key - * \param keysize key size in bits (must be acceptable by the cipher) + * \param keybits key size in bits (must be acceptable by the cipher) * * \return 0 if successful, or a cipher specific error code */ -int ccm_init( ccm_context *ctx, cipher_id_t cipher, - const unsigned char *key, unsigned int keysize ); +int mbedtls_ccm_setkey( mbedtls_ccm_context *ctx, + mbedtls_cipher_id_t cipher, + const unsigned char *key, + unsigned int keybits ); /** * \brief Free a CCM context and underlying cipher sub-context * * \param ctx CCM context to free */ -void ccm_free( ccm_context *ctx ); +void mbedtls_ccm_free( mbedtls_ccm_context *ctx ); /** * \brief CCM buffer encryption @@ -86,7 +96,7 @@ void ccm_free( ccm_context *ctx ); * * \return 0 if successful */ -int ccm_encrypt_and_tag( ccm_context *ctx, size_t length, +int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len, const unsigned char *input, unsigned char *output, @@ -107,25 +117,25 @@ int ccm_encrypt_and_tag( ccm_context *ctx, size_t length, * \param tag_len length of the tag * * \return 0 if successful and authenticated, - * POLARSSL_ERR_CCM_AUTH_FAILED if tag does not match + * MBEDTLS_ERR_CCM_AUTH_FAILED if tag does not match */ -int ccm_auth_decrypt( ccm_context *ctx, size_t length, +int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len, const unsigned char *input, unsigned char *output, const unsigned char *tag, size_t tag_len ); -#if defined(POLARSSL_SELF_TEST) && defined(POLARSSL_AES_C) +#if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C) /** * \brief Checkup routine * * \return 0 if successful, or 1 if the test failed */ -int ccm_self_test( int verbose ); -#endif /* POLARSSL_SELF_TEST && POLARSSL_AES_C */ +int mbedtls_ccm_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST && MBEDTLS_AES_C */ #ifdef __cplusplus } #endif -#endif /* POLARSSL_CGM_H */ +#endif /* MBEDTLS_CCM_H */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/certs.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/certs.h new file mode 100644 index 0000000..ca49086 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/certs.h @@ -0,0 +1,99 @@ +/** + * \file certs.h + * + * \brief Sample certificates and DHM parameters for testing + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_CERTS_H +#define MBEDTLS_CERTS_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(MBEDTLS_PEM_PARSE_C) +/* Concatenation of all CA certificates in PEM format if available */ +extern const char mbedtls_test_cas_pem[]; +extern const size_t mbedtls_test_cas_pem_len; +#endif + +/* List of all CA certificates, terminated by NULL */ +extern const char * mbedtls_test_cas[]; +extern const size_t mbedtls_test_cas_len[]; + +/* + * Convenience for users who just want a certificate: + * RSA by default, or ECDSA if RSA is not available + */ +extern const char * mbedtls_test_ca_crt; +extern const size_t mbedtls_test_ca_crt_len; +extern const char * mbedtls_test_ca_key; +extern const size_t mbedtls_test_ca_key_len; +extern const char * mbedtls_test_ca_pwd; +extern const size_t mbedtls_test_ca_pwd_len; +extern const char * mbedtls_test_srv_crt; +extern const size_t mbedtls_test_srv_crt_len; +extern const char * mbedtls_test_srv_key; +extern const size_t mbedtls_test_srv_key_len; +extern const char * mbedtls_test_cli_crt; +extern const size_t mbedtls_test_cli_crt_len; +extern const char * mbedtls_test_cli_key; +extern const size_t mbedtls_test_cli_key_len; + +#if defined(MBEDTLS_ECDSA_C) +extern const char mbedtls_test_ca_crt_ec[]; +extern const size_t mbedtls_test_ca_crt_ec_len; +extern const char mbedtls_test_ca_key_ec[]; +extern const size_t mbedtls_test_ca_key_ec_len; +extern const char mbedtls_test_ca_pwd_ec[]; +extern const size_t mbedtls_test_ca_pwd_ec_len; +extern const char mbedtls_test_srv_crt_ec[]; +extern const size_t mbedtls_test_srv_crt_ec_len; +extern const char mbedtls_test_srv_key_ec[]; +extern const size_t mbedtls_test_srv_key_ec_len; +extern const char mbedtls_test_cli_crt_ec[]; +extern const size_t mbedtls_test_cli_crt_ec_len; +extern const char mbedtls_test_cli_key_ec[]; +extern const size_t mbedtls_test_cli_key_ec_len; +#endif + +#if defined(MBEDTLS_RSA_C) +extern const char mbedtls_test_ca_crt_rsa[]; +extern const size_t mbedtls_test_ca_crt_rsa_len; +extern const char mbedtls_test_ca_key_rsa[]; +extern const size_t mbedtls_test_ca_key_rsa_len; +extern const char mbedtls_test_ca_pwd_rsa[]; +extern const size_t mbedtls_test_ca_pwd_rsa_len; +extern const char mbedtls_test_srv_crt_rsa[]; +extern const size_t mbedtls_test_srv_crt_rsa_len; +extern const char mbedtls_test_srv_key_rsa[]; +extern const size_t mbedtls_test_srv_key_rsa_len; +extern const char mbedtls_test_cli_crt_rsa[]; +extern const size_t mbedtls_test_cli_crt_rsa_len; +extern const char mbedtls_test_cli_key_rsa[]; +extern const size_t mbedtls_test_cli_key_rsa_len; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* certs.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/check_config.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/check_config.h new file mode 100644 index 0000000..fe86c1e --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/check_config.h @@ -0,0 +1,628 @@ +/** + * \file check_config.h + * + * \brief Consistency checks for configuration options + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +/* + * It is recommended to include this file from your config.h + * in order to catch dependency issues early. + */ + +#ifndef MBEDTLS_CHECK_CONFIG_H +#define MBEDTLS_CHECK_CONFIG_H + +/* + * We assume CHAR_BIT is 8 in many places. In practice, this is true on our + * target platforms, so not an issue, but let's just be extra sure. + */ +#include +#if CHAR_BIT != 8 +#error "mbed TLS requires a platform with 8-bit chars" +#endif + +#if defined(_WIN32) +#if !defined(MBEDTLS_PLATFORM_C) +#error "MBEDTLS_PLATFORM_C is required on Windows" +#endif + +/* Fix the config here. Not convenient to put an #ifdef _WIN32 in config.h as + * it would confuse config.pl. */ +#if !defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) && \ + !defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO) +#define MBEDTLS_PLATFORM_SNPRINTF_ALT +#endif +#endif /* _WIN32 */ + +#if defined(TARGET_LIKE_MBED) && \ + ( defined(MBEDTLS_NET_C) || defined(MBEDTLS_TIMING_C) ) +#error "The NET and TIMING modules are not available for mbed OS - please use the network and timing functions provided by mbed OS" +#endif + +#if defined(MBEDTLS_DEPRECATED_WARNING) && \ + !defined(__GNUC__) && !defined(__clang__) +#error "MBEDTLS_DEPRECATED_WARNING only works with GCC and Clang" +#endif + +#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_HAVE_TIME) +#error "MBEDTLS_HAVE_TIME_DATE without MBEDTLS_HAVE_TIME does not make sense" +#endif + +#if defined(MBEDTLS_AESNI_C) && !defined(MBEDTLS_HAVE_ASM) +#error "MBEDTLS_AESNI_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_CTR_DRBG_C) && !defined(MBEDTLS_AES_C) +#error "MBEDTLS_CTR_DRBG_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_DHM_C) && !defined(MBEDTLS_BIGNUM_C) +#error "MBEDTLS_DHM_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_CMAC_C) && \ + !defined(MBEDTLS_AES_C) && !defined(MBEDTLS_DES_C) +#error "MBEDTLS_CMAC_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_ECDH_C) && !defined(MBEDTLS_ECP_C) +#error "MBEDTLS_ECDH_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_ECDSA_C) && \ + ( !defined(MBEDTLS_ECP_C) || \ + !defined(MBEDTLS_ASN1_PARSE_C) || \ + !defined(MBEDTLS_ASN1_WRITE_C) ) +#error "MBEDTLS_ECDSA_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_ECJPAKE_C) && \ + ( !defined(MBEDTLS_ECP_C) || !defined(MBEDTLS_MD_C) ) +#error "MBEDTLS_ECJPAKE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) && !defined(MBEDTLS_HMAC_DRBG_C) +#error "MBEDTLS_ECDSA_DETERMINISTIC defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_ECP_C) && ( !defined(MBEDTLS_BIGNUM_C) || ( \ + !defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) && \ + !defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) ) ) +#error "MBEDTLS_ECP_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_ENTROPY_C) && (!defined(MBEDTLS_SHA512_C) && \ + !defined(MBEDTLS_SHA256_C)) +#error "MBEDTLS_ENTROPY_C defined, but not all prerequisites" +#endif +#if defined(MBEDTLS_ENTROPY_C) && defined(MBEDTLS_SHA512_C) && \ + defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) && (MBEDTLS_CTR_DRBG_ENTROPY_LEN > 64) +#error "MBEDTLS_CTR_DRBG_ENTROPY_LEN value too high" +#endif +#if defined(MBEDTLS_ENTROPY_C) && \ + ( !defined(MBEDTLS_SHA512_C) || defined(MBEDTLS_ENTROPY_FORCE_SHA256) ) \ + && defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) && (MBEDTLS_CTR_DRBG_ENTROPY_LEN > 32) +#error "MBEDTLS_CTR_DRBG_ENTROPY_LEN value too high" +#endif +#if defined(MBEDTLS_ENTROPY_C) && \ + defined(MBEDTLS_ENTROPY_FORCE_SHA256) && !defined(MBEDTLS_SHA256_C) +#error "MBEDTLS_ENTROPY_FORCE_SHA256 defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_TEST_NULL_ENTROPY) && \ + ( !defined(MBEDTLS_ENTROPY_C) || !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES) ) +#error "MBEDTLS_TEST_NULL_ENTROPY defined, but not all prerequisites" +#endif +#if defined(MBEDTLS_TEST_NULL_ENTROPY) && \ + ( defined(MBEDTLS_ENTROPY_NV_SEED) || defined(MBEDTLS_ENTROPY_HARDWARE_ALT) || \ + defined(MBEDTLS_HAVEGE_C) ) +#error "MBEDTLS_TEST_NULL_ENTROPY defined, but entropy sources too" +#endif + +#if defined(MBEDTLS_GCM_C) && ( \ + !defined(MBEDTLS_AES_C) && !defined(MBEDTLS_CAMELLIA_C) ) +#error "MBEDTLS_GCM_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_HAVEGE_C) && !defined(MBEDTLS_TIMING_C) +#error "MBEDTLS_HAVEGE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_HMAC_DRBG_C) && !defined(MBEDTLS_MD_C) +#error "MBEDTLS_HMAC_DRBG_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) && \ + ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) ) +#error "MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) && \ + ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) ) +#error "MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) && !defined(MBEDTLS_DHM_C) +#error "MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) && \ + !defined(MBEDTLS_ECDH_C) +#error "MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) && \ + ( !defined(MBEDTLS_DHM_C) || !defined(MBEDTLS_RSA_C) || \ + !defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_PKCS1_V15) ) +#error "MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) && \ + ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_RSA_C) || \ + !defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_PKCS1_V15) ) +#error "MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) && \ + ( !defined(MBEDTLS_ECDH_C) || !defined(MBEDTLS_ECDSA_C) || \ + !defined(MBEDTLS_X509_CRT_PARSE_C) ) +#error "MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) && \ + ( !defined(MBEDTLS_RSA_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) || \ + !defined(MBEDTLS_PKCS1_V15) ) +#error "MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) && \ + ( !defined(MBEDTLS_RSA_C) || !defined(MBEDTLS_X509_CRT_PARSE_C) || \ + !defined(MBEDTLS_PKCS1_V15) ) +#error "MBEDTLS_KEY_EXCHANGE_RSA_ENABLED defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) && \ + ( !defined(MBEDTLS_ECJPAKE_C) || !defined(MBEDTLS_SHA256_C) || \ + !defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) ) +#error "MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && \ + ( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_PLATFORM_MEMORY) ) +#error "MBEDTLS_MEMORY_BUFFER_ALLOC_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PADLOCK_C) && !defined(MBEDTLS_HAVE_ASM) +#error "MBEDTLS_PADLOCK_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PEM_PARSE_C) && !defined(MBEDTLS_BASE64_C) +#error "MBEDTLS_PEM_PARSE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PEM_WRITE_C) && !defined(MBEDTLS_BASE64_C) +#error "MBEDTLS_PEM_WRITE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PK_C) && \ + ( !defined(MBEDTLS_RSA_C) && !defined(MBEDTLS_ECP_C) ) +#error "MBEDTLS_PK_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PK_PARSE_C) && !defined(MBEDTLS_PK_C) +#error "MBEDTLS_PK_PARSE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PK_WRITE_C) && !defined(MBEDTLS_PK_C) +#error "MBEDTLS_PK_WRITE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PKCS11_C) && !defined(MBEDTLS_PK_C) +#error "MBEDTLS_PKCS11_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_EXIT_ALT) && !defined(MBEDTLS_PLATFORM_C) +#error "MBEDTLS_PLATFORM_EXIT_ALT defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_EXIT_MACRO) && !defined(MBEDTLS_PLATFORM_C) +#error "MBEDTLS_PLATFORM_EXIT_MACRO defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_EXIT_MACRO) &&\ + ( defined(MBEDTLS_PLATFORM_STD_EXIT) ||\ + defined(MBEDTLS_PLATFORM_EXIT_ALT) ) +#error "MBEDTLS_PLATFORM_EXIT_MACRO and MBEDTLS_PLATFORM_STD_EXIT/MBEDTLS_PLATFORM_EXIT_ALT cannot be defined simultaneously" +#endif + +#if defined(MBEDTLS_PLATFORM_TIME_ALT) &&\ + ( !defined(MBEDTLS_PLATFORM_C) ||\ + !defined(MBEDTLS_HAVE_TIME) ) +#error "MBEDTLS_PLATFORM_TIME_ALT defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_TIME_MACRO) &&\ + ( !defined(MBEDTLS_PLATFORM_C) ||\ + !defined(MBEDTLS_HAVE_TIME) ) +#error "MBEDTLS_PLATFORM_TIME_MACRO defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) &&\ + ( !defined(MBEDTLS_PLATFORM_C) ||\ + !defined(MBEDTLS_HAVE_TIME) ) +#error "MBEDTLS_PLATFORM_TIME_TYPE_MACRO defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_TIME_MACRO) &&\ + ( defined(MBEDTLS_PLATFORM_STD_TIME) ||\ + defined(MBEDTLS_PLATFORM_TIME_ALT) ) +#error "MBEDTLS_PLATFORM_TIME_MACRO and MBEDTLS_PLATFORM_STD_TIME/MBEDTLS_PLATFORM_TIME_ALT cannot be defined simultaneously" +#endif + +#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) &&\ + ( defined(MBEDTLS_PLATFORM_STD_TIME) ||\ + defined(MBEDTLS_PLATFORM_TIME_ALT) ) +#error "MBEDTLS_PLATFORM_TIME_TYPE_MACRO and MBEDTLS_PLATFORM_STD_TIME/MBEDTLS_PLATFORM_TIME_ALT cannot be defined simultaneously" +#endif + +#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT) && !defined(MBEDTLS_PLATFORM_C) +#error "MBEDTLS_PLATFORM_FPRINTF_ALT defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO) && !defined(MBEDTLS_PLATFORM_C) +#error "MBEDTLS_PLATFORM_FPRINTF_MACRO defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO) &&\ + ( defined(MBEDTLS_PLATFORM_STD_FPRINTF) ||\ + defined(MBEDTLS_PLATFORM_FPRINTF_ALT) ) +#error "MBEDTLS_PLATFORM_FPRINTF_MACRO and MBEDTLS_PLATFORM_STD_FPRINTF/MBEDTLS_PLATFORM_FPRINTF_ALT cannot be defined simultaneously" +#endif + +#if defined(MBEDTLS_PLATFORM_FREE_MACRO) &&\ + ( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_PLATFORM_MEMORY) ) +#error "MBEDTLS_PLATFORM_FREE_MACRO defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_FREE_MACRO) &&\ + defined(MBEDTLS_PLATFORM_STD_FREE) +#error "MBEDTLS_PLATFORM_FREE_MACRO and MBEDTLS_PLATFORM_STD_FREE cannot be defined simultaneously" +#endif + +#if defined(MBEDTLS_PLATFORM_FREE_MACRO) && !defined(MBEDTLS_PLATFORM_CALLOC_MACRO) +#error "MBEDTLS_PLATFORM_CALLOC_MACRO must be defined if MBEDTLS_PLATFORM_FREE_MACRO is" +#endif + +#if defined(MBEDTLS_PLATFORM_CALLOC_MACRO) &&\ + ( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_PLATFORM_MEMORY) ) +#error "MBEDTLS_PLATFORM_CALLOC_MACRO defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_CALLOC_MACRO) &&\ + defined(MBEDTLS_PLATFORM_STD_CALLOC) +#error "MBEDTLS_PLATFORM_CALLOC_MACRO and MBEDTLS_PLATFORM_STD_CALLOC cannot be defined simultaneously" +#endif + +#if defined(MBEDTLS_PLATFORM_CALLOC_MACRO) && !defined(MBEDTLS_PLATFORM_FREE_MACRO) +#error "MBEDTLS_PLATFORM_FREE_MACRO must be defined if MBEDTLS_PLATFORM_CALLOC_MACRO is" +#endif + +#if defined(MBEDTLS_PLATFORM_MEMORY) && !defined(MBEDTLS_PLATFORM_C) +#error "MBEDTLS_PLATFORM_MEMORY defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_PRINTF_ALT) && !defined(MBEDTLS_PLATFORM_C) +#error "MBEDTLS_PLATFORM_PRINTF_ALT defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_PRINTF_MACRO) && !defined(MBEDTLS_PLATFORM_C) +#error "MBEDTLS_PLATFORM_PRINTF_MACRO defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_PRINTF_MACRO) &&\ + ( defined(MBEDTLS_PLATFORM_STD_PRINTF) ||\ + defined(MBEDTLS_PLATFORM_PRINTF_ALT) ) +#error "MBEDTLS_PLATFORM_PRINTF_MACRO and MBEDTLS_PLATFORM_STD_PRINTF/MBEDTLS_PLATFORM_PRINTF_ALT cannot be defined simultaneously" +#endif + +#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) && !defined(MBEDTLS_PLATFORM_C) +#error "MBEDTLS_PLATFORM_SNPRINTF_ALT defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO) && !defined(MBEDTLS_PLATFORM_C) +#error "MBEDTLS_PLATFORM_SNPRINTF_MACRO defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO) &&\ + ( defined(MBEDTLS_PLATFORM_STD_SNPRINTF) ||\ + defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) ) +#error "MBEDTLS_PLATFORM_SNPRINTF_MACRO and MBEDTLS_PLATFORM_STD_SNPRINTF/MBEDTLS_PLATFORM_SNPRINTF_ALT cannot be defined simultaneously" +#endif + +#if defined(MBEDTLS_PLATFORM_STD_MEM_HDR) &&\ + !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) +#error "MBEDTLS_PLATFORM_STD_MEM_HDR defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_STD_CALLOC) && !defined(MBEDTLS_PLATFORM_MEMORY) +#error "MBEDTLS_PLATFORM_STD_CALLOC defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_STD_CALLOC) && !defined(MBEDTLS_PLATFORM_MEMORY) +#error "MBEDTLS_PLATFORM_STD_CALLOC defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_STD_FREE) && !defined(MBEDTLS_PLATFORM_MEMORY) +#error "MBEDTLS_PLATFORM_STD_FREE defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_STD_EXIT) &&\ + !defined(MBEDTLS_PLATFORM_EXIT_ALT) +#error "MBEDTLS_PLATFORM_STD_EXIT defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_STD_TIME) &&\ + ( !defined(MBEDTLS_PLATFORM_TIME_ALT) ||\ + !defined(MBEDTLS_HAVE_TIME) ) +#error "MBEDTLS_PLATFORM_STD_TIME defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_STD_FPRINTF) &&\ + !defined(MBEDTLS_PLATFORM_FPRINTF_ALT) +#error "MBEDTLS_PLATFORM_STD_FPRINTF defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_STD_PRINTF) &&\ + !defined(MBEDTLS_PLATFORM_PRINTF_ALT) +#error "MBEDTLS_PLATFORM_STD_PRINTF defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_STD_SNPRINTF) &&\ + !defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) +#error "MBEDTLS_PLATFORM_STD_SNPRINTF defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_ENTROPY_NV_SEED) &&\ + ( !defined(MBEDTLS_PLATFORM_C) || !defined(MBEDTLS_ENTROPY_C) ) +#error "MBEDTLS_ENTROPY_NV_SEED defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_NV_SEED_ALT) &&\ + !defined(MBEDTLS_ENTROPY_NV_SEED) +#error "MBEDTLS_PLATFORM_NV_SEED_ALT defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ) &&\ + !defined(MBEDTLS_PLATFORM_NV_SEED_ALT) +#error "MBEDTLS_PLATFORM_STD_NV_SEED_READ defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE) &&\ + !defined(MBEDTLS_PLATFORM_NV_SEED_ALT) +#error "MBEDTLS_PLATFORM_STD_NV_SEED_WRITE defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) &&\ + ( defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ) ||\ + defined(MBEDTLS_PLATFORM_NV_SEED_ALT) ) +#error "MBEDTLS_PLATFORM_NV_SEED_READ_MACRO and MBEDTLS_PLATFORM_STD_NV_SEED_READ cannot be defined simultaneously" +#endif + +#if defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO) &&\ + ( defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE) ||\ + defined(MBEDTLS_PLATFORM_NV_SEED_ALT) ) +#error "MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO and MBEDTLS_PLATFORM_STD_NV_SEED_WRITE cannot be defined simultaneously" +#endif + +#if defined(MBEDTLS_RSA_C) && ( !defined(MBEDTLS_BIGNUM_C) || \ + !defined(MBEDTLS_OID_C) ) +#error "MBEDTLS_RSA_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_RSA_C) && ( !defined(MBEDTLS_PKCS1_V21) && \ + !defined(MBEDTLS_PKCS1_V15) ) +#error "MBEDTLS_RSA_C defined, but none of the PKCS1 versions enabled" +#endif + +#if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT) && \ + ( !defined(MBEDTLS_RSA_C) || !defined(MBEDTLS_PKCS1_V21) ) +#error "MBEDTLS_X509_RSASSA_PSS_SUPPORT defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_PROTO_SSL3) && ( !defined(MBEDTLS_MD5_C) || \ + !defined(MBEDTLS_SHA1_C) ) +#error "MBEDTLS_SSL_PROTO_SSL3 defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_PROTO_TLS1) && ( !defined(MBEDTLS_MD5_C) || \ + !defined(MBEDTLS_SHA1_C) ) +#error "MBEDTLS_SSL_PROTO_TLS1 defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_PROTO_TLS1_1) && ( !defined(MBEDTLS_MD5_C) || \ + !defined(MBEDTLS_SHA1_C) ) +#error "MBEDTLS_SSL_PROTO_TLS1_1 defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) && ( !defined(MBEDTLS_SHA1_C) && \ + !defined(MBEDTLS_SHA256_C) && !defined(MBEDTLS_SHA512_C) ) +#error "MBEDTLS_SSL_PROTO_TLS1_2 defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_PROTO_DTLS) && \ + !defined(MBEDTLS_SSL_PROTO_TLS1_1) && \ + !defined(MBEDTLS_SSL_PROTO_TLS1_2) +#error "MBEDTLS_SSL_PROTO_DTLS defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_CLI_C) && !defined(MBEDTLS_SSL_TLS_C) +#error "MBEDTLS_SSL_CLI_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_TLS_C) && ( !defined(MBEDTLS_CIPHER_C) || \ + !defined(MBEDTLS_MD_C) ) +#error "MBEDTLS_SSL_TLS_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_SRV_C) && !defined(MBEDTLS_SSL_TLS_C) +#error "MBEDTLS_SSL_SRV_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_TLS_C) && (!defined(MBEDTLS_SSL_PROTO_SSL3) && \ + !defined(MBEDTLS_SSL_PROTO_TLS1) && !defined(MBEDTLS_SSL_PROTO_TLS1_1) && \ + !defined(MBEDTLS_SSL_PROTO_TLS1_2)) +#error "MBEDTLS_SSL_TLS_C defined, but no protocols are active" +#endif + +#if defined(MBEDTLS_SSL_TLS_C) && (defined(MBEDTLS_SSL_PROTO_SSL3) && \ + defined(MBEDTLS_SSL_PROTO_TLS1_1) && !defined(MBEDTLS_SSL_PROTO_TLS1)) +#error "Illegal protocol selection" +#endif + +#if defined(MBEDTLS_SSL_TLS_C) && (defined(MBEDTLS_SSL_PROTO_TLS1) && \ + defined(MBEDTLS_SSL_PROTO_TLS1_2) && !defined(MBEDTLS_SSL_PROTO_TLS1_1)) +#error "Illegal protocol selection" +#endif + +#if defined(MBEDTLS_SSL_TLS_C) && (defined(MBEDTLS_SSL_PROTO_SSL3) && \ + defined(MBEDTLS_SSL_PROTO_TLS1_2) && (!defined(MBEDTLS_SSL_PROTO_TLS1) || \ + !defined(MBEDTLS_SSL_PROTO_TLS1_1))) +#error "Illegal protocol selection" +#endif + +#if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && !defined(MBEDTLS_SSL_PROTO_DTLS) +#error "MBEDTLS_SSL_DTLS_HELLO_VERIFY defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) && \ + !defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) +#error "MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) && \ + ( !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) ) +#error "MBEDTLS_SSL_DTLS_ANTI_REPLAY defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) && \ + ( !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) ) +#error "MBEDTLS_SSL_DTLS_BADMAC_LIMIT defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) && \ + !defined(MBEDTLS_SSL_PROTO_TLS1) && \ + !defined(MBEDTLS_SSL_PROTO_TLS1_1) && \ + !defined(MBEDTLS_SSL_PROTO_TLS1_2) +#error "MBEDTLS_SSL_ENCRYPT_THEN_MAC defined, but not all prerequsites" +#endif + +#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) && \ + !defined(MBEDTLS_SSL_PROTO_TLS1) && \ + !defined(MBEDTLS_SSL_PROTO_TLS1_1) && \ + !defined(MBEDTLS_SSL_PROTO_TLS1_2) +#error "MBEDTLS_SSL_EXTENDED_MASTER_SECRET defined, but not all prerequsites" +#endif + +#if defined(MBEDTLS_SSL_TICKET_C) && !defined(MBEDTLS_CIPHER_C) +#error "MBEDTLS_SSL_TICKET_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) && \ + !defined(MBEDTLS_SSL_PROTO_SSL3) && !defined(MBEDTLS_SSL_PROTO_TLS1) +#error "MBEDTLS_SSL_CBC_RECORD_SPLITTING defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) && \ + !defined(MBEDTLS_X509_CRT_PARSE_C) +#error "MBEDTLS_SSL_SERVER_NAME_INDICATION defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_THREADING_PTHREAD) +#if !defined(MBEDTLS_THREADING_C) || defined(MBEDTLS_THREADING_IMPL) +#error "MBEDTLS_THREADING_PTHREAD defined, but not all prerequisites" +#endif +#define MBEDTLS_THREADING_IMPL +#endif + +#if defined(MBEDTLS_THREADING_ALT) +#if !defined(MBEDTLS_THREADING_C) || defined(MBEDTLS_THREADING_IMPL) +#error "MBEDTLS_THREADING_ALT defined, but not all prerequisites" +#endif +#define MBEDTLS_THREADING_IMPL +#endif + +#if defined(MBEDTLS_THREADING_C) && !defined(MBEDTLS_THREADING_IMPL) +#error "MBEDTLS_THREADING_C defined, single threading implementation required" +#endif +#undef MBEDTLS_THREADING_IMPL + +#if defined(MBEDTLS_VERSION_FEATURES) && !defined(MBEDTLS_VERSION_C) +#error "MBEDTLS_VERSION_FEATURES defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_X509_USE_C) && ( !defined(MBEDTLS_BIGNUM_C) || \ + !defined(MBEDTLS_OID_C) || !defined(MBEDTLS_ASN1_PARSE_C) || \ + !defined(MBEDTLS_PK_PARSE_C) ) +#error "MBEDTLS_X509_USE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_X509_CREATE_C) && ( !defined(MBEDTLS_BIGNUM_C) || \ + !defined(MBEDTLS_OID_C) || !defined(MBEDTLS_ASN1_WRITE_C) || \ + !defined(MBEDTLS_PK_WRITE_C) ) +#error "MBEDTLS_X509_CREATE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_X509_CRT_PARSE_C) && ( !defined(MBEDTLS_X509_USE_C) ) +#error "MBEDTLS_X509_CRT_PARSE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_X509_CRL_PARSE_C) && ( !defined(MBEDTLS_X509_USE_C) ) +#error "MBEDTLS_X509_CRL_PARSE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_X509_CSR_PARSE_C) && ( !defined(MBEDTLS_X509_USE_C) ) +#error "MBEDTLS_X509_CSR_PARSE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_X509_CRT_WRITE_C) && ( !defined(MBEDTLS_X509_CREATE_C) ) +#error "MBEDTLS_X509_CRT_WRITE_C defined, but not all prerequisites" +#endif + +#if defined(MBEDTLS_X509_CSR_WRITE_C) && ( !defined(MBEDTLS_X509_CREATE_C) ) +#error "MBEDTLS_X509_CSR_WRITE_C defined, but not all prerequisites" +#endif + +/* + * Avoid warning from -pedantic. This is a convenient place for this + * workaround since this is included by every single file before the + * #if defined(MBEDTLS_xxx_C) that results in emtpy translation units. + */ +typedef int mbedtls_iso_c_forbids_empty_translation_units; + +#endif /* MBEDTLS_CHECK_CONFIG_H */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/cipher.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/cipher.h similarity index 55% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/cipher.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/cipher.h index bde1d47..b12e388 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/cipher.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/cipher.h @@ -5,46 +5,45 @@ * * \author Adriaan de Jong * - * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_CIPHER_H -#define POLARSSL_CIPHER_H +#ifndef MBEDTLS_CIPHER_H +#define MBEDTLS_CIPHER_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif #include -#if defined(POLARSSL_GCM_C) || defined(POLARSSL_CCM_C) -#define POLARSSL_CIPHER_MODE_AEAD +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) +#define MBEDTLS_CIPHER_MODE_AEAD #endif -#if defined(POLARSSL_CIPHER_MODE_CBC) -#define POLARSSL_CIPHER_MODE_WITH_PADDING +#if defined(MBEDTLS_CIPHER_MODE_CBC) +#define MBEDTLS_CIPHER_MODE_WITH_PADDING #endif -#if defined(POLARSSL_ARC4_C) -#define POLARSSL_CIPHER_MODE_STREAM +#if defined(MBEDTLS_ARC4_C) +#define MBEDTLS_CIPHER_MODE_STREAM #endif #if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ @@ -52,193 +51,149 @@ #define inline __inline #endif -#define POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080 /**< The selected feature is not available. */ -#define POLARSSL_ERR_CIPHER_BAD_INPUT_DATA -0x6100 /**< Bad input parameters to function. */ -#define POLARSSL_ERR_CIPHER_ALLOC_FAILED -0x6180 /**< Failed to allocate memory. */ -#define POLARSSL_ERR_CIPHER_INVALID_PADDING -0x6200 /**< Input data contains invalid padding and is rejected. */ -#define POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280 /**< Decryption of block requires a full block. */ -#define POLARSSL_ERR_CIPHER_AUTH_FAILED -0x6300 /**< Authentication failed (for AEAD modes). */ +#define MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080 /**< The selected feature is not available. */ +#define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA -0x6100 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_CIPHER_ALLOC_FAILED -0x6180 /**< Failed to allocate memory. */ +#define MBEDTLS_ERR_CIPHER_INVALID_PADDING -0x6200 /**< Input data contains invalid padding and is rejected. */ +#define MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280 /**< Decryption of block requires a full block. */ +#define MBEDTLS_ERR_CIPHER_AUTH_FAILED -0x6300 /**< Authentication failed (for AEAD modes). */ +#define MBEDTLS_ERR_CIPHER_INVALID_CONTEXT -0x6380 /**< The context is invalid, eg because it was free()ed. */ -#define POLARSSL_CIPHER_VARIABLE_IV_LEN 0x01 /**< Cipher accepts IVs of variable length */ -#define POLARSSL_CIPHER_VARIABLE_KEY_LEN 0x02 /**< Cipher accepts keys of variable length */ +#define MBEDTLS_CIPHER_VARIABLE_IV_LEN 0x01 /**< Cipher accepts IVs of variable length */ +#define MBEDTLS_CIPHER_VARIABLE_KEY_LEN 0x02 /**< Cipher accepts keys of variable length */ #ifdef __cplusplus extern "C" { #endif typedef enum { - POLARSSL_CIPHER_ID_NONE = 0, - POLARSSL_CIPHER_ID_NULL, - POLARSSL_CIPHER_ID_AES, - POLARSSL_CIPHER_ID_DES, - POLARSSL_CIPHER_ID_3DES, /* Unused! */ - POLARSSL_CIPHER_ID_CAMELLIA, - POLARSSL_CIPHER_ID_BLOWFISH, - POLARSSL_CIPHER_ID_ARC4, -} cipher_id_t; + MBEDTLS_CIPHER_ID_NONE = 0, + MBEDTLS_CIPHER_ID_NULL, + MBEDTLS_CIPHER_ID_AES, + MBEDTLS_CIPHER_ID_DES, + MBEDTLS_CIPHER_ID_3DES, + MBEDTLS_CIPHER_ID_CAMELLIA, + MBEDTLS_CIPHER_ID_BLOWFISH, + MBEDTLS_CIPHER_ID_ARC4, +} mbedtls_cipher_id_t; typedef enum { - POLARSSL_CIPHER_NONE = 0, - POLARSSL_CIPHER_NULL, - POLARSSL_CIPHER_AES_128_ECB, - POLARSSL_CIPHER_AES_192_ECB, - POLARSSL_CIPHER_AES_256_ECB, - POLARSSL_CIPHER_AES_128_CBC, - POLARSSL_CIPHER_AES_192_CBC, - POLARSSL_CIPHER_AES_256_CBC, - POLARSSL_CIPHER_AES_128_CFB128, - POLARSSL_CIPHER_AES_192_CFB128, - POLARSSL_CIPHER_AES_256_CFB128, - POLARSSL_CIPHER_AES_128_CTR, - POLARSSL_CIPHER_AES_192_CTR, - POLARSSL_CIPHER_AES_256_CTR, - POLARSSL_CIPHER_AES_128_GCM, - POLARSSL_CIPHER_AES_192_GCM, - POLARSSL_CIPHER_AES_256_GCM, - POLARSSL_CIPHER_CAMELLIA_128_ECB, - POLARSSL_CIPHER_CAMELLIA_192_ECB, - POLARSSL_CIPHER_CAMELLIA_256_ECB, - POLARSSL_CIPHER_CAMELLIA_128_CBC, - POLARSSL_CIPHER_CAMELLIA_192_CBC, - POLARSSL_CIPHER_CAMELLIA_256_CBC, - POLARSSL_CIPHER_CAMELLIA_128_CFB128, - POLARSSL_CIPHER_CAMELLIA_192_CFB128, - POLARSSL_CIPHER_CAMELLIA_256_CFB128, - POLARSSL_CIPHER_CAMELLIA_128_CTR, - POLARSSL_CIPHER_CAMELLIA_192_CTR, - POLARSSL_CIPHER_CAMELLIA_256_CTR, - POLARSSL_CIPHER_CAMELLIA_128_GCM, - POLARSSL_CIPHER_CAMELLIA_192_GCM, - POLARSSL_CIPHER_CAMELLIA_256_GCM, - POLARSSL_CIPHER_DES_ECB, - POLARSSL_CIPHER_DES_CBC, - POLARSSL_CIPHER_DES_EDE_ECB, - POLARSSL_CIPHER_DES_EDE_CBC, - POLARSSL_CIPHER_DES_EDE3_ECB, - POLARSSL_CIPHER_DES_EDE3_CBC, - POLARSSL_CIPHER_BLOWFISH_ECB, - POLARSSL_CIPHER_BLOWFISH_CBC, - POLARSSL_CIPHER_BLOWFISH_CFB64, - POLARSSL_CIPHER_BLOWFISH_CTR, - POLARSSL_CIPHER_ARC4_128, - POLARSSL_CIPHER_AES_128_CCM, - POLARSSL_CIPHER_AES_192_CCM, - POLARSSL_CIPHER_AES_256_CCM, - POLARSSL_CIPHER_CAMELLIA_128_CCM, - POLARSSL_CIPHER_CAMELLIA_192_CCM, - POLARSSL_CIPHER_CAMELLIA_256_CCM, -} cipher_type_t; + MBEDTLS_CIPHER_NONE = 0, + MBEDTLS_CIPHER_NULL, + MBEDTLS_CIPHER_AES_128_ECB, + MBEDTLS_CIPHER_AES_192_ECB, + MBEDTLS_CIPHER_AES_256_ECB, + MBEDTLS_CIPHER_AES_128_CBC, + MBEDTLS_CIPHER_AES_192_CBC, + MBEDTLS_CIPHER_AES_256_CBC, + MBEDTLS_CIPHER_AES_128_CFB128, + MBEDTLS_CIPHER_AES_192_CFB128, + MBEDTLS_CIPHER_AES_256_CFB128, + MBEDTLS_CIPHER_AES_128_CTR, + MBEDTLS_CIPHER_AES_192_CTR, + MBEDTLS_CIPHER_AES_256_CTR, + MBEDTLS_CIPHER_AES_128_GCM, + MBEDTLS_CIPHER_AES_192_GCM, + MBEDTLS_CIPHER_AES_256_GCM, + MBEDTLS_CIPHER_CAMELLIA_128_ECB, + MBEDTLS_CIPHER_CAMELLIA_192_ECB, + MBEDTLS_CIPHER_CAMELLIA_256_ECB, + MBEDTLS_CIPHER_CAMELLIA_128_CBC, + MBEDTLS_CIPHER_CAMELLIA_192_CBC, + MBEDTLS_CIPHER_CAMELLIA_256_CBC, + MBEDTLS_CIPHER_CAMELLIA_128_CFB128, + MBEDTLS_CIPHER_CAMELLIA_192_CFB128, + MBEDTLS_CIPHER_CAMELLIA_256_CFB128, + MBEDTLS_CIPHER_CAMELLIA_128_CTR, + MBEDTLS_CIPHER_CAMELLIA_192_CTR, + MBEDTLS_CIPHER_CAMELLIA_256_CTR, + MBEDTLS_CIPHER_CAMELLIA_128_GCM, + MBEDTLS_CIPHER_CAMELLIA_192_GCM, + MBEDTLS_CIPHER_CAMELLIA_256_GCM, + MBEDTLS_CIPHER_DES_ECB, + MBEDTLS_CIPHER_DES_CBC, + MBEDTLS_CIPHER_DES_EDE_ECB, + MBEDTLS_CIPHER_DES_EDE_CBC, + MBEDTLS_CIPHER_DES_EDE3_ECB, + MBEDTLS_CIPHER_DES_EDE3_CBC, + MBEDTLS_CIPHER_BLOWFISH_ECB, + MBEDTLS_CIPHER_BLOWFISH_CBC, + MBEDTLS_CIPHER_BLOWFISH_CFB64, + MBEDTLS_CIPHER_BLOWFISH_CTR, + MBEDTLS_CIPHER_ARC4_128, + MBEDTLS_CIPHER_AES_128_CCM, + MBEDTLS_CIPHER_AES_192_CCM, + MBEDTLS_CIPHER_AES_256_CCM, + MBEDTLS_CIPHER_CAMELLIA_128_CCM, + MBEDTLS_CIPHER_CAMELLIA_192_CCM, + MBEDTLS_CIPHER_CAMELLIA_256_CCM, +} mbedtls_cipher_type_t; typedef enum { - POLARSSL_MODE_NONE = 0, - POLARSSL_MODE_ECB, - POLARSSL_MODE_CBC, - POLARSSL_MODE_CFB, - POLARSSL_MODE_OFB, /* Unused! */ - POLARSSL_MODE_CTR, - POLARSSL_MODE_GCM, - POLARSSL_MODE_STREAM, - POLARSSL_MODE_CCM, -} cipher_mode_t; + MBEDTLS_MODE_NONE = 0, + MBEDTLS_MODE_ECB, + MBEDTLS_MODE_CBC, + MBEDTLS_MODE_CFB, + MBEDTLS_MODE_OFB, /* Unused! */ + MBEDTLS_MODE_CTR, + MBEDTLS_MODE_GCM, + MBEDTLS_MODE_STREAM, + MBEDTLS_MODE_CCM, +} mbedtls_cipher_mode_t; typedef enum { - POLARSSL_PADDING_PKCS7 = 0, /**< PKCS7 padding (default) */ - POLARSSL_PADDING_ONE_AND_ZEROS, /**< ISO/IEC 7816-4 padding */ - POLARSSL_PADDING_ZEROS_AND_LEN, /**< ANSI X.923 padding */ - POLARSSL_PADDING_ZEROS, /**< zero padding (not reversible!) */ - POLARSSL_PADDING_NONE, /**< never pad (full blocks only) */ -} cipher_padding_t; + MBEDTLS_PADDING_PKCS7 = 0, /**< PKCS7 padding (default) */ + MBEDTLS_PADDING_ONE_AND_ZEROS, /**< ISO/IEC 7816-4 padding */ + MBEDTLS_PADDING_ZEROS_AND_LEN, /**< ANSI X.923 padding */ + MBEDTLS_PADDING_ZEROS, /**< zero padding (not reversible!) */ + MBEDTLS_PADDING_NONE, /**< never pad (full blocks only) */ +} mbedtls_cipher_padding_t; typedef enum { - POLARSSL_OPERATION_NONE = -1, - POLARSSL_DECRYPT = 0, - POLARSSL_ENCRYPT, -} operation_t; + MBEDTLS_OPERATION_NONE = -1, + MBEDTLS_DECRYPT = 0, + MBEDTLS_ENCRYPT, +} mbedtls_operation_t; enum { /** Undefined key length */ - POLARSSL_KEY_LENGTH_NONE = 0, + MBEDTLS_KEY_LENGTH_NONE = 0, /** Key length, in bits (including parity), for DES keys */ - POLARSSL_KEY_LENGTH_DES = 64, + MBEDTLS_KEY_LENGTH_DES = 64, /** Key length, in bits (including parity), for DES in two key EDE */ - POLARSSL_KEY_LENGTH_DES_EDE = 128, + MBEDTLS_KEY_LENGTH_DES_EDE = 128, /** Key length, in bits (including parity), for DES in three-key EDE */ - POLARSSL_KEY_LENGTH_DES_EDE3 = 192, + MBEDTLS_KEY_LENGTH_DES_EDE3 = 192, }; /** Maximum length of any IV, in bytes */ -#define POLARSSL_MAX_IV_LENGTH 16 +#define MBEDTLS_MAX_IV_LENGTH 16 /** Maximum block size of any cipher, in bytes */ -#define POLARSSL_MAX_BLOCK_LENGTH 16 +#define MBEDTLS_MAX_BLOCK_LENGTH 16 /** - * Base cipher information. The non-mode specific functions and values. + * Base cipher information (opaque struct). */ -typedef struct { +typedef struct mbedtls_cipher_base_t mbedtls_cipher_base_t; - /** Base Cipher type (e.g. POLARSSL_CIPHER_ID_AES) */ - cipher_id_t cipher; - - /** Encrypt using ECB */ - int (*ecb_func)( void *ctx, operation_t mode, - const unsigned char *input, unsigned char *output ); - -#if defined(POLARSSL_CIPHER_MODE_CBC) - /** Encrypt using CBC */ - int (*cbc_func)( void *ctx, operation_t mode, size_t length, - unsigned char *iv, const unsigned char *input, - unsigned char *output ); -#endif - -#if defined(POLARSSL_CIPHER_MODE_CFB) - /** Encrypt using CFB (Full length) */ - int (*cfb_func)( void *ctx, operation_t mode, size_t length, size_t *iv_off, - unsigned char *iv, const unsigned char *input, - unsigned char *output ); -#endif - -#if defined(POLARSSL_CIPHER_MODE_CTR) - /** Encrypt using CTR */ - int (*ctr_func)( void *ctx, size_t length, size_t *nc_off, - unsigned char *nonce_counter, unsigned char *stream_block, - const unsigned char *input, unsigned char *output ); -#endif - -#if defined(POLARSSL_CIPHER_MODE_STREAM) - /** Encrypt using STREAM */ - int (*stream_func)( void *ctx, size_t length, - const unsigned char *input, unsigned char *output ); -#endif - - /** Set key for encryption purposes */ - int (*setkey_enc_func)( void *ctx, const unsigned char *key, - unsigned int key_length ); - - /** Set key for decryption purposes */ - int (*setkey_dec_func)( void *ctx, const unsigned char *key, - unsigned int key_length); - - /** Allocate a new context */ - void * (*ctx_alloc_func)( void ); - - /** Free the given context */ - void (*ctx_free_func)( void *ctx ); - -} cipher_base_t; +/** + * CMAC context (opaque struct). + */ +typedef struct mbedtls_cmac_context_t mbedtls_cmac_context_t; /** * Cipher information. Allows cipher functions to be called in a generic way. */ typedef struct { - /** Full cipher identifier (e.g. POLARSSL_CIPHER_AES_256_CBC) */ - cipher_type_t type; + /** Full cipher identifier (e.g. MBEDTLS_CIPHER_AES_256_CBC) */ + mbedtls_cipher_type_t type; - /** Cipher mode (e.g. POLARSSL_MODE_CBC) */ - cipher_mode_t mode; + /** Cipher mode (e.g. MBEDTLS_MODE_CBC) */ + mbedtls_cipher_mode_t mode; /** Cipher key length, in bits (default length for variable sized ciphers) * (Includes parity bits for ciphers like DES) */ - unsigned int key_length; + unsigned int key_bitlen; /** Name of the cipher */ const char * name; @@ -254,44 +209,49 @@ typedef struct { unsigned int block_size; /** Base cipher information and functions */ - const cipher_base_t *base; + const mbedtls_cipher_base_t *base; -} cipher_info_t; +} mbedtls_cipher_info_t; /** * Generic cipher context. */ typedef struct { /** Information about the associated cipher */ - const cipher_info_t *cipher_info; + const mbedtls_cipher_info_t *cipher_info; /** Key length to use */ - int key_length; + int key_bitlen; /** Operation that the context's key has been initialised for */ - operation_t operation; + mbedtls_operation_t operation; -#if defined(POLARSSL_CIPHER_MODE_WITH_PADDING) +#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) /** Padding functions to use, if relevant for cipher mode */ void (*add_padding)( unsigned char *output, size_t olen, size_t data_len ); int (*get_padding)( unsigned char *input, size_t ilen, size_t *data_len ); #endif /** Buffer for data that hasn't been encrypted yet */ - unsigned char unprocessed_data[POLARSSL_MAX_BLOCK_LENGTH]; + unsigned char unprocessed_data[MBEDTLS_MAX_BLOCK_LENGTH]; /** Number of bytes that still need processing */ size_t unprocessed_len; /** Current IV or NONCE_COUNTER for CTR-mode */ - unsigned char iv[POLARSSL_MAX_IV_LENGTH]; + unsigned char iv[MBEDTLS_MAX_IV_LENGTH]; /** IV size in bytes (for ciphers with variable-length IVs) */ size_t iv_size; /** Cipher-specific context */ void *cipher_ctx; -} cipher_context_t; + +#if defined(MBEDTLS_CMAC_C) + /** CMAC Specific context */ + mbedtls_cmac_context_t *cmac_ctx; +#endif +} mbedtls_cipher_context_t; /** * \brief Returns the list of ciphers supported by the generic cipher module. @@ -299,7 +259,7 @@ typedef struct { * \return a statically allocated array of ciphers, the last entry * is 0. */ -const int *cipher_list( void ); +const int *mbedtls_cipher_list( void ); /** * \brief Returns the cipher information structure associated @@ -310,7 +270,7 @@ const int *cipher_list( void ); * \return the cipher information structure associated with the * given cipher_name, or NULL if not found. */ -const cipher_info_t *cipher_info_from_string( const char *cipher_name ); +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_string( const char *cipher_name ); /** * \brief Returns the cipher information structure associated @@ -321,73 +281,53 @@ const cipher_info_t *cipher_info_from_string( const char *cipher_name ); * \return the cipher information structure associated with the * given cipher_type, or NULL if not found. */ -const cipher_info_t *cipher_info_from_type( const cipher_type_t cipher_type ); +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_type( const mbedtls_cipher_type_t cipher_type ); /** * \brief Returns the cipher information structure associated * with the given cipher id, key size and mode. * * \param cipher_id Id of the cipher to search for - * (e.g. POLARSSL_CIPHER_ID_AES) - * \param key_length Length of the key in bits - * \param mode Cipher mode (e.g. POLARSSL_MODE_CBC) + * (e.g. MBEDTLS_CIPHER_ID_AES) + * \param key_bitlen Length of the key in bits + * \param mode Cipher mode (e.g. MBEDTLS_MODE_CBC) * * \return the cipher information structure associated with the * given cipher_type, or NULL if not found. */ -const cipher_info_t *cipher_info_from_values( const cipher_id_t cipher_id, - int key_length, - const cipher_mode_t mode ); +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_values( const mbedtls_cipher_id_t cipher_id, + int key_bitlen, + const mbedtls_cipher_mode_t mode ); /** * \brief Initialize a cipher_context (as NONE) */ -void cipher_init( cipher_context_t *ctx ); +void mbedtls_cipher_init( mbedtls_cipher_context_t *ctx ); /** * \brief Free and clear the cipher-specific context of ctx. * Freeing ctx itself remains the responsibility of the * caller. */ -void cipher_free( cipher_context_t *ctx ); +void mbedtls_cipher_free( mbedtls_cipher_context_t *ctx ); /** * \brief Initialises and fills the cipher context structure with * the appropriate values. * * \note Currently also clears structure. In future versions you - * will be required to call cipher_init() on the structure + * will be required to call mbedtls_cipher_init() on the structure * first. * * \param ctx context to initialise. May not be NULL. * \param cipher_info cipher to use. * * \return 0 on success, - * POLARSSL_ERR_CIPHER_BAD_INPUT_DATA on parameter failure, - * POLARSSL_ERR_CIPHER_ALLOC_FAILED if allocation of the + * MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on parameter failure, + * MBEDTLS_ERR_CIPHER_ALLOC_FAILED if allocation of the * cipher-specific context failed. */ -int cipher_init_ctx( cipher_context_t *ctx, const cipher_info_t *cipher_info ); - -#if ! defined(POLARSSL_DEPRECATED_REMOVED) -#if defined(POLARSSL_DEPRECATED_WARNING) -#define DEPRECATED __attribute__((deprecated)) -#else -#define DEPRECATED -#endif -/** - * \brief Free the cipher-specific context of ctx. Freeing ctx - * itself remains the responsibility of the caller. - * - * \deprecated Use cipher_free() instead - * - * \param ctx Free the cipher-specific context - * - * \returns 0 - */ -int cipher_free_ctx( cipher_context_t *ctx ) DEPRECATED; -#undef DEPRECATED -#endif /* POLARSSL_DEPRECATED_REMOVED */ +int mbedtls_cipher_setup( mbedtls_cipher_context_t *ctx, const mbedtls_cipher_info_t *cipher_info ); /** * \brief Returns the block size of the given cipher. @@ -397,7 +337,7 @@ int cipher_free_ctx( cipher_context_t *ctx ) DEPRECATED; * \return size of the cipher's blocks, or 0 if ctx has not been * initialised. */ -static inline unsigned int cipher_get_block_size( const cipher_context_t *ctx ) +static inline unsigned int mbedtls_cipher_get_block_size( const mbedtls_cipher_context_t *ctx ) { if( NULL == ctx || NULL == ctx->cipher_info ) return 0; @@ -407,17 +347,17 @@ static inline unsigned int cipher_get_block_size( const cipher_context_t *ctx ) /** * \brief Returns the mode of operation for the cipher. - * (e.g. POLARSSL_MODE_CBC) + * (e.g. MBEDTLS_MODE_CBC) * * \param ctx cipher's context. Must have been initialised. * - * \return mode of operation, or POLARSSL_MODE_NONE if ctx + * \return mode of operation, or MBEDTLS_MODE_NONE if ctx * has not been initialised. */ -static inline cipher_mode_t cipher_get_cipher_mode( const cipher_context_t *ctx ) +static inline mbedtls_cipher_mode_t mbedtls_cipher_get_cipher_mode( const mbedtls_cipher_context_t *ctx ) { if( NULL == ctx || NULL == ctx->cipher_info ) - return POLARSSL_MODE_NONE; + return MBEDTLS_MODE_NONE; return ctx->cipher_info->mode; } @@ -431,7 +371,7 @@ static inline cipher_mode_t cipher_get_cipher_mode( const cipher_context_t *ctx * (0 for ciphers not using IV/NONCE). * If IV has already been set: actual size. */ -static inline int cipher_get_iv_size( const cipher_context_t *ctx ) +static inline int mbedtls_cipher_get_iv_size( const mbedtls_cipher_context_t *ctx ) { if( NULL == ctx || NULL == ctx->cipher_info ) return 0; @@ -439,7 +379,7 @@ static inline int cipher_get_iv_size( const cipher_context_t *ctx ) if( ctx->iv_size != 0 ) return (int) ctx->iv_size; - return ctx->cipher_info->iv_size; + return (int) ctx->cipher_info->iv_size; } /** @@ -447,13 +387,13 @@ static inline int cipher_get_iv_size( const cipher_context_t *ctx ) * * \param ctx cipher's context. Must have been initialised. * - * \return type of the cipher, or POLARSSL_CIPHER_NONE if ctx has + * \return type of the cipher, or MBEDTLS_CIPHER_NONE if ctx has * not been initialised. */ -static inline cipher_type_t cipher_get_type( const cipher_context_t *ctx ) +static inline mbedtls_cipher_type_t mbedtls_cipher_get_type( const mbedtls_cipher_context_t *ctx ) { if( NULL == ctx || NULL == ctx->cipher_info ) - return POLARSSL_CIPHER_NONE; + return MBEDTLS_CIPHER_NONE; return ctx->cipher_info->type; } @@ -465,7 +405,7 @@ static inline cipher_type_t cipher_get_type( const cipher_context_t *ctx ) * * \return name of the cipher, or NULL if ctx was not initialised. */ -static inline const char *cipher_get_name( const cipher_context_t *ctx ) +static inline const char *mbedtls_cipher_get_name( const mbedtls_cipher_context_t *ctx ) { if( NULL == ctx || NULL == ctx->cipher_info ) return 0; @@ -479,15 +419,15 @@ static inline const char *cipher_get_name( const cipher_context_t *ctx ) * \param ctx cipher's context. Must have been initialised. * * \return cipher's key length, in bits, or - * POLARSSL_KEY_LENGTH_NONE if ctx has not been + * MBEDTLS_KEY_LENGTH_NONE if ctx has not been * initialised. */ -static inline int cipher_get_key_size( const cipher_context_t *ctx ) +static inline int mbedtls_cipher_get_key_bitlen( const mbedtls_cipher_context_t *ctx ) { if( NULL == ctx || NULL == ctx->cipher_info ) - return POLARSSL_KEY_LENGTH_NONE; + return MBEDTLS_KEY_LENGTH_NONE; - return ctx->cipher_info->key_length; + return (int) ctx->cipher_info->key_bitlen; } /** @@ -495,14 +435,14 @@ static inline int cipher_get_key_size( const cipher_context_t *ctx ) * * \param ctx cipher's context. Must have been initialised. * - * \return operation (POLARSSL_ENCRYPT or POLARSSL_DECRYPT), - * or POLARSSL_OPERATION_NONE if ctx has not been + * \return operation (MBEDTLS_ENCRYPT or MBEDTLS_DECRYPT), + * or MBEDTLS_OPERATION_NONE if ctx has not been * initialised. */ -static inline operation_t cipher_get_operation( const cipher_context_t *ctx ) +static inline mbedtls_operation_t mbedtls_cipher_get_operation( const mbedtls_cipher_context_t *ctx ) { if( NULL == ctx || NULL == ctx->cipher_info ) - return POLARSSL_OPERATION_NONE; + return MBEDTLS_OPERATION_NONE; return ctx->operation; } @@ -514,18 +454,18 @@ static inline operation_t cipher_get_operation( const cipher_context_t *ctx ) * initialised using cipher_context_from_type or * cipher_context_from_string. * \param key The key to use. - * \param key_length key length to use, in bits. + * \param key_bitlen key length to use, in bits. * \param operation Operation that the key will be used for, either - * POLARSSL_ENCRYPT or POLARSSL_DECRYPT. + * MBEDTLS_ENCRYPT or MBEDTLS_DECRYPT. * - * \returns 0 on success, POLARSSL_ERR_CIPHER_BAD_INPUT_DATA if + * \returns 0 on success, MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA if * parameter verification fails or a cipher specific * error code. */ -int cipher_setkey( cipher_context_t *ctx, const unsigned char *key, - int key_length, const operation_t operation ); +int mbedtls_cipher_setkey( mbedtls_cipher_context_t *ctx, const unsigned char *key, + int key_bitlen, const mbedtls_operation_t operation ); -#if defined(POLARSSL_CIPHER_MODE_WITH_PADDING) +#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) /** * \brief Set padding mode, for cipher modes that use padding. * (Default: PKCS7 padding.) @@ -533,13 +473,13 @@ int cipher_setkey( cipher_context_t *ctx, const unsigned char *key, * \param ctx generic cipher context * \param mode padding mode * - * \returns 0 on success, POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE + * \returns 0 on success, MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE * if selected padding mode is not supported, or - * POLARSSL_ERR_CIPHER_BAD_INPUT_DATA if the cipher mode + * MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA if the cipher mode * does not support padding. */ -int cipher_set_padding_mode( cipher_context_t *ctx, cipher_padding_t mode ); -#endif /* POLARSSL_CIPHER_MODE_WITH_PADDING */ +int mbedtls_cipher_set_padding_mode( mbedtls_cipher_context_t *ctx, mbedtls_cipher_padding_t mode ); +#endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */ /** * \brief Set the initialization vector (IV) or nonce @@ -549,12 +489,12 @@ int cipher_set_padding_mode( cipher_context_t *ctx, cipher_padding_t mode ); * \param iv_len IV length for ciphers with variable-size IV; * discarded by ciphers with fixed-size IV. * - * \returns 0 on success, or POLARSSL_ERR_CIPHER_BAD_INPUT_DATA + * \returns 0 on success, or MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA * * \note Some ciphers don't use IVs nor NONCE. For these * ciphers, this function has no effect. */ -int cipher_set_iv( cipher_context_t *ctx, +int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len ); /** @@ -562,16 +502,16 @@ int cipher_set_iv( cipher_context_t *ctx, * * \param ctx generic cipher context * - * \returns 0 on success, POLARSSL_ERR_CIPHER_BAD_INPUT_DATA + * \returns 0 on success, MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA * if parameter verification fails. */ -int cipher_reset( cipher_context_t *ctx ); +int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx ); -#if defined(POLARSSL_GCM_C) +#if defined(MBEDTLS_GCM_C) /** * \brief Add additional data (for AEAD ciphers). * Currently only supported with GCM. - * Must be called exactly once, after cipher_reset(). + * Must be called exactly once, after mbedtls_cipher_reset(). * * \param ctx generic cipher context * \param ad Additional data to use. @@ -579,9 +519,9 @@ int cipher_reset( cipher_context_t *ctx ); * * \return 0 on success, or a specific error code. */ -int cipher_update_ad( cipher_context_t *ctx, +int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, const unsigned char *ad, size_t ad_len ); -#endif /* POLARSSL_GCM_C */ +#endif /* MBEDTLS_GCM_C */ /** * \brief Generic cipher update function. Encrypts/decrypts @@ -590,7 +530,7 @@ int cipher_update_ad( cipher_context_t *ctx, * that cannot be written immediately will either be added * to the next block, or flushed when cipher_final is * called. - * Exception: for POLARSSL_MODE_ECB, expects single block + * Exception: for MBEDTLS_MODE_ECB, expects single block * in size (e.g. 16 bytes for AES) * * \param ctx generic cipher context @@ -602,17 +542,17 @@ int cipher_update_ad( cipher_context_t *ctx, * \param olen length of the output data, will be filled with the * actual number of bytes written. * - * \returns 0 on success, POLARSSL_ERR_CIPHER_BAD_INPUT_DATA if + * \returns 0 on success, MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA if * parameter verification fails, - * POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE on an + * MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE on an * unsupported mode for a cipher or a cipher specific * error code. * * \note If the underlying cipher is GCM, all calls to this - * function, except the last one before cipher_finish(), + * function, except the last one before mbedtls_cipher_finish(), * must have ilen a multiple of the block size. */ -int cipher_update( cipher_context_t *ctx, const unsigned char *input, +int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen ); /** @@ -625,21 +565,21 @@ int cipher_update( cipher_context_t *ctx, const unsigned char *input, * \param output buffer to write data to. Needs block_size available. * \param olen length of the data written to the output buffer. * - * \returns 0 on success, POLARSSL_ERR_CIPHER_BAD_INPUT_DATA if + * \returns 0 on success, MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA if * parameter verification fails, - * POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED if decryption + * MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED if decryption * expected a full block but was not provided one, - * POLARSSL_ERR_CIPHER_INVALID_PADDING on invalid padding + * MBEDTLS_ERR_CIPHER_INVALID_PADDING on invalid padding * while decrypting or a cipher specific error code. */ -int cipher_finish( cipher_context_t *ctx, +int mbedtls_cipher_finish( mbedtls_cipher_context_t *ctx, unsigned char *output, size_t *olen ); -#if defined(POLARSSL_GCM_C) +#if defined(MBEDTLS_GCM_C) /** * \brief Write tag for AEAD ciphers. * Currently only supported with GCM. - * Must be called after cipher_finish(). + * Must be called after mbedtls_cipher_finish(). * * \param ctx Generic cipher context * \param tag buffer to write the tag @@ -647,13 +587,13 @@ int cipher_finish( cipher_context_t *ctx, * * \return 0 on success, or a specific error code. */ -int cipher_write_tag( cipher_context_t *ctx, +int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, unsigned char *tag, size_t tag_len ); /** * \brief Check tag for AEAD ciphers. * Currently only supported with GCM. - * Must be called after cipher_finish(). + * Must be called after mbedtls_cipher_finish(). * * \param ctx Generic cipher context * \param tag Buffer holding the tag @@ -661,9 +601,9 @@ int cipher_write_tag( cipher_context_t *ctx, * * \return 0 on success, or a specific error code. */ -int cipher_check_tag( cipher_context_t *ctx, +int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, const unsigned char *tag, size_t tag_len ); -#endif /* POLARSSL_GCM_C */ +#endif /* MBEDTLS_GCM_C */ /** * \brief Generic all-in-one encryption/decryption @@ -685,19 +625,19 @@ int cipher_check_tag( cipher_context_t *ctx, * ciphers, use iv = NULL and iv_len = 0. * * \returns 0 on success, or - * POLARSSL_ERR_CIPHER_BAD_INPUT_DATA, or - * POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED if decryption + * MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA, or + * MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED if decryption * expected a full block but was not provided one, or - * POLARSSL_ERR_CIPHER_INVALID_PADDING on invalid padding + * MBEDTLS_ERR_CIPHER_INVALID_PADDING on invalid padding * while decrypting, or * a cipher specific error code. */ -int cipher_crypt( cipher_context_t *ctx, +int mbedtls_cipher_crypt( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen ); -#if defined(POLARSSL_CIPHER_MODE_AEAD) +#if defined(MBEDTLS_CIPHER_MODE_AEAD) /** * \brief Generic autenticated encryption (AEAD ciphers). * @@ -717,10 +657,10 @@ int cipher_crypt( cipher_context_t *ctx, * \param tag_len desired tag length * * \returns 0 on success, or - * POLARSSL_ERR_CIPHER_BAD_INPUT_DATA, or + * MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA, or * a cipher specific error code. */ -int cipher_auth_encrypt( cipher_context_t *ctx, +int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, @@ -746,31 +686,24 @@ int cipher_auth_encrypt( cipher_context_t *ctx, * \param tag_len length of the authentication tag * * \returns 0 on success, or - * POLARSSL_ERR_CIPHER_BAD_INPUT_DATA, or - * POLARSSL_ERR_CIPHER_AUTH_FAILED if data isn't authentic, + * MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA, or + * MBEDTLS_ERR_CIPHER_AUTH_FAILED if data isn't authentic, * or a cipher specific error code. * * \note If the data is not authentic, then the output buffer * is zeroed out to prevent the unauthentic plaintext to * be used by mistake, making this interface safer. */ -int cipher_auth_decrypt( cipher_context_t *ctx, +int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len, const unsigned char *ad, size_t ad_len, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, const unsigned char *tag, size_t tag_len ); -#endif /* POLARSSL_CIPHER_MODE_AEAD */ - -/** - * \brief Checkup routine - * - * \return 0 if successful, or 1 if the test failed - */ -int cipher_self_test( int verbose ); +#endif /* MBEDTLS_CIPHER_MODE_AEAD */ #ifdef __cplusplus } #endif -#endif /* POLARSSL_CIPHER_H */ +#endif /* MBEDTLS_CIPHER_H */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/cipher_internal.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/cipher_internal.h new file mode 100644 index 0000000..6c58bcc --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/cipher_internal.h @@ -0,0 +1,109 @@ +/** + * \file cipher_internal.h + * + * \brief Cipher wrappers. + * + * \author Adriaan de Jong + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_CIPHER_WRAP_H +#define MBEDTLS_CIPHER_WRAP_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "cipher.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Base cipher information. The non-mode specific functions and values. + */ +struct mbedtls_cipher_base_t +{ + /** Base Cipher type (e.g. MBEDTLS_CIPHER_ID_AES) */ + mbedtls_cipher_id_t cipher; + + /** Encrypt using ECB */ + int (*ecb_func)( void *ctx, mbedtls_operation_t mode, + const unsigned char *input, unsigned char *output ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) + /** Encrypt using CBC */ + int (*cbc_func)( void *ctx, mbedtls_operation_t mode, size_t length, + unsigned char *iv, const unsigned char *input, + unsigned char *output ); +#endif + +#if defined(MBEDTLS_CIPHER_MODE_CFB) + /** Encrypt using CFB (Full length) */ + int (*cfb_func)( void *ctx, mbedtls_operation_t mode, size_t length, size_t *iv_off, + unsigned char *iv, const unsigned char *input, + unsigned char *output ); +#endif + +#if defined(MBEDTLS_CIPHER_MODE_CTR) + /** Encrypt using CTR */ + int (*ctr_func)( void *ctx, size_t length, size_t *nc_off, + unsigned char *nonce_counter, unsigned char *stream_block, + const unsigned char *input, unsigned char *output ); +#endif + +#if defined(MBEDTLS_CIPHER_MODE_STREAM) + /** Encrypt using STREAM */ + int (*stream_func)( void *ctx, size_t length, + const unsigned char *input, unsigned char *output ); +#endif + + /** Set key for encryption purposes */ + int (*setkey_enc_func)( void *ctx, const unsigned char *key, + unsigned int key_bitlen ); + + /** Set key for decryption purposes */ + int (*setkey_dec_func)( void *ctx, const unsigned char *key, + unsigned int key_bitlen); + + /** Allocate a new context */ + void * (*ctx_alloc_func)( void ); + + /** Free the given context */ + void (*ctx_free_func)( void *ctx ); + +}; + +typedef struct +{ + mbedtls_cipher_type_t type; + const mbedtls_cipher_info_t *info; +} mbedtls_cipher_definition_t; + +extern const mbedtls_cipher_definition_t mbedtls_cipher_definitions[]; + +extern int mbedtls_cipher_supported[]; + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_CIPHER_WRAP_H */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/cmac.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/cmac.h new file mode 100644 index 0000000..9a2b96b --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/cmac.h @@ -0,0 +1,170 @@ +/** + * \file cmac.h + * + * \brief Cipher-based Message Authentication Code (CMAC) Mode for + * Authentication + * + * Copyright (C) 2015-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_CMAC_H +#define MBEDTLS_CMAC_H + +#include "mbedtls/cipher.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define MBEDTLS_AES_BLOCK_SIZE 16 +#define MBEDTLS_DES3_BLOCK_SIZE 8 + +#if defined(MBEDTLS_AES_C) +#define MBEDTLS_CIPHER_BLKSIZE_MAX 16 /* longest used by CMAC is AES */ +#else +#define MBEDTLS_CIPHER_BLKSIZE_MAX 8 /* longest used by CMAC is 3DES */ +#endif + +/** + * CMAC context structure - Contains internal state information only + */ +struct mbedtls_cmac_context_t +{ + /** Internal state of the CMAC algorithm */ + unsigned char state[MBEDTLS_CIPHER_BLKSIZE_MAX]; + + /** Unprocessed data - either data that was not block aligned and is still + * pending to be processed, or the final block */ + unsigned char unprocessed_block[MBEDTLS_CIPHER_BLKSIZE_MAX]; + + /** Length of data pending to be processed */ + size_t unprocessed_len; +}; + +/** + * \brief Set the CMAC key and prepare to authenticate the input + * data. + * Should be called with an initialized cipher context. + * + * \param ctx Cipher context. This should be a cipher context, + * initialized to be one of the following types: + * MBEDTLS_CIPHER_AES_128_ECB, MBEDTLS_CIPHER_AES_192_ECB, + * MBEDTLS_CIPHER_AES_256_ECB or + * MBEDTLS_CIPHER_DES_EDE3_ECB. + * \param key CMAC key + * \param keybits length of the CMAC key in bits + * (must be acceptable by the cipher) + * + * \return 0 if successful, or a cipher specific error code + */ +int mbedtls_cipher_cmac_starts( mbedtls_cipher_context_t *ctx, + const unsigned char *key, size_t keybits ); + +/** + * \brief Generic CMAC process buffer. + * Called between mbedtls_cipher_cmac_starts() or + * mbedtls_cipher_cmac_reset() and + * mbedtls_cipher_cmac_finish(). + * May be called repeatedly. + * + * \param ctx CMAC context + * \param input buffer holding the data + * \param ilen length of the input data + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_cipher_cmac_update( mbedtls_cipher_context_t *ctx, + const unsigned char *input, size_t ilen ); + +/** + * \brief Output CMAC. + * Called after mbedtls_cipher_cmac_update(). + * Usually followed by mbedtls_cipher_cmac_reset(), then + * mbedtls_cipher_cmac_starts(), or mbedtls_cipher_free(). + * + * \param ctx CMAC context + * \param output Generic CMAC checksum result + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_cipher_cmac_finish( mbedtls_cipher_context_t *ctx, + unsigned char *output ); + +/** + * \brief Prepare to authenticate a new message with the same key. + * Called after mbedtls_cipher_cmac_finish() and before + * mbedtls_cipher_cmac_update(). + * + * \param ctx CMAC context to be reset + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_cipher_cmac_reset( mbedtls_cipher_context_t *ctx ); + +/** + * \brief Output = Generic_CMAC( cmac key, input buffer ) + * + * \param cipher_info message digest info + * \param key CMAC key + * \param keylen length of the CMAC key in bits + * \param input buffer holding the data + * \param ilen length of the input data + * \param output Generic CMAC-result + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_cipher_cmac( const mbedtls_cipher_info_t *cipher_info, + const unsigned char *key, size_t keylen, + const unsigned char *input, size_t ilen, + unsigned char *output ); + +#if defined(MBEDTLS_AES_C) +/** + * \brief AES-CMAC-128-PRF + * Implementation of (AES-CMAC-PRF-128), as defined in RFC 4615 + * + * \param key PRF key + * \param key_len PRF key length in bytes + * \param input buffer holding the input data + * \param in_len length of the input data in bytes + * \param output buffer holding the generated pseudorandom output (16 bytes) + * + * \return 0 if successful + */ +int mbedtls_aes_cmac_prf_128( const unsigned char *key, size_t key_len, + const unsigned char *input, size_t in_len, + unsigned char output[16] ); +#endif /* MBEDTLS_AES_C */ + +#if defined(MBEDTLS_SELF_TEST) && ( defined(MBEDTLS_AES_C) || defined(MBEDTLS_DES_C) ) +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_cmac_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST && ( MBEDTLS_AES_C || MBEDTLS_DES_C ) */ + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_CMAC_H */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/compat-1.3.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/compat-1.3.h new file mode 100644 index 0000000..af51b5f --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/compat-1.3.h @@ -0,0 +1,2633 @@ +/** + * \file compat-1.3.h + * + * \brief Compatibility definitions for using mbed TLS with client code written + * for the PolarSSL naming conventions. + * + * \deprecated Use the new names directly instead + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#if ! defined(MBEDTLS_DEPRECATED_REMOVED) + +#if defined(MBEDTLS_DEPRECATED_WARNING) +#warning "Including compat-1.3.h is deprecated" +#endif + +#ifndef MBEDTLS_COMPAT13_H +#define MBEDTLS_COMPAT13_H + +/* + * config.h options + */ +#if defined MBEDTLS_AESNI_C +#define POLARSSL_AESNI_C MBEDTLS_AESNI_C +#endif +#if defined MBEDTLS_AES_ALT +#define POLARSSL_AES_ALT MBEDTLS_AES_ALT +#endif +#if defined MBEDTLS_AES_C +#define POLARSSL_AES_C MBEDTLS_AES_C +#endif +#if defined MBEDTLS_AES_ROM_TABLES +#define POLARSSL_AES_ROM_TABLES MBEDTLS_AES_ROM_TABLES +#endif +#if defined MBEDTLS_ARC4_ALT +#define POLARSSL_ARC4_ALT MBEDTLS_ARC4_ALT +#endif +#if defined MBEDTLS_ARC4_C +#define POLARSSL_ARC4_C MBEDTLS_ARC4_C +#endif +#if defined MBEDTLS_ASN1_PARSE_C +#define POLARSSL_ASN1_PARSE_C MBEDTLS_ASN1_PARSE_C +#endif +#if defined MBEDTLS_ASN1_WRITE_C +#define POLARSSL_ASN1_WRITE_C MBEDTLS_ASN1_WRITE_C +#endif +#if defined MBEDTLS_BASE64_C +#define POLARSSL_BASE64_C MBEDTLS_BASE64_C +#endif +#if defined MBEDTLS_BIGNUM_C +#define POLARSSL_BIGNUM_C MBEDTLS_BIGNUM_C +#endif +#if defined MBEDTLS_BLOWFISH_ALT +#define POLARSSL_BLOWFISH_ALT MBEDTLS_BLOWFISH_ALT +#endif +#if defined MBEDTLS_BLOWFISH_C +#define POLARSSL_BLOWFISH_C MBEDTLS_BLOWFISH_C +#endif +#if defined MBEDTLS_CAMELLIA_ALT +#define POLARSSL_CAMELLIA_ALT MBEDTLS_CAMELLIA_ALT +#endif +#if defined MBEDTLS_CAMELLIA_C +#define POLARSSL_CAMELLIA_C MBEDTLS_CAMELLIA_C +#endif +#if defined MBEDTLS_CAMELLIA_SMALL_MEMORY +#define POLARSSL_CAMELLIA_SMALL_MEMORY MBEDTLS_CAMELLIA_SMALL_MEMORY +#endif +#if defined MBEDTLS_CCM_C +#define POLARSSL_CCM_C MBEDTLS_CCM_C +#endif +#if defined MBEDTLS_CERTS_C +#define POLARSSL_CERTS_C MBEDTLS_CERTS_C +#endif +#if defined MBEDTLS_CIPHER_C +#define POLARSSL_CIPHER_C MBEDTLS_CIPHER_C +#endif +#if defined MBEDTLS_CIPHER_MODE_CBC +#define POLARSSL_CIPHER_MODE_CBC MBEDTLS_CIPHER_MODE_CBC +#endif +#if defined MBEDTLS_CIPHER_MODE_CFB +#define POLARSSL_CIPHER_MODE_CFB MBEDTLS_CIPHER_MODE_CFB +#endif +#if defined MBEDTLS_CIPHER_MODE_CTR +#define POLARSSL_CIPHER_MODE_CTR MBEDTLS_CIPHER_MODE_CTR +#endif +#if defined MBEDTLS_CIPHER_NULL_CIPHER +#define POLARSSL_CIPHER_NULL_CIPHER MBEDTLS_CIPHER_NULL_CIPHER +#endif +#if defined MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS +#define POLARSSL_CIPHER_PADDING_ONE_AND_ZEROS MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS +#endif +#if defined MBEDTLS_CIPHER_PADDING_PKCS7 +#define POLARSSL_CIPHER_PADDING_PKCS7 MBEDTLS_CIPHER_PADDING_PKCS7 +#endif +#if defined MBEDTLS_CIPHER_PADDING_ZEROS +#define POLARSSL_CIPHER_PADDING_ZEROS MBEDTLS_CIPHER_PADDING_ZEROS +#endif +#if defined MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN +#define POLARSSL_CIPHER_PADDING_ZEROS_AND_LEN MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN +#endif +#if defined MBEDTLS_CTR_DRBG_C +#define POLARSSL_CTR_DRBG_C MBEDTLS_CTR_DRBG_C +#endif +#if defined MBEDTLS_DEBUG_C +#define POLARSSL_DEBUG_C MBEDTLS_DEBUG_C +#endif +#if defined MBEDTLS_DEPRECATED_REMOVED +#define POLARSSL_DEPRECATED_REMOVED MBEDTLS_DEPRECATED_REMOVED +#endif +#if defined MBEDTLS_DEPRECATED_WARNING +#define POLARSSL_DEPRECATED_WARNING MBEDTLS_DEPRECATED_WARNING +#endif +#if defined MBEDTLS_DES_ALT +#define POLARSSL_DES_ALT MBEDTLS_DES_ALT +#endif +#if defined MBEDTLS_DES_C +#define POLARSSL_DES_C MBEDTLS_DES_C +#endif +#if defined MBEDTLS_DHM_C +#define POLARSSL_DHM_C MBEDTLS_DHM_C +#endif +#if defined MBEDTLS_ECDH_C +#define POLARSSL_ECDH_C MBEDTLS_ECDH_C +#endif +#if defined MBEDTLS_ECDSA_C +#define POLARSSL_ECDSA_C MBEDTLS_ECDSA_C +#endif +#if defined MBEDTLS_ECDSA_DETERMINISTIC +#define POLARSSL_ECDSA_DETERMINISTIC MBEDTLS_ECDSA_DETERMINISTIC +#endif +#if defined MBEDTLS_ECP_C +#define POLARSSL_ECP_C MBEDTLS_ECP_C +#endif +#if defined MBEDTLS_ECP_DP_BP256R1_ENABLED +#define POLARSSL_ECP_DP_BP256R1_ENABLED MBEDTLS_ECP_DP_BP256R1_ENABLED +#endif +#if defined MBEDTLS_ECP_DP_BP384R1_ENABLED +#define POLARSSL_ECP_DP_BP384R1_ENABLED MBEDTLS_ECP_DP_BP384R1_ENABLED +#endif +#if defined MBEDTLS_ECP_DP_BP512R1_ENABLED +#define POLARSSL_ECP_DP_BP512R1_ENABLED MBEDTLS_ECP_DP_BP512R1_ENABLED +#endif +#if defined MBEDTLS_ECP_DP_CURVE25519_ENABLED +#define POLARSSL_ECP_DP_M255_ENABLED MBEDTLS_ECP_DP_CURVE25519_ENABLED +#endif +#if defined MBEDTLS_ECP_DP_SECP192K1_ENABLED +#define POLARSSL_ECP_DP_SECP192K1_ENABLED MBEDTLS_ECP_DP_SECP192K1_ENABLED +#endif +#if defined MBEDTLS_ECP_DP_SECP192R1_ENABLED +#define POLARSSL_ECP_DP_SECP192R1_ENABLED MBEDTLS_ECP_DP_SECP192R1_ENABLED +#endif +#if defined MBEDTLS_ECP_DP_SECP224K1_ENABLED +#define POLARSSL_ECP_DP_SECP224K1_ENABLED MBEDTLS_ECP_DP_SECP224K1_ENABLED +#endif +#if defined MBEDTLS_ECP_DP_SECP224R1_ENABLED +#define POLARSSL_ECP_DP_SECP224R1_ENABLED MBEDTLS_ECP_DP_SECP224R1_ENABLED +#endif +#if defined MBEDTLS_ECP_DP_SECP256K1_ENABLED +#define POLARSSL_ECP_DP_SECP256K1_ENABLED MBEDTLS_ECP_DP_SECP256K1_ENABLED +#endif +#if defined MBEDTLS_ECP_DP_SECP256R1_ENABLED +#define POLARSSL_ECP_DP_SECP256R1_ENABLED MBEDTLS_ECP_DP_SECP256R1_ENABLED +#endif +#if defined MBEDTLS_ECP_DP_SECP384R1_ENABLED +#define POLARSSL_ECP_DP_SECP384R1_ENABLED MBEDTLS_ECP_DP_SECP384R1_ENABLED +#endif +#if defined MBEDTLS_ECP_DP_SECP521R1_ENABLED +#define POLARSSL_ECP_DP_SECP521R1_ENABLED MBEDTLS_ECP_DP_SECP521R1_ENABLED +#endif +#if defined MBEDTLS_ECP_FIXED_POINT_OPTIM +#define POLARSSL_ECP_FIXED_POINT_OPTIM MBEDTLS_ECP_FIXED_POINT_OPTIM +#endif +#if defined MBEDTLS_ECP_MAX_BITS +#define POLARSSL_ECP_MAX_BITS MBEDTLS_ECP_MAX_BITS +#endif +#if defined MBEDTLS_ECP_NIST_OPTIM +#define POLARSSL_ECP_NIST_OPTIM MBEDTLS_ECP_NIST_OPTIM +#endif +#if defined MBEDTLS_ECP_WINDOW_SIZE +#define POLARSSL_ECP_WINDOW_SIZE MBEDTLS_ECP_WINDOW_SIZE +#endif +#if defined MBEDTLS_ENABLE_WEAK_CIPHERSUITES +#define POLARSSL_ENABLE_WEAK_CIPHERSUITES MBEDTLS_ENABLE_WEAK_CIPHERSUITES +#endif +#if defined MBEDTLS_ENTROPY_C +#define POLARSSL_ENTROPY_C MBEDTLS_ENTROPY_C +#endif +#if defined MBEDTLS_ENTROPY_FORCE_SHA256 +#define POLARSSL_ENTROPY_FORCE_SHA256 MBEDTLS_ENTROPY_FORCE_SHA256 +#endif +#if defined MBEDTLS_ERROR_C +#define POLARSSL_ERROR_C MBEDTLS_ERROR_C +#endif +#if defined MBEDTLS_ERROR_STRERROR_BC +#define POLARSSL_ERROR_STRERROR_BC MBEDTLS_ERROR_STRERROR_BC +#endif +#if defined MBEDTLS_ERROR_STRERROR_DUMMY +#define POLARSSL_ERROR_STRERROR_DUMMY MBEDTLS_ERROR_STRERROR_DUMMY +#endif +#if defined MBEDTLS_FS_IO +#define POLARSSL_FS_IO MBEDTLS_FS_IO +#endif +#if defined MBEDTLS_GCM_C +#define POLARSSL_GCM_C MBEDTLS_GCM_C +#endif +#if defined MBEDTLS_GENPRIME +#define POLARSSL_GENPRIME MBEDTLS_GENPRIME +#endif +#if defined MBEDTLS_HAVEGE_C +#define POLARSSL_HAVEGE_C MBEDTLS_HAVEGE_C +#endif +#if defined MBEDTLS_HAVE_ASM +#define POLARSSL_HAVE_ASM MBEDTLS_HAVE_ASM +#endif +#if defined MBEDTLS_HAVE_SSE2 +#define POLARSSL_HAVE_SSE2 MBEDTLS_HAVE_SSE2 +#endif +#if defined MBEDTLS_HAVE_TIME +#define POLARSSL_HAVE_TIME MBEDTLS_HAVE_TIME +#endif +#if defined MBEDTLS_HMAC_DRBG_C +#define POLARSSL_HMAC_DRBG_C MBEDTLS_HMAC_DRBG_C +#endif +#if defined MBEDTLS_HMAC_DRBG_MAX_INPUT +#define POLARSSL_HMAC_DRBG_MAX_INPUT MBEDTLS_HMAC_DRBG_MAX_INPUT +#endif +#if defined MBEDTLS_HMAC_DRBG_MAX_REQUEST +#define POLARSSL_HMAC_DRBG_MAX_REQUEST MBEDTLS_HMAC_DRBG_MAX_REQUEST +#endif +#if defined MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT +#define POLARSSL_HMAC_DRBG_MAX_SEED_INPUT MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT +#endif +#if defined MBEDTLS_HMAC_DRBG_RESEED_INTERVAL +#define POLARSSL_HMAC_DRBG_RESEED_INTERVAL MBEDTLS_HMAC_DRBG_RESEED_INTERVAL +#endif +#if defined MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED +#define POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED +#endif +#if defined MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED +#define POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED +#endif +#if defined MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED +#define POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED +#endif +#if defined MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED +#define POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED +#endif +#if defined MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED +#define POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED +#endif +#if defined MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED +#define POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED +#endif +#if defined MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED +#define POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED +#endif +#if defined MBEDTLS_KEY_EXCHANGE_PSK_ENABLED +#define POLARSSL_KEY_EXCHANGE_PSK_ENABLED MBEDTLS_KEY_EXCHANGE_PSK_ENABLED +#endif +#if defined MBEDTLS_KEY_EXCHANGE_RSA_ENABLED +#define POLARSSL_KEY_EXCHANGE_RSA_ENABLED MBEDTLS_KEY_EXCHANGE_RSA_ENABLED +#endif +#if defined MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED +#define POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED +#endif +#if defined MBEDTLS_MD2_ALT +#define POLARSSL_MD2_ALT MBEDTLS_MD2_ALT +#endif +#if defined MBEDTLS_MD2_C +#define POLARSSL_MD2_C MBEDTLS_MD2_C +#endif +#if defined MBEDTLS_MD2_PROCESS_ALT +#define POLARSSL_MD2_PROCESS_ALT MBEDTLS_MD2_PROCESS_ALT +#endif +#if defined MBEDTLS_MD4_ALT +#define POLARSSL_MD4_ALT MBEDTLS_MD4_ALT +#endif +#if defined MBEDTLS_MD4_C +#define POLARSSL_MD4_C MBEDTLS_MD4_C +#endif +#if defined MBEDTLS_MD4_PROCESS_ALT +#define POLARSSL_MD4_PROCESS_ALT MBEDTLS_MD4_PROCESS_ALT +#endif +#if defined MBEDTLS_MD5_ALT +#define POLARSSL_MD5_ALT MBEDTLS_MD5_ALT +#endif +#if defined MBEDTLS_MD5_C +#define POLARSSL_MD5_C MBEDTLS_MD5_C +#endif +#if defined MBEDTLS_MD5_PROCESS_ALT +#define POLARSSL_MD5_PROCESS_ALT MBEDTLS_MD5_PROCESS_ALT +#endif +#if defined MBEDTLS_MD_C +#define POLARSSL_MD_C MBEDTLS_MD_C +#endif +#if defined MBEDTLS_MEMORY_ALIGN_MULTIPLE +#define POLARSSL_MEMORY_ALIGN_MULTIPLE MBEDTLS_MEMORY_ALIGN_MULTIPLE +#endif +#if defined MBEDTLS_MEMORY_BACKTRACE +#define POLARSSL_MEMORY_BACKTRACE MBEDTLS_MEMORY_BACKTRACE +#endif +#if defined MBEDTLS_MEMORY_BUFFER_ALLOC_C +#define POLARSSL_MEMORY_BUFFER_ALLOC_C MBEDTLS_MEMORY_BUFFER_ALLOC_C +#endif +#if defined MBEDTLS_MEMORY_C +#define POLARSSL_MEMORY_C MBEDTLS_MEMORY_C +#endif +#if defined MBEDTLS_MEMORY_DEBUG +#define POLARSSL_MEMORY_DEBUG MBEDTLS_MEMORY_DEBUG +#endif +#if defined MBEDTLS_MPI_MAX_SIZE +#define POLARSSL_MPI_MAX_SIZE MBEDTLS_MPI_MAX_SIZE +#endif +#if defined MBEDTLS_MPI_WINDOW_SIZE +#define POLARSSL_MPI_WINDOW_SIZE MBEDTLS_MPI_WINDOW_SIZE +#endif +#if defined MBEDTLS_NET_C +#define POLARSSL_NET_C MBEDTLS_NET_C +#endif +#if defined MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES +#define POLARSSL_NO_DEFAULT_ENTROPY_SOURCES MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES +#endif +#if defined MBEDTLS_NO_PLATFORM_ENTROPY +#define POLARSSL_NO_PLATFORM_ENTROPY MBEDTLS_NO_PLATFORM_ENTROPY +#endif +#if defined MBEDTLS_OID_C +#define POLARSSL_OID_C MBEDTLS_OID_C +#endif +#if defined MBEDTLS_PADLOCK_C +#define POLARSSL_PADLOCK_C MBEDTLS_PADLOCK_C +#endif +#if defined MBEDTLS_PBKDF2_C +#define POLARSSL_PBKDF2_C MBEDTLS_PBKDF2_C +#endif +#if defined MBEDTLS_PEM_PARSE_C +#define POLARSSL_PEM_PARSE_C MBEDTLS_PEM_PARSE_C +#endif +#if defined MBEDTLS_PEM_WRITE_C +#define POLARSSL_PEM_WRITE_C MBEDTLS_PEM_WRITE_C +#endif +#if defined MBEDTLS_PKCS11_C +#define POLARSSL_PKCS11_C MBEDTLS_PKCS11_C +#endif +#if defined MBEDTLS_PKCS12_C +#define POLARSSL_PKCS12_C MBEDTLS_PKCS12_C +#endif +#if defined MBEDTLS_PKCS1_V15 +#define POLARSSL_PKCS1_V15 MBEDTLS_PKCS1_V15 +#endif +#if defined MBEDTLS_PKCS1_V21 +#define POLARSSL_PKCS1_V21 MBEDTLS_PKCS1_V21 +#endif +#if defined MBEDTLS_PKCS5_C +#define POLARSSL_PKCS5_C MBEDTLS_PKCS5_C +#endif +#if defined MBEDTLS_PK_C +#define POLARSSL_PK_C MBEDTLS_PK_C +#endif +#if defined MBEDTLS_PK_PARSE_C +#define POLARSSL_PK_PARSE_C MBEDTLS_PK_PARSE_C +#endif +#if defined MBEDTLS_PK_PARSE_EC_EXTENDED +#define POLARSSL_PK_PARSE_EC_EXTENDED MBEDTLS_PK_PARSE_EC_EXTENDED +#endif +#if defined MBEDTLS_PK_RSA_ALT_SUPPORT +#define POLARSSL_PK_RSA_ALT_SUPPORT MBEDTLS_PK_RSA_ALT_SUPPORT +#endif +#if defined MBEDTLS_PK_WRITE_C +#define POLARSSL_PK_WRITE_C MBEDTLS_PK_WRITE_C +#endif +#if defined MBEDTLS_PLATFORM_C +#define POLARSSL_PLATFORM_C MBEDTLS_PLATFORM_C +#endif +#if defined MBEDTLS_PLATFORM_EXIT_ALT +#define POLARSSL_PLATFORM_EXIT_ALT MBEDTLS_PLATFORM_EXIT_ALT +#endif +#if defined MBEDTLS_PLATFORM_EXIT_MACRO +#define POLARSSL_PLATFORM_EXIT_MACRO MBEDTLS_PLATFORM_EXIT_MACRO +#endif +#if defined MBEDTLS_PLATFORM_FPRINTF_ALT +#define POLARSSL_PLATFORM_FPRINTF_ALT MBEDTLS_PLATFORM_FPRINTF_ALT +#endif +#if defined MBEDTLS_PLATFORM_FPRINTF_MACRO +#define POLARSSL_PLATFORM_FPRINTF_MACRO MBEDTLS_PLATFORM_FPRINTF_MACRO +#endif +#if defined MBEDTLS_PLATFORM_FREE_MACRO +#define POLARSSL_PLATFORM_FREE_MACRO MBEDTLS_PLATFORM_FREE_MACRO +#endif +#if defined MBEDTLS_PLATFORM_MEMORY +#define POLARSSL_PLATFORM_MEMORY MBEDTLS_PLATFORM_MEMORY +#endif +#if defined MBEDTLS_PLATFORM_NO_STD_FUNCTIONS +#define POLARSSL_PLATFORM_NO_STD_FUNCTIONS MBEDTLS_PLATFORM_NO_STD_FUNCTIONS +#endif +#if defined MBEDTLS_PLATFORM_PRINTF_ALT +#define POLARSSL_PLATFORM_PRINTF_ALT MBEDTLS_PLATFORM_PRINTF_ALT +#endif +#if defined MBEDTLS_PLATFORM_PRINTF_MACRO +#define POLARSSL_PLATFORM_PRINTF_MACRO MBEDTLS_PLATFORM_PRINTF_MACRO +#endif +#if defined MBEDTLS_PLATFORM_SNPRINTF_ALT +#define POLARSSL_PLATFORM_SNPRINTF_ALT MBEDTLS_PLATFORM_SNPRINTF_ALT +#endif +#if defined MBEDTLS_PLATFORM_SNPRINTF_MACRO +#define POLARSSL_PLATFORM_SNPRINTF_MACRO MBEDTLS_PLATFORM_SNPRINTF_MACRO +#endif +#if defined MBEDTLS_PLATFORM_STD_EXIT +#define POLARSSL_PLATFORM_STD_EXIT MBEDTLS_PLATFORM_STD_EXIT +#endif +#if defined MBEDTLS_PLATFORM_STD_FPRINTF +#define POLARSSL_PLATFORM_STD_FPRINTF MBEDTLS_PLATFORM_STD_FPRINTF +#endif +#if defined MBEDTLS_PLATFORM_STD_FREE +#define POLARSSL_PLATFORM_STD_FREE MBEDTLS_PLATFORM_STD_FREE +#endif +#if defined MBEDTLS_PLATFORM_STD_MALLOC +#define POLARSSL_PLATFORM_STD_MALLOC MBEDTLS_PLATFORM_STD_MALLOC +#endif +#if defined MBEDTLS_PLATFORM_STD_MEM_HDR +#define POLARSSL_PLATFORM_STD_MEM_HDR MBEDTLS_PLATFORM_STD_MEM_HDR +#endif +#if defined MBEDTLS_PLATFORM_STD_PRINTF +#define POLARSSL_PLATFORM_STD_PRINTF MBEDTLS_PLATFORM_STD_PRINTF +#endif +#if defined MBEDTLS_PLATFORM_STD_SNPRINTF +#define POLARSSL_PLATFORM_STD_SNPRINTF MBEDTLS_PLATFORM_STD_SNPRINTF +#endif +#if defined MBEDTLS_PSK_MAX_LEN +#define POLARSSL_PSK_MAX_LEN MBEDTLS_PSK_MAX_LEN +#endif +#if defined MBEDTLS_REMOVE_ARC4_CIPHERSUITES +#define POLARSSL_REMOVE_ARC4_CIPHERSUITES MBEDTLS_REMOVE_ARC4_CIPHERSUITES +#endif +#if defined MBEDTLS_RIPEMD160_ALT +#define POLARSSL_RIPEMD160_ALT MBEDTLS_RIPEMD160_ALT +#endif +#if defined MBEDTLS_RIPEMD160_C +#define POLARSSL_RIPEMD160_C MBEDTLS_RIPEMD160_C +#endif +#if defined MBEDTLS_RIPEMD160_PROCESS_ALT +#define POLARSSL_RIPEMD160_PROCESS_ALT MBEDTLS_RIPEMD160_PROCESS_ALT +#endif +#if defined MBEDTLS_RSA_C +#define POLARSSL_RSA_C MBEDTLS_RSA_C +#endif +#if defined MBEDTLS_RSA_NO_CRT +#define POLARSSL_RSA_NO_CRT MBEDTLS_RSA_NO_CRT +#endif +#if defined MBEDTLS_SELF_TEST +#define POLARSSL_SELF_TEST MBEDTLS_SELF_TEST +#endif +#if defined MBEDTLS_SHA1_ALT +#define POLARSSL_SHA1_ALT MBEDTLS_SHA1_ALT +#endif +#if defined MBEDTLS_SHA1_C +#define POLARSSL_SHA1_C MBEDTLS_SHA1_C +#endif +#if defined MBEDTLS_SHA1_PROCESS_ALT +#define POLARSSL_SHA1_PROCESS_ALT MBEDTLS_SHA1_PROCESS_ALT +#endif +#if defined MBEDTLS_SHA256_ALT +#define POLARSSL_SHA256_ALT MBEDTLS_SHA256_ALT +#endif +#if defined MBEDTLS_SHA256_C +#define POLARSSL_SHA256_C MBEDTLS_SHA256_C +#endif +#if defined MBEDTLS_SHA256_PROCESS_ALT +#define POLARSSL_SHA256_PROCESS_ALT MBEDTLS_SHA256_PROCESS_ALT +#endif +#if defined MBEDTLS_SHA512_ALT +#define POLARSSL_SHA512_ALT MBEDTLS_SHA512_ALT +#endif +#if defined MBEDTLS_SHA512_C +#define POLARSSL_SHA512_C MBEDTLS_SHA512_C +#endif +#if defined MBEDTLS_SHA512_PROCESS_ALT +#define POLARSSL_SHA512_PROCESS_ALT MBEDTLS_SHA512_PROCESS_ALT +#endif +#if defined MBEDTLS_SSL_AEAD_RANDOM_IV +#define POLARSSL_SSL_AEAD_RANDOM_IV MBEDTLS_SSL_AEAD_RANDOM_IV +#endif +#if defined MBEDTLS_SSL_ALERT_MESSAGES +#define POLARSSL_SSL_ALERT_MESSAGES MBEDTLS_SSL_ALERT_MESSAGES +#endif +#if defined MBEDTLS_SSL_ALL_ALERT_MESSAGES +#define POLARSSL_SSL_ALL_ALERT_MESSAGES MBEDTLS_SSL_ALL_ALERT_MESSAGES +#endif +#if defined MBEDTLS_SSL_ALPN +#define POLARSSL_SSL_ALPN MBEDTLS_SSL_ALPN +#endif +#if defined MBEDTLS_SSL_CACHE_C +#define POLARSSL_SSL_CACHE_C MBEDTLS_SSL_CACHE_C +#endif +#if defined MBEDTLS_SSL_CBC_RECORD_SPLITTING +#define POLARSSL_SSL_CBC_RECORD_SPLITTING MBEDTLS_SSL_CBC_RECORD_SPLITTING +#endif +#if defined MBEDTLS_SSL_CLI_C +#define POLARSSL_SSL_CLI_C MBEDTLS_SSL_CLI_C +#endif +#if defined MBEDTLS_SSL_COOKIE_C +#define POLARSSL_SSL_COOKIE_C MBEDTLS_SSL_COOKIE_C +#endif +#if defined MBEDTLS_SSL_COOKIE_TIMEOUT +#define POLARSSL_SSL_COOKIE_TIMEOUT MBEDTLS_SSL_COOKIE_TIMEOUT +#endif +#if defined MBEDTLS_SSL_DEBUG_ALL +#define POLARSSL_SSL_DEBUG_ALL MBEDTLS_SSL_DEBUG_ALL +#endif +#if defined MBEDTLS_SSL_DISABLE_RENEGOTIATION +#define POLARSSL_SSL_DISABLE_RENEGOTIATION MBEDTLS_SSL_DISABLE_RENEGOTIATION +#endif +#if defined MBEDTLS_SSL_DTLS_ANTI_REPLAY +#define POLARSSL_SSL_DTLS_ANTI_REPLAY MBEDTLS_SSL_DTLS_ANTI_REPLAY +#endif +#if defined MBEDTLS_SSL_DTLS_BADMAC_LIMIT +#define POLARSSL_SSL_DTLS_BADMAC_LIMIT MBEDTLS_SSL_DTLS_BADMAC_LIMIT +#endif +#if defined MBEDTLS_SSL_DTLS_HELLO_VERIFY +#define POLARSSL_SSL_DTLS_HELLO_VERIFY MBEDTLS_SSL_DTLS_HELLO_VERIFY +#endif +#if defined MBEDTLS_SSL_ENCRYPT_THEN_MAC +#define POLARSSL_SSL_ENCRYPT_THEN_MAC MBEDTLS_SSL_ENCRYPT_THEN_MAC +#endif +#if defined MBEDTLS_SSL_EXTENDED_MASTER_SECRET +#define POLARSSL_SSL_EXTENDED_MASTER_SECRET MBEDTLS_SSL_EXTENDED_MASTER_SECRET +#endif +#if defined MBEDTLS_SSL_FALLBACK_SCSV +#define POLARSSL_SSL_FALLBACK_SCSV MBEDTLS_SSL_FALLBACK_SCSV +#endif +#if defined MBEDTLS_SSL_HW_RECORD_ACCEL +#define POLARSSL_SSL_HW_RECORD_ACCEL MBEDTLS_SSL_HW_RECORD_ACCEL +#endif +#if defined MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +#define POLARSSL_SSL_MAX_FRAGMENT_LENGTH MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +#endif +#if defined MBEDTLS_SSL_PROTO_DTLS +#define POLARSSL_SSL_PROTO_DTLS MBEDTLS_SSL_PROTO_DTLS +#endif +#if defined MBEDTLS_SSL_PROTO_SSL3 +#define POLARSSL_SSL_PROTO_SSL3 MBEDTLS_SSL_PROTO_SSL3 +#endif +#if defined MBEDTLS_SSL_PROTO_TLS1 +#define POLARSSL_SSL_PROTO_TLS1 MBEDTLS_SSL_PROTO_TLS1 +#endif +#if defined MBEDTLS_SSL_PROTO_TLS1_1 +#define POLARSSL_SSL_PROTO_TLS1_1 MBEDTLS_SSL_PROTO_TLS1_1 +#endif +#if defined MBEDTLS_SSL_PROTO_TLS1_2 +#define POLARSSL_SSL_PROTO_TLS1_2 MBEDTLS_SSL_PROTO_TLS1_2 +#endif +#if defined MBEDTLS_SSL_RENEGOTIATION +#define POLARSSL_SSL_RENEGOTIATION MBEDTLS_SSL_RENEGOTIATION +#endif +#if defined MBEDTLS_SSL_SERVER_NAME_INDICATION +#define POLARSSL_SSL_SERVER_NAME_INDICATION MBEDTLS_SSL_SERVER_NAME_INDICATION +#endif +#if defined MBEDTLS_SSL_SESSION_TICKETS +#define POLARSSL_SSL_SESSION_TICKETS MBEDTLS_SSL_SESSION_TICKETS +#endif +#if defined MBEDTLS_SSL_SRV_C +#define POLARSSL_SSL_SRV_C MBEDTLS_SSL_SRV_C +#endif +#if defined MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE +#define POLARSSL_SSL_SRV_RESPECT_CLIENT_PREFERENCE MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE +#endif +#if defined MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO +#define POLARSSL_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO +#endif +#if defined MBEDTLS_SSL_TLS_C +#define POLARSSL_SSL_TLS_C MBEDTLS_SSL_TLS_C +#endif +#if defined MBEDTLS_SSL_TRUNCATED_HMAC +#define POLARSSL_SSL_TRUNCATED_HMAC MBEDTLS_SSL_TRUNCATED_HMAC +#endif +#if defined MBEDTLS_THREADING_ALT +#define POLARSSL_THREADING_ALT MBEDTLS_THREADING_ALT +#endif +#if defined MBEDTLS_THREADING_C +#define POLARSSL_THREADING_C MBEDTLS_THREADING_C +#endif +#if defined MBEDTLS_THREADING_PTHREAD +#define POLARSSL_THREADING_PTHREAD MBEDTLS_THREADING_PTHREAD +#endif +#if defined MBEDTLS_TIMING_ALT +#define POLARSSL_TIMING_ALT MBEDTLS_TIMING_ALT +#endif +#if defined MBEDTLS_TIMING_C +#define POLARSSL_TIMING_C MBEDTLS_TIMING_C +#endif +#if defined MBEDTLS_VERSION_C +#define POLARSSL_VERSION_C MBEDTLS_VERSION_C +#endif +#if defined MBEDTLS_VERSION_FEATURES +#define POLARSSL_VERSION_FEATURES MBEDTLS_VERSION_FEATURES +#endif +#if defined MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 +#define POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3 MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 +#endif +#if defined MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION +#define POLARSSL_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION +#endif +#if defined MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE +#define POLARSSL_X509_CHECK_EXTENDED_KEY_USAGE MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE +#endif +#if defined MBEDTLS_X509_CHECK_KEY_USAGE +#define POLARSSL_X509_CHECK_KEY_USAGE MBEDTLS_X509_CHECK_KEY_USAGE +#endif +#if defined MBEDTLS_X509_CREATE_C +#define POLARSSL_X509_CREATE_C MBEDTLS_X509_CREATE_C +#endif +#if defined MBEDTLS_X509_CRL_PARSE_C +#define POLARSSL_X509_CRL_PARSE_C MBEDTLS_X509_CRL_PARSE_C +#endif +#if defined MBEDTLS_X509_CRT_PARSE_C +#define POLARSSL_X509_CRT_PARSE_C MBEDTLS_X509_CRT_PARSE_C +#endif +#if defined MBEDTLS_X509_CRT_WRITE_C +#define POLARSSL_X509_CRT_WRITE_C MBEDTLS_X509_CRT_WRITE_C +#endif +#if defined MBEDTLS_X509_CSR_PARSE_C +#define POLARSSL_X509_CSR_PARSE_C MBEDTLS_X509_CSR_PARSE_C +#endif +#if defined MBEDTLS_X509_CSR_WRITE_C +#define POLARSSL_X509_CSR_WRITE_C MBEDTLS_X509_CSR_WRITE_C +#endif +#if defined MBEDTLS_X509_MAX_INTERMEDIATE_CA +#define POLARSSL_X509_MAX_INTERMEDIATE_CA MBEDTLS_X509_MAX_INTERMEDIATE_CA +#endif +#if defined MBEDTLS_X509_RSASSA_PSS_SUPPORT +#define POLARSSL_X509_RSASSA_PSS_SUPPORT MBEDTLS_X509_RSASSA_PSS_SUPPORT +#endif +#if defined MBEDTLS_X509_USE_C +#define POLARSSL_X509_USE_C MBEDTLS_X509_USE_C +#endif +#if defined MBEDTLS_XTEA_ALT +#define POLARSSL_XTEA_ALT MBEDTLS_XTEA_ALT +#endif +#if defined MBEDTLS_XTEA_C +#define POLARSSL_XTEA_C MBEDTLS_XTEA_C +#endif +#if defined MBEDTLS_ZLIB_SUPPORT +#define POLARSSL_ZLIB_SUPPORT MBEDTLS_ZLIB_SUPPORT +#endif + +/* + * Misc names (macros, types, functions, enum constants...) + */ +#define AES_DECRYPT MBEDTLS_AES_DECRYPT +#define AES_ENCRYPT MBEDTLS_AES_ENCRYPT +#define ASN1_BIT_STRING MBEDTLS_ASN1_BIT_STRING +#define ASN1_BMP_STRING MBEDTLS_ASN1_BMP_STRING +#define ASN1_BOOLEAN MBEDTLS_ASN1_BOOLEAN +#define ASN1_CHK_ADD MBEDTLS_ASN1_CHK_ADD +#define ASN1_CONSTRUCTED MBEDTLS_ASN1_CONSTRUCTED +#define ASN1_CONTEXT_SPECIFIC MBEDTLS_ASN1_CONTEXT_SPECIFIC +#define ASN1_GENERALIZED_TIME MBEDTLS_ASN1_GENERALIZED_TIME +#define ASN1_IA5_STRING MBEDTLS_ASN1_IA5_STRING +#define ASN1_INTEGER MBEDTLS_ASN1_INTEGER +#define ASN1_NULL MBEDTLS_ASN1_NULL +#define ASN1_OCTET_STRING MBEDTLS_ASN1_OCTET_STRING +#define ASN1_OID MBEDTLS_ASN1_OID +#define ASN1_PRIMITIVE MBEDTLS_ASN1_PRIMITIVE +#define ASN1_PRINTABLE_STRING MBEDTLS_ASN1_PRINTABLE_STRING +#define ASN1_SEQUENCE MBEDTLS_ASN1_SEQUENCE +#define ASN1_SET MBEDTLS_ASN1_SET +#define ASN1_T61_STRING MBEDTLS_ASN1_T61_STRING +#define ASN1_UNIVERSAL_STRING MBEDTLS_ASN1_UNIVERSAL_STRING +#define ASN1_UTC_TIME MBEDTLS_ASN1_UTC_TIME +#define ASN1_UTF8_STRING MBEDTLS_ASN1_UTF8_STRING +#define BADCERT_CN_MISMATCH MBEDTLS_X509_BADCERT_CN_MISMATCH +#define BADCERT_EXPIRED MBEDTLS_X509_BADCERT_EXPIRED +#define BADCERT_FUTURE MBEDTLS_X509_BADCERT_FUTURE +#define BADCERT_MISSING MBEDTLS_X509_BADCERT_MISSING +#define BADCERT_NOT_TRUSTED MBEDTLS_X509_BADCERT_NOT_TRUSTED +#define BADCERT_OTHER MBEDTLS_X509_BADCERT_OTHER +#define BADCERT_REVOKED MBEDTLS_X509_BADCERT_REVOKED +#define BADCERT_SKIP_VERIFY MBEDTLS_X509_BADCERT_SKIP_VERIFY +#define BADCRL_EXPIRED MBEDTLS_X509_BADCRL_EXPIRED +#define BADCRL_FUTURE MBEDTLS_X509_BADCRL_FUTURE +#define BADCRL_NOT_TRUSTED MBEDTLS_X509_BADCRL_NOT_TRUSTED +#define BLOWFISH_BLOCKSIZE MBEDTLS_BLOWFISH_BLOCKSIZE +#define BLOWFISH_DECRYPT MBEDTLS_BLOWFISH_DECRYPT +#define BLOWFISH_ENCRYPT MBEDTLS_BLOWFISH_ENCRYPT +#define BLOWFISH_MAX_KEY MBEDTLS_BLOWFISH_MAX_KEY_BITS +#define BLOWFISH_MIN_KEY MBEDTLS_BLOWFISH_MIN_KEY_BITS +#define BLOWFISH_ROUNDS MBEDTLS_BLOWFISH_ROUNDS +#define CAMELLIA_DECRYPT MBEDTLS_CAMELLIA_DECRYPT +#define CAMELLIA_ENCRYPT MBEDTLS_CAMELLIA_ENCRYPT +#define COLLECT_SIZE MBEDTLS_HAVEGE_COLLECT_SIZE +#define CTR_DRBG_BLOCKSIZE MBEDTLS_CTR_DRBG_BLOCKSIZE +#define CTR_DRBG_ENTROPY_LEN MBEDTLS_CTR_DRBG_ENTROPY_LEN +#define CTR_DRBG_KEYBITS MBEDTLS_CTR_DRBG_KEYBITS +#define CTR_DRBG_KEYSIZE MBEDTLS_CTR_DRBG_KEYSIZE +#define CTR_DRBG_MAX_INPUT MBEDTLS_CTR_DRBG_MAX_INPUT +#define CTR_DRBG_MAX_REQUEST MBEDTLS_CTR_DRBG_MAX_REQUEST +#define CTR_DRBG_MAX_SEED_INPUT MBEDTLS_CTR_DRBG_MAX_SEED_INPUT +#define CTR_DRBG_PR_OFF MBEDTLS_CTR_DRBG_PR_OFF +#define CTR_DRBG_PR_ON MBEDTLS_CTR_DRBG_PR_ON +#define CTR_DRBG_RESEED_INTERVAL MBEDTLS_CTR_DRBG_RESEED_INTERVAL +#define CTR_DRBG_SEEDLEN MBEDTLS_CTR_DRBG_SEEDLEN +#define DEPRECATED MBEDTLS_DEPRECATED +#define DES_DECRYPT MBEDTLS_DES_DECRYPT +#define DES_ENCRYPT MBEDTLS_DES_ENCRYPT +#define DES_KEY_SIZE MBEDTLS_DES_KEY_SIZE +#define ENTROPY_BLOCK_SIZE MBEDTLS_ENTROPY_BLOCK_SIZE +#define ENTROPY_MAX_GATHER MBEDTLS_ENTROPY_MAX_GATHER +#define ENTROPY_MAX_SEED_SIZE MBEDTLS_ENTROPY_MAX_SEED_SIZE +#define ENTROPY_MAX_SOURCES MBEDTLS_ENTROPY_MAX_SOURCES +#define ENTROPY_MIN_HARDCLOCK MBEDTLS_ENTROPY_MIN_HARDCLOCK +#define ENTROPY_MIN_HAVEGE MBEDTLS_ENTROPY_MIN_HAVEGE +#define ENTROPY_MIN_PLATFORM MBEDTLS_ENTROPY_MIN_PLATFORM +#define ENTROPY_SOURCE_MANUAL MBEDTLS_ENTROPY_SOURCE_MANUAL +#define EXT_AUTHORITY_KEY_IDENTIFIER MBEDTLS_X509_EXT_AUTHORITY_KEY_IDENTIFIER +#define EXT_BASIC_CONSTRAINTS MBEDTLS_X509_EXT_BASIC_CONSTRAINTS +#define EXT_CERTIFICATE_POLICIES MBEDTLS_X509_EXT_CERTIFICATE_POLICIES +#define EXT_CRL_DISTRIBUTION_POINTS MBEDTLS_X509_EXT_CRL_DISTRIBUTION_POINTS +#define EXT_EXTENDED_KEY_USAGE MBEDTLS_X509_EXT_EXTENDED_KEY_USAGE +#define EXT_FRESHEST_CRL MBEDTLS_X509_EXT_FRESHEST_CRL +#define EXT_INIHIBIT_ANYPOLICY MBEDTLS_X509_EXT_INIHIBIT_ANYPOLICY +#define EXT_ISSUER_ALT_NAME MBEDTLS_X509_EXT_ISSUER_ALT_NAME +#define EXT_KEY_USAGE MBEDTLS_X509_EXT_KEY_USAGE +#define EXT_NAME_CONSTRAINTS MBEDTLS_X509_EXT_NAME_CONSTRAINTS +#define EXT_NS_CERT_TYPE MBEDTLS_X509_EXT_NS_CERT_TYPE +#define EXT_POLICY_CONSTRAINTS MBEDTLS_X509_EXT_POLICY_CONSTRAINTS +#define EXT_POLICY_MAPPINGS MBEDTLS_X509_EXT_POLICY_MAPPINGS +#define EXT_SUBJECT_ALT_NAME MBEDTLS_X509_EXT_SUBJECT_ALT_NAME +#define EXT_SUBJECT_DIRECTORY_ATTRS MBEDTLS_X509_EXT_SUBJECT_DIRECTORY_ATTRS +#define EXT_SUBJECT_KEY_IDENTIFIER MBEDTLS_X509_EXT_SUBJECT_KEY_IDENTIFIER +#define GCM_DECRYPT MBEDTLS_GCM_DECRYPT +#define GCM_ENCRYPT MBEDTLS_GCM_ENCRYPT +#define KU_CRL_SIGN MBEDTLS_X509_KU_CRL_SIGN +#define KU_DATA_ENCIPHERMENT MBEDTLS_X509_KU_DATA_ENCIPHERMENT +#define KU_DIGITAL_SIGNATURE MBEDTLS_X509_KU_DIGITAL_SIGNATURE +#define KU_KEY_AGREEMENT MBEDTLS_X509_KU_KEY_AGREEMENT +#define KU_KEY_CERT_SIGN MBEDTLS_X509_KU_KEY_CERT_SIGN +#define KU_KEY_ENCIPHERMENT MBEDTLS_X509_KU_KEY_ENCIPHERMENT +#define KU_NON_REPUDIATION MBEDTLS_X509_KU_NON_REPUDIATION +#define LN_2_DIV_LN_10_SCALE100 MBEDTLS_LN_2_DIV_LN_10_SCALE100 +#define MD_CONTEXT_T_INIT MBEDTLS_MD_CONTEXT_T_INIT +#define MEMORY_VERIFY_ALLOC MBEDTLS_MEMORY_VERIFY_ALLOC +#define MEMORY_VERIFY_ALWAYS MBEDTLS_MEMORY_VERIFY_ALWAYS +#define MEMORY_VERIFY_FREE MBEDTLS_MEMORY_VERIFY_FREE +#define MEMORY_VERIFY_NONE MBEDTLS_MEMORY_VERIFY_NONE +#define MPI_CHK MBEDTLS_MPI_CHK +#define NET_PROTO_TCP MBEDTLS_NET_PROTO_TCP +#define NET_PROTO_UDP MBEDTLS_NET_PROTO_UDP +#define NS_CERT_TYPE_EMAIL MBEDTLS_X509_NS_CERT_TYPE_EMAIL +#define NS_CERT_TYPE_EMAIL_CA MBEDTLS_X509_NS_CERT_TYPE_EMAIL_CA +#define NS_CERT_TYPE_OBJECT_SIGNING MBEDTLS_X509_NS_CERT_TYPE_OBJECT_SIGNING +#define NS_CERT_TYPE_OBJECT_SIGNING_CA MBEDTLS_X509_NS_CERT_TYPE_OBJECT_SIGNING_CA +#define NS_CERT_TYPE_RESERVED MBEDTLS_X509_NS_CERT_TYPE_RESERVED +#define NS_CERT_TYPE_SSL_CA MBEDTLS_X509_NS_CERT_TYPE_SSL_CA +#define NS_CERT_TYPE_SSL_CLIENT MBEDTLS_X509_NS_CERT_TYPE_SSL_CLIENT +#define NS_CERT_TYPE_SSL_SERVER MBEDTLS_X509_NS_CERT_TYPE_SSL_SERVER +#define OID_ANSI_X9_62 MBEDTLS_OID_ANSI_X9_62 +#define OID_ANSI_X9_62_FIELD_TYPE MBEDTLS_OID_ANSI_X9_62_FIELD_TYPE +#define OID_ANSI_X9_62_PRIME_FIELD MBEDTLS_OID_ANSI_X9_62_PRIME_FIELD +#define OID_ANSI_X9_62_SIG MBEDTLS_OID_ANSI_X9_62_SIG +#define OID_ANSI_X9_62_SIG_SHA2 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 +#define OID_ANY_EXTENDED_KEY_USAGE MBEDTLS_OID_ANY_EXTENDED_KEY_USAGE +#define OID_AT MBEDTLS_OID_AT +#define OID_AT_CN MBEDTLS_OID_AT_CN +#define OID_AT_COUNTRY MBEDTLS_OID_AT_COUNTRY +#define OID_AT_DN_QUALIFIER MBEDTLS_OID_AT_DN_QUALIFIER +#define OID_AT_GENERATION_QUALIFIER MBEDTLS_OID_AT_GENERATION_QUALIFIER +#define OID_AT_GIVEN_NAME MBEDTLS_OID_AT_GIVEN_NAME +#define OID_AT_INITIALS MBEDTLS_OID_AT_INITIALS +#define OID_AT_LOCALITY MBEDTLS_OID_AT_LOCALITY +#define OID_AT_ORGANIZATION MBEDTLS_OID_AT_ORGANIZATION +#define OID_AT_ORG_UNIT MBEDTLS_OID_AT_ORG_UNIT +#define OID_AT_POSTAL_ADDRESS MBEDTLS_OID_AT_POSTAL_ADDRESS +#define OID_AT_POSTAL_CODE MBEDTLS_OID_AT_POSTAL_CODE +#define OID_AT_PSEUDONYM MBEDTLS_OID_AT_PSEUDONYM +#define OID_AT_SERIAL_NUMBER MBEDTLS_OID_AT_SERIAL_NUMBER +#define OID_AT_STATE MBEDTLS_OID_AT_STATE +#define OID_AT_SUR_NAME MBEDTLS_OID_AT_SUR_NAME +#define OID_AT_TITLE MBEDTLS_OID_AT_TITLE +#define OID_AT_UNIQUE_IDENTIFIER MBEDTLS_OID_AT_UNIQUE_IDENTIFIER +#define OID_AUTHORITY_KEY_IDENTIFIER MBEDTLS_OID_AUTHORITY_KEY_IDENTIFIER +#define OID_BASIC_CONSTRAINTS MBEDTLS_OID_BASIC_CONSTRAINTS +#define OID_CERTICOM MBEDTLS_OID_CERTICOM +#define OID_CERTIFICATE_POLICIES MBEDTLS_OID_CERTIFICATE_POLICIES +#define OID_CLIENT_AUTH MBEDTLS_OID_CLIENT_AUTH +#define OID_CMP MBEDTLS_OID_CMP +#define OID_CODE_SIGNING MBEDTLS_OID_CODE_SIGNING +#define OID_COUNTRY_US MBEDTLS_OID_COUNTRY_US +#define OID_CRL_DISTRIBUTION_POINTS MBEDTLS_OID_CRL_DISTRIBUTION_POINTS +#define OID_CRL_NUMBER MBEDTLS_OID_CRL_NUMBER +#define OID_DES_CBC MBEDTLS_OID_DES_CBC +#define OID_DES_EDE3_CBC MBEDTLS_OID_DES_EDE3_CBC +#define OID_DIGEST_ALG_MD2 MBEDTLS_OID_DIGEST_ALG_MD2 +#define OID_DIGEST_ALG_MD4 MBEDTLS_OID_DIGEST_ALG_MD4 +#define OID_DIGEST_ALG_MD5 MBEDTLS_OID_DIGEST_ALG_MD5 +#define OID_DIGEST_ALG_SHA1 MBEDTLS_OID_DIGEST_ALG_SHA1 +#define OID_DIGEST_ALG_SHA224 MBEDTLS_OID_DIGEST_ALG_SHA224 +#define OID_DIGEST_ALG_SHA256 MBEDTLS_OID_DIGEST_ALG_SHA256 +#define OID_DIGEST_ALG_SHA384 MBEDTLS_OID_DIGEST_ALG_SHA384 +#define OID_DIGEST_ALG_SHA512 MBEDTLS_OID_DIGEST_ALG_SHA512 +#define OID_DOMAIN_COMPONENT MBEDTLS_OID_DOMAIN_COMPONENT +#define OID_ECDSA_SHA1 MBEDTLS_OID_ECDSA_SHA1 +#define OID_ECDSA_SHA224 MBEDTLS_OID_ECDSA_SHA224 +#define OID_ECDSA_SHA256 MBEDTLS_OID_ECDSA_SHA256 +#define OID_ECDSA_SHA384 MBEDTLS_OID_ECDSA_SHA384 +#define OID_ECDSA_SHA512 MBEDTLS_OID_ECDSA_SHA512 +#define OID_EC_ALG_ECDH MBEDTLS_OID_EC_ALG_ECDH +#define OID_EC_ALG_UNRESTRICTED MBEDTLS_OID_EC_ALG_UNRESTRICTED +#define OID_EC_BRAINPOOL_V1 MBEDTLS_OID_EC_BRAINPOOL_V1 +#define OID_EC_GRP_BP256R1 MBEDTLS_OID_EC_GRP_BP256R1 +#define OID_EC_GRP_BP384R1 MBEDTLS_OID_EC_GRP_BP384R1 +#define OID_EC_GRP_BP512R1 MBEDTLS_OID_EC_GRP_BP512R1 +#define OID_EC_GRP_SECP192K1 MBEDTLS_OID_EC_GRP_SECP192K1 +#define OID_EC_GRP_SECP192R1 MBEDTLS_OID_EC_GRP_SECP192R1 +#define OID_EC_GRP_SECP224K1 MBEDTLS_OID_EC_GRP_SECP224K1 +#define OID_EC_GRP_SECP224R1 MBEDTLS_OID_EC_GRP_SECP224R1 +#define OID_EC_GRP_SECP256K1 MBEDTLS_OID_EC_GRP_SECP256K1 +#define OID_EC_GRP_SECP256R1 MBEDTLS_OID_EC_GRP_SECP256R1 +#define OID_EC_GRP_SECP384R1 MBEDTLS_OID_EC_GRP_SECP384R1 +#define OID_EC_GRP_SECP521R1 MBEDTLS_OID_EC_GRP_SECP521R1 +#define OID_EMAIL_PROTECTION MBEDTLS_OID_EMAIL_PROTECTION +#define OID_EXTENDED_KEY_USAGE MBEDTLS_OID_EXTENDED_KEY_USAGE +#define OID_FRESHEST_CRL MBEDTLS_OID_FRESHEST_CRL +#define OID_GOV MBEDTLS_OID_GOV +#define OID_HMAC_SHA1 MBEDTLS_OID_HMAC_SHA1 +#define OID_ID_CE MBEDTLS_OID_ID_CE +#define OID_INIHIBIT_ANYPOLICY MBEDTLS_OID_INIHIBIT_ANYPOLICY +#define OID_ISO_CCITT_DS MBEDTLS_OID_ISO_CCITT_DS +#define OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ISO_IDENTIFIED_ORG +#define OID_ISO_ITU_COUNTRY MBEDTLS_OID_ISO_ITU_COUNTRY +#define OID_ISO_ITU_US_ORG MBEDTLS_OID_ISO_ITU_US_ORG +#define OID_ISO_MEMBER_BODIES MBEDTLS_OID_ISO_MEMBER_BODIES +#define OID_ISSUER_ALT_NAME MBEDTLS_OID_ISSUER_ALT_NAME +#define OID_KEY_USAGE MBEDTLS_OID_KEY_USAGE +#define OID_KP MBEDTLS_OID_KP +#define OID_MGF1 MBEDTLS_OID_MGF1 +#define OID_NAME_CONSTRAINTS MBEDTLS_OID_NAME_CONSTRAINTS +#define OID_NETSCAPE MBEDTLS_OID_NETSCAPE +#define OID_NS_BASE_URL MBEDTLS_OID_NS_BASE_URL +#define OID_NS_CA_POLICY_URL MBEDTLS_OID_NS_CA_POLICY_URL +#define OID_NS_CA_REVOCATION_URL MBEDTLS_OID_NS_CA_REVOCATION_URL +#define OID_NS_CERT MBEDTLS_OID_NS_CERT +#define OID_NS_CERT_SEQUENCE MBEDTLS_OID_NS_CERT_SEQUENCE +#define OID_NS_CERT_TYPE MBEDTLS_OID_NS_CERT_TYPE +#define OID_NS_COMMENT MBEDTLS_OID_NS_COMMENT +#define OID_NS_DATA_TYPE MBEDTLS_OID_NS_DATA_TYPE +#define OID_NS_RENEWAL_URL MBEDTLS_OID_NS_RENEWAL_URL +#define OID_NS_REVOCATION_URL MBEDTLS_OID_NS_REVOCATION_URL +#define OID_NS_SSL_SERVER_NAME MBEDTLS_OID_NS_SSL_SERVER_NAME +#define OID_OCSP_SIGNING MBEDTLS_OID_OCSP_SIGNING +#define OID_OIW_SECSIG MBEDTLS_OID_OIW_SECSIG +#define OID_OIW_SECSIG_ALG MBEDTLS_OID_OIW_SECSIG_ALG +#define OID_OIW_SECSIG_SHA1 MBEDTLS_OID_OIW_SECSIG_SHA1 +#define OID_ORGANIZATION MBEDTLS_OID_ORGANIZATION +#define OID_ORG_ANSI_X9_62 MBEDTLS_OID_ORG_ANSI_X9_62 +#define OID_ORG_CERTICOM MBEDTLS_OID_ORG_CERTICOM +#define OID_ORG_DOD MBEDTLS_OID_ORG_DOD +#define OID_ORG_GOV MBEDTLS_OID_ORG_GOV +#define OID_ORG_NETSCAPE MBEDTLS_OID_ORG_NETSCAPE +#define OID_ORG_OIW MBEDTLS_OID_ORG_OIW +#define OID_ORG_RSA_DATA_SECURITY MBEDTLS_OID_ORG_RSA_DATA_SECURITY +#define OID_ORG_TELETRUST MBEDTLS_OID_ORG_TELETRUST +#define OID_PKCS MBEDTLS_OID_PKCS +#define OID_PKCS1 MBEDTLS_OID_PKCS1 +#define OID_PKCS12 MBEDTLS_OID_PKCS12 +#define OID_PKCS12_PBE MBEDTLS_OID_PKCS12_PBE +#define OID_PKCS12_PBE_SHA1_DES2_EDE_CBC MBEDTLS_OID_PKCS12_PBE_SHA1_DES2_EDE_CBC +#define OID_PKCS12_PBE_SHA1_DES3_EDE_CBC MBEDTLS_OID_PKCS12_PBE_SHA1_DES3_EDE_CBC +#define OID_PKCS12_PBE_SHA1_RC2_128_CBC MBEDTLS_OID_PKCS12_PBE_SHA1_RC2_128_CBC +#define OID_PKCS12_PBE_SHA1_RC2_40_CBC MBEDTLS_OID_PKCS12_PBE_SHA1_RC2_40_CBC +#define OID_PKCS12_PBE_SHA1_RC4_128 MBEDTLS_OID_PKCS12_PBE_SHA1_RC4_128 +#define OID_PKCS12_PBE_SHA1_RC4_40 MBEDTLS_OID_PKCS12_PBE_SHA1_RC4_40 +#define OID_PKCS1_MD2 MBEDTLS_OID_PKCS1_MD2 +#define OID_PKCS1_MD4 MBEDTLS_OID_PKCS1_MD4 +#define OID_PKCS1_MD5 MBEDTLS_OID_PKCS1_MD5 +#define OID_PKCS1_RSA MBEDTLS_OID_PKCS1_RSA +#define OID_PKCS1_SHA1 MBEDTLS_OID_PKCS1_SHA1 +#define OID_PKCS1_SHA224 MBEDTLS_OID_PKCS1_SHA224 +#define OID_PKCS1_SHA256 MBEDTLS_OID_PKCS1_SHA256 +#define OID_PKCS1_SHA384 MBEDTLS_OID_PKCS1_SHA384 +#define OID_PKCS1_SHA512 MBEDTLS_OID_PKCS1_SHA512 +#define OID_PKCS5 MBEDTLS_OID_PKCS5 +#define OID_PKCS5_PBES2 MBEDTLS_OID_PKCS5_PBES2 +#define OID_PKCS5_PBE_MD2_DES_CBC MBEDTLS_OID_PKCS5_PBE_MD2_DES_CBC +#define OID_PKCS5_PBE_MD2_RC2_CBC MBEDTLS_OID_PKCS5_PBE_MD2_RC2_CBC +#define OID_PKCS5_PBE_MD5_DES_CBC MBEDTLS_OID_PKCS5_PBE_MD5_DES_CBC +#define OID_PKCS5_PBE_MD5_RC2_CBC MBEDTLS_OID_PKCS5_PBE_MD5_RC2_CBC +#define OID_PKCS5_PBE_SHA1_DES_CBC MBEDTLS_OID_PKCS5_PBE_SHA1_DES_CBC +#define OID_PKCS5_PBE_SHA1_RC2_CBC MBEDTLS_OID_PKCS5_PBE_SHA1_RC2_CBC +#define OID_PKCS5_PBKDF2 MBEDTLS_OID_PKCS5_PBKDF2 +#define OID_PKCS5_PBMAC1 MBEDTLS_OID_PKCS5_PBMAC1 +#define OID_PKCS9 MBEDTLS_OID_PKCS9 +#define OID_PKCS9_CSR_EXT_REQ MBEDTLS_OID_PKCS9_CSR_EXT_REQ +#define OID_PKCS9_EMAIL MBEDTLS_OID_PKCS9_EMAIL +#define OID_PKIX MBEDTLS_OID_PKIX +#define OID_POLICY_CONSTRAINTS MBEDTLS_OID_POLICY_CONSTRAINTS +#define OID_POLICY_MAPPINGS MBEDTLS_OID_POLICY_MAPPINGS +#define OID_PRIVATE_KEY_USAGE_PERIOD MBEDTLS_OID_PRIVATE_KEY_USAGE_PERIOD +#define OID_RSASSA_PSS MBEDTLS_OID_RSASSA_PSS +#define OID_RSA_COMPANY MBEDTLS_OID_RSA_COMPANY +#define OID_RSA_SHA_OBS MBEDTLS_OID_RSA_SHA_OBS +#define OID_SERVER_AUTH MBEDTLS_OID_SERVER_AUTH +#define OID_SIZE MBEDTLS_OID_SIZE +#define OID_SUBJECT_ALT_NAME MBEDTLS_OID_SUBJECT_ALT_NAME +#define OID_SUBJECT_DIRECTORY_ATTRS MBEDTLS_OID_SUBJECT_DIRECTORY_ATTRS +#define OID_SUBJECT_KEY_IDENTIFIER MBEDTLS_OID_SUBJECT_KEY_IDENTIFIER +#define OID_TELETRUST MBEDTLS_OID_TELETRUST +#define OID_TIME_STAMPING MBEDTLS_OID_TIME_STAMPING +#define PADLOCK_ACE MBEDTLS_PADLOCK_ACE +#define PADLOCK_ALIGN16 MBEDTLS_PADLOCK_ALIGN16 +#define PADLOCK_PHE MBEDTLS_PADLOCK_PHE +#define PADLOCK_PMM MBEDTLS_PADLOCK_PMM +#define PADLOCK_RNG MBEDTLS_PADLOCK_RNG +#define PKCS12_DERIVE_IV MBEDTLS_PKCS12_DERIVE_IV +#define PKCS12_DERIVE_KEY MBEDTLS_PKCS12_DERIVE_KEY +#define PKCS12_DERIVE_MAC_KEY MBEDTLS_PKCS12_DERIVE_MAC_KEY +#define PKCS12_PBE_DECRYPT MBEDTLS_PKCS12_PBE_DECRYPT +#define PKCS12_PBE_ENCRYPT MBEDTLS_PKCS12_PBE_ENCRYPT +#define PKCS5_DECRYPT MBEDTLS_PKCS5_DECRYPT +#define PKCS5_ENCRYPT MBEDTLS_PKCS5_ENCRYPT +#define POLARSSL_AESNI_AES MBEDTLS_AESNI_AES +#define POLARSSL_AESNI_CLMUL MBEDTLS_AESNI_CLMUL +#define POLARSSL_AESNI_H MBEDTLS_AESNI_H +#define POLARSSL_AES_H MBEDTLS_AES_H +#define POLARSSL_ARC4_H MBEDTLS_ARC4_H +#define POLARSSL_ASN1_H MBEDTLS_ASN1_H +#define POLARSSL_ASN1_WRITE_H MBEDTLS_ASN1_WRITE_H +#define POLARSSL_BASE64_H MBEDTLS_BASE64_H +#define POLARSSL_BIGNUM_H MBEDTLS_BIGNUM_H +#define POLARSSL_BLOWFISH_H MBEDTLS_BLOWFISH_H +#define POLARSSL_BN_MUL_H MBEDTLS_BN_MUL_H +#define POLARSSL_CAMELLIA_H MBEDTLS_CAMELLIA_H +#define POLARSSL_CCM_H MBEDTLS_CCM_H +#define POLARSSL_CERTS_H MBEDTLS_CERTS_H +#define POLARSSL_CHECK_CONFIG_H MBEDTLS_CHECK_CONFIG_H +#define POLARSSL_CIPHERSUITE_NODTLS MBEDTLS_CIPHERSUITE_NODTLS +#define POLARSSL_CIPHERSUITE_SHORT_TAG MBEDTLS_CIPHERSUITE_SHORT_TAG +#define POLARSSL_CIPHERSUITE_WEAK MBEDTLS_CIPHERSUITE_WEAK +#define POLARSSL_CIPHER_AES_128_CBC MBEDTLS_CIPHER_AES_128_CBC +#define POLARSSL_CIPHER_AES_128_CCM MBEDTLS_CIPHER_AES_128_CCM +#define POLARSSL_CIPHER_AES_128_CFB128 MBEDTLS_CIPHER_AES_128_CFB128 +#define POLARSSL_CIPHER_AES_128_CTR MBEDTLS_CIPHER_AES_128_CTR +#define POLARSSL_CIPHER_AES_128_ECB MBEDTLS_CIPHER_AES_128_ECB +#define POLARSSL_CIPHER_AES_128_GCM MBEDTLS_CIPHER_AES_128_GCM +#define POLARSSL_CIPHER_AES_192_CBC MBEDTLS_CIPHER_AES_192_CBC +#define POLARSSL_CIPHER_AES_192_CCM MBEDTLS_CIPHER_AES_192_CCM +#define POLARSSL_CIPHER_AES_192_CFB128 MBEDTLS_CIPHER_AES_192_CFB128 +#define POLARSSL_CIPHER_AES_192_CTR MBEDTLS_CIPHER_AES_192_CTR +#define POLARSSL_CIPHER_AES_192_ECB MBEDTLS_CIPHER_AES_192_ECB +#define POLARSSL_CIPHER_AES_192_GCM MBEDTLS_CIPHER_AES_192_GCM +#define POLARSSL_CIPHER_AES_256_CBC MBEDTLS_CIPHER_AES_256_CBC +#define POLARSSL_CIPHER_AES_256_CCM MBEDTLS_CIPHER_AES_256_CCM +#define POLARSSL_CIPHER_AES_256_CFB128 MBEDTLS_CIPHER_AES_256_CFB128 +#define POLARSSL_CIPHER_AES_256_CTR MBEDTLS_CIPHER_AES_256_CTR +#define POLARSSL_CIPHER_AES_256_ECB MBEDTLS_CIPHER_AES_256_ECB +#define POLARSSL_CIPHER_AES_256_GCM MBEDTLS_CIPHER_AES_256_GCM +#define POLARSSL_CIPHER_ARC4_128 MBEDTLS_CIPHER_ARC4_128 +#define POLARSSL_CIPHER_BLOWFISH_CBC MBEDTLS_CIPHER_BLOWFISH_CBC +#define POLARSSL_CIPHER_BLOWFISH_CFB64 MBEDTLS_CIPHER_BLOWFISH_CFB64 +#define POLARSSL_CIPHER_BLOWFISH_CTR MBEDTLS_CIPHER_BLOWFISH_CTR +#define POLARSSL_CIPHER_BLOWFISH_ECB MBEDTLS_CIPHER_BLOWFISH_ECB +#define POLARSSL_CIPHER_CAMELLIA_128_CBC MBEDTLS_CIPHER_CAMELLIA_128_CBC +#define POLARSSL_CIPHER_CAMELLIA_128_CCM MBEDTLS_CIPHER_CAMELLIA_128_CCM +#define POLARSSL_CIPHER_CAMELLIA_128_CFB128 MBEDTLS_CIPHER_CAMELLIA_128_CFB128 +#define POLARSSL_CIPHER_CAMELLIA_128_CTR MBEDTLS_CIPHER_CAMELLIA_128_CTR +#define POLARSSL_CIPHER_CAMELLIA_128_ECB MBEDTLS_CIPHER_CAMELLIA_128_ECB +#define POLARSSL_CIPHER_CAMELLIA_128_GCM MBEDTLS_CIPHER_CAMELLIA_128_GCM +#define POLARSSL_CIPHER_CAMELLIA_192_CBC MBEDTLS_CIPHER_CAMELLIA_192_CBC +#define POLARSSL_CIPHER_CAMELLIA_192_CCM MBEDTLS_CIPHER_CAMELLIA_192_CCM +#define POLARSSL_CIPHER_CAMELLIA_192_CFB128 MBEDTLS_CIPHER_CAMELLIA_192_CFB128 +#define POLARSSL_CIPHER_CAMELLIA_192_CTR MBEDTLS_CIPHER_CAMELLIA_192_CTR +#define POLARSSL_CIPHER_CAMELLIA_192_ECB MBEDTLS_CIPHER_CAMELLIA_192_ECB +#define POLARSSL_CIPHER_CAMELLIA_192_GCM MBEDTLS_CIPHER_CAMELLIA_192_GCM +#define POLARSSL_CIPHER_CAMELLIA_256_CBC MBEDTLS_CIPHER_CAMELLIA_256_CBC +#define POLARSSL_CIPHER_CAMELLIA_256_CCM MBEDTLS_CIPHER_CAMELLIA_256_CCM +#define POLARSSL_CIPHER_CAMELLIA_256_CFB128 MBEDTLS_CIPHER_CAMELLIA_256_CFB128 +#define POLARSSL_CIPHER_CAMELLIA_256_CTR MBEDTLS_CIPHER_CAMELLIA_256_CTR +#define POLARSSL_CIPHER_CAMELLIA_256_ECB MBEDTLS_CIPHER_CAMELLIA_256_ECB +#define POLARSSL_CIPHER_CAMELLIA_256_GCM MBEDTLS_CIPHER_CAMELLIA_256_GCM +#define POLARSSL_CIPHER_DES_CBC MBEDTLS_CIPHER_DES_CBC +#define POLARSSL_CIPHER_DES_ECB MBEDTLS_CIPHER_DES_ECB +#define POLARSSL_CIPHER_DES_EDE3_CBC MBEDTLS_CIPHER_DES_EDE3_CBC +#define POLARSSL_CIPHER_DES_EDE3_ECB MBEDTLS_CIPHER_DES_EDE3_ECB +#define POLARSSL_CIPHER_DES_EDE_CBC MBEDTLS_CIPHER_DES_EDE_CBC +#define POLARSSL_CIPHER_DES_EDE_ECB MBEDTLS_CIPHER_DES_EDE_ECB +#define POLARSSL_CIPHER_H MBEDTLS_CIPHER_H +#define POLARSSL_CIPHER_ID_3DES MBEDTLS_CIPHER_ID_3DES +#define POLARSSL_CIPHER_ID_AES MBEDTLS_CIPHER_ID_AES +#define POLARSSL_CIPHER_ID_ARC4 MBEDTLS_CIPHER_ID_ARC4 +#define POLARSSL_CIPHER_ID_BLOWFISH MBEDTLS_CIPHER_ID_BLOWFISH +#define POLARSSL_CIPHER_ID_CAMELLIA MBEDTLS_CIPHER_ID_CAMELLIA +#define POLARSSL_CIPHER_ID_DES MBEDTLS_CIPHER_ID_DES +#define POLARSSL_CIPHER_ID_NONE MBEDTLS_CIPHER_ID_NONE +#define POLARSSL_CIPHER_ID_NULL MBEDTLS_CIPHER_ID_NULL +#define POLARSSL_CIPHER_MODE_AEAD MBEDTLS_CIPHER_MODE_AEAD +#define POLARSSL_CIPHER_MODE_STREAM MBEDTLS_CIPHER_MODE_STREAM +#define POLARSSL_CIPHER_MODE_WITH_PADDING MBEDTLS_CIPHER_MODE_WITH_PADDING +#define POLARSSL_CIPHER_NONE MBEDTLS_CIPHER_NONE +#define POLARSSL_CIPHER_NULL MBEDTLS_CIPHER_NULL +#define POLARSSL_CIPHER_VARIABLE_IV_LEN MBEDTLS_CIPHER_VARIABLE_IV_LEN +#define POLARSSL_CIPHER_VARIABLE_KEY_LEN MBEDTLS_CIPHER_VARIABLE_KEY_LEN +#define POLARSSL_CIPHER_WRAP_H MBEDTLS_CIPHER_WRAP_H +#define POLARSSL_CONFIG_H MBEDTLS_CONFIG_H +#define POLARSSL_CTR_DRBG_H MBEDTLS_CTR_DRBG_H +#define POLARSSL_DEBUG_H MBEDTLS_DEBUG_H +#define POLARSSL_DEBUG_LOG_FULL MBEDTLS_DEBUG_LOG_FULL +#define POLARSSL_DEBUG_LOG_RAW MBEDTLS_DEBUG_LOG_RAW +#define POLARSSL_DECRYPT MBEDTLS_DECRYPT +#define POLARSSL_DES_H MBEDTLS_DES_H +#define POLARSSL_DHM_H MBEDTLS_DHM_H +#define POLARSSL_DHM_RFC2409_MODP_1024_G MBEDTLS_DHM_RFC2409_MODP_1024_G +#define POLARSSL_DHM_RFC2409_MODP_1024_P MBEDTLS_DHM_RFC2409_MODP_1024_P +#define POLARSSL_DHM_RFC3526_MODP_2048_G MBEDTLS_DHM_RFC3526_MODP_2048_G +#define POLARSSL_DHM_RFC3526_MODP_2048_P MBEDTLS_DHM_RFC3526_MODP_2048_P +#define POLARSSL_DHM_RFC3526_MODP_3072_G MBEDTLS_DHM_RFC3526_MODP_3072_G +#define POLARSSL_DHM_RFC3526_MODP_3072_P MBEDTLS_DHM_RFC3526_MODP_3072_P +#define POLARSSL_DHM_RFC5114_MODP_1024_G MBEDTLS_DHM_RFC5114_MODP_1024_G +#define POLARSSL_DHM_RFC5114_MODP_1024_P MBEDTLS_DHM_RFC5114_MODP_1024_P +#define POLARSSL_DHM_RFC5114_MODP_2048_G MBEDTLS_DHM_RFC5114_MODP_2048_G +#define POLARSSL_DHM_RFC5114_MODP_2048_P MBEDTLS_DHM_RFC5114_MODP_2048_P +#define POLARSSL_ECDH_H MBEDTLS_ECDH_H +#define POLARSSL_ECDH_OURS MBEDTLS_ECDH_OURS +#define POLARSSL_ECDH_THEIRS MBEDTLS_ECDH_THEIRS +#define POLARSSL_ECDSA_H MBEDTLS_ECDSA_H +#define POLARSSL_ECP_DP_BP256R1 MBEDTLS_ECP_DP_BP256R1 +#define POLARSSL_ECP_DP_BP384R1 MBEDTLS_ECP_DP_BP384R1 +#define POLARSSL_ECP_DP_BP512R1 MBEDTLS_ECP_DP_BP512R1 +#define POLARSSL_ECP_DP_M255 MBEDTLS_ECP_DP_CURVE25519 +#define POLARSSL_ECP_DP_MAX MBEDTLS_ECP_DP_MAX +#define POLARSSL_ECP_DP_NONE MBEDTLS_ECP_DP_NONE +#define POLARSSL_ECP_DP_SECP192K1 MBEDTLS_ECP_DP_SECP192K1 +#define POLARSSL_ECP_DP_SECP192R1 MBEDTLS_ECP_DP_SECP192R1 +#define POLARSSL_ECP_DP_SECP224K1 MBEDTLS_ECP_DP_SECP224K1 +#define POLARSSL_ECP_DP_SECP224R1 MBEDTLS_ECP_DP_SECP224R1 +#define POLARSSL_ECP_DP_SECP256K1 MBEDTLS_ECP_DP_SECP256K1 +#define POLARSSL_ECP_DP_SECP256R1 MBEDTLS_ECP_DP_SECP256R1 +#define POLARSSL_ECP_DP_SECP384R1 MBEDTLS_ECP_DP_SECP384R1 +#define POLARSSL_ECP_DP_SECP521R1 MBEDTLS_ECP_DP_SECP521R1 +#define POLARSSL_ECP_H MBEDTLS_ECP_H +#define POLARSSL_ECP_MAX_BYTES MBEDTLS_ECP_MAX_BYTES +#define POLARSSL_ECP_MAX_PT_LEN MBEDTLS_ECP_MAX_PT_LEN +#define POLARSSL_ECP_PF_COMPRESSED MBEDTLS_ECP_PF_COMPRESSED +#define POLARSSL_ECP_PF_UNCOMPRESSED MBEDTLS_ECP_PF_UNCOMPRESSED +#define POLARSSL_ECP_TLS_NAMED_CURVE MBEDTLS_ECP_TLS_NAMED_CURVE +#define POLARSSL_ENCRYPT MBEDTLS_ENCRYPT +#define POLARSSL_ENTROPY_H MBEDTLS_ENTROPY_H +#define POLARSSL_ENTROPY_POLL_H MBEDTLS_ENTROPY_POLL_H +#define POLARSSL_ENTROPY_SHA256_ACCUMULATOR MBEDTLS_ENTROPY_SHA256_ACCUMULATOR +#define POLARSSL_ENTROPY_SHA512_ACCUMULATOR MBEDTLS_ENTROPY_SHA512_ACCUMULATOR +#define POLARSSL_ERROR_H MBEDTLS_ERROR_H +#define POLARSSL_ERR_AES_INVALID_INPUT_LENGTH MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH +#define POLARSSL_ERR_AES_INVALID_KEY_LENGTH MBEDTLS_ERR_AES_INVALID_KEY_LENGTH +#define POLARSSL_ERR_ASN1_BUF_TOO_SMALL MBEDTLS_ERR_ASN1_BUF_TOO_SMALL +#define POLARSSL_ERR_ASN1_INVALID_DATA MBEDTLS_ERR_ASN1_INVALID_DATA +#define POLARSSL_ERR_ASN1_INVALID_LENGTH MBEDTLS_ERR_ASN1_INVALID_LENGTH +#define POLARSSL_ERR_ASN1_LENGTH_MISMATCH MBEDTLS_ERR_ASN1_LENGTH_MISMATCH +#define POLARSSL_ERR_ASN1_MALLOC_FAILED MBEDTLS_ERR_ASN1_ALLOC_FAILED +#define POLARSSL_ERR_ASN1_OUT_OF_DATA MBEDTLS_ERR_ASN1_OUT_OF_DATA +#define POLARSSL_ERR_ASN1_UNEXPECTED_TAG MBEDTLS_ERR_ASN1_UNEXPECTED_TAG +#define POLARSSL_ERR_BASE64_BUFFER_TOO_SMALL MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL +#define POLARSSL_ERR_BASE64_INVALID_CHARACTER MBEDTLS_ERR_BASE64_INVALID_CHARACTER +#define POLARSSL_ERR_BLOWFISH_INVALID_INPUT_LENGTH MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH +#define POLARSSL_ERR_BLOWFISH_INVALID_KEY_LENGTH MBEDTLS_ERR_BLOWFISH_INVALID_KEY_LENGTH +#define POLARSSL_ERR_CAMELLIA_INVALID_INPUT_LENGTH MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH +#define POLARSSL_ERR_CAMELLIA_INVALID_KEY_LENGTH MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH +#define POLARSSL_ERR_CCM_AUTH_FAILED MBEDTLS_ERR_CCM_AUTH_FAILED +#define POLARSSL_ERR_CCM_BAD_INPUT MBEDTLS_ERR_CCM_BAD_INPUT +#define POLARSSL_ERR_CIPHER_ALLOC_FAILED MBEDTLS_ERR_CIPHER_ALLOC_FAILED +#define POLARSSL_ERR_CIPHER_AUTH_FAILED MBEDTLS_ERR_CIPHER_AUTH_FAILED +#define POLARSSL_ERR_CIPHER_BAD_INPUT_DATA MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA +#define POLARSSL_ERR_CIPHER_FEATURE_UNAVAILABLE MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE +#define POLARSSL_ERR_CIPHER_FULL_BLOCK_EXPECTED MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED +#define POLARSSL_ERR_CIPHER_INVALID_PADDING MBEDTLS_ERR_CIPHER_INVALID_PADDING +#define POLARSSL_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED +#define POLARSSL_ERR_CTR_DRBG_FILE_IO_ERROR MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR +#define POLARSSL_ERR_CTR_DRBG_INPUT_TOO_BIG MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG +#define POLARSSL_ERR_CTR_DRBG_REQUEST_TOO_BIG MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG +#define POLARSSL_ERR_DES_INVALID_INPUT_LENGTH MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH +#define POLARSSL_ERR_DHM_BAD_INPUT_DATA MBEDTLS_ERR_DHM_BAD_INPUT_DATA +#define POLARSSL_ERR_DHM_CALC_SECRET_FAILED MBEDTLS_ERR_DHM_CALC_SECRET_FAILED +#define POLARSSL_ERR_DHM_FILE_IO_ERROR MBEDTLS_ERR_DHM_FILE_IO_ERROR +#define POLARSSL_ERR_DHM_INVALID_FORMAT MBEDTLS_ERR_DHM_INVALID_FORMAT +#define POLARSSL_ERR_DHM_MAKE_PARAMS_FAILED MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED +#define POLARSSL_ERR_DHM_MAKE_PUBLIC_FAILED MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED +#define POLARSSL_ERR_DHM_MALLOC_FAILED MBEDTLS_ERR_DHM_ALLOC_FAILED +#define POLARSSL_ERR_DHM_READ_PARAMS_FAILED MBEDTLS_ERR_DHM_READ_PARAMS_FAILED +#define POLARSSL_ERR_DHM_READ_PUBLIC_FAILED MBEDTLS_ERR_DHM_READ_PUBLIC_FAILED +#define POLARSSL_ERR_ECP_BAD_INPUT_DATA MBEDTLS_ERR_ECP_BAD_INPUT_DATA +#define POLARSSL_ERR_ECP_BUFFER_TOO_SMALL MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL +#define POLARSSL_ERR_ECP_FEATURE_UNAVAILABLE MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE +#define POLARSSL_ERR_ECP_INVALID_KEY MBEDTLS_ERR_ECP_INVALID_KEY +#define POLARSSL_ERR_ECP_MALLOC_FAILED MBEDTLS_ERR_ECP_ALLOC_FAILED +#define POLARSSL_ERR_ECP_RANDOM_FAILED MBEDTLS_ERR_ECP_RANDOM_FAILED +#define POLARSSL_ERR_ECP_SIG_LEN_MISMATCH MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH +#define POLARSSL_ERR_ECP_VERIFY_FAILED MBEDTLS_ERR_ECP_VERIFY_FAILED +#define POLARSSL_ERR_ENTROPY_FILE_IO_ERROR MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR +#define POLARSSL_ERR_ENTROPY_MAX_SOURCES MBEDTLS_ERR_ENTROPY_MAX_SOURCES +#define POLARSSL_ERR_ENTROPY_NO_SOURCES_DEFINED MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED +#define POLARSSL_ERR_ENTROPY_SOURCE_FAILED MBEDTLS_ERR_ENTROPY_SOURCE_FAILED +#define POLARSSL_ERR_GCM_AUTH_FAILED MBEDTLS_ERR_GCM_AUTH_FAILED +#define POLARSSL_ERR_GCM_BAD_INPUT MBEDTLS_ERR_GCM_BAD_INPUT +#define POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED +#define POLARSSL_ERR_HMAC_DRBG_FILE_IO_ERROR MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR +#define POLARSSL_ERR_HMAC_DRBG_INPUT_TOO_BIG MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG +#define POLARSSL_ERR_HMAC_DRBG_REQUEST_TOO_BIG MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG +#define POLARSSL_ERR_MD2_FILE_IO_ERROR MBEDTLS_ERR_MD2_FILE_IO_ERROR +#define POLARSSL_ERR_MD4_FILE_IO_ERROR MBEDTLS_ERR_MD4_FILE_IO_ERROR +#define POLARSSL_ERR_MD5_FILE_IO_ERROR MBEDTLS_ERR_MD5_FILE_IO_ERROR +#define POLARSSL_ERR_MD_ALLOC_FAILED MBEDTLS_ERR_MD_ALLOC_FAILED +#define POLARSSL_ERR_MD_BAD_INPUT_DATA MBEDTLS_ERR_MD_BAD_INPUT_DATA +#define POLARSSL_ERR_MD_FEATURE_UNAVAILABLE MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE +#define POLARSSL_ERR_MD_FILE_IO_ERROR MBEDTLS_ERR_MD_FILE_IO_ERROR +#define POLARSSL_ERR_MPI_BAD_INPUT_DATA MBEDTLS_ERR_MPI_BAD_INPUT_DATA +#define POLARSSL_ERR_MPI_BUFFER_TOO_SMALL MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL +#define POLARSSL_ERR_MPI_DIVISION_BY_ZERO MBEDTLS_ERR_MPI_DIVISION_BY_ZERO +#define POLARSSL_ERR_MPI_FILE_IO_ERROR MBEDTLS_ERR_MPI_FILE_IO_ERROR +#define POLARSSL_ERR_MPI_INVALID_CHARACTER MBEDTLS_ERR_MPI_INVALID_CHARACTER +#define POLARSSL_ERR_MPI_MALLOC_FAILED MBEDTLS_ERR_MPI_ALLOC_FAILED +#define POLARSSL_ERR_MPI_NEGATIVE_VALUE MBEDTLS_ERR_MPI_NEGATIVE_VALUE +#define POLARSSL_ERR_MPI_NOT_ACCEPTABLE MBEDTLS_ERR_MPI_NOT_ACCEPTABLE +#define POLARSSL_ERR_NET_ACCEPT_FAILED MBEDTLS_ERR_NET_ACCEPT_FAILED +#define POLARSSL_ERR_NET_BIND_FAILED MBEDTLS_ERR_NET_BIND_FAILED +#define POLARSSL_ERR_NET_CONNECT_FAILED MBEDTLS_ERR_NET_CONNECT_FAILED +#define POLARSSL_ERR_NET_CONN_RESET MBEDTLS_ERR_NET_CONN_RESET +#define POLARSSL_ERR_NET_LISTEN_FAILED MBEDTLS_ERR_NET_LISTEN_FAILED +#define POLARSSL_ERR_NET_RECV_FAILED MBEDTLS_ERR_NET_RECV_FAILED +#define POLARSSL_ERR_NET_SEND_FAILED MBEDTLS_ERR_NET_SEND_FAILED +#define POLARSSL_ERR_NET_SOCKET_FAILED MBEDTLS_ERR_NET_SOCKET_FAILED +#define POLARSSL_ERR_NET_TIMEOUT MBEDTLS_ERR_SSL_TIMEOUT +#define POLARSSL_ERR_NET_UNKNOWN_HOST MBEDTLS_ERR_NET_UNKNOWN_HOST +#define POLARSSL_ERR_NET_WANT_READ MBEDTLS_ERR_SSL_WANT_READ +#define POLARSSL_ERR_NET_WANT_WRITE MBEDTLS_ERR_SSL_WANT_WRITE +#define POLARSSL_ERR_OID_BUF_TOO_SMALL MBEDTLS_ERR_OID_BUF_TOO_SMALL +#define POLARSSL_ERR_OID_NOT_FOUND MBEDTLS_ERR_OID_NOT_FOUND +#define POLARSSL_ERR_PADLOCK_DATA_MISALIGNED MBEDTLS_ERR_PADLOCK_DATA_MISALIGNED +#define POLARSSL_ERR_PBKDF2_BAD_INPUT_DATA MBEDTLS_ERR_PBKDF2_BAD_INPUT_DATA +#define POLARSSL_ERR_PEM_BAD_INPUT_DATA MBEDTLS_ERR_PEM_BAD_INPUT_DATA +#define POLARSSL_ERR_PEM_FEATURE_UNAVAILABLE MBEDTLS_ERR_PEM_FEATURE_UNAVAILABLE +#define POLARSSL_ERR_PEM_INVALID_DATA MBEDTLS_ERR_PEM_INVALID_DATA +#define POLARSSL_ERR_PEM_INVALID_ENC_IV MBEDTLS_ERR_PEM_INVALID_ENC_IV +#define POLARSSL_ERR_PEM_MALLOC_FAILED MBEDTLS_ERR_PEM_ALLOC_FAILED +#define POLARSSL_ERR_PEM_NO_HEADER_FOOTER_PRESENT MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT +#define POLARSSL_ERR_PEM_PASSWORD_MISMATCH MBEDTLS_ERR_PEM_PASSWORD_MISMATCH +#define POLARSSL_ERR_PEM_PASSWORD_REQUIRED MBEDTLS_ERR_PEM_PASSWORD_REQUIRED +#define POLARSSL_ERR_PEM_UNKNOWN_ENC_ALG MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG +#define POLARSSL_ERR_PKCS12_BAD_INPUT_DATA MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA +#define POLARSSL_ERR_PKCS12_FEATURE_UNAVAILABLE MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE +#define POLARSSL_ERR_PKCS12_PASSWORD_MISMATCH MBEDTLS_ERR_PKCS12_PASSWORD_MISMATCH +#define POLARSSL_ERR_PKCS12_PBE_INVALID_FORMAT MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT +#define POLARSSL_ERR_PKCS5_BAD_INPUT_DATA MBEDTLS_ERR_PKCS5_BAD_INPUT_DATA +#define POLARSSL_ERR_PKCS5_FEATURE_UNAVAILABLE MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE +#define POLARSSL_ERR_PKCS5_INVALID_FORMAT MBEDTLS_ERR_PKCS5_INVALID_FORMAT +#define POLARSSL_ERR_PKCS5_PASSWORD_MISMATCH MBEDTLS_ERR_PKCS5_PASSWORD_MISMATCH +#define POLARSSL_ERR_PK_BAD_INPUT_DATA MBEDTLS_ERR_PK_BAD_INPUT_DATA +#define POLARSSL_ERR_PK_FEATURE_UNAVAILABLE MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE +#define POLARSSL_ERR_PK_FILE_IO_ERROR MBEDTLS_ERR_PK_FILE_IO_ERROR +#define POLARSSL_ERR_PK_INVALID_ALG MBEDTLS_ERR_PK_INVALID_ALG +#define POLARSSL_ERR_PK_INVALID_PUBKEY MBEDTLS_ERR_PK_INVALID_PUBKEY +#define POLARSSL_ERR_PK_KEY_INVALID_FORMAT MBEDTLS_ERR_PK_KEY_INVALID_FORMAT +#define POLARSSL_ERR_PK_KEY_INVALID_VERSION MBEDTLS_ERR_PK_KEY_INVALID_VERSION +#define POLARSSL_ERR_PK_MALLOC_FAILED MBEDTLS_ERR_PK_ALLOC_FAILED +#define POLARSSL_ERR_PK_PASSWORD_MISMATCH MBEDTLS_ERR_PK_PASSWORD_MISMATCH +#define POLARSSL_ERR_PK_PASSWORD_REQUIRED MBEDTLS_ERR_PK_PASSWORD_REQUIRED +#define POLARSSL_ERR_PK_SIG_LEN_MISMATCH MBEDTLS_ERR_PK_SIG_LEN_MISMATCH +#define POLARSSL_ERR_PK_TYPE_MISMATCH MBEDTLS_ERR_PK_TYPE_MISMATCH +#define POLARSSL_ERR_PK_UNKNOWN_NAMED_CURVE MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE +#define POLARSSL_ERR_PK_UNKNOWN_PK_ALG MBEDTLS_ERR_PK_UNKNOWN_PK_ALG +#define POLARSSL_ERR_RIPEMD160_FILE_IO_ERROR MBEDTLS_ERR_RIPEMD160_FILE_IO_ERROR +#define POLARSSL_ERR_RSA_BAD_INPUT_DATA MBEDTLS_ERR_RSA_BAD_INPUT_DATA +#define POLARSSL_ERR_RSA_INVALID_PADDING MBEDTLS_ERR_RSA_INVALID_PADDING +#define POLARSSL_ERR_RSA_KEY_CHECK_FAILED MBEDTLS_ERR_RSA_KEY_CHECK_FAILED +#define POLARSSL_ERR_RSA_KEY_GEN_FAILED MBEDTLS_ERR_RSA_KEY_GEN_FAILED +#define POLARSSL_ERR_RSA_OUTPUT_TOO_LARGE MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE +#define POLARSSL_ERR_RSA_PRIVATE_FAILED MBEDTLS_ERR_RSA_PRIVATE_FAILED +#define POLARSSL_ERR_RSA_PUBLIC_FAILED MBEDTLS_ERR_RSA_PUBLIC_FAILED +#define POLARSSL_ERR_RSA_RNG_FAILED MBEDTLS_ERR_RSA_RNG_FAILED +#define POLARSSL_ERR_RSA_VERIFY_FAILED MBEDTLS_ERR_RSA_VERIFY_FAILED +#define POLARSSL_ERR_SHA1_FILE_IO_ERROR MBEDTLS_ERR_SHA1_FILE_IO_ERROR +#define POLARSSL_ERR_SHA256_FILE_IO_ERROR MBEDTLS_ERR_SHA256_FILE_IO_ERROR +#define POLARSSL_ERR_SHA512_FILE_IO_ERROR MBEDTLS_ERR_SHA512_FILE_IO_ERROR +#define POLARSSL_ERR_SSL_BAD_HS_CERTIFICATE MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE +#define POLARSSL_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST +#define POLARSSL_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY +#define POLARSSL_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC MBEDTLS_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC +#define POLARSSL_ERR_SSL_BAD_HS_CLIENT_HELLO MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO +#define POLARSSL_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE +#define POLARSSL_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_CS MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_CS +#define POLARSSL_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_RP MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_RP +#define POLARSSL_ERR_SSL_BAD_HS_FINISHED MBEDTLS_ERR_SSL_BAD_HS_FINISHED +#define POLARSSL_ERR_SSL_BAD_HS_NEW_SESSION_TICKET MBEDTLS_ERR_SSL_BAD_HS_NEW_SESSION_TICKET +#define POLARSSL_ERR_SSL_BAD_HS_PROTOCOL_VERSION MBEDTLS_ERR_SSL_BAD_HS_PROTOCOL_VERSION +#define POLARSSL_ERR_SSL_BAD_HS_SERVER_HELLO MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO +#define POLARSSL_ERR_SSL_BAD_HS_SERVER_HELLO_DONE MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO_DONE +#define POLARSSL_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE +#define POLARSSL_ERR_SSL_BAD_INPUT_DATA MBEDTLS_ERR_SSL_BAD_INPUT_DATA +#define POLARSSL_ERR_SSL_BUFFER_TOO_SMALL MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL +#define POLARSSL_ERR_SSL_CA_CHAIN_REQUIRED MBEDTLS_ERR_SSL_CA_CHAIN_REQUIRED +#define POLARSSL_ERR_SSL_CERTIFICATE_REQUIRED MBEDTLS_ERR_SSL_CERTIFICATE_REQUIRED +#define POLARSSL_ERR_SSL_CERTIFICATE_TOO_LARGE MBEDTLS_ERR_SSL_CERTIFICATE_TOO_LARGE +#define POLARSSL_ERR_SSL_COMPRESSION_FAILED MBEDTLS_ERR_SSL_COMPRESSION_FAILED +#define POLARSSL_ERR_SSL_CONN_EOF MBEDTLS_ERR_SSL_CONN_EOF +#define POLARSSL_ERR_SSL_COUNTER_WRAPPING MBEDTLS_ERR_SSL_COUNTER_WRAPPING +#define POLARSSL_ERR_SSL_FATAL_ALERT_MESSAGE MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE +#define POLARSSL_ERR_SSL_FEATURE_UNAVAILABLE MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE +#define POLARSSL_ERR_SSL_HELLO_VERIFY_REQUIRED MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED +#define POLARSSL_ERR_SSL_HW_ACCEL_FAILED MBEDTLS_ERR_SSL_HW_ACCEL_FAILED +#define POLARSSL_ERR_SSL_HW_ACCEL_FALLTHROUGH MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH +#define POLARSSL_ERR_SSL_INTERNAL_ERROR MBEDTLS_ERR_SSL_INTERNAL_ERROR +#define POLARSSL_ERR_SSL_INVALID_MAC MBEDTLS_ERR_SSL_INVALID_MAC +#define POLARSSL_ERR_SSL_INVALID_RECORD MBEDTLS_ERR_SSL_INVALID_RECORD +#define POLARSSL_ERR_SSL_MALLOC_FAILED MBEDTLS_ERR_SSL_ALLOC_FAILED +#define POLARSSL_ERR_SSL_NO_CIPHER_CHOSEN MBEDTLS_ERR_SSL_NO_CIPHER_CHOSEN +#define POLARSSL_ERR_SSL_NO_CLIENT_CERTIFICATE MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE +#define POLARSSL_ERR_SSL_NO_RNG MBEDTLS_ERR_SSL_NO_RNG +#define POLARSSL_ERR_SSL_NO_USABLE_CIPHERSUITE MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE +#define POLARSSL_ERR_SSL_PEER_CLOSE_NOTIFY MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY +#define POLARSSL_ERR_SSL_PEER_VERIFY_FAILED MBEDTLS_ERR_SSL_PEER_VERIFY_FAILED +#define POLARSSL_ERR_SSL_PK_TYPE_MISMATCH MBEDTLS_ERR_SSL_PK_TYPE_MISMATCH +#define POLARSSL_ERR_SSL_PRIVATE_KEY_REQUIRED MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED +#define POLARSSL_ERR_SSL_SESSION_TICKET_EXPIRED MBEDTLS_ERR_SSL_SESSION_TICKET_EXPIRED +#define POLARSSL_ERR_SSL_UNEXPECTED_MESSAGE MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE +#define POLARSSL_ERR_SSL_UNKNOWN_CIPHER MBEDTLS_ERR_SSL_UNKNOWN_CIPHER +#define POLARSSL_ERR_SSL_UNKNOWN_IDENTITY MBEDTLS_ERR_SSL_UNKNOWN_IDENTITY +#define POLARSSL_ERR_SSL_WAITING_SERVER_HELLO_RENEGO MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO +#define POLARSSL_ERR_THREADING_BAD_INPUT_DATA MBEDTLS_ERR_THREADING_BAD_INPUT_DATA +#define POLARSSL_ERR_THREADING_FEATURE_UNAVAILABLE MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE +#define POLARSSL_ERR_THREADING_MUTEX_ERROR MBEDTLS_ERR_THREADING_MUTEX_ERROR +#define POLARSSL_ERR_X509_BAD_INPUT_DATA MBEDTLS_ERR_X509_BAD_INPUT_DATA +#define POLARSSL_ERR_X509_CERT_UNKNOWN_FORMAT MBEDTLS_ERR_X509_CERT_UNKNOWN_FORMAT +#define POLARSSL_ERR_X509_CERT_VERIFY_FAILED MBEDTLS_ERR_X509_CERT_VERIFY_FAILED +#define POLARSSL_ERR_X509_FEATURE_UNAVAILABLE MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE +#define POLARSSL_ERR_X509_FILE_IO_ERROR MBEDTLS_ERR_X509_FILE_IO_ERROR +#define POLARSSL_ERR_X509_INVALID_ALG MBEDTLS_ERR_X509_INVALID_ALG +#define POLARSSL_ERR_X509_INVALID_DATE MBEDTLS_ERR_X509_INVALID_DATE +#define POLARSSL_ERR_X509_INVALID_EXTENSIONS MBEDTLS_ERR_X509_INVALID_EXTENSIONS +#define POLARSSL_ERR_X509_INVALID_FORMAT MBEDTLS_ERR_X509_INVALID_FORMAT +#define POLARSSL_ERR_X509_INVALID_NAME MBEDTLS_ERR_X509_INVALID_NAME +#define POLARSSL_ERR_X509_INVALID_SERIAL MBEDTLS_ERR_X509_INVALID_SERIAL +#define POLARSSL_ERR_X509_INVALID_SIGNATURE MBEDTLS_ERR_X509_INVALID_SIGNATURE +#define POLARSSL_ERR_X509_INVALID_VERSION MBEDTLS_ERR_X509_INVALID_VERSION +#define POLARSSL_ERR_X509_MALLOC_FAILED MBEDTLS_ERR_X509_ALLOC_FAILED +#define POLARSSL_ERR_X509_SIG_MISMATCH MBEDTLS_ERR_X509_SIG_MISMATCH +#define POLARSSL_ERR_X509_UNKNOWN_OID MBEDTLS_ERR_X509_UNKNOWN_OID +#define POLARSSL_ERR_X509_UNKNOWN_SIG_ALG MBEDTLS_ERR_X509_UNKNOWN_SIG_ALG +#define POLARSSL_ERR_X509_UNKNOWN_VERSION MBEDTLS_ERR_X509_UNKNOWN_VERSION +#define POLARSSL_ERR_XTEA_INVALID_INPUT_LENGTH MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH +#define POLARSSL_GCM_H MBEDTLS_GCM_H +#define POLARSSL_HAVEGE_H MBEDTLS_HAVEGE_H +#define POLARSSL_HAVE_INT32 MBEDTLS_HAVE_INT32 +#define POLARSSL_HAVE_INT64 MBEDTLS_HAVE_INT64 +#define POLARSSL_HAVE_UDBL MBEDTLS_HAVE_UDBL +#define POLARSSL_HAVE_X86 MBEDTLS_HAVE_X86 +#define POLARSSL_HAVE_X86_64 MBEDTLS_HAVE_X86_64 +#define POLARSSL_HMAC_DRBG_H MBEDTLS_HMAC_DRBG_H +#define POLARSSL_HMAC_DRBG_PR_OFF MBEDTLS_HMAC_DRBG_PR_OFF +#define POLARSSL_HMAC_DRBG_PR_ON MBEDTLS_HMAC_DRBG_PR_ON +#define POLARSSL_KEY_EXCHANGE_DHE_PSK MBEDTLS_KEY_EXCHANGE_DHE_PSK +#define POLARSSL_KEY_EXCHANGE_DHE_RSA MBEDTLS_KEY_EXCHANGE_DHE_RSA +#define POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +#define POLARSSL_KEY_EXCHANGE_ECDHE_PSK MBEDTLS_KEY_EXCHANGE_ECDHE_PSK +#define POLARSSL_KEY_EXCHANGE_ECDHE_RSA MBEDTLS_KEY_EXCHANGE_ECDHE_RSA +#define POLARSSL_KEY_EXCHANGE_ECDH_ECDSA MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA +#define POLARSSL_KEY_EXCHANGE_ECDH_RSA MBEDTLS_KEY_EXCHANGE_ECDH_RSA +#define POLARSSL_KEY_EXCHANGE_NONE MBEDTLS_KEY_EXCHANGE_NONE +#define POLARSSL_KEY_EXCHANGE_PSK MBEDTLS_KEY_EXCHANGE_PSK +#define POLARSSL_KEY_EXCHANGE_RSA MBEDTLS_KEY_EXCHANGE_RSA +#define POLARSSL_KEY_EXCHANGE_RSA_PSK MBEDTLS_KEY_EXCHANGE_RSA_PSK +#define POLARSSL_KEY_EXCHANGE__SOME__ECDHE_ENABLED MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED +#define POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED +#define POLARSSL_KEY_EXCHANGE__WITH_CERT__ENABLED MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED +#define POLARSSL_KEY_LENGTH_DES MBEDTLS_KEY_LENGTH_DES +#define POLARSSL_KEY_LENGTH_DES_EDE MBEDTLS_KEY_LENGTH_DES_EDE +#define POLARSSL_KEY_LENGTH_DES_EDE3 MBEDTLS_KEY_LENGTH_DES_EDE3 +#define POLARSSL_KEY_LENGTH_NONE MBEDTLS_KEY_LENGTH_NONE +#define POLARSSL_MAX_BLOCK_LENGTH MBEDTLS_MAX_BLOCK_LENGTH +#define POLARSSL_MAX_IV_LENGTH MBEDTLS_MAX_IV_LENGTH +#define POLARSSL_MD2_H MBEDTLS_MD2_H +#define POLARSSL_MD4_H MBEDTLS_MD4_H +#define POLARSSL_MD5_H MBEDTLS_MD5_H +#define POLARSSL_MD_H MBEDTLS_MD_H +#define POLARSSL_MD_MAX_SIZE MBEDTLS_MD_MAX_SIZE +#define POLARSSL_MD_MD2 MBEDTLS_MD_MD2 +#define POLARSSL_MD_MD4 MBEDTLS_MD_MD4 +#define POLARSSL_MD_MD5 MBEDTLS_MD_MD5 +#define POLARSSL_MD_NONE MBEDTLS_MD_NONE +#define POLARSSL_MD_RIPEMD160 MBEDTLS_MD_RIPEMD160 +#define POLARSSL_MD_SHA1 MBEDTLS_MD_SHA1 +#define POLARSSL_MD_SHA224 MBEDTLS_MD_SHA224 +#define POLARSSL_MD_SHA256 MBEDTLS_MD_SHA256 +#define POLARSSL_MD_SHA384 MBEDTLS_MD_SHA384 +#define POLARSSL_MD_SHA512 MBEDTLS_MD_SHA512 +#define POLARSSL_MD_WRAP_H MBEDTLS_MD_WRAP_H +#define POLARSSL_MEMORY_BUFFER_ALLOC_H MBEDTLS_MEMORY_BUFFER_ALLOC_H +#define POLARSSL_MEMORY_H MBEDTLS_MEMORY_H +#define POLARSSL_MODE_CBC MBEDTLS_MODE_CBC +#define POLARSSL_MODE_CCM MBEDTLS_MODE_CCM +#define POLARSSL_MODE_CFB MBEDTLS_MODE_CFB +#define POLARSSL_MODE_CTR MBEDTLS_MODE_CTR +#define POLARSSL_MODE_ECB MBEDTLS_MODE_ECB +#define POLARSSL_MODE_GCM MBEDTLS_MODE_GCM +#define POLARSSL_MODE_NONE MBEDTLS_MODE_NONE +#define POLARSSL_MODE_OFB MBEDTLS_MODE_OFB +#define POLARSSL_MODE_STREAM MBEDTLS_MODE_STREAM +#define POLARSSL_MPI_MAX_BITS MBEDTLS_MPI_MAX_BITS +#define POLARSSL_MPI_MAX_BITS_SCALE100 MBEDTLS_MPI_MAX_BITS_SCALE100 +#define POLARSSL_MPI_MAX_LIMBS MBEDTLS_MPI_MAX_LIMBS +#define POLARSSL_MPI_RW_BUFFER_SIZE MBEDTLS_MPI_RW_BUFFER_SIZE +#define POLARSSL_NET_H MBEDTLS_NET_H +#define POLARSSL_NET_LISTEN_BACKLOG MBEDTLS_NET_LISTEN_BACKLOG +#define POLARSSL_OID_H MBEDTLS_OID_H +#define POLARSSL_OPERATION_NONE MBEDTLS_OPERATION_NONE +#define POLARSSL_PADDING_NONE MBEDTLS_PADDING_NONE +#define POLARSSL_PADDING_ONE_AND_ZEROS MBEDTLS_PADDING_ONE_AND_ZEROS +#define POLARSSL_PADDING_PKCS7 MBEDTLS_PADDING_PKCS7 +#define POLARSSL_PADDING_ZEROS MBEDTLS_PADDING_ZEROS +#define POLARSSL_PADDING_ZEROS_AND_LEN MBEDTLS_PADDING_ZEROS_AND_LEN +#define POLARSSL_PADLOCK_H MBEDTLS_PADLOCK_H +#define POLARSSL_PBKDF2_H MBEDTLS_PBKDF2_H +#define POLARSSL_PEM_H MBEDTLS_PEM_H +#define POLARSSL_PKCS11_H MBEDTLS_PKCS11_H +#define POLARSSL_PKCS12_H MBEDTLS_PKCS12_H +#define POLARSSL_PKCS5_H MBEDTLS_PKCS5_H +#define POLARSSL_PK_DEBUG_ECP MBEDTLS_PK_DEBUG_ECP +#define POLARSSL_PK_DEBUG_MAX_ITEMS MBEDTLS_PK_DEBUG_MAX_ITEMS +#define POLARSSL_PK_DEBUG_MPI MBEDTLS_PK_DEBUG_MPI +#define POLARSSL_PK_DEBUG_NONE MBEDTLS_PK_DEBUG_NONE +#define POLARSSL_PK_ECDSA MBEDTLS_PK_ECDSA +#define POLARSSL_PK_ECKEY MBEDTLS_PK_ECKEY +#define POLARSSL_PK_ECKEY_DH MBEDTLS_PK_ECKEY_DH +#define POLARSSL_PK_H MBEDTLS_PK_H +#define POLARSSL_PK_NONE MBEDTLS_PK_NONE +#define POLARSSL_PK_RSA MBEDTLS_PK_RSA +#define POLARSSL_PK_RSASSA_PSS MBEDTLS_PK_RSASSA_PSS +#define POLARSSL_PK_RSA_ALT MBEDTLS_PK_RSA_ALT +#define POLARSSL_PK_WRAP_H MBEDTLS_PK_WRAP_H +#define POLARSSL_PLATFORM_H MBEDTLS_PLATFORM_H +#define POLARSSL_PREMASTER_SIZE MBEDTLS_PREMASTER_SIZE +#define POLARSSL_RIPEMD160_H MBEDTLS_RIPEMD160_H +#define POLARSSL_RSA_H MBEDTLS_RSA_H +#define POLARSSL_SHA1_H MBEDTLS_SHA1_H +#define POLARSSL_SHA256_H MBEDTLS_SHA256_H +#define POLARSSL_SHA512_H MBEDTLS_SHA512_H +#define POLARSSL_SSL_CACHE_H MBEDTLS_SSL_CACHE_H +#define POLARSSL_SSL_CIPHERSUITES_H MBEDTLS_SSL_CIPHERSUITES_H +#define POLARSSL_SSL_COOKIE_H MBEDTLS_SSL_COOKIE_H +#define POLARSSL_SSL_H MBEDTLS_SSL_H +#define POLARSSL_THREADING_H MBEDTLS_THREADING_H +#define POLARSSL_THREADING_IMPL MBEDTLS_THREADING_IMPL +#define POLARSSL_TIMING_H MBEDTLS_TIMING_H +#define POLARSSL_VERSION_H MBEDTLS_VERSION_H +#define POLARSSL_VERSION_MAJOR MBEDTLS_VERSION_MAJOR +#define POLARSSL_VERSION_MINOR MBEDTLS_VERSION_MINOR +#define POLARSSL_VERSION_NUMBER MBEDTLS_VERSION_NUMBER +#define POLARSSL_VERSION_PATCH MBEDTLS_VERSION_PATCH +#define POLARSSL_VERSION_STRING MBEDTLS_VERSION_STRING +#define POLARSSL_VERSION_STRING_FULL MBEDTLS_VERSION_STRING_FULL +#define POLARSSL_X509_CRL_H MBEDTLS_X509_CRL_H +#define POLARSSL_X509_CRT_H MBEDTLS_X509_CRT_H +#define POLARSSL_X509_CSR_H MBEDTLS_X509_CSR_H +#define POLARSSL_X509_H MBEDTLS_X509_H +#define POLARSSL_XTEA_H MBEDTLS_XTEA_H +#define RSA_CRYPT MBEDTLS_RSA_CRYPT +#define RSA_PKCS_V15 MBEDTLS_RSA_PKCS_V15 +#define RSA_PKCS_V21 MBEDTLS_RSA_PKCS_V21 +#define RSA_PRIVATE MBEDTLS_RSA_PRIVATE +#define RSA_PUBLIC MBEDTLS_RSA_PUBLIC +#define RSA_SALT_LEN_ANY MBEDTLS_RSA_SALT_LEN_ANY +#define RSA_SIGN MBEDTLS_RSA_SIGN +#define SSL_ALERT_LEVEL_FATAL MBEDTLS_SSL_ALERT_LEVEL_FATAL +#define SSL_ALERT_LEVEL_WARNING MBEDTLS_SSL_ALERT_LEVEL_WARNING +#define SSL_ALERT_MSG_ACCESS_DENIED MBEDTLS_SSL_ALERT_MSG_ACCESS_DENIED +#define SSL_ALERT_MSG_BAD_CERT MBEDTLS_SSL_ALERT_MSG_BAD_CERT +#define SSL_ALERT_MSG_BAD_RECORD_MAC MBEDTLS_SSL_ALERT_MSG_BAD_RECORD_MAC +#define SSL_ALERT_MSG_CERT_EXPIRED MBEDTLS_SSL_ALERT_MSG_CERT_EXPIRED +#define SSL_ALERT_MSG_CERT_REVOKED MBEDTLS_SSL_ALERT_MSG_CERT_REVOKED +#define SSL_ALERT_MSG_CERT_UNKNOWN MBEDTLS_SSL_ALERT_MSG_CERT_UNKNOWN +#define SSL_ALERT_MSG_CLOSE_NOTIFY MBEDTLS_SSL_ALERT_MSG_CLOSE_NOTIFY +#define SSL_ALERT_MSG_DECODE_ERROR MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR +#define SSL_ALERT_MSG_DECOMPRESSION_FAILURE MBEDTLS_SSL_ALERT_MSG_DECOMPRESSION_FAILURE +#define SSL_ALERT_MSG_DECRYPTION_FAILED MBEDTLS_SSL_ALERT_MSG_DECRYPTION_FAILED +#define SSL_ALERT_MSG_DECRYPT_ERROR MBEDTLS_SSL_ALERT_MSG_DECRYPT_ERROR +#define SSL_ALERT_MSG_EXPORT_RESTRICTION MBEDTLS_SSL_ALERT_MSG_EXPORT_RESTRICTION +#define SSL_ALERT_MSG_HANDSHAKE_FAILURE MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE +#define SSL_ALERT_MSG_ILLEGAL_PARAMETER MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER +#define SSL_ALERT_MSG_INAPROPRIATE_FALLBACK MBEDTLS_SSL_ALERT_MSG_INAPROPRIATE_FALLBACK +#define SSL_ALERT_MSG_INSUFFICIENT_SECURITY MBEDTLS_SSL_ALERT_MSG_INSUFFICIENT_SECURITY +#define SSL_ALERT_MSG_INTERNAL_ERROR MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR +#define SSL_ALERT_MSG_NO_APPLICATION_PROTOCOL MBEDTLS_SSL_ALERT_MSG_NO_APPLICATION_PROTOCOL +#define SSL_ALERT_MSG_NO_CERT MBEDTLS_SSL_ALERT_MSG_NO_CERT +#define SSL_ALERT_MSG_NO_RENEGOTIATION MBEDTLS_SSL_ALERT_MSG_NO_RENEGOTIATION +#define SSL_ALERT_MSG_PROTOCOL_VERSION MBEDTLS_SSL_ALERT_MSG_PROTOCOL_VERSION +#define SSL_ALERT_MSG_RECORD_OVERFLOW MBEDTLS_SSL_ALERT_MSG_RECORD_OVERFLOW +#define SSL_ALERT_MSG_UNEXPECTED_MESSAGE MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE +#define SSL_ALERT_MSG_UNKNOWN_CA MBEDTLS_SSL_ALERT_MSG_UNKNOWN_CA +#define SSL_ALERT_MSG_UNKNOWN_PSK_IDENTITY MBEDTLS_SSL_ALERT_MSG_UNKNOWN_PSK_IDENTITY +#define SSL_ALERT_MSG_UNRECOGNIZED_NAME MBEDTLS_SSL_ALERT_MSG_UNRECOGNIZED_NAME +#define SSL_ALERT_MSG_UNSUPPORTED_CERT MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT +#define SSL_ALERT_MSG_UNSUPPORTED_EXT MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_EXT +#define SSL_ALERT_MSG_USER_CANCELED MBEDTLS_SSL_ALERT_MSG_USER_CANCELED +#define SSL_ANTI_REPLAY_DISABLED MBEDTLS_SSL_ANTI_REPLAY_DISABLED +#define SSL_ANTI_REPLAY_ENABLED MBEDTLS_SSL_ANTI_REPLAY_ENABLED +#define SSL_ARC4_DISABLED MBEDTLS_SSL_ARC4_DISABLED +#define SSL_ARC4_ENABLED MBEDTLS_SSL_ARC4_ENABLED +#define SSL_BUFFER_LEN MBEDTLS_SSL_BUFFER_LEN +#define SSL_CACHE_DEFAULT_MAX_ENTRIES MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES +#define SSL_CACHE_DEFAULT_TIMEOUT MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT +#define SSL_CBC_RECORD_SPLITTING_DISABLED MBEDTLS_SSL_CBC_RECORD_SPLITTING_DISABLED +#define SSL_CBC_RECORD_SPLITTING_ENABLED MBEDTLS_SSL_CBC_RECORD_SPLITTING_ENABLED +#define SSL_CERTIFICATE_REQUEST MBEDTLS_SSL_CERTIFICATE_REQUEST +#define SSL_CERTIFICATE_VERIFY MBEDTLS_SSL_CERTIFICATE_VERIFY +#define SSL_CERT_TYPE_ECDSA_SIGN MBEDTLS_SSL_CERT_TYPE_ECDSA_SIGN +#define SSL_CERT_TYPE_RSA_SIGN MBEDTLS_SSL_CERT_TYPE_RSA_SIGN +#define SSL_CHANNEL_INBOUND MBEDTLS_SSL_CHANNEL_INBOUND +#define SSL_CHANNEL_OUTBOUND MBEDTLS_SSL_CHANNEL_OUTBOUND +#define SSL_CIPHERSUITES MBEDTLS_SSL_CIPHERSUITES +#define SSL_CLIENT_CERTIFICATE MBEDTLS_SSL_CLIENT_CERTIFICATE +#define SSL_CLIENT_CHANGE_CIPHER_SPEC MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC +#define SSL_CLIENT_FINISHED MBEDTLS_SSL_CLIENT_FINISHED +#define SSL_CLIENT_HELLO MBEDTLS_SSL_CLIENT_HELLO +#define SSL_CLIENT_KEY_EXCHANGE MBEDTLS_SSL_CLIENT_KEY_EXCHANGE +#define SSL_COMPRESSION_ADD MBEDTLS_SSL_COMPRESSION_ADD +#define SSL_COMPRESS_DEFLATE MBEDTLS_SSL_COMPRESS_DEFLATE +#define SSL_COMPRESS_NULL MBEDTLS_SSL_COMPRESS_NULL +#define SSL_DEBUG_BUF MBEDTLS_SSL_DEBUG_BUF +#define SSL_DEBUG_CRT MBEDTLS_SSL_DEBUG_CRT +#define SSL_DEBUG_ECP MBEDTLS_SSL_DEBUG_ECP +#define SSL_DEBUG_MPI MBEDTLS_SSL_DEBUG_MPI +#define SSL_DEBUG_MSG MBEDTLS_SSL_DEBUG_MSG +#define SSL_DEBUG_RET MBEDTLS_SSL_DEBUG_RET +#define SSL_DEFAULT_TICKET_LIFETIME MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME +#define SSL_DTLS_TIMEOUT_DFL_MAX MBEDTLS_SSL_DTLS_TIMEOUT_DFL_MAX +#define SSL_DTLS_TIMEOUT_DFL_MIN MBEDTLS_SSL_DTLS_TIMEOUT_DFL_MIN +#define SSL_EMPTY_RENEGOTIATION_INFO MBEDTLS_SSL_EMPTY_RENEGOTIATION_INFO +#define SSL_ETM_DISABLED MBEDTLS_SSL_ETM_DISABLED +#define SSL_ETM_ENABLED MBEDTLS_SSL_ETM_ENABLED +#define SSL_EXTENDED_MS_DISABLED MBEDTLS_SSL_EXTENDED_MS_DISABLED +#define SSL_EXTENDED_MS_ENABLED MBEDTLS_SSL_EXTENDED_MS_ENABLED +#define SSL_FALLBACK_SCSV MBEDTLS_SSL_FALLBACK_SCSV +#define SSL_FLUSH_BUFFERS MBEDTLS_SSL_FLUSH_BUFFERS +#define SSL_HANDSHAKE_OVER MBEDTLS_SSL_HANDSHAKE_OVER +#define SSL_HANDSHAKE_WRAPUP MBEDTLS_SSL_HANDSHAKE_WRAPUP +#define SSL_HASH_MD5 MBEDTLS_SSL_HASH_MD5 +#define SSL_HASH_NONE MBEDTLS_SSL_HASH_NONE +#define SSL_HASH_SHA1 MBEDTLS_SSL_HASH_SHA1 +#define SSL_HASH_SHA224 MBEDTLS_SSL_HASH_SHA224 +#define SSL_HASH_SHA256 MBEDTLS_SSL_HASH_SHA256 +#define SSL_HASH_SHA384 MBEDTLS_SSL_HASH_SHA384 +#define SSL_HASH_SHA512 MBEDTLS_SSL_HASH_SHA512 +#define SSL_HELLO_REQUEST MBEDTLS_SSL_HELLO_REQUEST +#define SSL_HS_CERTIFICATE MBEDTLS_SSL_HS_CERTIFICATE +#define SSL_HS_CERTIFICATE_REQUEST MBEDTLS_SSL_HS_CERTIFICATE_REQUEST +#define SSL_HS_CERTIFICATE_VERIFY MBEDTLS_SSL_HS_CERTIFICATE_VERIFY +#define SSL_HS_CLIENT_HELLO MBEDTLS_SSL_HS_CLIENT_HELLO +#define SSL_HS_CLIENT_KEY_EXCHANGE MBEDTLS_SSL_HS_CLIENT_KEY_EXCHANGE +#define SSL_HS_FINISHED MBEDTLS_SSL_HS_FINISHED +#define SSL_HS_HELLO_REQUEST MBEDTLS_SSL_HS_HELLO_REQUEST +#define SSL_HS_HELLO_VERIFY_REQUEST MBEDTLS_SSL_HS_HELLO_VERIFY_REQUEST +#define SSL_HS_NEW_SESSION_TICKET MBEDTLS_SSL_HS_NEW_SESSION_TICKET +#define SSL_HS_SERVER_HELLO MBEDTLS_SSL_HS_SERVER_HELLO +#define SSL_HS_SERVER_HELLO_DONE MBEDTLS_SSL_HS_SERVER_HELLO_DONE +#define SSL_HS_SERVER_KEY_EXCHANGE MBEDTLS_SSL_HS_SERVER_KEY_EXCHANGE +#define SSL_INITIAL_HANDSHAKE MBEDTLS_SSL_INITIAL_HANDSHAKE +#define SSL_IS_CLIENT MBEDTLS_SSL_IS_CLIENT +#define SSL_IS_FALLBACK MBEDTLS_SSL_IS_FALLBACK +#define SSL_IS_NOT_FALLBACK MBEDTLS_SSL_IS_NOT_FALLBACK +#define SSL_IS_SERVER MBEDTLS_SSL_IS_SERVER +#define SSL_LEGACY_ALLOW_RENEGOTIATION MBEDTLS_SSL_LEGACY_ALLOW_RENEGOTIATION +#define SSL_LEGACY_BREAK_HANDSHAKE MBEDTLS_SSL_LEGACY_BREAK_HANDSHAKE +#define SSL_LEGACY_NO_RENEGOTIATION MBEDTLS_SSL_LEGACY_NO_RENEGOTIATION +#define SSL_LEGACY_RENEGOTIATION MBEDTLS_SSL_LEGACY_RENEGOTIATION +#define SSL_MAC_ADD MBEDTLS_SSL_MAC_ADD +#define SSL_MAJOR_VERSION_3 MBEDTLS_SSL_MAJOR_VERSION_3 +#define SSL_MAX_CONTENT_LEN MBEDTLS_SSL_MAX_CONTENT_LEN +#define SSL_MAX_FRAG_LEN_1024 MBEDTLS_SSL_MAX_FRAG_LEN_1024 +#define SSL_MAX_FRAG_LEN_2048 MBEDTLS_SSL_MAX_FRAG_LEN_2048 +#define SSL_MAX_FRAG_LEN_4096 MBEDTLS_SSL_MAX_FRAG_LEN_4096 +#define SSL_MAX_FRAG_LEN_512 MBEDTLS_SSL_MAX_FRAG_LEN_512 +#define SSL_MAX_FRAG_LEN_INVALID MBEDTLS_SSL_MAX_FRAG_LEN_INVALID +#define SSL_MAX_FRAG_LEN_NONE MBEDTLS_SSL_MAX_FRAG_LEN_NONE +#define SSL_MAX_MAJOR_VERSION MBEDTLS_SSL_MAX_MAJOR_VERSION +#define SSL_MAX_MINOR_VERSION MBEDTLS_SSL_MAX_MINOR_VERSION +#define SSL_MINOR_VERSION_0 MBEDTLS_SSL_MINOR_VERSION_0 +#define SSL_MINOR_VERSION_1 MBEDTLS_SSL_MINOR_VERSION_1 +#define SSL_MINOR_VERSION_2 MBEDTLS_SSL_MINOR_VERSION_2 +#define SSL_MINOR_VERSION_3 MBEDTLS_SSL_MINOR_VERSION_3 +#define SSL_MIN_MAJOR_VERSION MBEDTLS_SSL_MIN_MAJOR_VERSION +#define SSL_MIN_MINOR_VERSION MBEDTLS_SSL_MIN_MINOR_VERSION +#define SSL_MSG_ALERT MBEDTLS_SSL_MSG_ALERT +#define SSL_MSG_APPLICATION_DATA MBEDTLS_SSL_MSG_APPLICATION_DATA +#define SSL_MSG_CHANGE_CIPHER_SPEC MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC +#define SSL_MSG_HANDSHAKE MBEDTLS_SSL_MSG_HANDSHAKE +#define SSL_PADDING_ADD MBEDTLS_SSL_PADDING_ADD +#define SSL_RENEGOTIATION MBEDTLS_SSL_RENEGOTIATION +#define SSL_RENEGOTIATION_DISABLED MBEDTLS_SSL_RENEGOTIATION_DISABLED +#define SSL_RENEGOTIATION_DONE MBEDTLS_SSL_RENEGOTIATION_DONE +#define SSL_RENEGOTIATION_ENABLED MBEDTLS_SSL_RENEGOTIATION_ENABLED +#define SSL_RENEGOTIATION_NOT_ENFORCED MBEDTLS_SSL_RENEGOTIATION_NOT_ENFORCED +#define SSL_RENEGOTIATION_PENDING MBEDTLS_SSL_RENEGOTIATION_PENDING +#define SSL_RENEGO_MAX_RECORDS_DEFAULT MBEDTLS_SSL_RENEGO_MAX_RECORDS_DEFAULT +#define SSL_RETRANS_FINISHED MBEDTLS_SSL_RETRANS_FINISHED +#define SSL_RETRANS_PREPARING MBEDTLS_SSL_RETRANS_PREPARING +#define SSL_RETRANS_SENDING MBEDTLS_SSL_RETRANS_SENDING +#define SSL_RETRANS_WAITING MBEDTLS_SSL_RETRANS_WAITING +#define SSL_SECURE_RENEGOTIATION MBEDTLS_SSL_SECURE_RENEGOTIATION +#define SSL_SERVER_CERTIFICATE MBEDTLS_SSL_SERVER_CERTIFICATE +#define SSL_SERVER_CHANGE_CIPHER_SPEC MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC +#define SSL_SERVER_FINISHED MBEDTLS_SSL_SERVER_FINISHED +#define SSL_SERVER_HELLO MBEDTLS_SSL_SERVER_HELLO +#define SSL_SERVER_HELLO_DONE MBEDTLS_SSL_SERVER_HELLO_DONE +#define SSL_SERVER_HELLO_VERIFY_REQUEST_SENT MBEDTLS_SSL_SERVER_HELLO_VERIFY_REQUEST_SENT +#define SSL_SERVER_KEY_EXCHANGE MBEDTLS_SSL_SERVER_KEY_EXCHANGE +#define SSL_SERVER_NEW_SESSION_TICKET MBEDTLS_SSL_SERVER_NEW_SESSION_TICKET +#define SSL_SESSION_TICKETS_DISABLED MBEDTLS_SSL_SESSION_TICKETS_DISABLED +#define SSL_SESSION_TICKETS_ENABLED MBEDTLS_SSL_SESSION_TICKETS_ENABLED +#define SSL_SIG_ANON MBEDTLS_SSL_SIG_ANON +#define SSL_SIG_ECDSA MBEDTLS_SSL_SIG_ECDSA +#define SSL_SIG_RSA MBEDTLS_SSL_SIG_RSA +#define SSL_TRANSPORT_DATAGRAM MBEDTLS_SSL_TRANSPORT_DATAGRAM +#define SSL_TRANSPORT_STREAM MBEDTLS_SSL_TRANSPORT_STREAM +#define SSL_TRUNCATED_HMAC_LEN MBEDTLS_SSL_TRUNCATED_HMAC_LEN +#define SSL_TRUNC_HMAC_DISABLED MBEDTLS_SSL_TRUNC_HMAC_DISABLED +#define SSL_TRUNC_HMAC_ENABLED MBEDTLS_SSL_TRUNC_HMAC_ENABLED +#define SSL_VERIFY_DATA_MAX_LEN MBEDTLS_SSL_VERIFY_DATA_MAX_LEN +#define SSL_VERIFY_NONE MBEDTLS_SSL_VERIFY_NONE +#define SSL_VERIFY_OPTIONAL MBEDTLS_SSL_VERIFY_OPTIONAL +#define SSL_VERIFY_REQUIRED MBEDTLS_SSL_VERIFY_REQUIRED +#define TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA +#define TLS_DHE_PSK_WITH_AES_128_CBC_SHA MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA +#define TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 +#define TLS_DHE_PSK_WITH_AES_128_CCM MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM +#define TLS_DHE_PSK_WITH_AES_128_CCM_8 MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM_8 +#define TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 +#define TLS_DHE_PSK_WITH_AES_256_CBC_SHA MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA +#define TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 +#define TLS_DHE_PSK_WITH_AES_256_CCM MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM +#define TLS_DHE_PSK_WITH_AES_256_CCM_8 MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM_8 +#define TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 +#define TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 +#define TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 +#define TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 +#define TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 +#define TLS_DHE_PSK_WITH_NULL_SHA MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA +#define TLS_DHE_PSK_WITH_NULL_SHA256 MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256 +#define TLS_DHE_PSK_WITH_NULL_SHA384 MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384 +#define TLS_DHE_PSK_WITH_RC4_128_SHA MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA +#define TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA +#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA +#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 +#define TLS_DHE_RSA_WITH_AES_128_CCM MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM +#define TLS_DHE_RSA_WITH_AES_128_CCM_8 MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM_8 +#define TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 +#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA +#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 +#define TLS_DHE_RSA_WITH_AES_256_CCM MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM +#define TLS_DHE_RSA_WITH_AES_256_CCM_8 MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM_8 +#define TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 +#define TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA +#define TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 +#define TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 +#define TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA +#define TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 +#define TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 +#define TLS_DHE_RSA_WITH_DES_CBC_SHA MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA +#define TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA +#define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA +#define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 +#define TLS_ECDHE_ECDSA_WITH_AES_128_CCM MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM +#define TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 +#define TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 +#define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA +#define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 +#define TLS_ECDHE_ECDSA_WITH_AES_256_CCM MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM +#define TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 +#define TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 +#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 +#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 +#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 +#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 +#define TLS_ECDHE_ECDSA_WITH_NULL_SHA MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA +#define TLS_ECDHE_ECDSA_WITH_RC4_128_SHA MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA +#define TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA +#define TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA +#define TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 +#define TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA +#define TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 +#define TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 +#define TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 +#define TLS_ECDHE_PSK_WITH_NULL_SHA MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA +#define TLS_ECDHE_PSK_WITH_NULL_SHA256 MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256 +#define TLS_ECDHE_PSK_WITH_NULL_SHA384 MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384 +#define TLS_ECDHE_PSK_WITH_RC4_128_SHA MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA +#define TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA +#define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA +#define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 +#define TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 +#define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA +#define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 +#define TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 +#define TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 +#define TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 +#define TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 +#define TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 +#define TLS_ECDHE_RSA_WITH_NULL_SHA MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA +#define TLS_ECDHE_RSA_WITH_RC4_128_SHA MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA +#define TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA +#define TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA +#define TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 +#define TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 +#define TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA +#define TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 +#define TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 +#define TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 +#define TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 +#define TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 +#define TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 +#define TLS_ECDH_ECDSA_WITH_NULL_SHA MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA +#define TLS_ECDH_ECDSA_WITH_RC4_128_SHA MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA +#define TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA +#define TLS_ECDH_RSA_WITH_AES_128_CBC_SHA MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA +#define TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 +#define TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 +#define TLS_ECDH_RSA_WITH_AES_256_CBC_SHA MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA +#define TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 +#define TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 +#define TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 +#define TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 +#define TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 +#define TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 +#define TLS_ECDH_RSA_WITH_NULL_SHA MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA +#define TLS_ECDH_RSA_WITH_RC4_128_SHA MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA +#define TLS_EXT_ALPN MBEDTLS_TLS_EXT_ALPN +#define TLS_EXT_ENCRYPT_THEN_MAC MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC +#define TLS_EXT_EXTENDED_MASTER_SECRET MBEDTLS_TLS_EXT_EXTENDED_MASTER_SECRET +#define TLS_EXT_MAX_FRAGMENT_LENGTH MBEDTLS_TLS_EXT_MAX_FRAGMENT_LENGTH +#define TLS_EXT_RENEGOTIATION_INFO MBEDTLS_TLS_EXT_RENEGOTIATION_INFO +#define TLS_EXT_SERVERNAME MBEDTLS_TLS_EXT_SERVERNAME +#define TLS_EXT_SERVERNAME_HOSTNAME MBEDTLS_TLS_EXT_SERVERNAME_HOSTNAME +#define TLS_EXT_SESSION_TICKET MBEDTLS_TLS_EXT_SESSION_TICKET +#define TLS_EXT_SIG_ALG MBEDTLS_TLS_EXT_SIG_ALG +#define TLS_EXT_SUPPORTED_ELLIPTIC_CURVES MBEDTLS_TLS_EXT_SUPPORTED_ELLIPTIC_CURVES +#define TLS_EXT_SUPPORTED_POINT_FORMATS MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS +#define TLS_EXT_SUPPORTED_POINT_FORMATS_PRESENT MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS_PRESENT +#define TLS_EXT_TRUNCATED_HMAC MBEDTLS_TLS_EXT_TRUNCATED_HMAC +#define TLS_PSK_WITH_3DES_EDE_CBC_SHA MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA +#define TLS_PSK_WITH_AES_128_CBC_SHA MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA +#define TLS_PSK_WITH_AES_128_CBC_SHA256 MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256 +#define TLS_PSK_WITH_AES_128_CCM MBEDTLS_TLS_PSK_WITH_AES_128_CCM +#define TLS_PSK_WITH_AES_128_CCM_8 MBEDTLS_TLS_PSK_WITH_AES_128_CCM_8 +#define TLS_PSK_WITH_AES_128_GCM_SHA256 MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256 +#define TLS_PSK_WITH_AES_256_CBC_SHA MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA +#define TLS_PSK_WITH_AES_256_CBC_SHA384 MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384 +#define TLS_PSK_WITH_AES_256_CCM MBEDTLS_TLS_PSK_WITH_AES_256_CCM +#define TLS_PSK_WITH_AES_256_CCM_8 MBEDTLS_TLS_PSK_WITH_AES_256_CCM_8 +#define TLS_PSK_WITH_AES_256_GCM_SHA384 MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384 +#define TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 +#define TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 +#define TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 +#define TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 +#define TLS_PSK_WITH_NULL_SHA MBEDTLS_TLS_PSK_WITH_NULL_SHA +#define TLS_PSK_WITH_NULL_SHA256 MBEDTLS_TLS_PSK_WITH_NULL_SHA256 +#define TLS_PSK_WITH_NULL_SHA384 MBEDTLS_TLS_PSK_WITH_NULL_SHA384 +#define TLS_PSK_WITH_RC4_128_SHA MBEDTLS_TLS_PSK_WITH_RC4_128_SHA +#define TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA +#define TLS_RSA_PSK_WITH_AES_128_CBC_SHA MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA +#define TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 +#define TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 +#define TLS_RSA_PSK_WITH_AES_256_CBC_SHA MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA +#define TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 +#define TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 +#define TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 +#define TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 +#define TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 +#define TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 +#define TLS_RSA_PSK_WITH_NULL_SHA MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA +#define TLS_RSA_PSK_WITH_NULL_SHA256 MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256 +#define TLS_RSA_PSK_WITH_NULL_SHA384 MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384 +#define TLS_RSA_PSK_WITH_RC4_128_SHA MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA +#define TLS_RSA_WITH_3DES_EDE_CBC_SHA MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA +#define TLS_RSA_WITH_AES_128_CBC_SHA MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA +#define TLS_RSA_WITH_AES_128_CBC_SHA256 MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256 +#define TLS_RSA_WITH_AES_128_CCM MBEDTLS_TLS_RSA_WITH_AES_128_CCM +#define TLS_RSA_WITH_AES_128_CCM_8 MBEDTLS_TLS_RSA_WITH_AES_128_CCM_8 +#define TLS_RSA_WITH_AES_128_GCM_SHA256 MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256 +#define TLS_RSA_WITH_AES_256_CBC_SHA MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA +#define TLS_RSA_WITH_AES_256_CBC_SHA256 MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256 +#define TLS_RSA_WITH_AES_256_CCM MBEDTLS_TLS_RSA_WITH_AES_256_CCM +#define TLS_RSA_WITH_AES_256_CCM_8 MBEDTLS_TLS_RSA_WITH_AES_256_CCM_8 +#define TLS_RSA_WITH_AES_256_GCM_SHA384 MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 +#define TLS_RSA_WITH_CAMELLIA_128_CBC_SHA MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA +#define TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 +#define TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 +#define TLS_RSA_WITH_CAMELLIA_256_CBC_SHA MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA +#define TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 +#define TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 +#define TLS_RSA_WITH_DES_CBC_SHA MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA +#define TLS_RSA_WITH_NULL_MD5 MBEDTLS_TLS_RSA_WITH_NULL_MD5 +#define TLS_RSA_WITH_NULL_SHA MBEDTLS_TLS_RSA_WITH_NULL_SHA +#define TLS_RSA_WITH_NULL_SHA256 MBEDTLS_TLS_RSA_WITH_NULL_SHA256 +#define TLS_RSA_WITH_RC4_128_MD5 MBEDTLS_TLS_RSA_WITH_RC4_128_MD5 +#define TLS_RSA_WITH_RC4_128_SHA MBEDTLS_TLS_RSA_WITH_RC4_128_SHA +#define UL64 MBEDTLS_UL64 +#define X509_CRT_VERSION_1 MBEDTLS_X509_CRT_VERSION_1 +#define X509_CRT_VERSION_2 MBEDTLS_X509_CRT_VERSION_2 +#define X509_CRT_VERSION_3 MBEDTLS_X509_CRT_VERSION_3 +#define X509_FORMAT_DER MBEDTLS_X509_FORMAT_DER +#define X509_FORMAT_PEM MBEDTLS_X509_FORMAT_PEM +#define X509_MAX_DN_NAME_SIZE MBEDTLS_X509_MAX_DN_NAME_SIZE +#define X509_RFC5280_MAX_SERIAL_LEN MBEDTLS_X509_RFC5280_MAX_SERIAL_LEN +#define X509_RFC5280_UTC_TIME_LEN MBEDTLS_X509_RFC5280_UTC_TIME_LEN +#define XTEA_DECRYPT MBEDTLS_XTEA_DECRYPT +#define XTEA_ENCRYPT MBEDTLS_XTEA_ENCRYPT +#define _asn1_bitstring mbedtls_asn1_bitstring +#define _asn1_buf mbedtls_asn1_buf +#define _asn1_named_data mbedtls_asn1_named_data +#define _asn1_sequence mbedtls_asn1_sequence +#define _ssl_cache_context mbedtls_ssl_cache_context +#define _ssl_cache_entry mbedtls_ssl_cache_entry +#define _ssl_ciphersuite_t mbedtls_ssl_ciphersuite_t +#define _ssl_context mbedtls_ssl_context +#define _ssl_flight_item mbedtls_ssl_flight_item +#define _ssl_handshake_params mbedtls_ssl_handshake_params +#define _ssl_key_cert mbedtls_ssl_key_cert +#define _ssl_premaster_secret mbedtls_ssl_premaster_secret +#define _ssl_session mbedtls_ssl_session +#define _ssl_ticket_keys mbedtls_ssl_ticket_keys +#define _ssl_transform mbedtls_ssl_transform +#define _x509_crl mbedtls_x509_crl +#define _x509_crl_entry mbedtls_x509_crl_entry +#define _x509_crt mbedtls_x509_crt +#define _x509_csr mbedtls_x509_csr +#define _x509_time mbedtls_x509_time +#define _x509write_cert mbedtls_x509write_cert +#define _x509write_csr mbedtls_x509write_csr +#define aes_context mbedtls_aes_context +#define aes_crypt_cbc mbedtls_aes_crypt_cbc +#define aes_crypt_cfb128 mbedtls_aes_crypt_cfb128 +#define aes_crypt_cfb8 mbedtls_aes_crypt_cfb8 +#define aes_crypt_ctr mbedtls_aes_crypt_ctr +#define aes_crypt_ecb mbedtls_aes_crypt_ecb +#define aes_free mbedtls_aes_free +#define aes_init mbedtls_aes_init +#define aes_self_test mbedtls_aes_self_test +#define aes_setkey_dec mbedtls_aes_setkey_dec +#define aes_setkey_enc mbedtls_aes_setkey_enc +#define aesni_crypt_ecb mbedtls_aesni_crypt_ecb +#define aesni_gcm_mult mbedtls_aesni_gcm_mult +#define aesni_inverse_key mbedtls_aesni_inverse_key +#define aesni_setkey_enc mbedtls_aesni_setkey_enc +#define aesni_supports mbedtls_aesni_has_support +#define alarmed mbedtls_timing_alarmed +#define arc4_context mbedtls_arc4_context +#define arc4_crypt mbedtls_arc4_crypt +#define arc4_free mbedtls_arc4_free +#define arc4_init mbedtls_arc4_init +#define arc4_self_test mbedtls_arc4_self_test +#define arc4_setup mbedtls_arc4_setup +#define asn1_bitstring mbedtls_asn1_bitstring +#define asn1_buf mbedtls_asn1_buf +#define asn1_find_named_data mbedtls_asn1_find_named_data +#define asn1_free_named_data mbedtls_asn1_free_named_data +#define asn1_free_named_data_list mbedtls_asn1_free_named_data_list +#define asn1_get_alg mbedtls_asn1_get_alg +#define asn1_get_alg_null mbedtls_asn1_get_alg_null +#define asn1_get_bitstring mbedtls_asn1_get_bitstring +#define asn1_get_bitstring_null mbedtls_asn1_get_bitstring_null +#define asn1_get_bool mbedtls_asn1_get_bool +#define asn1_get_int mbedtls_asn1_get_int +#define asn1_get_len mbedtls_asn1_get_len +#define asn1_get_mpi mbedtls_asn1_get_mpi +#define asn1_get_sequence_of mbedtls_asn1_get_sequence_of +#define asn1_get_tag mbedtls_asn1_get_tag +#define asn1_named_data mbedtls_asn1_named_data +#define asn1_sequence mbedtls_asn1_sequence +#define asn1_store_named_data mbedtls_asn1_store_named_data +#define asn1_write_algorithm_identifier mbedtls_asn1_write_algorithm_identifier +#define asn1_write_bitstring mbedtls_asn1_write_bitstring +#define asn1_write_bool mbedtls_asn1_write_bool +#define asn1_write_ia5_string mbedtls_asn1_write_ia5_string +#define asn1_write_int mbedtls_asn1_write_int +#define asn1_write_len mbedtls_asn1_write_len +#define asn1_write_mpi mbedtls_asn1_write_mpi +#define asn1_write_null mbedtls_asn1_write_null +#define asn1_write_octet_string mbedtls_asn1_write_octet_string +#define asn1_write_oid mbedtls_asn1_write_oid +#define asn1_write_printable_string mbedtls_asn1_write_printable_string +#define asn1_write_raw_buffer mbedtls_asn1_write_raw_buffer +#define asn1_write_tag mbedtls_asn1_write_tag +#define base64_decode mbedtls_base64_decode +#define base64_encode mbedtls_base64_encode +#define base64_self_test mbedtls_base64_self_test +#define blowfish_context mbedtls_blowfish_context +#define blowfish_crypt_cbc mbedtls_blowfish_crypt_cbc +#define blowfish_crypt_cfb64 mbedtls_blowfish_crypt_cfb64 +#define blowfish_crypt_ctr mbedtls_blowfish_crypt_ctr +#define blowfish_crypt_ecb mbedtls_blowfish_crypt_ecb +#define blowfish_free mbedtls_blowfish_free +#define blowfish_init mbedtls_blowfish_init +#define blowfish_setkey mbedtls_blowfish_setkey +#define camellia_context mbedtls_camellia_context +#define camellia_crypt_cbc mbedtls_camellia_crypt_cbc +#define camellia_crypt_cfb128 mbedtls_camellia_crypt_cfb128 +#define camellia_crypt_ctr mbedtls_camellia_crypt_ctr +#define camellia_crypt_ecb mbedtls_camellia_crypt_ecb +#define camellia_free mbedtls_camellia_free +#define camellia_init mbedtls_camellia_init +#define camellia_self_test mbedtls_camellia_self_test +#define camellia_setkey_dec mbedtls_camellia_setkey_dec +#define camellia_setkey_enc mbedtls_camellia_setkey_enc +#define ccm_auth_decrypt mbedtls_ccm_auth_decrypt +#define ccm_context mbedtls_ccm_context +#define ccm_encrypt_and_tag mbedtls_ccm_encrypt_and_tag +#define ccm_free mbedtls_ccm_free +#define ccm_init mbedtls_ccm_init +#define ccm_self_test mbedtls_ccm_self_test +#define cipher_auth_decrypt mbedtls_cipher_auth_decrypt +#define cipher_auth_encrypt mbedtls_cipher_auth_encrypt +#define cipher_base_t mbedtls_cipher_base_t +#define cipher_check_tag mbedtls_cipher_check_tag +#define cipher_context_t mbedtls_cipher_context_t +#define cipher_crypt mbedtls_cipher_crypt +#define cipher_definition_t mbedtls_cipher_definition_t +#define cipher_definitions mbedtls_cipher_definitions +#define cipher_finish mbedtls_cipher_finish +#define cipher_free mbedtls_cipher_free +#define cipher_free_ctx mbedtls_cipher_free_ctx +#define cipher_get_block_size mbedtls_cipher_get_block_size +#define cipher_get_cipher_mode mbedtls_cipher_get_cipher_mode +#define cipher_get_iv_size mbedtls_cipher_get_iv_size +#define cipher_get_key_size mbedtls_cipher_get_key_bitlen +#define cipher_get_name mbedtls_cipher_get_name +#define cipher_get_operation mbedtls_cipher_get_operation +#define cipher_get_type mbedtls_cipher_get_type +#define cipher_id_t mbedtls_cipher_id_t +#define cipher_info_from_string mbedtls_cipher_info_from_string +#define cipher_info_from_type mbedtls_cipher_info_from_type +#define cipher_info_from_values mbedtls_cipher_info_from_values +#define cipher_info_t mbedtls_cipher_info_t +#define cipher_init mbedtls_cipher_init +#define cipher_init_ctx mbedtls_cipher_setup +#define cipher_list mbedtls_cipher_list +#define cipher_mode_t mbedtls_cipher_mode_t +#define cipher_padding_t mbedtls_cipher_padding_t +#define cipher_reset mbedtls_cipher_reset +#define cipher_self_test mbedtls_cipher_self_test +#define cipher_set_iv mbedtls_cipher_set_iv +#define cipher_set_padding_mode mbedtls_cipher_set_padding_mode +#define cipher_setkey mbedtls_cipher_setkey +#define cipher_type_t mbedtls_cipher_type_t +#define cipher_update mbedtls_cipher_update +#define cipher_update_ad mbedtls_cipher_update_ad +#define cipher_write_tag mbedtls_cipher_write_tag +#define ctr_drbg_context mbedtls_ctr_drbg_context +#define ctr_drbg_free mbedtls_ctr_drbg_free +#define ctr_drbg_init mbedtls_ctr_drbg_init +#define ctr_drbg_init_entropy_len mbedtls_ctr_drbg_init_entropy_len +#define ctr_drbg_random mbedtls_ctr_drbg_random +#define ctr_drbg_random_with_add mbedtls_ctr_drbg_random_with_add +#define ctr_drbg_reseed mbedtls_ctr_drbg_reseed +#define ctr_drbg_self_test mbedtls_ctr_drbg_self_test +#define ctr_drbg_set_entropy_len mbedtls_ctr_drbg_set_entropy_len +#define ctr_drbg_set_prediction_resistance mbedtls_ctr_drbg_set_prediction_resistance +#define ctr_drbg_set_reseed_interval mbedtls_ctr_drbg_set_reseed_interval +#define ctr_drbg_update mbedtls_ctr_drbg_update +#define ctr_drbg_update_seed_file mbedtls_ctr_drbg_update_seed_file +#define ctr_drbg_write_seed_file mbedtls_ctr_drbg_write_seed_file +#define debug_fmt mbedtls_debug_fmt +#define debug_print_buf mbedtls_debug_print_buf +#define debug_print_crt mbedtls_debug_print_crt +#define debug_print_ecp mbedtls_debug_print_ecp +#define debug_print_mpi mbedtls_debug_print_mpi +#define debug_print_msg mbedtls_debug_print_msg +#define debug_print_ret mbedtls_debug_print_ret +#define debug_set_log_mode mbedtls_debug_set_log_mode +#define debug_set_threshold mbedtls_debug_set_threshold +#define des3_context mbedtls_des3_context +#define des3_crypt_cbc mbedtls_des3_crypt_cbc +#define des3_crypt_ecb mbedtls_des3_crypt_ecb +#define des3_free mbedtls_des3_free +#define des3_init mbedtls_des3_init +#define des3_set2key_dec mbedtls_des3_set2key_dec +#define des3_set2key_enc mbedtls_des3_set2key_enc +#define des3_set3key_dec mbedtls_des3_set3key_dec +#define des3_set3key_enc mbedtls_des3_set3key_enc +#define des_context mbedtls_des_context +#define des_crypt_cbc mbedtls_des_crypt_cbc +#define des_crypt_ecb mbedtls_des_crypt_ecb +#define des_free mbedtls_des_free +#define des_init mbedtls_des_init +#define des_key_check_key_parity mbedtls_des_key_check_key_parity +#define des_key_check_weak mbedtls_des_key_check_weak +#define des_key_set_parity mbedtls_des_key_set_parity +#define des_self_test mbedtls_des_self_test +#define des_setkey_dec mbedtls_des_setkey_dec +#define des_setkey_enc mbedtls_des_setkey_enc +#define dhm_calc_secret mbedtls_dhm_calc_secret +#define dhm_context mbedtls_dhm_context +#define dhm_free mbedtls_dhm_free +#define dhm_init mbedtls_dhm_init +#define dhm_make_params mbedtls_dhm_make_params +#define dhm_make_public mbedtls_dhm_make_public +#define dhm_parse_dhm mbedtls_dhm_parse_dhm +#define dhm_parse_dhmfile mbedtls_dhm_parse_dhmfile +#define dhm_read_params mbedtls_dhm_read_params +#define dhm_read_public mbedtls_dhm_read_public +#define dhm_self_test mbedtls_dhm_self_test +#define ecdh_calc_secret mbedtls_ecdh_calc_secret +#define ecdh_compute_shared mbedtls_ecdh_compute_shared +#define ecdh_context mbedtls_ecdh_context +#define ecdh_free mbedtls_ecdh_free +#define ecdh_gen_public mbedtls_ecdh_gen_public +#define ecdh_get_params mbedtls_ecdh_get_params +#define ecdh_init mbedtls_ecdh_init +#define ecdh_make_params mbedtls_ecdh_make_params +#define ecdh_make_public mbedtls_ecdh_make_public +#define ecdh_read_params mbedtls_ecdh_read_params +#define ecdh_read_public mbedtls_ecdh_read_public +#define ecdh_self_test mbedtls_ecdh_self_test +#define ecdh_side mbedtls_ecdh_side +#define ecdsa_context mbedtls_ecdsa_context +#define ecdsa_free mbedtls_ecdsa_free +#define ecdsa_from_keypair mbedtls_ecdsa_from_keypair +#define ecdsa_genkey mbedtls_ecdsa_genkey +#define ecdsa_info mbedtls_ecdsa_info +#define ecdsa_init mbedtls_ecdsa_init +#define ecdsa_read_signature mbedtls_ecdsa_read_signature +#define ecdsa_self_test mbedtls_ecdsa_self_test +#define ecdsa_sign mbedtls_ecdsa_sign +#define ecdsa_sign_det mbedtls_ecdsa_sign_det +#define ecdsa_verify mbedtls_ecdsa_verify +#define ecdsa_write_signature mbedtls_ecdsa_write_signature +#define ecdsa_write_signature_det mbedtls_ecdsa_write_signature_det +#define eckey_info mbedtls_eckey_info +#define eckeydh_info mbedtls_eckeydh_info +#define ecp_add mbedtls_ecp_add +#define ecp_check_privkey mbedtls_ecp_check_privkey +#define ecp_check_pub_priv mbedtls_ecp_check_pub_priv +#define ecp_check_pubkey mbedtls_ecp_check_pubkey +#define ecp_copy mbedtls_ecp_copy +#define ecp_curve_info mbedtls_ecp_curve_info +#define ecp_curve_info_from_grp_id mbedtls_ecp_curve_info_from_grp_id +#define ecp_curve_info_from_name mbedtls_ecp_curve_info_from_name +#define ecp_curve_info_from_tls_id mbedtls_ecp_curve_info_from_tls_id +#define ecp_curve_list mbedtls_ecp_curve_list +#define ecp_gen_key mbedtls_ecp_gen_key +#define ecp_gen_keypair mbedtls_ecp_gen_keypair +#define ecp_group mbedtls_ecp_group +#define ecp_group_copy mbedtls_ecp_group_copy +#define ecp_group_free mbedtls_ecp_group_free +#define ecp_group_id mbedtls_ecp_group_id +#define ecp_group_init mbedtls_ecp_group_init +#define ecp_group_read_string mbedtls_ecp_group_read_string +#define ecp_grp_id_list mbedtls_ecp_grp_id_list +#define ecp_is_zero mbedtls_ecp_is_zero +#define ecp_keypair mbedtls_ecp_keypair +#define ecp_keypair_free mbedtls_ecp_keypair_free +#define ecp_keypair_init mbedtls_ecp_keypair_init +#define ecp_mul mbedtls_ecp_mul +#define ecp_point mbedtls_ecp_point +#define ecp_point_free mbedtls_ecp_point_free +#define ecp_point_init mbedtls_ecp_point_init +#define ecp_point_read_binary mbedtls_ecp_point_read_binary +#define ecp_point_read_string mbedtls_ecp_point_read_string +#define ecp_point_write_binary mbedtls_ecp_point_write_binary +#define ecp_self_test mbedtls_ecp_self_test +#define ecp_set_zero mbedtls_ecp_set_zero +#define ecp_sub mbedtls_ecp_sub +#define ecp_tls_read_group mbedtls_ecp_tls_read_group +#define ecp_tls_read_point mbedtls_ecp_tls_read_point +#define ecp_tls_write_group mbedtls_ecp_tls_write_group +#define ecp_tls_write_point mbedtls_ecp_tls_write_point +#define ecp_use_known_dp mbedtls_ecp_group_load +#define entropy_add_source mbedtls_entropy_add_source +#define entropy_context mbedtls_entropy_context +#define entropy_free mbedtls_entropy_free +#define entropy_func mbedtls_entropy_func +#define entropy_gather mbedtls_entropy_gather +#define entropy_init mbedtls_entropy_init +#define entropy_self_test mbedtls_entropy_self_test +#define entropy_update_manual mbedtls_entropy_update_manual +#define entropy_update_seed_file mbedtls_entropy_update_seed_file +#define entropy_write_seed_file mbedtls_entropy_write_seed_file +#define error_strerror mbedtls_strerror +#define f_source_ptr mbedtls_entropy_f_source_ptr +#define gcm_auth_decrypt mbedtls_gcm_auth_decrypt +#define gcm_context mbedtls_gcm_context +#define gcm_crypt_and_tag mbedtls_gcm_crypt_and_tag +#define gcm_finish mbedtls_gcm_finish +#define gcm_free mbedtls_gcm_free +#define gcm_init mbedtls_gcm_init +#define gcm_self_test mbedtls_gcm_self_test +#define gcm_starts mbedtls_gcm_starts +#define gcm_update mbedtls_gcm_update +#define get_timer mbedtls_timing_get_timer +#define hardclock mbedtls_timing_hardclock +#define hardclock_poll mbedtls_hardclock_poll +#define havege_free mbedtls_havege_free +#define havege_init mbedtls_havege_init +#define havege_poll mbedtls_havege_poll +#define havege_random mbedtls_havege_random +#define havege_state mbedtls_havege_state +#define hmac_drbg_context mbedtls_hmac_drbg_context +#define hmac_drbg_free mbedtls_hmac_drbg_free +#define hmac_drbg_init mbedtls_hmac_drbg_init +#define hmac_drbg_init_buf mbedtls_hmac_drbg_init_buf +#define hmac_drbg_random mbedtls_hmac_drbg_random +#define hmac_drbg_random_with_add mbedtls_hmac_drbg_random_with_add +#define hmac_drbg_reseed mbedtls_hmac_drbg_reseed +#define hmac_drbg_self_test mbedtls_hmac_drbg_self_test +#define hmac_drbg_set_entropy_len mbedtls_hmac_drbg_set_entropy_len +#define hmac_drbg_set_prediction_resistance mbedtls_hmac_drbg_set_prediction_resistance +#define hmac_drbg_set_reseed_interval mbedtls_hmac_drbg_set_reseed_interval +#define hmac_drbg_update mbedtls_hmac_drbg_update +#define hmac_drbg_update_seed_file mbedtls_hmac_drbg_update_seed_file +#define hmac_drbg_write_seed_file mbedtls_hmac_drbg_write_seed_file +#define hr_time mbedtls_timing_hr_time +#define key_exchange_type_t mbedtls_key_exchange_type_t +#define md mbedtls_md +#define md2 mbedtls_md2 +#define md2_context mbedtls_md2_context +#define md2_file mbedtls_md2_file +#define md2_finish mbedtls_md2_finish +#define md2_free mbedtls_md2_free +#define md2_hmac mbedtls_md2_hmac +#define md2_hmac_finish mbedtls_md2_hmac_finish +#define md2_hmac_reset mbedtls_md2_hmac_reset +#define md2_hmac_starts mbedtls_md2_hmac_starts +#define md2_hmac_update mbedtls_md2_hmac_update +#define md2_info mbedtls_md2_info +#define md2_init mbedtls_md2_init +#define md2_process mbedtls_md2_process +#define md2_self_test mbedtls_md2_self_test +#define md2_starts mbedtls_md2_starts +#define md2_update mbedtls_md2_update +#define md4 mbedtls_md4 +#define md4_context mbedtls_md4_context +#define md4_file mbedtls_md4_file +#define md4_finish mbedtls_md4_finish +#define md4_free mbedtls_md4_free +#define md4_hmac mbedtls_md4_hmac +#define md4_hmac_finish mbedtls_md4_hmac_finish +#define md4_hmac_reset mbedtls_md4_hmac_reset +#define md4_hmac_starts mbedtls_md4_hmac_starts +#define md4_hmac_update mbedtls_md4_hmac_update +#define md4_info mbedtls_md4_info +#define md4_init mbedtls_md4_init +#define md4_process mbedtls_md4_process +#define md4_self_test mbedtls_md4_self_test +#define md4_starts mbedtls_md4_starts +#define md4_update mbedtls_md4_update +#define md5 mbedtls_md5 +#define md5_context mbedtls_md5_context +#define md5_file mbedtls_md5_file +#define md5_finish mbedtls_md5_finish +#define md5_free mbedtls_md5_free +#define md5_hmac mbedtls_md5_hmac +#define md5_hmac_finish mbedtls_md5_hmac_finish +#define md5_hmac_reset mbedtls_md5_hmac_reset +#define md5_hmac_starts mbedtls_md5_hmac_starts +#define md5_hmac_update mbedtls_md5_hmac_update +#define md5_info mbedtls_md5_info +#define md5_init mbedtls_md5_init +#define md5_process mbedtls_md5_process +#define md5_self_test mbedtls_md5_self_test +#define md5_starts mbedtls_md5_starts +#define md5_update mbedtls_md5_update +#define md_context_t mbedtls_md_context_t +#define md_file mbedtls_md_file +#define md_finish mbedtls_md_finish +#define md_free mbedtls_md_free +#define md_free_ctx mbedtls_md_free_ctx +#define md_get_name mbedtls_md_get_name +#define md_get_size mbedtls_md_get_size +#define md_get_type mbedtls_md_get_type +#define md_hmac mbedtls_md_hmac +#define md_hmac_finish mbedtls_md_hmac_finish +#define md_hmac_reset mbedtls_md_hmac_reset +#define md_hmac_starts mbedtls_md_hmac_starts +#define md_hmac_update mbedtls_md_hmac_update +#define md_info_from_string mbedtls_md_info_from_string +#define md_info_from_type mbedtls_md_info_from_type +#define md_info_t mbedtls_md_info_t +#define md_init mbedtls_md_init +#define md_init_ctx mbedtls_md_init_ctx +#define md_list mbedtls_md_list +#define md_process mbedtls_md_process +#define md_starts mbedtls_md_starts +#define md_type_t mbedtls_md_type_t +#define md_update mbedtls_md_update +#define memory_buffer_alloc_cur_get mbedtls_memory_buffer_alloc_cur_get +#define memory_buffer_alloc_free mbedtls_memory_buffer_alloc_free +#define memory_buffer_alloc_init mbedtls_memory_buffer_alloc_init +#define memory_buffer_alloc_max_get mbedtls_memory_buffer_alloc_max_get +#define memory_buffer_alloc_max_reset mbedtls_memory_buffer_alloc_max_reset +#define memory_buffer_alloc_self_test mbedtls_memory_buffer_alloc_self_test +#define memory_buffer_alloc_status mbedtls_memory_buffer_alloc_status +#define memory_buffer_alloc_verify mbedtls_memory_buffer_alloc_verify +#define memory_buffer_set_verify mbedtls_memory_buffer_set_verify +#define memory_set_own mbedtls_memory_set_own +#define mpi mbedtls_mpi +#define mpi_add_abs mbedtls_mpi_add_abs +#define mpi_add_int mbedtls_mpi_add_int +#define mpi_add_mpi mbedtls_mpi_add_mpi +#define mpi_cmp_abs mbedtls_mpi_cmp_abs +#define mpi_cmp_int mbedtls_mpi_cmp_int +#define mpi_cmp_mpi mbedtls_mpi_cmp_mpi +#define mpi_copy mbedtls_mpi_copy +#define mpi_div_int mbedtls_mpi_div_int +#define mpi_div_mpi mbedtls_mpi_div_mpi +#define mpi_exp_mod mbedtls_mpi_exp_mod +#define mpi_fill_random mbedtls_mpi_fill_random +#define mpi_free mbedtls_mpi_free +#define mpi_gcd mbedtls_mpi_gcd +#define mpi_gen_prime mbedtls_mpi_gen_prime +#define mpi_get_bit mbedtls_mpi_get_bit +#define mpi_grow mbedtls_mpi_grow +#define mpi_init mbedtls_mpi_init +#define mpi_inv_mod mbedtls_mpi_inv_mod +#define mpi_is_prime mbedtls_mpi_is_prime +#define mpi_lsb mbedtls_mpi_lsb +#define mpi_lset mbedtls_mpi_lset +#define mpi_mod_int mbedtls_mpi_mod_int +#define mpi_mod_mpi mbedtls_mpi_mod_mpi +#define mpi_msb mbedtls_mpi_bitlen +#define mpi_mul_int mbedtls_mpi_mul_int +#define mpi_mul_mpi mbedtls_mpi_mul_mpi +#define mpi_read_binary mbedtls_mpi_read_binary +#define mpi_read_file mbedtls_mpi_read_file +#define mpi_read_string mbedtls_mpi_read_string +#define mpi_safe_cond_assign mbedtls_mpi_safe_cond_assign +#define mpi_safe_cond_swap mbedtls_mpi_safe_cond_swap +#define mpi_self_test mbedtls_mpi_self_test +#define mpi_set_bit mbedtls_mpi_set_bit +#define mpi_shift_l mbedtls_mpi_shift_l +#define mpi_shift_r mbedtls_mpi_shift_r +#define mpi_shrink mbedtls_mpi_shrink +#define mpi_size mbedtls_mpi_size +#define mpi_sub_abs mbedtls_mpi_sub_abs +#define mpi_sub_int mbedtls_mpi_sub_int +#define mpi_sub_mpi mbedtls_mpi_sub_mpi +#define mpi_swap mbedtls_mpi_swap +#define mpi_write_binary mbedtls_mpi_write_binary +#define mpi_write_file mbedtls_mpi_write_file +#define mpi_write_string mbedtls_mpi_write_string +#define net_accept mbedtls_net_accept +#define net_bind mbedtls_net_bind +#define net_close mbedtls_net_free +#define net_connect mbedtls_net_connect +#define net_recv mbedtls_net_recv +#define net_recv_timeout mbedtls_net_recv_timeout +#define net_send mbedtls_net_send +#define net_set_block mbedtls_net_set_block +#define net_set_nonblock mbedtls_net_set_nonblock +#define net_usleep mbedtls_net_usleep +#define oid_descriptor_t mbedtls_oid_descriptor_t +#define oid_get_attr_short_name mbedtls_oid_get_attr_short_name +#define oid_get_cipher_alg mbedtls_oid_get_cipher_alg +#define oid_get_ec_grp mbedtls_oid_get_ec_grp +#define oid_get_extended_key_usage mbedtls_oid_get_extended_key_usage +#define oid_get_md_alg mbedtls_oid_get_md_alg +#define oid_get_numeric_string mbedtls_oid_get_numeric_string +#define oid_get_oid_by_ec_grp mbedtls_oid_get_oid_by_ec_grp +#define oid_get_oid_by_md mbedtls_oid_get_oid_by_md +#define oid_get_oid_by_pk_alg mbedtls_oid_get_oid_by_pk_alg +#define oid_get_oid_by_sig_alg mbedtls_oid_get_oid_by_sig_alg +#define oid_get_pk_alg mbedtls_oid_get_pk_alg +#define oid_get_pkcs12_pbe_alg mbedtls_oid_get_pkcs12_pbe_alg +#define oid_get_sig_alg mbedtls_oid_get_sig_alg +#define oid_get_sig_alg_desc mbedtls_oid_get_sig_alg_desc +#define oid_get_x509_ext_type mbedtls_oid_get_x509_ext_type +#define operation_t mbedtls_operation_t +#define padlock_supports mbedtls_padlock_has_support +#define padlock_xcryptcbc mbedtls_padlock_xcryptcbc +#define padlock_xcryptecb mbedtls_padlock_xcryptecb +#define pbkdf2_hmac mbedtls_pbkdf2_hmac +#define pbkdf2_self_test mbedtls_pbkdf2_self_test +#define pem_context mbedtls_pem_context +#define pem_free mbedtls_pem_free +#define pem_init mbedtls_pem_init +#define pem_read_buffer mbedtls_pem_read_buffer +#define pem_write_buffer mbedtls_pem_write_buffer +#define pk_can_do mbedtls_pk_can_do +#define pk_check_pair mbedtls_pk_check_pair +#define pk_context mbedtls_pk_context +#define pk_debug mbedtls_pk_debug +#define pk_debug_item mbedtls_pk_debug_item +#define pk_debug_type mbedtls_pk_debug_type +#define pk_decrypt mbedtls_pk_decrypt +#define pk_ec mbedtls_pk_ec +#define pk_encrypt mbedtls_pk_encrypt +#define pk_free mbedtls_pk_free +#define pk_get_len mbedtls_pk_get_len +#define pk_get_name mbedtls_pk_get_name +#define pk_get_size mbedtls_pk_get_bitlen +#define pk_get_type mbedtls_pk_get_type +#define pk_info_from_type mbedtls_pk_info_from_type +#define pk_info_t mbedtls_pk_info_t +#define pk_init mbedtls_pk_init +#define pk_init_ctx mbedtls_pk_setup +#define pk_init_ctx_rsa_alt mbedtls_pk_setup_rsa_alt +#define pk_load_file mbedtls_pk_load_file +#define pk_parse_key mbedtls_pk_parse_key +#define pk_parse_keyfile mbedtls_pk_parse_keyfile +#define pk_parse_public_key mbedtls_pk_parse_public_key +#define pk_parse_public_keyfile mbedtls_pk_parse_public_keyfile +#define pk_parse_subpubkey mbedtls_pk_parse_subpubkey +#define pk_rsa mbedtls_pk_rsa +#define pk_rsa_alt_decrypt_func mbedtls_pk_rsa_alt_decrypt_func +#define pk_rsa_alt_key_len_func mbedtls_pk_rsa_alt_key_len_func +#define pk_rsa_alt_sign_func mbedtls_pk_rsa_alt_sign_func +#define pk_rsassa_pss_options mbedtls_pk_rsassa_pss_options +#define pk_sign mbedtls_pk_sign +#define pk_type_t mbedtls_pk_type_t +#define pk_verify mbedtls_pk_verify +#define pk_verify_ext mbedtls_pk_verify_ext +#define pk_write_key_der mbedtls_pk_write_key_der +#define pk_write_key_pem mbedtls_pk_write_key_pem +#define pk_write_pubkey mbedtls_pk_write_pubkey +#define pk_write_pubkey_der mbedtls_pk_write_pubkey_der +#define pk_write_pubkey_pem mbedtls_pk_write_pubkey_pem +#define pkcs11_context mbedtls_pkcs11_context +#define pkcs11_decrypt mbedtls_pkcs11_decrypt +#define pkcs11_priv_key_free mbedtls_pkcs11_priv_key_free +#define pkcs11_priv_key_init mbedtls_pkcs11_priv_key_bind +#define pkcs11_sign mbedtls_pkcs11_sign +#define pkcs11_x509_cert_init mbedtls_pkcs11_x509_cert_bind +#define pkcs12_derivation mbedtls_pkcs12_derivation +#define pkcs12_pbe mbedtls_pkcs12_pbe +#define pkcs12_pbe_sha1_rc4_128 mbedtls_pkcs12_pbe_sha1_rc4_128 +#define pkcs5_pbes2 mbedtls_pkcs5_pbes2 +#define pkcs5_pbkdf2_hmac mbedtls_pkcs5_pbkdf2_hmac +#define pkcs5_self_test mbedtls_pkcs5_self_test +#define platform_entropy_poll mbedtls_platform_entropy_poll +#define platform_set_exit mbedtls_platform_set_exit +#define platform_set_fprintf mbedtls_platform_set_fprintf +#define platform_set_malloc_free mbedtls_platform_set_malloc_free +#define platform_set_printf mbedtls_platform_set_printf +#define platform_set_snprintf mbedtls_platform_set_snprintf +#define polarssl_exit mbedtls_exit +#define polarssl_fprintf mbedtls_fprintf +#define polarssl_free mbedtls_free +#define polarssl_malloc mbedtls_malloc +#define polarssl_mutex_free mbedtls_mutex_free +#define polarssl_mutex_init mbedtls_mutex_init +#define polarssl_mutex_lock mbedtls_mutex_lock +#define polarssl_mutex_unlock mbedtls_mutex_unlock +#define polarssl_printf mbedtls_printf +#define polarssl_snprintf mbedtls_snprintf +#define polarssl_strerror mbedtls_strerror +#define ripemd160 mbedtls_ripemd160 +#define ripemd160_context mbedtls_ripemd160_context +#define ripemd160_file mbedtls_ripemd160_file +#define ripemd160_finish mbedtls_ripemd160_finish +#define ripemd160_free mbedtls_ripemd160_free +#define ripemd160_hmac mbedtls_ripemd160_hmac +#define ripemd160_hmac_finish mbedtls_ripemd160_hmac_finish +#define ripemd160_hmac_reset mbedtls_ripemd160_hmac_reset +#define ripemd160_hmac_starts mbedtls_ripemd160_hmac_starts +#define ripemd160_hmac_update mbedtls_ripemd160_hmac_update +#define ripemd160_info mbedtls_ripemd160_info +#define ripemd160_init mbedtls_ripemd160_init +#define ripemd160_process mbedtls_ripemd160_process +#define ripemd160_self_test mbedtls_ripemd160_self_test +#define ripemd160_starts mbedtls_ripemd160_starts +#define ripemd160_update mbedtls_ripemd160_update +#define rsa_alt_context mbedtls_rsa_alt_context +#define rsa_alt_info mbedtls_rsa_alt_info +#define rsa_check_privkey mbedtls_rsa_check_privkey +#define rsa_check_pub_priv mbedtls_rsa_check_pub_priv +#define rsa_check_pubkey mbedtls_rsa_check_pubkey +#define rsa_context mbedtls_rsa_context +#define rsa_copy mbedtls_rsa_copy +#define rsa_decrypt_func mbedtls_rsa_decrypt_func +#define rsa_free mbedtls_rsa_free +#define rsa_gen_key mbedtls_rsa_gen_key +#define rsa_info mbedtls_rsa_info +#define rsa_init mbedtls_rsa_init +#define rsa_key_len_func mbedtls_rsa_key_len_func +#define rsa_pkcs1_decrypt mbedtls_rsa_pkcs1_decrypt +#define rsa_pkcs1_encrypt mbedtls_rsa_pkcs1_encrypt +#define rsa_pkcs1_sign mbedtls_rsa_pkcs1_sign +#define rsa_pkcs1_verify mbedtls_rsa_pkcs1_verify +#define rsa_private mbedtls_rsa_private +#define rsa_public mbedtls_rsa_public +#define rsa_rsaes_oaep_decrypt mbedtls_rsa_rsaes_oaep_decrypt +#define rsa_rsaes_oaep_encrypt mbedtls_rsa_rsaes_oaep_encrypt +#define rsa_rsaes_pkcs1_v15_decrypt mbedtls_rsa_rsaes_pkcs1_v15_decrypt +#define rsa_rsaes_pkcs1_v15_encrypt mbedtls_rsa_rsaes_pkcs1_v15_encrypt +#define rsa_rsassa_pkcs1_v15_sign mbedtls_rsa_rsassa_pkcs1_v15_sign +#define rsa_rsassa_pkcs1_v15_verify mbedtls_rsa_rsassa_pkcs1_v15_verify +#define rsa_rsassa_pss_sign mbedtls_rsa_rsassa_pss_sign +#define rsa_rsassa_pss_verify mbedtls_rsa_rsassa_pss_verify +#define rsa_rsassa_pss_verify_ext mbedtls_rsa_rsassa_pss_verify_ext +#define rsa_self_test mbedtls_rsa_self_test +#define rsa_set_padding mbedtls_rsa_set_padding +#define rsa_sign_func mbedtls_rsa_sign_func +#define safer_memcmp mbedtls_ssl_safer_memcmp +#define set_alarm mbedtls_set_alarm +#define sha1 mbedtls_sha1 +#define sha1_context mbedtls_sha1_context +#define sha1_file mbedtls_sha1_file +#define sha1_finish mbedtls_sha1_finish +#define sha1_free mbedtls_sha1_free +#define sha1_hmac mbedtls_sha1_hmac +#define sha1_hmac_finish mbedtls_sha1_hmac_finish +#define sha1_hmac_reset mbedtls_sha1_hmac_reset +#define sha1_hmac_starts mbedtls_sha1_hmac_starts +#define sha1_hmac_update mbedtls_sha1_hmac_update +#define sha1_info mbedtls_sha1_info +#define sha1_init mbedtls_sha1_init +#define sha1_process mbedtls_sha1_process +#define sha1_self_test mbedtls_sha1_self_test +#define sha1_starts mbedtls_sha1_starts +#define sha1_update mbedtls_sha1_update +#define sha224_info mbedtls_sha224_info +#define sha256 mbedtls_sha256 +#define sha256_context mbedtls_sha256_context +#define sha256_file mbedtls_sha256_file +#define sha256_finish mbedtls_sha256_finish +#define sha256_free mbedtls_sha256_free +#define sha256_hmac mbedtls_sha256_hmac +#define sha256_hmac_finish mbedtls_sha256_hmac_finish +#define sha256_hmac_reset mbedtls_sha256_hmac_reset +#define sha256_hmac_starts mbedtls_sha256_hmac_starts +#define sha256_hmac_update mbedtls_sha256_hmac_update +#define sha256_info mbedtls_sha256_info +#define sha256_init mbedtls_sha256_init +#define sha256_process mbedtls_sha256_process +#define sha256_self_test mbedtls_sha256_self_test +#define sha256_starts mbedtls_sha256_starts +#define sha256_update mbedtls_sha256_update +#define sha384_info mbedtls_sha384_info +#define sha512 mbedtls_sha512 +#define sha512_context mbedtls_sha512_context +#define sha512_file mbedtls_sha512_file +#define sha512_finish mbedtls_sha512_finish +#define sha512_free mbedtls_sha512_free +#define sha512_hmac mbedtls_sha512_hmac +#define sha512_hmac_finish mbedtls_sha512_hmac_finish +#define sha512_hmac_reset mbedtls_sha512_hmac_reset +#define sha512_hmac_starts mbedtls_sha512_hmac_starts +#define sha512_hmac_update mbedtls_sha512_hmac_update +#define sha512_info mbedtls_sha512_info +#define sha512_init mbedtls_sha512_init +#define sha512_process mbedtls_sha512_process +#define sha512_self_test mbedtls_sha512_self_test +#define sha512_starts mbedtls_sha512_starts +#define sha512_update mbedtls_sha512_update +#define source_state mbedtls_entropy_source_state +#define ssl_cache_context mbedtls_ssl_cache_context +#define ssl_cache_entry mbedtls_ssl_cache_entry +#define ssl_cache_free mbedtls_ssl_cache_free +#define ssl_cache_get mbedtls_ssl_cache_get +#define ssl_cache_init mbedtls_ssl_cache_init +#define ssl_cache_set mbedtls_ssl_cache_set +#define ssl_cache_set_max_entries mbedtls_ssl_cache_set_max_entries +#define ssl_cache_set_timeout mbedtls_ssl_cache_set_timeout +#define ssl_check_cert_usage mbedtls_ssl_check_cert_usage +#define ssl_ciphersuite_from_id mbedtls_ssl_ciphersuite_from_id +#define ssl_ciphersuite_from_string mbedtls_ssl_ciphersuite_from_string +#define ssl_ciphersuite_t mbedtls_ssl_ciphersuite_t +#define ssl_ciphersuite_uses_ec mbedtls_ssl_ciphersuite_uses_ec +#define ssl_ciphersuite_uses_psk mbedtls_ssl_ciphersuite_uses_psk +#define ssl_close_notify mbedtls_ssl_close_notify +#define ssl_context mbedtls_ssl_context +#define ssl_cookie_check mbedtls_ssl_cookie_check +#define ssl_cookie_check_t mbedtls_ssl_cookie_check_t +#define ssl_cookie_ctx mbedtls_ssl_cookie_ctx +#define ssl_cookie_free mbedtls_ssl_cookie_free +#define ssl_cookie_init mbedtls_ssl_cookie_init +#define ssl_cookie_set_timeout mbedtls_ssl_cookie_set_timeout +#define ssl_cookie_setup mbedtls_ssl_cookie_setup +#define ssl_cookie_write mbedtls_ssl_cookie_write +#define ssl_cookie_write_t mbedtls_ssl_cookie_write_t +#define ssl_curve_is_acceptable mbedtls_ssl_curve_is_acceptable +#define ssl_derive_keys mbedtls_ssl_derive_keys +#define ssl_dtls_replay_check mbedtls_ssl_dtls_replay_check +#define ssl_dtls_replay_update mbedtls_ssl_dtls_replay_update +#define ssl_fetch_input mbedtls_ssl_fetch_input +#define ssl_flight_item mbedtls_ssl_flight_item +#define ssl_flush_output mbedtls_ssl_flush_output +#define ssl_free mbedtls_ssl_free +#define ssl_get_alpn_protocol mbedtls_ssl_get_alpn_protocol +#define ssl_get_bytes_avail mbedtls_ssl_get_bytes_avail +#define ssl_get_ciphersuite mbedtls_ssl_get_ciphersuite +#define ssl_get_ciphersuite_id mbedtls_ssl_get_ciphersuite_id +#define ssl_get_ciphersuite_name mbedtls_ssl_get_ciphersuite_name +#define ssl_get_ciphersuite_sig_pk_alg mbedtls_ssl_get_ciphersuite_sig_pk_alg +#define ssl_get_peer_cert mbedtls_ssl_get_peer_cert +#define ssl_get_record_expansion mbedtls_ssl_get_record_expansion +#define ssl_get_session mbedtls_ssl_get_session +#define ssl_get_verify_result mbedtls_ssl_get_verify_result +#define ssl_get_version mbedtls_ssl_get_version +#define ssl_handshake mbedtls_ssl_handshake +#define ssl_handshake_client_step mbedtls_ssl_handshake_client_step +#define ssl_handshake_free mbedtls_ssl_handshake_free +#define ssl_handshake_params mbedtls_ssl_handshake_params +#define ssl_handshake_server_step mbedtls_ssl_handshake_server_step +#define ssl_handshake_step mbedtls_ssl_handshake_step +#define ssl_handshake_wrapup mbedtls_ssl_handshake_wrapup +#define ssl_hdr_len mbedtls_ssl_hdr_len +#define ssl_hs_hdr_len mbedtls_ssl_hs_hdr_len +#define ssl_hw_record_activate mbedtls_ssl_hw_record_activate +#define ssl_hw_record_finish mbedtls_ssl_hw_record_finish +#define ssl_hw_record_init mbedtls_ssl_hw_record_init +#define ssl_hw_record_read mbedtls_ssl_hw_record_read +#define ssl_hw_record_reset mbedtls_ssl_hw_record_reset +#define ssl_hw_record_write mbedtls_ssl_hw_record_write +#define ssl_init mbedtls_ssl_init +#define ssl_key_cert mbedtls_ssl_key_cert +#define ssl_legacy_renegotiation mbedtls_ssl_conf_legacy_renegotiation +#define ssl_list_ciphersuites mbedtls_ssl_list_ciphersuites +#define ssl_md_alg_from_hash mbedtls_ssl_md_alg_from_hash +#define ssl_optimize_checksum mbedtls_ssl_optimize_checksum +#define ssl_own_cert mbedtls_ssl_own_cert +#define ssl_own_key mbedtls_ssl_own_key +#define ssl_parse_certificate mbedtls_ssl_parse_certificate +#define ssl_parse_change_cipher_spec mbedtls_ssl_parse_change_cipher_spec +#define ssl_parse_finished mbedtls_ssl_parse_finished +#define ssl_pk_alg_from_sig mbedtls_ssl_pk_alg_from_sig +#define ssl_pkcs11_decrypt mbedtls_ssl_pkcs11_decrypt +#define ssl_pkcs11_key_len mbedtls_ssl_pkcs11_key_len +#define ssl_pkcs11_sign mbedtls_ssl_pkcs11_sign +#define ssl_psk_derive_premaster mbedtls_ssl_psk_derive_premaster +#define ssl_read mbedtls_ssl_read +#define ssl_read_record mbedtls_ssl_read_record +#define ssl_read_version mbedtls_ssl_read_version +#define ssl_recv_flight_completed mbedtls_ssl_recv_flight_completed +#define ssl_renegotiate mbedtls_ssl_renegotiate +#define ssl_resend mbedtls_ssl_resend +#define ssl_reset_checksum mbedtls_ssl_reset_checksum +#define ssl_send_alert_message mbedtls_ssl_send_alert_message +#define ssl_send_fatal_handshake_failure mbedtls_ssl_send_fatal_handshake_failure +#define ssl_send_flight_completed mbedtls_ssl_send_flight_completed +#define ssl_session mbedtls_ssl_session +#define ssl_session_free mbedtls_ssl_session_free +#define ssl_session_init mbedtls_ssl_session_init +#define ssl_session_reset mbedtls_ssl_session_reset +#define ssl_set_alpn_protocols mbedtls_ssl_conf_alpn_protocols +#define ssl_set_arc4_support mbedtls_ssl_conf_arc4_support +#define ssl_set_authmode mbedtls_ssl_conf_authmode +#define ssl_set_bio mbedtls_ssl_set_bio +#define ssl_set_ca_chain mbedtls_ssl_conf_ca_chain +#define ssl_set_cbc_record_splitting mbedtls_ssl_conf_cbc_record_splitting +#define ssl_set_ciphersuites mbedtls_ssl_conf_ciphersuites +#define ssl_set_ciphersuites_for_version mbedtls_ssl_conf_ciphersuites_for_version +#define ssl_set_client_transport_id mbedtls_ssl_set_client_transport_id +#define ssl_set_curves mbedtls_ssl_conf_curves +#define ssl_set_dbg mbedtls_ssl_conf_dbg +#define ssl_set_dh_param mbedtls_ssl_conf_dh_param +#define ssl_set_dh_param_ctx mbedtls_ssl_conf_dh_param_ctx +#define ssl_set_dtls_anti_replay mbedtls_ssl_conf_dtls_anti_replay +#define ssl_set_dtls_badmac_limit mbedtls_ssl_conf_dtls_badmac_limit +#define ssl_set_dtls_cookies mbedtls_ssl_conf_dtls_cookies +#define ssl_set_encrypt_then_mac mbedtls_ssl_conf_encrypt_then_mac +#define ssl_set_endpoint mbedtls_ssl_conf_endpoint +#define ssl_set_extended_master_secret mbedtls_ssl_conf_extended_master_secret +#define ssl_set_fallback mbedtls_ssl_conf_fallback +#define ssl_set_handshake_timeout mbedtls_ssl_conf_handshake_timeout +#define ssl_set_hostname mbedtls_ssl_set_hostname +#define ssl_set_max_frag_len mbedtls_ssl_conf_max_frag_len +#define ssl_set_max_version mbedtls_ssl_conf_max_version +#define ssl_set_min_version mbedtls_ssl_conf_min_version +#define ssl_set_own_cert mbedtls_ssl_conf_own_cert +#define ssl_set_own_cert_alt mbedtls_ssl_set_own_cert_alt +#define ssl_set_own_cert_rsa mbedtls_ssl_set_own_cert_rsa +#define ssl_set_psk mbedtls_ssl_conf_psk +#define ssl_set_psk_cb mbedtls_ssl_conf_psk_cb +#define ssl_set_renegotiation mbedtls_ssl_conf_renegotiation +#define ssl_set_renegotiation_enforced mbedtls_ssl_conf_renegotiation_enforced +#define ssl_set_renegotiation_period mbedtls_ssl_conf_renegotiation_period +#define ssl_set_rng mbedtls_ssl_conf_rng +#define ssl_set_session mbedtls_ssl_set_session +#define ssl_set_session_cache mbedtls_ssl_conf_session_cache +#define ssl_set_session_ticket_lifetime mbedtls_ssl_conf_session_ticket_lifetime +#define ssl_set_session_tickets mbedtls_ssl_conf_session_tickets +#define ssl_set_sni mbedtls_ssl_conf_sni +#define ssl_set_transport mbedtls_ssl_conf_transport +#define ssl_set_truncated_hmac mbedtls_ssl_conf_truncated_hmac +#define ssl_set_verify mbedtls_ssl_conf_verify +#define ssl_sig_from_pk mbedtls_ssl_sig_from_pk +#define ssl_states mbedtls_ssl_states +#define ssl_ticket_keys mbedtls_ssl_ticket_keys +#define ssl_transform mbedtls_ssl_transform +#define ssl_transform_free mbedtls_ssl_transform_free +#define ssl_write mbedtls_ssl_write +#define ssl_write_certificate mbedtls_ssl_write_certificate +#define ssl_write_change_cipher_spec mbedtls_ssl_write_change_cipher_spec +#define ssl_write_finished mbedtls_ssl_write_finished +#define ssl_write_record mbedtls_ssl_write_record +#define ssl_write_version mbedtls_ssl_write_version +#define supported_ciphers mbedtls_cipher_supported +#define t_sint mbedtls_mpi_sint +#define t_udbl mbedtls_t_udbl +#define t_uint mbedtls_mpi_uint +#define test_ca_crt mbedtls_test_ca_crt +#define test_ca_crt_ec mbedtls_test_ca_crt_ec +#define test_ca_crt_rsa mbedtls_test_ca_crt_rsa +#define test_ca_key mbedtls_test_ca_key +#define test_ca_key_ec mbedtls_test_ca_key_ec +#define test_ca_key_rsa mbedtls_test_ca_key_rsa +#define test_ca_list mbedtls_test_cas_pem +#define test_ca_pwd mbedtls_test_ca_pwd +#define test_ca_pwd_ec mbedtls_test_ca_pwd_ec +#define test_ca_pwd_rsa mbedtls_test_ca_pwd_rsa +#define test_cli_crt mbedtls_test_cli_crt +#define test_cli_crt_ec mbedtls_test_cli_crt_ec +#define test_cli_crt_rsa mbedtls_test_cli_crt_rsa +#define test_cli_key mbedtls_test_cli_key +#define test_cli_key_ec mbedtls_test_cli_key_ec +#define test_cli_key_rsa mbedtls_test_cli_key_rsa +#define test_dhm_params mbedtls_test_dhm_params +#define test_srv_crt mbedtls_test_srv_crt +#define test_srv_crt_ec mbedtls_test_srv_crt_ec +#define test_srv_crt_rsa mbedtls_test_srv_crt_rsa +#define test_srv_key mbedtls_test_srv_key +#define test_srv_key_ec mbedtls_test_srv_key_ec +#define test_srv_key_rsa mbedtls_test_srv_key_rsa +#define threading_mutex_t mbedtls_threading_mutex_t +#define threading_set_alt mbedtls_threading_set_alt +#define timing_self_test mbedtls_timing_self_test +#define version_check_feature mbedtls_version_check_feature +#define version_get_number mbedtls_version_get_number +#define version_get_string mbedtls_version_get_string +#define version_get_string_full mbedtls_version_get_string_full +#define x509_bitstring mbedtls_x509_bitstring +#define x509_buf mbedtls_x509_buf +#define x509_crl mbedtls_x509_crl +#define x509_crl_entry mbedtls_x509_crl_entry +#define x509_crl_free mbedtls_x509_crl_free +#define x509_crl_info mbedtls_x509_crl_info +#define x509_crl_init mbedtls_x509_crl_init +#define x509_crl_parse mbedtls_x509_crl_parse +#define x509_crl_parse_der mbedtls_x509_crl_parse_der +#define x509_crl_parse_file mbedtls_x509_crl_parse_file +#define x509_crt mbedtls_x509_crt +#define x509_crt_check_extended_key_usage mbedtls_x509_crt_check_extended_key_usage +#define x509_crt_check_key_usage mbedtls_x509_crt_check_key_usage +#define x509_crt_free mbedtls_x509_crt_free +#define x509_crt_info mbedtls_x509_crt_info +#define x509_crt_init mbedtls_x509_crt_init +#define x509_crt_parse mbedtls_x509_crt_parse +#define x509_crt_parse_der mbedtls_x509_crt_parse_der +#define x509_crt_parse_file mbedtls_x509_crt_parse_file +#define x509_crt_parse_path mbedtls_x509_crt_parse_path +#define x509_crt_revoked mbedtls_x509_crt_is_revoked +#define x509_crt_verify mbedtls_x509_crt_verify +#define x509_csr mbedtls_x509_csr +#define x509_csr_free mbedtls_x509_csr_free +#define x509_csr_info mbedtls_x509_csr_info +#define x509_csr_init mbedtls_x509_csr_init +#define x509_csr_parse mbedtls_x509_csr_parse +#define x509_csr_parse_der mbedtls_x509_csr_parse_der +#define x509_csr_parse_file mbedtls_x509_csr_parse_file +#define x509_dn_gets mbedtls_x509_dn_gets +#define x509_get_alg mbedtls_x509_get_alg +#define x509_get_alg_null mbedtls_x509_get_alg_null +#define x509_get_ext mbedtls_x509_get_ext +#define x509_get_name mbedtls_x509_get_name +#define x509_get_rsassa_pss_params mbedtls_x509_get_rsassa_pss_params +#define x509_get_serial mbedtls_x509_get_serial +#define x509_get_sig mbedtls_x509_get_sig +#define x509_get_sig_alg mbedtls_x509_get_sig_alg +#define x509_get_time mbedtls_x509_get_time +#define x509_key_size_helper mbedtls_x509_key_size_helper +#define x509_name mbedtls_x509_name +#define x509_oid_get_description mbedtls_x509_oid_get_description +#define x509_oid_get_numeric_string mbedtls_x509_oid_get_numeric_string +#define x509_self_test mbedtls_x509_self_test +#define x509_sequence mbedtls_x509_sequence +#define x509_serial_gets mbedtls_x509_serial_gets +#define x509_set_extension mbedtls_x509_set_extension +#define x509_sig_alg_gets mbedtls_x509_sig_alg_gets +#define x509_string_to_names mbedtls_x509_string_to_names +#define x509_time mbedtls_x509_time +#define x509_time_expired mbedtls_x509_time_is_past +#define x509_time_future mbedtls_x509_time_is_future +#define x509_write_extensions mbedtls_x509_write_extensions +#define x509_write_names mbedtls_x509_write_names +#define x509_write_sig mbedtls_x509_write_sig +#define x509write_cert mbedtls_x509write_cert +#define x509write_crt_der mbedtls_x509write_crt_der +#define x509write_crt_free mbedtls_x509write_crt_free +#define x509write_crt_init mbedtls_x509write_crt_init +#define x509write_crt_pem mbedtls_x509write_crt_pem +#define x509write_crt_set_authority_key_identifier mbedtls_x509write_crt_set_authority_key_identifier +#define x509write_crt_set_basic_constraints mbedtls_x509write_crt_set_basic_constraints +#define x509write_crt_set_extension mbedtls_x509write_crt_set_extension +#define x509write_crt_set_issuer_key mbedtls_x509write_crt_set_issuer_key +#define x509write_crt_set_issuer_name mbedtls_x509write_crt_set_issuer_name +#define x509write_crt_set_key_usage mbedtls_x509write_crt_set_key_usage +#define x509write_crt_set_md_alg mbedtls_x509write_crt_set_md_alg +#define x509write_crt_set_ns_cert_type mbedtls_x509write_crt_set_ns_cert_type +#define x509write_crt_set_serial mbedtls_x509write_crt_set_serial +#define x509write_crt_set_subject_key mbedtls_x509write_crt_set_subject_key +#define x509write_crt_set_subject_key_identifier mbedtls_x509write_crt_set_subject_key_identifier +#define x509write_crt_set_subject_name mbedtls_x509write_crt_set_subject_name +#define x509write_crt_set_validity mbedtls_x509write_crt_set_validity +#define x509write_crt_set_version mbedtls_x509write_crt_set_version +#define x509write_csr mbedtls_x509write_csr +#define x509write_csr_der mbedtls_x509write_csr_der +#define x509write_csr_free mbedtls_x509write_csr_free +#define x509write_csr_init mbedtls_x509write_csr_init +#define x509write_csr_pem mbedtls_x509write_csr_pem +#define x509write_csr_set_extension mbedtls_x509write_csr_set_extension +#define x509write_csr_set_key mbedtls_x509write_csr_set_key +#define x509write_csr_set_key_usage mbedtls_x509write_csr_set_key_usage +#define x509write_csr_set_md_alg mbedtls_x509write_csr_set_md_alg +#define x509write_csr_set_ns_cert_type mbedtls_x509write_csr_set_ns_cert_type +#define x509write_csr_set_subject_name mbedtls_x509write_csr_set_subject_name +#define xtea_context mbedtls_xtea_context +#define xtea_crypt_cbc mbedtls_xtea_crypt_cbc +#define xtea_crypt_ecb mbedtls_xtea_crypt_ecb +#define xtea_free mbedtls_xtea_free +#define xtea_init mbedtls_xtea_init +#define xtea_self_test mbedtls_xtea_self_test +#define xtea_setup mbedtls_xtea_setup + +#endif /* compat-1.3.h */ +#endif /* MBEDTLS_DEPRECATED_REMOVED */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/config.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/config.h new file mode 100644 index 0000000..0f7e29b --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/config.h @@ -0,0 +1,2600 @@ +/** + * \file config.h + * + * \brief Configuration options (set of defines) + * + * This set of compile-time options may be used to enable + * or disable features selectively, and reduce the global + * memory footprint. + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_CONFIG_H +#define MBEDTLS_CONFIG_H + +#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) +#define _CRT_SECURE_NO_DEPRECATE 1 +#endif + +/** + * \name SECTION: System support + * + * This section sets system specific settings. + * \{ + */ + +/** + * \def MBEDTLS_HAVE_ASM + * + * The compiler has support for asm(). + * + * Requires support for asm() in compiler. + * + * Used in: + * library/timing.c + * library/padlock.c + * include/mbedtls/bn_mul.h + * + * Comment to disable the use of assembly code. + */ +#define MBEDTLS_HAVE_ASM + +/** + * \def MBEDTLS_HAVE_SSE2 + * + * CPU supports SSE2 instruction set. + * + * Uncomment if the CPU supports SSE2 (IA-32 specific). + */ +//#define MBEDTLS_HAVE_SSE2 + +/** + * \def MBEDTLS_HAVE_TIME + * + * System has time.h and time(). + * The time does not need to be correct, only time differences are used, + * by contrast with MBEDTLS_HAVE_TIME_DATE + * + * Defining MBEDTLS_HAVE_TIME allows you to specify MBEDTLS_PLATFORM_TIME_ALT, + * MBEDTLS_PLATFORM_TIME_MACRO, MBEDTLS_PLATFORM_TIME_TYPE_MACRO and + * MBEDTLS_PLATFORM_STD_TIME. + * + * Comment if your system does not support time functions + */ +#define MBEDTLS_HAVE_TIME + +/** + * \def MBEDTLS_HAVE_TIME_DATE + * + * System has time.h and time(), gmtime() and the clock is correct. + * The time needs to be correct (not necesarily very accurate, but at least + * the date should be correct). This is used to verify the validity period of + * X.509 certificates. + * + * Comment if your system does not have a correct clock. + */ +#define MBEDTLS_HAVE_TIME_DATE + +/** + * \def MBEDTLS_PLATFORM_MEMORY + * + * Enable the memory allocation layer. + * + * By default mbed TLS uses the system-provided calloc() and free(). + * This allows different allocators (self-implemented or provided) to be + * provided to the platform abstraction layer. + * + * Enabling MBEDTLS_PLATFORM_MEMORY without the + * MBEDTLS_PLATFORM_{FREE,CALLOC}_MACROs will provide + * "mbedtls_platform_set_calloc_free()" allowing you to set an alternative calloc() and + * free() function pointer at runtime. + * + * Enabling MBEDTLS_PLATFORM_MEMORY and specifying + * MBEDTLS_PLATFORM_{CALLOC,FREE}_MACROs will allow you to specify the + * alternate function at compile time. + * + * Requires: MBEDTLS_PLATFORM_C + * + * Enable this layer to allow use of alternative memory allocators. + */ +//#define MBEDTLS_PLATFORM_MEMORY + +/** + * \def MBEDTLS_PLATFORM_NO_STD_FUNCTIONS + * + * Do not assign standard functions in the platform layer (e.g. calloc() to + * MBEDTLS_PLATFORM_STD_CALLOC and printf() to MBEDTLS_PLATFORM_STD_PRINTF) + * + * This makes sure there are no linking errors on platforms that do not support + * these functions. You will HAVE to provide alternatives, either at runtime + * via the platform_set_xxx() functions or at compile time by setting + * the MBEDTLS_PLATFORM_STD_XXX defines, or enabling a + * MBEDTLS_PLATFORM_XXX_MACRO. + * + * Requires: MBEDTLS_PLATFORM_C + * + * Uncomment to prevent default assignment of standard functions in the + * platform layer. + */ +//#define MBEDTLS_PLATFORM_NO_STD_FUNCTIONS + +/** + * \def MBEDTLS_PLATFORM_EXIT_ALT + * + * MBEDTLS_PLATFORM_XXX_ALT: Uncomment a macro to let mbed TLS support the + * function in the platform abstraction layer. + * + * Example: In case you uncomment MBEDTLS_PLATFORM_PRINTF_ALT, mbed TLS will + * provide a function "mbedtls_platform_set_printf()" that allows you to set an + * alternative printf function pointer. + * + * All these define require MBEDTLS_PLATFORM_C to be defined! + * + * \note MBEDTLS_PLATFORM_SNPRINTF_ALT is required on Windows; + * it will be enabled automatically by check_config.h + * + * \warning MBEDTLS_PLATFORM_XXX_ALT cannot be defined at the same time as + * MBEDTLS_PLATFORM_XXX_MACRO! + * + * Requires: MBEDTLS_PLATFORM_TIME_ALT requires MBEDTLS_HAVE_TIME + * + * Uncomment a macro to enable alternate implementation of specific base + * platform function + */ +//#define MBEDTLS_PLATFORM_EXIT_ALT +//#define MBEDTLS_PLATFORM_TIME_ALT +//#define MBEDTLS_PLATFORM_FPRINTF_ALT +//#define MBEDTLS_PLATFORM_PRINTF_ALT +//#define MBEDTLS_PLATFORM_SNPRINTF_ALT +//#define MBEDTLS_PLATFORM_NV_SEED_ALT + +/** + * \def MBEDTLS_DEPRECATED_WARNING + * + * Mark deprecated functions so that they generate a warning if used. + * Functions deprecated in one version will usually be removed in the next + * version. You can enable this to help you prepare the transition to a new + * major version by making sure your code is not using these functions. + * + * This only works with GCC and Clang. With other compilers, you may want to + * use MBEDTLS_DEPRECATED_REMOVED + * + * Uncomment to get warnings on using deprecated functions. + */ +//#define MBEDTLS_DEPRECATED_WARNING + +/** + * \def MBEDTLS_DEPRECATED_REMOVED + * + * Remove deprecated functions so that they generate an error if used. + * Functions deprecated in one version will usually be removed in the next + * version. You can enable this to help you prepare the transition to a new + * major version by making sure your code is not using these functions. + * + * Uncomment to get errors on using deprecated functions. + */ +//#define MBEDTLS_DEPRECATED_REMOVED + +/* \} name SECTION: System support */ + +/** + * \name SECTION: mbed TLS feature support + * + * This section sets support for features that are or are not needed + * within the modules that are enabled. + * \{ + */ + +/** + * \def MBEDTLS_TIMING_ALT + * + * Uncomment to provide your own alternate implementation for mbedtls_timing_hardclock(), + * mbedtls_timing_get_timer(), mbedtls_set_alarm(), mbedtls_set/get_delay() + * + * Only works if you have MBEDTLS_TIMING_C enabled. + * + * You will need to provide a header "timing_alt.h" and an implementation at + * compile time. + */ +//#define MBEDTLS_TIMING_ALT + +/** + * \def MBEDTLS_AES_ALT + * + * MBEDTLS__MODULE_NAME__ALT: Uncomment a macro to let mbed TLS use your + * alternate core implementation of a symmetric crypto or hash module (e.g. + * platform specific assembly optimized implementations). Keep in mind that + * the function prototypes should remain the same. + * + * This replaces the whole module. If you only want to replace one of the + * functions, use one of the MBEDTLS__FUNCTION_NAME__ALT flags. + * + * Example: In case you uncomment MBEDTLS_AES_ALT, mbed TLS will no longer + * provide the "struct mbedtls_aes_context" definition and omit the base function + * declarations and implementations. "aes_alt.h" will be included from + * "aes.h" to include the new function definitions. + * + * Uncomment a macro to enable alternate implementation of the corresponding + * module. + */ +//#define MBEDTLS_AES_ALT +//#define MBEDTLS_ARC4_ALT +//#define MBEDTLS_BLOWFISH_ALT +//#define MBEDTLS_CAMELLIA_ALT +//#define MBEDTLS_DES_ALT +//#define MBEDTLS_XTEA_ALT +//#define MBEDTLS_MD2_ALT +//#define MBEDTLS_MD4_ALT +//#define MBEDTLS_MD5_ALT +//#define MBEDTLS_RIPEMD160_ALT +//#define MBEDTLS_SHA1_ALT +//#define MBEDTLS_SHA256_ALT +//#define MBEDTLS_SHA512_ALT + +/** + * \def MBEDTLS_MD2_PROCESS_ALT + * + * MBEDTLS__FUNCTION_NAME__ALT: Uncomment a macro to let mbed TLS use you + * alternate core implementation of symmetric crypto or hash function. Keep in + * mind that function prototypes should remain the same. + * + * This replaces only one function. The header file from mbed TLS is still + * used, in contrast to the MBEDTLS__MODULE_NAME__ALT flags. + * + * Example: In case you uncomment MBEDTLS_SHA256_PROCESS_ALT, mbed TLS will + * no longer provide the mbedtls_sha1_process() function, but it will still provide + * the other function (using your mbedtls_sha1_process() function) and the definition + * of mbedtls_sha1_context, so your implementation of mbedtls_sha1_process must be compatible + * with this definition. + * + * Note: if you use the AES_xxx_ALT macros, then is is recommended to also set + * MBEDTLS_AES_ROM_TABLES in order to help the linker garbage-collect the AES + * tables. + * + * Uncomment a macro to enable alternate implementation of the corresponding + * function. + */ +//#define MBEDTLS_MD2_PROCESS_ALT +//#define MBEDTLS_MD4_PROCESS_ALT +//#define MBEDTLS_MD5_PROCESS_ALT +//#define MBEDTLS_RIPEMD160_PROCESS_ALT +//#define MBEDTLS_SHA1_PROCESS_ALT +//#define MBEDTLS_SHA256_PROCESS_ALT +//#define MBEDTLS_SHA512_PROCESS_ALT +//#define MBEDTLS_DES_SETKEY_ALT +//#define MBEDTLS_DES_CRYPT_ECB_ALT +//#define MBEDTLS_DES3_CRYPT_ECB_ALT +//#define MBEDTLS_AES_SETKEY_ENC_ALT +//#define MBEDTLS_AES_SETKEY_DEC_ALT +//#define MBEDTLS_AES_ENCRYPT_ALT +//#define MBEDTLS_AES_DECRYPT_ALT + +/** + * \def MBEDTLS_TEST_NULL_ENTROPY + * + * Enables testing and use of mbed TLS without any configured entropy sources. + * This permits use of the library on platforms before an entropy source has + * been integrated (see for example the MBEDTLS_ENTROPY_HARDWARE_ALT or the + * MBEDTLS_ENTROPY_NV_SEED switches). + * + * WARNING! This switch MUST be disabled in production builds, and is suitable + * only for development. + * Enabling the switch negates any security provided by the library. + * + * Requires MBEDTLS_ENTROPY_C, MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES + * + */ +//#define MBEDTLS_TEST_NULL_ENTROPY + +/** + * \def MBEDTLS_ENTROPY_HARDWARE_ALT + * + * Uncomment this macro to let mbed TLS use your own implementation of a + * hardware entropy collector. + * + * Your function must be called \c mbedtls_hardware_poll(), have the same + * prototype as declared in entropy_poll.h, and accept NULL as first argument. + * + * Uncomment to use your own hardware entropy collector. + */ +//#define MBEDTLS_ENTROPY_HARDWARE_ALT + +/** + * \def MBEDTLS_AES_ROM_TABLES + * + * Store the AES tables in ROM. + * + * Uncomment this macro to store the AES tables in ROM. + */ +//#define MBEDTLS_AES_ROM_TABLES + +/** + * \def MBEDTLS_CAMELLIA_SMALL_MEMORY + * + * Use less ROM for the Camellia implementation (saves about 768 bytes). + * + * Uncomment this macro to use less memory for Camellia. + */ +//#define MBEDTLS_CAMELLIA_SMALL_MEMORY + +/** + * \def MBEDTLS_CIPHER_MODE_CBC + * + * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers. + */ +#define MBEDTLS_CIPHER_MODE_CBC + +/** + * \def MBEDTLS_CIPHER_MODE_CFB + * + * Enable Cipher Feedback mode (CFB) for symmetric ciphers. + */ +#define MBEDTLS_CIPHER_MODE_CFB + +/** + * \def MBEDTLS_CIPHER_MODE_CTR + * + * Enable Counter Block Cipher mode (CTR) for symmetric ciphers. + */ +#define MBEDTLS_CIPHER_MODE_CTR + +/** + * \def MBEDTLS_CIPHER_NULL_CIPHER + * + * Enable NULL cipher. + * Warning: Only do so when you know what you are doing. This allows for + * encryption or channels without any security! + * + * Requires MBEDTLS_ENABLE_WEAK_CIPHERSUITES as well to enable + * the following ciphersuites: + * MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA + * MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA + * MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA + * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384 + * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256 + * MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA + * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384 + * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256 + * MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA + * MBEDTLS_TLS_RSA_WITH_NULL_SHA256 + * MBEDTLS_TLS_RSA_WITH_NULL_SHA + * MBEDTLS_TLS_RSA_WITH_NULL_MD5 + * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384 + * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256 + * MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA + * MBEDTLS_TLS_PSK_WITH_NULL_SHA384 + * MBEDTLS_TLS_PSK_WITH_NULL_SHA256 + * MBEDTLS_TLS_PSK_WITH_NULL_SHA + * + * Uncomment this macro to enable the NULL cipher and ciphersuites + */ +//#define MBEDTLS_CIPHER_NULL_CIPHER + +/** + * \def MBEDTLS_CIPHER_PADDING_PKCS7 + * + * MBEDTLS_CIPHER_PADDING_XXX: Uncomment or comment macros to add support for + * specific padding modes in the cipher layer with cipher modes that support + * padding (e.g. CBC) + * + * If you disable all padding modes, only full blocks can be used with CBC. + * + * Enable padding modes in the cipher layer. + */ +#define MBEDTLS_CIPHER_PADDING_PKCS7 +#define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS +#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN +#define MBEDTLS_CIPHER_PADDING_ZEROS + +/** + * \def MBEDTLS_ENABLE_WEAK_CIPHERSUITES + * + * Enable weak ciphersuites in SSL / TLS. + * Warning: Only do so when you know what you are doing. This allows for + * channels with virtually no security at all! + * + * This enables the following ciphersuites: + * MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA + * MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA + * + * Uncomment this macro to enable weak ciphersuites + */ +//#define MBEDTLS_ENABLE_WEAK_CIPHERSUITES + +/** + * \def MBEDTLS_REMOVE_ARC4_CIPHERSUITES + * + * Remove RC4 ciphersuites by default in SSL / TLS. + * This flag removes the ciphersuites based on RC4 from the default list as + * returned by mbedtls_ssl_list_ciphersuites(). However, it is still possible to + * enable (some of) them with mbedtls_ssl_conf_ciphersuites() by including them + * explicitly. + * + * Uncomment this macro to remove RC4 ciphersuites by default. + */ +#define MBEDTLS_REMOVE_ARC4_CIPHERSUITES + +/** + * \def MBEDTLS_ECP_DP_SECP192R1_ENABLED + * + * MBEDTLS_ECP_XXXX_ENABLED: Enables specific curves within the Elliptic Curve + * module. By default all supported curves are enabled. + * + * Comment macros to disable the curve and functions for it + */ +#define MBEDTLS_ECP_DP_SECP192R1_ENABLED +#define MBEDTLS_ECP_DP_SECP224R1_ENABLED +#define MBEDTLS_ECP_DP_SECP256R1_ENABLED +#define MBEDTLS_ECP_DP_SECP384R1_ENABLED +#define MBEDTLS_ECP_DP_SECP521R1_ENABLED +#define MBEDTLS_ECP_DP_SECP192K1_ENABLED +#define MBEDTLS_ECP_DP_SECP224K1_ENABLED +#define MBEDTLS_ECP_DP_SECP256K1_ENABLED +#define MBEDTLS_ECP_DP_BP256R1_ENABLED +#define MBEDTLS_ECP_DP_BP384R1_ENABLED +#define MBEDTLS_ECP_DP_BP512R1_ENABLED +#define MBEDTLS_ECP_DP_CURVE25519_ENABLED + +/** + * \def MBEDTLS_ECP_NIST_OPTIM + * + * Enable specific 'modulo p' routines for each NIST prime. + * Depending on the prime and architecture, makes operations 4 to 8 times + * faster on the corresponding curve. + * + * Comment this macro to disable NIST curves optimisation. + */ +#define MBEDTLS_ECP_NIST_OPTIM + +/** + * \def MBEDTLS_ECDSA_DETERMINISTIC + * + * Enable deterministic ECDSA (RFC 6979). + * Standard ECDSA is "fragile" in the sense that lack of entropy when signing + * may result in a compromise of the long-term signing key. This is avoided by + * the deterministic variant. + * + * Requires: MBEDTLS_HMAC_DRBG_C + * + * Comment this macro to disable deterministic ECDSA. + */ +#define MBEDTLS_ECDSA_DETERMINISTIC + +/** + * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED + * + * Enable the PSK based ciphersuite modes in SSL / TLS. + * + * This enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_PSK_WITH_RC4_128_SHA + */ +#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED + +/** + * \def MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED + * + * Enable the DHE-PSK based ciphersuite modes in SSL / TLS. + * + * Requires: MBEDTLS_DHM_C + * + * This enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA + */ +#define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED + +/** + * \def MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED + * + * Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. + * + * Requires: MBEDTLS_ECDH_C + * + * This enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA + */ +#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED + +/** + * \def MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED + * + * Enable the RSA-PSK based ciphersuite modes in SSL / TLS. + * + * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15, + * MBEDTLS_X509_CRT_PARSE_C + * + * This enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA + */ +#define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED + +/** + * \def MBEDTLS_KEY_EXCHANGE_RSA_ENABLED + * + * Enable the RSA-only based ciphersuite modes in SSL / TLS. + * + * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15, + * MBEDTLS_X509_CRT_PARSE_C + * + * This enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256 + * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA + * MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA + * MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_RSA_WITH_RC4_128_SHA + * MBEDTLS_TLS_RSA_WITH_RC4_128_MD5 + */ +#define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED + +/** + * \def MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED + * + * Enable the DHE-RSA based ciphersuite modes in SSL / TLS. + * + * Requires: MBEDTLS_DHM_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15, + * MBEDTLS_X509_CRT_PARSE_C + * + * This enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA + * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA + * MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA + */ +#define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED + +/** + * \def MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED + * + * Enable the ECDHE-RSA based ciphersuite modes in SSL / TLS. + * + * Requires: MBEDTLS_ECDH_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15, + * MBEDTLS_X509_CRT_PARSE_C + * + * This enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA + */ +#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED + +/** + * \def MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED + * + * Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. + * + * Requires: MBEDTLS_ECDH_C, MBEDTLS_ECDSA_C, MBEDTLS_X509_CRT_PARSE_C, + * + * This enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA + */ +#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED + +/** + * \def MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED + * + * Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. + * + * Requires: MBEDTLS_ECDH_C, MBEDTLS_X509_CRT_PARSE_C + * + * This enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA + * MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 + */ +#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED + +/** + * \def MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED + * + * Enable the ECDH-RSA based ciphersuite modes in SSL / TLS. + * + * Requires: MBEDTLS_ECDH_C, MBEDTLS_X509_CRT_PARSE_C + * + * This enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA + * MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 + */ +#define MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED + +/** + * \def MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED + * + * Enable the ECJPAKE based ciphersuite modes in SSL / TLS. + * + * \warning This is currently experimental. EC J-PAKE support is based on the + * Thread v1.0.0 specification; incompatible changes to the specification + * might still happen. For this reason, this is disabled by default. + * + * Requires: MBEDTLS_ECJPAKE_C + * MBEDTLS_SHA256_C + * MBEDTLS_ECP_DP_SECP256R1_ENABLED + * + * This enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 + */ +//#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED + +/** + * \def MBEDTLS_PK_PARSE_EC_EXTENDED + * + * Enhance support for reading EC keys using variants of SEC1 not allowed by + * RFC 5915 and RFC 5480. + * + * Currently this means parsing the SpecifiedECDomain choice of EC + * parameters (only known groups are supported, not arbitrary domains, to + * avoid validation issues). + * + * Disable if you only need to support RFC 5915 + 5480 key formats. + */ +#define MBEDTLS_PK_PARSE_EC_EXTENDED + +/** + * \def MBEDTLS_ERROR_STRERROR_DUMMY + * + * Enable a dummy error function to make use of mbedtls_strerror() in + * third party libraries easier when MBEDTLS_ERROR_C is disabled + * (no effect when MBEDTLS_ERROR_C is enabled). + * + * You can safely disable this if MBEDTLS_ERROR_C is enabled, or if you're + * not using mbedtls_strerror() or error_strerror() in your application. + * + * Disable if you run into name conflicts and want to really remove the + * mbedtls_strerror() + */ +#define MBEDTLS_ERROR_STRERROR_DUMMY + +/** + * \def MBEDTLS_GENPRIME + * + * Enable the prime-number generation code. + * + * Requires: MBEDTLS_BIGNUM_C + */ +#define MBEDTLS_GENPRIME + +/** + * \def MBEDTLS_FS_IO + * + * Enable functions that use the filesystem. + */ +#define MBEDTLS_FS_IO + +/** + * \def MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES + * + * Do not add default entropy sources. These are the platform specific, + * mbedtls_timing_hardclock and HAVEGE based poll functions. + * + * This is useful to have more control over the added entropy sources in an + * application. + * + * Uncomment this macro to prevent loading of default entropy functions. + */ +//#define MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES + +/** + * \def MBEDTLS_NO_PLATFORM_ENTROPY + * + * Do not use built-in platform entropy functions. + * This is useful if your platform does not support + * standards like the /dev/urandom or Windows CryptoAPI. + * + * Uncomment this macro to disable the built-in platform entropy functions. + */ +//#define MBEDTLS_NO_PLATFORM_ENTROPY + +/** + * \def MBEDTLS_ENTROPY_FORCE_SHA256 + * + * Force the entropy accumulator to use a SHA-256 accumulator instead of the + * default SHA-512 based one (if both are available). + * + * Requires: MBEDTLS_SHA256_C + * + * On 32-bit systems SHA-256 can be much faster than SHA-512. Use this option + * if you have performance concerns. + * + * This option is only useful if both MBEDTLS_SHA256_C and + * MBEDTLS_SHA512_C are defined. Otherwise the available hash module is used. + */ +//#define MBEDTLS_ENTROPY_FORCE_SHA256 + +/** + * \def MBEDTLS_ENTROPY_NV_SEED + * + * Enable the non-volatile (NV) seed file-based entropy source. + * (Also enables the NV seed read/write functions in the platform layer) + * + * This is crucial (if not required) on systems that do not have a + * cryptographic entropy source (in hardware or kernel) available. + * + * Requires: MBEDTLS_ENTROPY_C, MBEDTLS_PLATFORM_C + * + * \note The read/write functions that are used by the entropy source are + * determined in the platform layer, and can be modified at runtime and/or + * compile-time depending on the flags (MBEDTLS_PLATFORM_NV_SEED_*) used. + * + * \note If you use the default implementation functions that read a seedfile + * with regular fopen(), please make sure you make a seedfile with the + * proper name (defined in MBEDTLS_PLATFORM_STD_NV_SEED_FILE) and at + * least MBEDTLS_ENTROPY_BLOCK_SIZE bytes in size that can be read from + * and written to or you will get an entropy source error! The default + * implementation will only use the first MBEDTLS_ENTROPY_BLOCK_SIZE + * bytes from the file. + * + * \note The entropy collector will write to the seed file before entropy is + * given to an external source, to update it. + */ +//#define MBEDTLS_ENTROPY_NV_SEED + +/** + * \def MBEDTLS_MEMORY_DEBUG + * + * Enable debugging of buffer allocator memory issues. Automatically prints + * (to stderr) all (fatal) messages on memory allocation issues. Enables + * function for 'debug output' of allocated memory. + * + * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C + * + * Uncomment this macro to let the buffer allocator print out error messages. + */ +//#define MBEDTLS_MEMORY_DEBUG + +/** + * \def MBEDTLS_MEMORY_BACKTRACE + * + * Include backtrace information with each allocated block. + * + * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C + * GLIBC-compatible backtrace() an backtrace_symbols() support + * + * Uncomment this macro to include backtrace information + */ +//#define MBEDTLS_MEMORY_BACKTRACE + +/** + * \def MBEDTLS_PK_RSA_ALT_SUPPORT + * + * Support external private RSA keys (eg from a HSM) in the PK layer. + * + * Comment this macro to disable support for external private RSA keys. + */ +#define MBEDTLS_PK_RSA_ALT_SUPPORT + +/** + * \def MBEDTLS_PKCS1_V15 + * + * Enable support for PKCS#1 v1.5 encoding. + * + * Requires: MBEDTLS_RSA_C + * + * This enables support for PKCS#1 v1.5 operations. + */ +#define MBEDTLS_PKCS1_V15 + +/** + * \def MBEDTLS_PKCS1_V21 + * + * Enable support for PKCS#1 v2.1 encoding. + * + * Requires: MBEDTLS_MD_C, MBEDTLS_RSA_C + * + * This enables support for RSAES-OAEP and RSASSA-PSS operations. + */ +#define MBEDTLS_PKCS1_V21 + +/** + * \def MBEDTLS_RSA_NO_CRT + * + * Do not use the Chinese Remainder Theorem for the RSA private operation. + * + * Uncomment this macro to disable the use of CRT in RSA. + * + */ +//#define MBEDTLS_RSA_NO_CRT + +/** + * \def MBEDTLS_SELF_TEST + * + * Enable the checkup functions (*_self_test). + */ +#define MBEDTLS_SELF_TEST + +/** + * \def MBEDTLS_SHA256_SMALLER + * + * Enable an implementation of SHA-256 that has lower ROM footprint but also + * lower performance. + * + * The default implementation is meant to be a reasonnable compromise between + * performance and size. This version optimizes more aggressively for size at + * the expense of performance. Eg on Cortex-M4 it reduces the size of + * mbedtls_sha256_process() from ~2KB to ~0.5KB for a performance hit of about + * 30%. + * + * Uncomment to enable the smaller implementation of SHA256. + */ +//#define MBEDTLS_SHA256_SMALLER + +/** + * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES + * + * Enable sending of alert messages in case of encountered errors as per RFC. + * If you choose not to send the alert messages, mbed TLS can still communicate + * with other servers, only debugging of failures is harder. + * + * The advantage of not sending alert messages, is that no information is given + * about reasons for failures thus preventing adversaries of gaining intel. + * + * Enable sending of all alert messages + */ +#define MBEDTLS_SSL_ALL_ALERT_MESSAGES + +/** + * \def MBEDTLS_SSL_DEBUG_ALL + * + * Enable the debug messages in SSL module for all issues. + * Debug messages have been disabled in some places to prevent timing + * attacks due to (unbalanced) debugging function calls. + * + * If you need all error reporting you should enable this during debugging, + * but remove this for production servers that should log as well. + * + * Uncomment this macro to report all debug messages on errors introducing + * a timing side-channel. + * + */ +//#define MBEDTLS_SSL_DEBUG_ALL + +/** \def MBEDTLS_SSL_ENCRYPT_THEN_MAC + * + * Enable support for Encrypt-then-MAC, RFC 7366. + * + * This allows peers that both support it to use a more robust protection for + * ciphersuites using CBC, providing deep resistance against timing attacks + * on the padding or underlying cipher. + * + * This only affects CBC ciphersuites, and is useless if none is defined. + * + * Requires: MBEDTLS_SSL_PROTO_TLS1 or + * MBEDTLS_SSL_PROTO_TLS1_1 or + * MBEDTLS_SSL_PROTO_TLS1_2 + * + * Comment this macro to disable support for Encrypt-then-MAC + */ +#define MBEDTLS_SSL_ENCRYPT_THEN_MAC + +/** \def MBEDTLS_SSL_EXTENDED_MASTER_SECRET + * + * Enable support for Extended Master Secret, aka Session Hash + * (draft-ietf-tls-session-hash-02). + * + * This was introduced as "the proper fix" to the Triple Handshake familiy of + * attacks, but it is recommended to always use it (even if you disable + * renegotiation), since it actually fixes a more fundamental issue in the + * original SSL/TLS design, and has implications beyond Triple Handshake. + * + * Requires: MBEDTLS_SSL_PROTO_TLS1 or + * MBEDTLS_SSL_PROTO_TLS1_1 or + * MBEDTLS_SSL_PROTO_TLS1_2 + * + * Comment this macro to disable support for Extended Master Secret. + */ +#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET + +/** + * \def MBEDTLS_SSL_FALLBACK_SCSV + * + * Enable support for FALLBACK_SCSV (draft-ietf-tls-downgrade-scsv-00). + * + * For servers, it is recommended to always enable this, unless you support + * only one version of TLS, or know for sure that none of your clients + * implements a fallback strategy. + * + * For clients, you only need this if you're using a fallback strategy, which + * is not recommended in the first place, unless you absolutely need it to + * interoperate with buggy (version-intolerant) servers. + * + * Comment this macro to disable support for FALLBACK_SCSV + */ +#define MBEDTLS_SSL_FALLBACK_SCSV + +/** + * \def MBEDTLS_SSL_HW_RECORD_ACCEL + * + * Enable hooking functions in SSL module for hardware acceleration of + * individual records. + * + * Uncomment this macro to enable hooking functions. + */ +//#define MBEDTLS_SSL_HW_RECORD_ACCEL + +/** + * \def MBEDTLS_SSL_CBC_RECORD_SPLITTING + * + * Enable 1/n-1 record splitting for CBC mode in SSLv3 and TLS 1.0. + * + * This is a countermeasure to the BEAST attack, which also minimizes the risk + * of interoperability issues compared to sending 0-length records. + * + * Comment this macro to disable 1/n-1 record splitting. + */ +#define MBEDTLS_SSL_CBC_RECORD_SPLITTING + +/** + * \def MBEDTLS_SSL_RENEGOTIATION + * + * Disable support for TLS renegotiation. + * + * The two main uses of renegotiation are (1) refresh keys on long-lived + * connections and (2) client authentication after the initial handshake. + * If you don't need renegotiation, it's probably better to disable it, since + * it has been associated with security issues in the past and is easy to + * misuse/misunderstand. + * + * Comment this to disable support for renegotiation. + */ +#define MBEDTLS_SSL_RENEGOTIATION + +/** + * \def MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO + * + * Enable support for receiving and parsing SSLv2 Client Hello messages for the + * SSL Server module (MBEDTLS_SSL_SRV_C). + * + * Uncomment this macro to enable support for SSLv2 Client Hello messages. + */ +//#define MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO + +/** + * \def MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE + * + * Pick the ciphersuite according to the client's preferences rather than ours + * in the SSL Server module (MBEDTLS_SSL_SRV_C). + * + * Uncomment this macro to respect client's ciphersuite order + */ +//#define MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE + +/** + * \def MBEDTLS_SSL_MAX_FRAGMENT_LENGTH + * + * Enable support for RFC 6066 max_fragment_length extension in SSL. + * + * Comment this macro to disable support for the max_fragment_length extension + */ +#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH + +/** + * \def MBEDTLS_SSL_PROTO_SSL3 + * + * Enable support for SSL 3.0. + * + * Requires: MBEDTLS_MD5_C + * MBEDTLS_SHA1_C + * + * Comment this macro to disable support for SSL 3.0 + */ +//#define MBEDTLS_SSL_PROTO_SSL3 + +/** + * \def MBEDTLS_SSL_PROTO_TLS1 + * + * Enable support for TLS 1.0. + * + * Requires: MBEDTLS_MD5_C + * MBEDTLS_SHA1_C + * + * Comment this macro to disable support for TLS 1.0 + */ +#define MBEDTLS_SSL_PROTO_TLS1 + +/** + * \def MBEDTLS_SSL_PROTO_TLS1_1 + * + * Enable support for TLS 1.1 (and DTLS 1.0 if DTLS is enabled). + * + * Requires: MBEDTLS_MD5_C + * MBEDTLS_SHA1_C + * + * Comment this macro to disable support for TLS 1.1 / DTLS 1.0 + */ +#define MBEDTLS_SSL_PROTO_TLS1_1 + +/** + * \def MBEDTLS_SSL_PROTO_TLS1_2 + * + * Enable support for TLS 1.2 (and DTLS 1.2 if DTLS is enabled). + * + * Requires: MBEDTLS_SHA1_C or MBEDTLS_SHA256_C or MBEDTLS_SHA512_C + * (Depends on ciphersuites) + * + * Comment this macro to disable support for TLS 1.2 / DTLS 1.2 + */ +#define MBEDTLS_SSL_PROTO_TLS1_2 + +/** + * \def MBEDTLS_SSL_PROTO_DTLS + * + * Enable support for DTLS (all available versions). + * + * Enable this and MBEDTLS_SSL_PROTO_TLS1_1 to enable DTLS 1.0, + * and/or this and MBEDTLS_SSL_PROTO_TLS1_2 to enable DTLS 1.2. + * + * Requires: MBEDTLS_SSL_PROTO_TLS1_1 + * or MBEDTLS_SSL_PROTO_TLS1_2 + * + * Comment this macro to disable support for DTLS + */ +#define MBEDTLS_SSL_PROTO_DTLS + +/** + * \def MBEDTLS_SSL_ALPN + * + * Enable support for RFC 7301 Application Layer Protocol Negotiation. + * + * Comment this macro to disable support for ALPN. + */ +#define MBEDTLS_SSL_ALPN + +/** + * \def MBEDTLS_SSL_DTLS_ANTI_REPLAY + * + * Enable support for the anti-replay mechanism in DTLS. + * + * Requires: MBEDTLS_SSL_TLS_C + * MBEDTLS_SSL_PROTO_DTLS + * + * \warning Disabling this is often a security risk! + * See mbedtls_ssl_conf_dtls_anti_replay() for details. + * + * Comment this to disable anti-replay in DTLS. + */ +#define MBEDTLS_SSL_DTLS_ANTI_REPLAY + +/** + * \def MBEDTLS_SSL_DTLS_HELLO_VERIFY + * + * Enable support for HelloVerifyRequest on DTLS servers. + * + * This feature is highly recommended to prevent DTLS servers being used as + * amplifiers in DoS attacks against other hosts. It should always be enabled + * unless you know for sure amplification cannot be a problem in the + * environment in which your server operates. + * + * \warning Disabling this can ba a security risk! (see above) + * + * Requires: MBEDTLS_SSL_PROTO_DTLS + * + * Comment this to disable support for HelloVerifyRequest. + */ +#define MBEDTLS_SSL_DTLS_HELLO_VERIFY + +/** + * \def MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE + * + * Enable server-side support for clients that reconnect from the same port. + * + * Some clients unexpectedly close the connection and try to reconnect using the + * same source port. This needs special support from the server to handle the + * new connection securely, as described in section 4.2.8 of RFC 6347. This + * flag enables that support. + * + * Requires: MBEDTLS_SSL_DTLS_HELLO_VERIFY + * + * Comment this to disable support for clients reusing the source port. + */ +#define MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE + +/** + * \def MBEDTLS_SSL_DTLS_BADMAC_LIMIT + * + * Enable support for a limit of records with bad MAC. + * + * See mbedtls_ssl_conf_dtls_badmac_limit(). + * + * Requires: MBEDTLS_SSL_PROTO_DTLS + */ +#define MBEDTLS_SSL_DTLS_BADMAC_LIMIT + +/** + * \def MBEDTLS_SSL_SESSION_TICKETS + * + * Enable support for RFC 5077 session tickets in SSL. + * Client-side, provides full support for session tickets (maintainance of a + * session store remains the responsibility of the application, though). + * Server-side, you also need to provide callbacks for writing and parsing + * tickets, including authenticated encryption and key management. Example + * callbacks are provided by MBEDTLS_SSL_TICKET_C. + * + * Comment this macro to disable support for SSL session tickets + */ +#define MBEDTLS_SSL_SESSION_TICKETS + +/** + * \def MBEDTLS_SSL_EXPORT_KEYS + * + * Enable support for exporting key block and master secret. + * This is required for certain users of TLS, e.g. EAP-TLS. + * + * Comment this macro to disable support for key export + */ +#define MBEDTLS_SSL_EXPORT_KEYS + +/** + * \def MBEDTLS_SSL_SERVER_NAME_INDICATION + * + * Enable support for RFC 6066 server name indication (SNI) in SSL. + * + * Requires: MBEDTLS_X509_CRT_PARSE_C + * + * Comment this macro to disable support for server name indication in SSL + */ +#define MBEDTLS_SSL_SERVER_NAME_INDICATION + +/** + * \def MBEDTLS_SSL_TRUNCATED_HMAC + * + * Enable support for RFC 6066 truncated HMAC in SSL. + * + * Comment this macro to disable support for truncated HMAC in SSL + */ +#define MBEDTLS_SSL_TRUNCATED_HMAC + +/** + * \def MBEDTLS_THREADING_ALT + * + * Provide your own alternate threading implementation. + * + * Requires: MBEDTLS_THREADING_C + * + * Uncomment this to allow your own alternate threading implementation. + */ +//#define MBEDTLS_THREADING_ALT + +/** + * \def MBEDTLS_THREADING_PTHREAD + * + * Enable the pthread wrapper layer for the threading layer. + * + * Requires: MBEDTLS_THREADING_C + * + * Uncomment this to enable pthread mutexes. + */ +//#define MBEDTLS_THREADING_PTHREAD + +/** + * \def MBEDTLS_VERSION_FEATURES + * + * Allow run-time checking of compile-time enabled features. Thus allowing users + * to check at run-time if the library is for instance compiled with threading + * support via mbedtls_version_check_feature(). + * + * Requires: MBEDTLS_VERSION_C + * + * Comment this to disable run-time checking and save ROM space + */ +#define MBEDTLS_VERSION_FEATURES + +/** + * \def MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 + * + * If set, the X509 parser will not break-off when parsing an X509 certificate + * and encountering an extension in a v1 or v2 certificate. + * + * Uncomment to prevent an error. + */ +//#define MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 + +/** + * \def MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION + * + * If set, the X509 parser will not break-off when parsing an X509 certificate + * and encountering an unknown critical extension. + * + * \warning Depending on your PKI use, enabling this can be a security risk! + * + * Uncomment to prevent an error. + */ +//#define MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION + +/** + * \def MBEDTLS_X509_CHECK_KEY_USAGE + * + * Enable verification of the keyUsage extension (CA and leaf certificates). + * + * Disabling this avoids problems with mis-issued and/or misused + * (intermediate) CA and leaf certificates. + * + * \warning Depending on your PKI use, disabling this can be a security risk! + * + * Comment to skip keyUsage checking for both CA and leaf certificates. + */ +#define MBEDTLS_X509_CHECK_KEY_USAGE + +/** + * \def MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE + * + * Enable verification of the extendedKeyUsage extension (leaf certificates). + * + * Disabling this avoids problems with mis-issued and/or misused certificates. + * + * \warning Depending on your PKI use, disabling this can be a security risk! + * + * Comment to skip extendedKeyUsage checking for certificates. + */ +#define MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE + +/** + * \def MBEDTLS_X509_RSASSA_PSS_SUPPORT + * + * Enable parsing and verification of X.509 certificates, CRLs and CSRS + * signed with RSASSA-PSS (aka PKCS#1 v2.1). + * + * Comment this macro to disallow using RSASSA-PSS in certificates. + */ +#define MBEDTLS_X509_RSASSA_PSS_SUPPORT + +/** + * \def MBEDTLS_ZLIB_SUPPORT + * + * If set, the SSL/TLS module uses ZLIB to support compression and + * decompression of packet data. + * + * \warning TLS-level compression MAY REDUCE SECURITY! See for example the + * CRIME attack. Before enabling this option, you should examine with care if + * CRIME or similar exploits may be a applicable to your use case. + * + * \note Currently compression can't be used with DTLS. + * + * Used in: library/ssl_tls.c + * library/ssl_cli.c + * library/ssl_srv.c + * + * This feature requires zlib library and headers to be present. + * + * Uncomment to enable use of ZLIB + */ +//#define MBEDTLS_ZLIB_SUPPORT +/* \} name SECTION: mbed TLS feature support */ + +/** + * \name SECTION: mbed TLS modules + * + * This section enables or disables entire modules in mbed TLS + * \{ + */ + +/** + * \def MBEDTLS_AESNI_C + * + * Enable AES-NI support on x86-64. + * + * Module: library/aesni.c + * Caller: library/aes.c + * + * Requires: MBEDTLS_HAVE_ASM + * + * This modules adds support for the AES-NI instructions on x86-64 + */ +#define MBEDTLS_AESNI_C + +/** + * \def MBEDTLS_AES_C + * + * Enable the AES block cipher. + * + * Module: library/aes.c + * Caller: library/ssl_tls.c + * library/pem.c + * library/ctr_drbg.c + * + * This module enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256 + * MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA + * MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384 + * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384 + * MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA + * MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256 + * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256 + * MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA + * + * PEM_PARSE uses AES for decrypting encrypted keys. + */ +#define MBEDTLS_AES_C + +/** + * \def MBEDTLS_ARC4_C + * + * Enable the ARCFOUR stream cipher. + * + * Module: library/arc4.c + * Caller: library/ssl_tls.c + * + * This module enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA + * MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA + * MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA + * MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA + * MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA + * MBEDTLS_TLS_RSA_WITH_RC4_128_SHA + * MBEDTLS_TLS_RSA_WITH_RC4_128_MD5 + * MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA + * MBEDTLS_TLS_PSK_WITH_RC4_128_SHA + */ +#define MBEDTLS_ARC4_C + +/** + * \def MBEDTLS_ASN1_PARSE_C + * + * Enable the generic ASN1 parser. + * + * Module: library/asn1.c + * Caller: library/x509.c + * library/dhm.c + * library/pkcs12.c + * library/pkcs5.c + * library/pkparse.c + */ +#define MBEDTLS_ASN1_PARSE_C + +/** + * \def MBEDTLS_ASN1_WRITE_C + * + * Enable the generic ASN1 writer. + * + * Module: library/asn1write.c + * Caller: library/ecdsa.c + * library/pkwrite.c + * library/x509_create.c + * library/x509write_crt.c + * library/x509write_csr.c + */ +#define MBEDTLS_ASN1_WRITE_C + +/** + * \def MBEDTLS_BASE64_C + * + * Enable the Base64 module. + * + * Module: library/base64.c + * Caller: library/pem.c + * + * This module is required for PEM support (required by X.509). + */ +#define MBEDTLS_BASE64_C + +/** + * \def MBEDTLS_BIGNUM_C + * + * Enable the multi-precision integer library. + * + * Module: library/bignum.c + * Caller: library/dhm.c + * library/ecp.c + * library/ecdsa.c + * library/rsa.c + * library/ssl_tls.c + * + * This module is required for RSA, DHM and ECC (ECDH, ECDSA) support. + */ +#define MBEDTLS_BIGNUM_C + +/** + * \def MBEDTLS_BLOWFISH_C + * + * Enable the Blowfish block cipher. + * + * Module: library/blowfish.c + */ +#define MBEDTLS_BLOWFISH_C + +/** + * \def MBEDTLS_CAMELLIA_C + * + * Enable the Camellia block cipher. + * + * Module: library/camellia.c + * Caller: library/ssl_tls.c + * + * This module enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA + * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA + * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 + * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 + * MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 + * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 + * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 + */ +#define MBEDTLS_CAMELLIA_C + +/** + * \def MBEDTLS_CCM_C + * + * Enable the Counter with CBC-MAC (CCM) mode for 128-bit block cipher. + * + * Module: library/ccm.c + * + * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C + * + * This module enables the AES-CCM ciphersuites, if other requisites are + * enabled as well. + */ +#define MBEDTLS_CCM_C + +/** + * \def MBEDTLS_CERTS_C + * + * Enable the test certificates. + * + * Module: library/certs.c + * Caller: + * + * This module is used for testing (ssl_client/server). + */ +#define MBEDTLS_CERTS_C + +/** + * \def MBEDTLS_CIPHER_C + * + * Enable the generic cipher layer. + * + * Module: library/cipher.c + * Caller: library/ssl_tls.c + * + * Uncomment to enable generic cipher wrappers. + */ +#define MBEDTLS_CIPHER_C + +/** + * \def MBEDTLS_CMAC_C + * + * Enable the CMAC (Cipher-based Message Authentication Code) mode for block + * ciphers. + * + * Module: library/cmac.c + * + * Requires: MBEDTLS_AES_C or MBEDTLS_DES_C + * + */ +//#define MBEDTLS_CMAC_C + +/** + * \def MBEDTLS_CTR_DRBG_C + * + * Enable the CTR_DRBG AES-256-based random generator. + * + * Module: library/ctr_drbg.c + * Caller: + * + * Requires: MBEDTLS_AES_C + * + * This module provides the CTR_DRBG AES-256 random number generator. + */ +#define MBEDTLS_CTR_DRBG_C + +/** + * \def MBEDTLS_DEBUG_C + * + * Enable the debug functions. + * + * Module: library/debug.c + * Caller: library/ssl_cli.c + * library/ssl_srv.c + * library/ssl_tls.c + * + * This module provides debugging functions. + */ +#define MBEDTLS_DEBUG_C + +/** + * \def MBEDTLS_DES_C + * + * Enable the DES block cipher. + * + * Module: library/des.c + * Caller: library/pem.c + * library/ssl_tls.c + * + * This module enables the following ciphersuites (if other requisites are + * enabled as well): + * MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA + * MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA + * + * PEM_PARSE uses DES/3DES for decrypting encrypted keys. + */ +#define MBEDTLS_DES_C + +/** + * \def MBEDTLS_DHM_C + * + * Enable the Diffie-Hellman-Merkle module. + * + * Module: library/dhm.c + * Caller: library/ssl_cli.c + * library/ssl_srv.c + * + * This module is used by the following key exchanges: + * DHE-RSA, DHE-PSK + */ +#define MBEDTLS_DHM_C + +/** + * \def MBEDTLS_ECDH_C + * + * Enable the elliptic curve Diffie-Hellman library. + * + * Module: library/ecdh.c + * Caller: library/ssl_cli.c + * library/ssl_srv.c + * + * This module is used by the following key exchanges: + * ECDHE-ECDSA, ECDHE-RSA, DHE-PSK + * + * Requires: MBEDTLS_ECP_C + */ +#define MBEDTLS_ECDH_C + +/** + * \def MBEDTLS_ECDSA_C + * + * Enable the elliptic curve DSA library. + * + * Module: library/ecdsa.c + * Caller: + * + * This module is used by the following key exchanges: + * ECDHE-ECDSA + * + * Requires: MBEDTLS_ECP_C, MBEDTLS_ASN1_WRITE_C, MBEDTLS_ASN1_PARSE_C + */ +#define MBEDTLS_ECDSA_C + +/** + * \def MBEDTLS_ECJPAKE_C + * + * Enable the elliptic curve J-PAKE library. + * + * \warning This is currently experimental. EC J-PAKE support is based on the + * Thread v1.0.0 specification; incompatible changes to the specification + * might still happen. For this reason, this is disabled by default. + * + * Module: library/ecjpake.c + * Caller: + * + * This module is used by the following key exchanges: + * ECJPAKE + * + * Requires: MBEDTLS_ECP_C, MBEDTLS_MD_C + */ +//#define MBEDTLS_ECJPAKE_C + +/** + * \def MBEDTLS_ECP_C + * + * Enable the elliptic curve over GF(p) library. + * + * Module: library/ecp.c + * Caller: library/ecdh.c + * library/ecdsa.c + * library/ecjpake.c + * + * Requires: MBEDTLS_BIGNUM_C and at least one MBEDTLS_ECP_DP_XXX_ENABLED + */ +#define MBEDTLS_ECP_C + +/** + * \def MBEDTLS_ENTROPY_C + * + * Enable the platform-specific entropy code. + * + * Module: library/entropy.c + * Caller: + * + * Requires: MBEDTLS_SHA512_C or MBEDTLS_SHA256_C + * + * This module provides a generic entropy pool + */ +#define MBEDTLS_ENTROPY_C + +/** + * \def MBEDTLS_ERROR_C + * + * Enable error code to error string conversion. + * + * Module: library/error.c + * Caller: + * + * This module enables mbedtls_strerror(). + */ +#define MBEDTLS_ERROR_C + +/** + * \def MBEDTLS_GCM_C + * + * Enable the Galois/Counter Mode (GCM) for AES. + * + * Module: library/gcm.c + * + * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C + * + * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other + * requisites are enabled as well. + */ +#define MBEDTLS_GCM_C + +/** + * \def MBEDTLS_HAVEGE_C + * + * Enable the HAVEGE random generator. + * + * Warning: the HAVEGE random generator is not suitable for virtualized + * environments + * + * Warning: the HAVEGE random generator is dependent on timing and specific + * processor traits. It is therefore not advised to use HAVEGE as + * your applications primary random generator or primary entropy pool + * input. As a secondary input to your entropy pool, it IS able add + * the (limited) extra entropy it provides. + * + * Module: library/havege.c + * Caller: + * + * Requires: MBEDTLS_TIMING_C + * + * Uncomment to enable the HAVEGE random generator. + */ +//#define MBEDTLS_HAVEGE_C + +/** + * \def MBEDTLS_HMAC_DRBG_C + * + * Enable the HMAC_DRBG random generator. + * + * Module: library/hmac_drbg.c + * Caller: + * + * Requires: MBEDTLS_MD_C + * + * Uncomment to enable the HMAC_DRBG random number geerator. + */ +#define MBEDTLS_HMAC_DRBG_C + +/** + * \def MBEDTLS_MD_C + * + * Enable the generic message digest layer. + * + * Module: library/md.c + * Caller: + * + * Uncomment to enable generic message digest wrappers. + */ +#define MBEDTLS_MD_C + +/** + * \def MBEDTLS_MD2_C + * + * Enable the MD2 hash algorithm. + * + * Module: library/md2.c + * Caller: + * + * Uncomment to enable support for (rare) MD2-signed X.509 certs. + */ +//#define MBEDTLS_MD2_C + +/** + * \def MBEDTLS_MD4_C + * + * Enable the MD4 hash algorithm. + * + * Module: library/md4.c + * Caller: + * + * Uncomment to enable support for (rare) MD4-signed X.509 certs. + */ +//#define MBEDTLS_MD4_C + +/** + * \def MBEDTLS_MD5_C + * + * Enable the MD5 hash algorithm. + * + * Module: library/md5.c + * Caller: library/md.c + * library/pem.c + * library/ssl_tls.c + * + * This module is required for SSL/TLS and X.509. + * PEM_PARSE uses MD5 for decrypting encrypted keys. + */ +#define MBEDTLS_MD5_C + +/** + * \def MBEDTLS_MEMORY_BUFFER_ALLOC_C + * + * Enable the buffer allocator implementation that makes use of a (stack) + * based buffer to 'allocate' dynamic memory. (replaces calloc() and free() + * calls) + * + * Module: library/memory_buffer_alloc.c + * + * Requires: MBEDTLS_PLATFORM_C + * MBEDTLS_PLATFORM_MEMORY (to use it within mbed TLS) + * + * Enable this module to enable the buffer memory allocator. + */ +//#define MBEDTLS_MEMORY_BUFFER_ALLOC_C + +/** + * \def MBEDTLS_NET_C + * + * Enable the TCP and UDP over IPv6/IPv4 networking routines. + * + * \note This module only works on POSIX/Unix (including Linux, BSD and OS X) + * and Windows. For other platforms, you'll want to disable it, and write your + * own networking callbacks to be passed to \c mbedtls_ssl_set_bio(). + * + * \note See also our Knowledge Base article about porting to a new + * environment: + * https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS + * + * Module: library/net_sockets.c + * + * This module provides networking routines. + */ +#define MBEDTLS_NET_C + +/** + * \def MBEDTLS_OID_C + * + * Enable the OID database. + * + * Module: library/oid.c + * Caller: library/asn1write.c + * library/pkcs5.c + * library/pkparse.c + * library/pkwrite.c + * library/rsa.c + * library/x509.c + * library/x509_create.c + * library/x509_crl.c + * library/x509_crt.c + * library/x509_csr.c + * library/x509write_crt.c + * library/x509write_csr.c + * + * This modules translates between OIDs and internal values. + */ +#define MBEDTLS_OID_C + +/** + * \def MBEDTLS_PADLOCK_C + * + * Enable VIA Padlock support on x86. + * + * Module: library/padlock.c + * Caller: library/aes.c + * + * Requires: MBEDTLS_HAVE_ASM + * + * This modules adds support for the VIA PadLock on x86. + */ +#define MBEDTLS_PADLOCK_C + +/** + * \def MBEDTLS_PEM_PARSE_C + * + * Enable PEM decoding / parsing. + * + * Module: library/pem.c + * Caller: library/dhm.c + * library/pkparse.c + * library/x509_crl.c + * library/x509_crt.c + * library/x509_csr.c + * + * Requires: MBEDTLS_BASE64_C + * + * This modules adds support for decoding / parsing PEM files. + */ +#define MBEDTLS_PEM_PARSE_C + +/** + * \def MBEDTLS_PEM_WRITE_C + * + * Enable PEM encoding / writing. + * + * Module: library/pem.c + * Caller: library/pkwrite.c + * library/x509write_crt.c + * library/x509write_csr.c + * + * Requires: MBEDTLS_BASE64_C + * + * This modules adds support for encoding / writing PEM files. + */ +#define MBEDTLS_PEM_WRITE_C + +/** + * \def MBEDTLS_PK_C + * + * Enable the generic public (asymetric) key layer. + * + * Module: library/pk.c + * Caller: library/ssl_tls.c + * library/ssl_cli.c + * library/ssl_srv.c + * + * Requires: MBEDTLS_RSA_C or MBEDTLS_ECP_C + * + * Uncomment to enable generic public key wrappers. + */ +#define MBEDTLS_PK_C + +/** + * \def MBEDTLS_PK_PARSE_C + * + * Enable the generic public (asymetric) key parser. + * + * Module: library/pkparse.c + * Caller: library/x509_crt.c + * library/x509_csr.c + * + * Requires: MBEDTLS_PK_C + * + * Uncomment to enable generic public key parse functions. + */ +#define MBEDTLS_PK_PARSE_C + +/** + * \def MBEDTLS_PK_WRITE_C + * + * Enable the generic public (asymetric) key writer. + * + * Module: library/pkwrite.c + * Caller: library/x509write.c + * + * Requires: MBEDTLS_PK_C + * + * Uncomment to enable generic public key write functions. + */ +#define MBEDTLS_PK_WRITE_C + +/** + * \def MBEDTLS_PKCS5_C + * + * Enable PKCS#5 functions. + * + * Module: library/pkcs5.c + * + * Requires: MBEDTLS_MD_C + * + * This module adds support for the PKCS#5 functions. + */ +#define MBEDTLS_PKCS5_C + +/** + * \def MBEDTLS_PKCS11_C + * + * Enable wrapper for PKCS#11 smartcard support. + * + * Module: library/pkcs11.c + * Caller: library/pk.c + * + * Requires: MBEDTLS_PK_C + * + * This module enables SSL/TLS PKCS #11 smartcard support. + * Requires the presence of the PKCS#11 helper library (libpkcs11-helper) + */ +//#define MBEDTLS_PKCS11_C + +/** + * \def MBEDTLS_PKCS12_C + * + * Enable PKCS#12 PBE functions. + * Adds algorithms for parsing PKCS#8 encrypted private keys + * + * Module: library/pkcs12.c + * Caller: library/pkparse.c + * + * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_CIPHER_C, MBEDTLS_MD_C + * Can use: MBEDTLS_ARC4_C + * + * This module enables PKCS#12 functions. + */ +#define MBEDTLS_PKCS12_C + +/** + * \def MBEDTLS_PLATFORM_C + * + * Enable the platform abstraction layer that allows you to re-assign + * functions like calloc(), free(), snprintf(), printf(), fprintf(), exit(). + * + * Enabling MBEDTLS_PLATFORM_C enables to use of MBEDTLS_PLATFORM_XXX_ALT + * or MBEDTLS_PLATFORM_XXX_MACRO directives, allowing the functions mentioned + * above to be specified at runtime or compile time respectively. + * + * \note This abstraction layer must be enabled on Windows (including MSYS2) + * as other module rely on it for a fixed snprintf implementation. + * + * Module: library/platform.c + * Caller: Most other .c files + * + * This module enables abstraction of common (libc) functions. + */ +#define MBEDTLS_PLATFORM_C + +/** + * \def MBEDTLS_RIPEMD160_C + * + * Enable the RIPEMD-160 hash algorithm. + * + * Module: library/ripemd160.c + * Caller: library/md.c + * + */ +#define MBEDTLS_RIPEMD160_C + +/** + * \def MBEDTLS_RSA_C + * + * Enable the RSA public-key cryptosystem. + * + * Module: library/rsa.c + * Caller: library/ssl_cli.c + * library/ssl_srv.c + * library/ssl_tls.c + * library/x509.c + * + * This module is used by the following key exchanges: + * RSA, DHE-RSA, ECDHE-RSA, RSA-PSK + * + * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C + */ +#define MBEDTLS_RSA_C + +/** + * \def MBEDTLS_SHA1_C + * + * Enable the SHA1 cryptographic hash algorithm. + * + * Module: library/sha1.c + * Caller: library/md.c + * library/ssl_cli.c + * library/ssl_srv.c + * library/ssl_tls.c + * library/x509write_crt.c + * + * This module is required for SSL/TLS and SHA1-signed certificates. + */ +#define MBEDTLS_SHA1_C + +/** + * \def MBEDTLS_SHA256_C + * + * Enable the SHA-224 and SHA-256 cryptographic hash algorithms. + * + * Module: library/sha256.c + * Caller: library/entropy.c + * library/md.c + * library/ssl_cli.c + * library/ssl_srv.c + * library/ssl_tls.c + * + * This module adds support for SHA-224 and SHA-256. + * This module is required for the SSL/TLS 1.2 PRF function. + */ +#define MBEDTLS_SHA256_C + +/** + * \def MBEDTLS_SHA512_C + * + * Enable the SHA-384 and SHA-512 cryptographic hash algorithms. + * + * Module: library/sha512.c + * Caller: library/entropy.c + * library/md.c + * library/ssl_cli.c + * library/ssl_srv.c + * + * This module adds support for SHA-384 and SHA-512. + */ +#define MBEDTLS_SHA512_C + +/** + * \def MBEDTLS_SSL_CACHE_C + * + * Enable simple SSL cache implementation. + * + * Module: library/ssl_cache.c + * Caller: + * + * Requires: MBEDTLS_SSL_CACHE_C + */ +#define MBEDTLS_SSL_CACHE_C + +/** + * \def MBEDTLS_SSL_COOKIE_C + * + * Enable basic implementation of DTLS cookies for hello verification. + * + * Module: library/ssl_cookie.c + * Caller: + */ +#define MBEDTLS_SSL_COOKIE_C + +/** + * \def MBEDTLS_SSL_TICKET_C + * + * Enable an implementation of TLS server-side callbacks for session tickets. + * + * Module: library/ssl_ticket.c + * Caller: + * + * Requires: MBEDTLS_CIPHER_C + */ +#define MBEDTLS_SSL_TICKET_C + +/** + * \def MBEDTLS_SSL_CLI_C + * + * Enable the SSL/TLS client code. + * + * Module: library/ssl_cli.c + * Caller: + * + * Requires: MBEDTLS_SSL_TLS_C + * + * This module is required for SSL/TLS client support. + */ +#define MBEDTLS_SSL_CLI_C + +/** + * \def MBEDTLS_SSL_SRV_C + * + * Enable the SSL/TLS server code. + * + * Module: library/ssl_srv.c + * Caller: + * + * Requires: MBEDTLS_SSL_TLS_C + * + * This module is required for SSL/TLS server support. + */ +#define MBEDTLS_SSL_SRV_C + +/** + * \def MBEDTLS_SSL_TLS_C + * + * Enable the generic SSL/TLS code. + * + * Module: library/ssl_tls.c + * Caller: library/ssl_cli.c + * library/ssl_srv.c + * + * Requires: MBEDTLS_CIPHER_C, MBEDTLS_MD_C + * and at least one of the MBEDTLS_SSL_PROTO_XXX defines + * + * This module is required for SSL/TLS. + */ +#define MBEDTLS_SSL_TLS_C + +/** + * \def MBEDTLS_THREADING_C + * + * Enable the threading abstraction layer. + * By default mbed TLS assumes it is used in a non-threaded environment or that + * contexts are not shared between threads. If you do intend to use contexts + * between threads, you will need to enable this layer to prevent race + * conditions. See also our Knowledge Base article about threading: + * https://tls.mbed.org/kb/development/thread-safety-and-multi-threading + * + * Module: library/threading.c + * + * This allows different threading implementations (self-implemented or + * provided). + * + * You will have to enable either MBEDTLS_THREADING_ALT or + * MBEDTLS_THREADING_PTHREAD. + * + * Enable this layer to allow use of mutexes within mbed TLS + */ +//#define MBEDTLS_THREADING_C + +/** + * \def MBEDTLS_TIMING_C + * + * Enable the semi-portable timing interface. + * + * \note The provided implementation only works on POSIX/Unix (including Linux, + * BSD and OS X) and Windows. On other platforms, you can either disable that + * module and provide your own implementations of the callbacks needed by + * \c mbedtls_ssl_set_timer_cb() for DTLS, or leave it enabled and provide + * your own implementation of the whole module by setting + * \c MBEDTLS_TIMING_ALT in the current file. + * + * \note See also our Knowledge Base article about porting to a new + * environment: + * https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS + * + * Module: library/timing.c + * Caller: library/havege.c + * + * This module is used by the HAVEGE random number generator. + */ +#define MBEDTLS_TIMING_C + +/** + * \def MBEDTLS_VERSION_C + * + * Enable run-time version information. + * + * Module: library/version.c + * + * This module provides run-time version information. + */ +#define MBEDTLS_VERSION_C + +/** + * \def MBEDTLS_X509_USE_C + * + * Enable X.509 core for using certificates. + * + * Module: library/x509.c + * Caller: library/x509_crl.c + * library/x509_crt.c + * library/x509_csr.c + * + * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, + * MBEDTLS_PK_PARSE_C + * + * This module is required for the X.509 parsing modules. + */ +#define MBEDTLS_X509_USE_C + +/** + * \def MBEDTLS_X509_CRT_PARSE_C + * + * Enable X.509 certificate parsing. + * + * Module: library/x509_crt.c + * Caller: library/ssl_cli.c + * library/ssl_srv.c + * library/ssl_tls.c + * + * Requires: MBEDTLS_X509_USE_C + * + * This module is required for X.509 certificate parsing. + */ +#define MBEDTLS_X509_CRT_PARSE_C + +/** + * \def MBEDTLS_X509_CRL_PARSE_C + * + * Enable X.509 CRL parsing. + * + * Module: library/x509_crl.c + * Caller: library/x509_crt.c + * + * Requires: MBEDTLS_X509_USE_C + * + * This module is required for X.509 CRL parsing. + */ +#define MBEDTLS_X509_CRL_PARSE_C + +/** + * \def MBEDTLS_X509_CSR_PARSE_C + * + * Enable X.509 Certificate Signing Request (CSR) parsing. + * + * Module: library/x509_csr.c + * Caller: library/x509_crt_write.c + * + * Requires: MBEDTLS_X509_USE_C + * + * This module is used for reading X.509 certificate request. + */ +#define MBEDTLS_X509_CSR_PARSE_C + +/** + * \def MBEDTLS_X509_CREATE_C + * + * Enable X.509 core for creating certificates. + * + * Module: library/x509_create.c + * + * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, MBEDTLS_PK_WRITE_C + * + * This module is the basis for creating X.509 certificates and CSRs. + */ +#define MBEDTLS_X509_CREATE_C + +/** + * \def MBEDTLS_X509_CRT_WRITE_C + * + * Enable creating X.509 certificates. + * + * Module: library/x509_crt_write.c + * + * Requires: MBEDTLS_X509_CREATE_C + * + * This module is required for X.509 certificate creation. + */ +#define MBEDTLS_X509_CRT_WRITE_C + +/** + * \def MBEDTLS_X509_CSR_WRITE_C + * + * Enable creating X.509 Certificate Signing Requests (CSR). + * + * Module: library/x509_csr_write.c + * + * Requires: MBEDTLS_X509_CREATE_C + * + * This module is required for X.509 certificate request writing. + */ +#define MBEDTLS_X509_CSR_WRITE_C + +/** + * \def MBEDTLS_XTEA_C + * + * Enable the XTEA block cipher. + * + * Module: library/xtea.c + * Caller: + */ +#define MBEDTLS_XTEA_C + +/* \} name SECTION: mbed TLS modules */ + +/** + * \name SECTION: Module configuration options + * + * This section allows for the setting of module specific sizes and + * configuration options. The default values are already present in the + * relevant header files and should suffice for the regular use cases. + * + * Our advice is to enable options and change their values here + * only if you have a good reason and know the consequences. + * + * Please check the respective header file for documentation on these + * parameters (to prevent duplicate documentation). + * \{ + */ + +/* MPI / BIGNUM options */ +//#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */ +//#define MBEDTLS_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */ + +/* CTR_DRBG options */ +//#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */ +//#define MBEDTLS_CTR_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ +//#define MBEDTLS_CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ +//#define MBEDTLS_CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ +//#define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ + +/* HMAC_DRBG options */ +//#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ +//#define MBEDTLS_HMAC_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ +//#define MBEDTLS_HMAC_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ +//#define MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ + +/* ECP options */ +//#define MBEDTLS_ECP_MAX_BITS 521 /**< Maximum bit size of groups */ +//#define MBEDTLS_ECP_WINDOW_SIZE 6 /**< Maximum window size used */ +//#define MBEDTLS_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */ + +/* Entropy options */ +//#define MBEDTLS_ENTROPY_MAX_SOURCES 20 /**< Maximum number of sources supported */ +//#define MBEDTLS_ENTROPY_MAX_GATHER 128 /**< Maximum amount requested from entropy sources */ +//#define MBEDTLS_ENTROPY_MIN_HARDWARE 32 /**< Default minimum number of bytes required for the hardware entropy source mbedtls_hardware_poll() before entropy is released */ + +/* Memory buffer allocator options */ +//#define MBEDTLS_MEMORY_ALIGN_MULTIPLE 4 /**< Align on multiples of this value */ + +/* Platform options */ +//#define MBEDTLS_PLATFORM_STD_MEM_HDR /**< Header to include if MBEDTLS_PLATFORM_NO_STD_FUNCTIONS is defined. Don't define if no header is needed. */ +//#define MBEDTLS_PLATFORM_STD_CALLOC calloc /**< Default allocator to use, can be undefined */ +//#define MBEDTLS_PLATFORM_STD_FREE free /**< Default free to use, can be undefined */ +//#define MBEDTLS_PLATFORM_STD_EXIT exit /**< Default exit to use, can be undefined */ +//#define MBEDTLS_PLATFORM_STD_TIME time /**< Default time to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */ +//#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use, can be undefined */ +//#define MBEDTLS_PLATFORM_STD_PRINTF printf /**< Default printf to use, can be undefined */ +/* Note: your snprintf must correclty zero-terminate the buffer! */ +//#define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf /**< Default snprintf to use, can be undefined */ +//#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS 0 /**< Default exit value to use, can be undefined */ +//#define MBEDTLS_PLATFORM_STD_EXIT_FAILURE 1 /**< Default exit value to use, can be undefined */ +//#define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be undefined */ +//#define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function to use, can be undefined */ +//#define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile" /**< Seed file to read/write with default implementation */ + +/* To Use Function Macros MBEDTLS_PLATFORM_C must be enabled */ +/* MBEDTLS_PLATFORM_XXX_MACRO and MBEDTLS_PLATFORM_XXX_ALT cannot both be defined */ +//#define MBEDTLS_PLATFORM_CALLOC_MACRO calloc /**< Default allocator macro to use, can be undefined */ +//#define MBEDTLS_PLATFORM_FREE_MACRO free /**< Default free macro to use, can be undefined */ +//#define MBEDTLS_PLATFORM_EXIT_MACRO exit /**< Default exit macro to use, can be undefined */ +//#define MBEDTLS_PLATFORM_TIME_MACRO time /**< Default time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */ +//#define MBEDTLS_PLATFORM_TIME_TYPE_MACRO time_t /**< Default time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */ +//#define MBEDTLS_PLATFORM_FPRINTF_MACRO fprintf /**< Default fprintf macro to use, can be undefined */ +//#define MBEDTLS_PLATFORM_PRINTF_MACRO printf /**< Default printf macro to use, can be undefined */ +/* Note: your snprintf must correclty zero-terminate the buffer! */ +//#define MBEDTLS_PLATFORM_SNPRINTF_MACRO snprintf /**< Default snprintf macro to use, can be undefined */ +//#define MBEDTLS_PLATFORM_NV_SEED_READ_MACRO mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be undefined */ +//#define MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function to use, can be undefined */ + +/* SSL Cache options */ +//#define MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT 86400 /**< 1 day */ +//#define MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /**< Maximum entries in cache */ + +/* SSL options */ +//#define MBEDTLS_SSL_MAX_CONTENT_LEN 16384 /**< Maxium fragment length in bytes, determines the size of each of the two internal I/O buffers */ +//#define MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME 86400 /**< Lifetime of session tickets (if enabled) */ +//#define MBEDTLS_PSK_MAX_LEN 32 /**< Max size of TLS pre-shared keys, in bytes (default 256 bits) */ +//#define MBEDTLS_SSL_COOKIE_TIMEOUT 60 /**< Default expiration delay of DTLS cookies, in seconds if HAVE_TIME, or in number of cookies issued */ + +/** + * Complete list of ciphersuites to use, in order of preference. + * + * \warning No dependency checking is done on that field! This option can only + * be used to restrict the set of available ciphersuites. It is your + * responsibility to make sure the needed modules are active. + * + * Use this to save a few hundred bytes of ROM (default ordering of all + * available ciphersuites) and a few to a few hundred bytes of RAM. + * + * The value below is only an example, not the default. + */ +//#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 + +/* X509 options */ +//#define MBEDTLS_X509_MAX_INTERMEDIATE_CA 8 /**< Maximum number of intermediate CAs in a verification chain. */ +//#define MBEDTLS_X509_MAX_FILE_PATH_LEN 512 /**< Maximum length of a path/filename string in bytes including the null terminator character ('\0'). */ + +/* \} name SECTION: Customisation configuration options */ + +/* Target and application specific configurations */ +//#define YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE "mbedtls/target_config.h" + +#if defined(TARGET_LIKE_MBED) && defined(YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE) +#include YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE +#endif + +/* + * Allow user to override any previous default. + * + * Use two macro names for that, as: + * - with yotta the prefix YOTTA_CFG_ is forced + * - without yotta is looks weird to have a YOTTA prefix. + */ +#if defined(YOTTA_CFG_MBEDTLS_USER_CONFIG_FILE) +#include YOTTA_CFG_MBEDTLS_USER_CONFIG_FILE +#elif defined(MBEDTLS_USER_CONFIG_FILE) +#include MBEDTLS_USER_CONFIG_FILE +#endif + +#include "check_config.h" + +#endif /* MBEDTLS_CONFIG_H */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/ctr_drbg.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ctr_drbg.h similarity index 50% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/ctr_drbg.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ctr_drbg.h index ebab55f..059d3c5 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/ctr_drbg.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ctr_drbg.h @@ -3,38 +3,41 @@ * * \brief CTR_DRBG based on AES-256 (NIST SP 800-90) * - * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_CTR_DRBG_H -#define POLARSSL_CTR_DRBG_H +#ifndef MBEDTLS_CTR_DRBG_H +#define MBEDTLS_CTR_DRBG_H #include "aes.h" -#define POLARSSL_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED -0x0034 /**< The entropy source failed. */ -#define POLARSSL_ERR_CTR_DRBG_REQUEST_TOO_BIG -0x0036 /**< Too many random requested in single call. */ -#define POLARSSL_ERR_CTR_DRBG_INPUT_TOO_BIG -0x0038 /**< Input too large (Entropy + additional). */ -#define POLARSSL_ERR_CTR_DRBG_FILE_IO_ERROR -0x003A /**< Read/write error in file. */ +#if defined(MBEDTLS_THREADING_C) +#include "mbedtls/threading.h" +#endif -#define CTR_DRBG_BLOCKSIZE 16 /**< Block size used by the cipher */ -#define CTR_DRBG_KEYSIZE 32 /**< Key size used by the cipher */ -#define CTR_DRBG_KEYBITS ( CTR_DRBG_KEYSIZE * 8 ) -#define CTR_DRBG_SEEDLEN ( CTR_DRBG_KEYSIZE + CTR_DRBG_BLOCKSIZE ) +#define MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED -0x0034 /**< The entropy source failed. */ +#define MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG -0x0036 /**< Too many random requested in single call. */ +#define MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG -0x0038 /**< Input too large (Entropy + additional). */ +#define MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR -0x003A /**< Read/write error in file. */ + +#define MBEDTLS_CTR_DRBG_BLOCKSIZE 16 /**< Block size used by the cipher */ +#define MBEDTLS_CTR_DRBG_KEYSIZE 32 /**< Key size used by the cipher */ +#define MBEDTLS_CTR_DRBG_KEYBITS ( MBEDTLS_CTR_DRBG_KEYSIZE * 8 ) +#define MBEDTLS_CTR_DRBG_SEEDLEN ( MBEDTLS_CTR_DRBG_KEYSIZE + MBEDTLS_CTR_DRBG_BLOCKSIZE ) /**< The seed length (counter + AES key) */ /** @@ -45,34 +48,34 @@ * \{ */ -#if !defined(CTR_DRBG_ENTROPY_LEN) -#if defined(POLARSSL_SHA512_C) && !defined(POLARSSL_ENTROPY_FORCE_SHA256) -#define CTR_DRBG_ENTROPY_LEN 48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */ +#if !defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) +#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */ #else -#define CTR_DRBG_ENTROPY_LEN 32 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */ +#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 32 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */ #endif #endif -#if !defined(CTR_DRBG_RESEED_INTERVAL) -#define CTR_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ +#if !defined(MBEDTLS_CTR_DRBG_RESEED_INTERVAL) +#define MBEDTLS_CTR_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ #endif -#if !defined(CTR_DRBG_MAX_INPUT) -#define CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ +#if !defined(MBEDTLS_CTR_DRBG_MAX_INPUT) +#define MBEDTLS_CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ #endif -#if !defined(CTR_DRBG_MAX_REQUEST) -#define CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ +#if !defined(MBEDTLS_CTR_DRBG_MAX_REQUEST) +#define MBEDTLS_CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ #endif -#if !defined(CTR_DRBG_MAX_SEED_INPUT) -#define CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ +#if !defined(MBEDTLS_CTR_DRBG_MAX_SEED_INPUT) +#define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ #endif /* \} name SECTION: Module settings */ -#define CTR_DRBG_PR_OFF 0 /**< No prediction resistance */ -#define CTR_DRBG_PR_ON 1 /**< Prediction resistance enabled */ +#define MBEDTLS_CTR_DRBG_PR_OFF 0 /**< No prediction resistance */ +#define MBEDTLS_CTR_DRBG_PR_ON 1 /**< Prediction resistance enabled */ #ifdef __cplusplus extern "C" { @@ -91,7 +94,7 @@ typedef struct (re)seed */ int reseed_interval; /*!< reseed interval */ - aes_context aes_ctx; /*!< AES context */ + mbedtls_aes_context aes_ctx; /*!< AES context */ /* * Callbacks (Entropy) @@ -99,16 +102,30 @@ typedef struct int (*f_entropy)(void *, unsigned char *, size_t); void *p_entropy; /*!< context for the entropy function */ + +#if defined(MBEDTLS_THREADING_C) + mbedtls_threading_mutex_t mutex; +#endif } -ctr_drbg_context; +mbedtls_ctr_drbg_context; /** - * \brief CTR_DRBG initialization + * \brief CTR_DRBG context initialization + * Makes the context ready for mbedtls_ctr_drbg_seed() or + * mbedtls_ctr_drbg_free(). + * + * \param ctx CTR_DRBG context to be initialized + */ +void mbedtls_ctr_drbg_init( mbedtls_ctr_drbg_context *ctx ); + +/** + * \brief CTR_DRBG initial seeding + * Seed and setup entropy source for future reseeds. * * Note: Personalization data can be provided in addition to the more generic * entropy source to make this instantiation as unique as possible. * - * \param ctx CTR_DRBG context to be initialized + * \param ctx CTR_DRBG context to be seeded * \param f_entropy Entropy callback (p_entropy, buffer to fill, buffer * length) * \param p_entropy Entropy context @@ -117,9 +134,9 @@ ctr_drbg_context; * \param len Length of personalization data * * \return 0 if successful, or - * POLARSSL_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED + * MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED */ -int ctr_drbg_init( ctr_drbg_context *ctx, +int mbedtls_ctr_drbg_seed( mbedtls_ctr_drbg_context *ctx, int (*f_entropy)(void *, unsigned char *, size_t), void *p_entropy, const unsigned char *custom, @@ -130,7 +147,7 @@ int ctr_drbg_init( ctr_drbg_context *ctx, * * \param ctx CTR_DRBG context to clear */ -void ctr_drbg_free( ctr_drbg_context *ctx ); +void mbedtls_ctr_drbg_free( mbedtls_ctr_drbg_context *ctx ); /** * \brief Enable / disable prediction resistance (Default: Off) @@ -139,29 +156,29 @@ void ctr_drbg_free( ctr_drbg_context *ctx ); * Only use this if you have ample supply of good entropy! * * \param ctx CTR_DRBG context - * \param resistance CTR_DRBG_PR_ON or CTR_DRBG_PR_OFF + * \param resistance MBEDTLS_CTR_DRBG_PR_ON or MBEDTLS_CTR_DRBG_PR_OFF */ -void ctr_drbg_set_prediction_resistance( ctr_drbg_context *ctx, +void mbedtls_ctr_drbg_set_prediction_resistance( mbedtls_ctr_drbg_context *ctx, int resistance ); /** * \brief Set the amount of entropy grabbed on each (re)seed - * (Default: CTR_DRBG_ENTROPY_LEN) + * (Default: MBEDTLS_CTR_DRBG_ENTROPY_LEN) * * \param ctx CTR_DRBG context * \param len Amount of entropy to grab */ -void ctr_drbg_set_entropy_len( ctr_drbg_context *ctx, +void mbedtls_ctr_drbg_set_entropy_len( mbedtls_ctr_drbg_context *ctx, size_t len ); /** * \brief Set the reseed interval - * (Default: CTR_DRBG_RESEED_INTERVAL) + * (Default: MBEDTLS_CTR_DRBG_RESEED_INTERVAL) * * \param ctx CTR_DRBG context * \param interval Reseed interval */ -void ctr_drbg_set_reseed_interval( ctr_drbg_context *ctx, +void mbedtls_ctr_drbg_set_reseed_interval( mbedtls_ctr_drbg_context *ctx, int interval ); /** @@ -172,9 +189,9 @@ void ctr_drbg_set_reseed_interval( ctr_drbg_context *ctx, * \param len Length of additional data * * \return 0 if successful, or - * POLARSSL_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED + * MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED */ -int ctr_drbg_reseed( ctr_drbg_context *ctx, +int mbedtls_ctr_drbg_reseed( mbedtls_ctr_drbg_context *ctx, const unsigned char *additional, size_t len ); /** @@ -184,11 +201,11 @@ int ctr_drbg_reseed( ctr_drbg_context *ctx, * \param additional Additional data to update state with * \param add_len Length of additional data * - * \note If add_len is greater than CTR_DRBG_MAX_SEED_INPUT, - * only the first CTR_DRBG_MAX_SEED_INPUT bytes are used, + * \note If add_len is greater than MBEDTLS_CTR_DRBG_MAX_SEED_INPUT, + * only the first MBEDTLS_CTR_DRBG_MAX_SEED_INPUT bytes are used, * the remaining ones are silently discarded. */ -void ctr_drbg_update( ctr_drbg_context *ctx, +void mbedtls_ctr_drbg_update( mbedtls_ctr_drbg_context *ctx, const unsigned char *additional, size_t add_len ); /** @@ -203,10 +220,10 @@ void ctr_drbg_update( ctr_drbg_context *ctx, * \param add_len Length of additional data * * \return 0 if successful, or - * POLARSSL_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED, or - * POLARSSL_ERR_CTR_DRBG_REQUEST_TOO_BIG + * MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED, or + * MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG */ -int ctr_drbg_random_with_add( void *p_rng, +int mbedtls_ctr_drbg_random_with_add( void *p_rng, unsigned char *output, size_t output_len, const unsigned char *additional, size_t add_len ); @@ -220,13 +237,13 @@ int ctr_drbg_random_with_add( void *p_rng, * \param output_len Length of the buffer * * \return 0 if successful, or - * POLARSSL_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED, or - * POLARSSL_ERR_CTR_DRBG_REQUEST_TOO_BIG + * MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED, or + * MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG */ -int ctr_drbg_random( void *p_rng, +int mbedtls_ctr_drbg_random( void *p_rng, unsigned char *output, size_t output_len ); -#if defined(POLARSSL_FS_IO) +#if defined(MBEDTLS_FS_IO) /** * \brief Write a seed file * @@ -234,10 +251,10 @@ int ctr_drbg_random( void *p_rng, * \param path Name of the file * * \return 0 if successful, - * POLARSSL_ERR_CTR_DRBG_FILE_IO_ERROR on file error, or - * POLARSSL_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED + * MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR on file error, or + * MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED */ -int ctr_drbg_write_seed_file( ctr_drbg_context *ctx, const char *path ); +int mbedtls_ctr_drbg_write_seed_file( mbedtls_ctr_drbg_context *ctx, const char *path ); /** * \brief Read and update a seed file. Seed is added to this @@ -247,22 +264,22 @@ int ctr_drbg_write_seed_file( ctr_drbg_context *ctx, const char *path ); * \param path Name of the file * * \return 0 if successful, - * POLARSSL_ERR_CTR_DRBG_FILE_IO_ERROR on file error, - * POLARSSL_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or - * POLARSSL_ERR_CTR_DRBG_INPUT_TOO_BIG + * MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR on file error, + * MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or + * MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG */ -int ctr_drbg_update_seed_file( ctr_drbg_context *ctx, const char *path ); -#endif /* POLARSSL_FS_IO */ +int mbedtls_ctr_drbg_update_seed_file( mbedtls_ctr_drbg_context *ctx, const char *path ); +#endif /* MBEDTLS_FS_IO */ /** * \brief Checkup routine * * \return 0 if successful, or 1 if the test failed */ -int ctr_drbg_self_test( int verbose ); +int mbedtls_ctr_drbg_self_test( int verbose ); /* Internal functions (do not call directly) */ -int ctr_drbg_init_entropy_len( ctr_drbg_context *, +int mbedtls_ctr_drbg_seed_entropy_len( mbedtls_ctr_drbg_context *, int (*)(void *, unsigned char *, size_t), void *, const unsigned char *, size_t, size_t ); diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/debug.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/debug.h new file mode 100644 index 0000000..2957996 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/debug.h @@ -0,0 +1,228 @@ +/** + * \file debug.h + * + * \brief Functions for controlling and providing debug output from the library. + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_DEBUG_H +#define MBEDTLS_DEBUG_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "ssl.h" + +#if defined(MBEDTLS_ECP_C) +#include "ecp.h" +#endif + +#if defined(MBEDTLS_DEBUG_C) + +#define MBEDTLS_DEBUG_STRIP_PARENS( ... ) __VA_ARGS__ + +#define MBEDTLS_SSL_DEBUG_MSG( level, args ) \ + mbedtls_debug_print_msg( ssl, level, __FILE__, __LINE__, \ + MBEDTLS_DEBUG_STRIP_PARENS args ) + +#define MBEDTLS_SSL_DEBUG_RET( level, text, ret ) \ + mbedtls_debug_print_ret( ssl, level, __FILE__, __LINE__, text, ret ) + +#define MBEDTLS_SSL_DEBUG_BUF( level, text, buf, len ) \ + mbedtls_debug_print_buf( ssl, level, __FILE__, __LINE__, text, buf, len ) + +#if defined(MBEDTLS_BIGNUM_C) +#define MBEDTLS_SSL_DEBUG_MPI( level, text, X ) \ + mbedtls_debug_print_mpi( ssl, level, __FILE__, __LINE__, text, X ) +#endif + +#if defined(MBEDTLS_ECP_C) +#define MBEDTLS_SSL_DEBUG_ECP( level, text, X ) \ + mbedtls_debug_print_ecp( ssl, level, __FILE__, __LINE__, text, X ) +#endif + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +#define MBEDTLS_SSL_DEBUG_CRT( level, text, crt ) \ + mbedtls_debug_print_crt( ssl, level, __FILE__, __LINE__, text, crt ) +#endif + +#else /* MBEDTLS_DEBUG_C */ + +#define MBEDTLS_SSL_DEBUG_MSG( level, args ) do { } while( 0 ) +#define MBEDTLS_SSL_DEBUG_RET( level, text, ret ) do { } while( 0 ) +#define MBEDTLS_SSL_DEBUG_BUF( level, text, buf, len ) do { } while( 0 ) +#define MBEDTLS_SSL_DEBUG_MPI( level, text, X ) do { } while( 0 ) +#define MBEDTLS_SSL_DEBUG_ECP( level, text, X ) do { } while( 0 ) +#define MBEDTLS_SSL_DEBUG_CRT( level, text, crt ) do { } while( 0 ) + +#endif /* MBEDTLS_DEBUG_C */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Set the threshold error level to handle globally all debug output. + * Debug messages that have a level over the threshold value are + * discarded. + * (Default value: 0 = No debug ) + * + * \param threshold theshold level of messages to filter on. Messages at a + * higher level will be discarded. + * - Debug levels + * - 0 No debug + * - 1 Error + * - 2 State change + * - 3 Informational + * - 4 Verbose + */ +void mbedtls_debug_set_threshold( int threshold ); + +/** + * \brief Print a message to the debug output. This function is always used + * through the MBEDTLS_SSL_DEBUG_MSG() macro, which supplies the ssl + * context, file and line number parameters. + * + * \param ssl SSL context + * \param level error level of the debug message + * \param file file the message has occurred in + * \param line line number the message has occurred at + * \param format format specifier, in printf format + * \param ... variables used by the format specifier + * + * \attention This function is intended for INTERNAL usage within the + * library only. + */ +void mbedtls_debug_print_msg( const mbedtls_ssl_context *ssl, int level, + const char *file, int line, + const char *format, ... ); + +/** + * \brief Print the return value of a function to the debug output. This + * function is always used through the MBEDTLS_SSL_DEBUG_RET() macro, + * which supplies the ssl context, file and line number parameters. + * + * \param ssl SSL context + * \param level error level of the debug message + * \param file file the error has occurred in + * \param line line number the error has occurred in + * \param text the name of the function that returned the error + * \param ret the return code value + * + * \attention This function is intended for INTERNAL usage within the + * library only. + */ +void mbedtls_debug_print_ret( const mbedtls_ssl_context *ssl, int level, + const char *file, int line, + const char *text, int ret ); + +/** + * \brief Output a buffer of size len bytes to the debug output. This function + * is always used through the MBEDTLS_SSL_DEBUG_BUF() macro, + * which supplies the ssl context, file and line number parameters. + * + * \param ssl SSL context + * \param level error level of the debug message + * \param file file the error has occurred in + * \param line line number the error has occurred in + * \param text a name or label for the buffer being dumped. Normally the + * variable or buffer name + * \param buf the buffer to be outputted + * \param len length of the buffer + * + * \attention This function is intended for INTERNAL usage within the + * library only. + */ +void mbedtls_debug_print_buf( const mbedtls_ssl_context *ssl, int level, + const char *file, int line, const char *text, + const unsigned char *buf, size_t len ); + +#if defined(MBEDTLS_BIGNUM_C) +/** + * \brief Print a MPI variable to the debug output. This function is always + * used through the MBEDTLS_SSL_DEBUG_MPI() macro, which supplies the + * ssl context, file and line number parameters. + * + * \param ssl SSL context + * \param level error level of the debug message + * \param file file the error has occurred in + * \param line line number the error has occurred in + * \param text a name or label for the MPI being output. Normally the + * variable name + * \param X the MPI variable + * + * \attention This function is intended for INTERNAL usage within the + * library only. + */ +void mbedtls_debug_print_mpi( const mbedtls_ssl_context *ssl, int level, + const char *file, int line, + const char *text, const mbedtls_mpi *X ); +#endif + +#if defined(MBEDTLS_ECP_C) +/** + * \brief Print an ECP point to the debug output. This function is always + * used through the MBEDTLS_SSL_DEBUG_ECP() macro, which supplies the + * ssl context, file and line number parameters. + * + * \param ssl SSL context + * \param level error level of the debug message + * \param file file the error has occurred in + * \param line line number the error has occurred in + * \param text a name or label for the ECP point being output. Normally the + * variable name + * \param X the ECP point + * + * \attention This function is intended for INTERNAL usage within the + * library only. + */ +void mbedtls_debug_print_ecp( const mbedtls_ssl_context *ssl, int level, + const char *file, int line, + const char *text, const mbedtls_ecp_point *X ); +#endif + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +/** + * \brief Print a X.509 certificate structure to the debug output. This + * function is always used through the MBEDTLS_SSL_DEBUG_CRT() macro, + * which supplies the ssl context, file and line number parameters. + * + * \param ssl SSL context + * \param level error level of the debug message + * \param file file the error has occurred in + * \param line line number the error has occurred in + * \param text a name or label for the certificate being output + * \param crt X.509 certificate structure + * + * \attention This function is intended for INTERNAL usage within the + * library only. + */ +void mbedtls_debug_print_crt( const mbedtls_ssl_context *ssl, int level, + const char *file, int line, + const char *text, const mbedtls_x509_crt *crt ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* debug.h */ + diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/des.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/des.h similarity index 63% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/des.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/des.h index 3f7236c..5ca2ecf 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/des.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/des.h @@ -3,50 +3,43 @@ * * \brief DES block cipher * - * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_DES_H -#define POLARSSL_DES_H +#ifndef MBEDTLS_DES_H +#define MBEDTLS_DES_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif #include +#include -#if defined(_MSC_VER) && !defined(EFIX64) && !defined(EFI32) -#include -typedef UINT32 uint32_t; -#else -#include -#endif +#define MBEDTLS_DES_ENCRYPT 1 +#define MBEDTLS_DES_DECRYPT 0 -#define DES_ENCRYPT 1 -#define DES_DECRYPT 0 +#define MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH -0x0032 /**< The data input has an invalid length. */ -#define POLARSSL_ERR_DES_INVALID_INPUT_LENGTH -0x0032 /**< The data input has an invalid length. */ +#define MBEDTLS_DES_KEY_SIZE 8 -#define DES_KEY_SIZE 8 - -#if !defined(POLARSSL_DES_ALT) +#if !defined(MBEDTLS_DES_ALT) // Regular implementation // @@ -59,48 +52,46 @@ extern "C" { */ typedef struct { - int mode; /*!< encrypt/decrypt */ uint32_t sk[32]; /*!< DES subkeys */ } -des_context; +mbedtls_des_context; /** * \brief Triple-DES context structure */ typedef struct { - int mode; /*!< encrypt/decrypt */ uint32_t sk[96]; /*!< 3DES subkeys */ } -des3_context; +mbedtls_des3_context; /** * \brief Initialize DES context * * \param ctx DES context to be initialized */ -void des_init( des_context *ctx ); +void mbedtls_des_init( mbedtls_des_context *ctx ); /** * \brief Clear DES context * * \param ctx DES context to be cleared */ -void des_free( des_context *ctx ); +void mbedtls_des_free( mbedtls_des_context *ctx ); /** * \brief Initialize Triple-DES context * * \param ctx DES3 context to be initialized */ -void des3_init( des3_context *ctx ); +void mbedtls_des3_init( mbedtls_des3_context *ctx ); /** * \brief Clear Triple-DES context * * \param ctx DES3 context to be cleared */ -void des3_free( des3_context *ctx ); +void mbedtls_des3_free( mbedtls_des3_context *ctx ); /** * \brief Set key parity on the given key to odd. @@ -110,7 +101,7 @@ void des3_free( des3_context *ctx ); * * \param key 8-byte secret key */ -void des_key_set_parity( unsigned char key[DES_KEY_SIZE] ); +void mbedtls_des_key_set_parity( unsigned char key[MBEDTLS_DES_KEY_SIZE] ); /** * \brief Check that key parity on the given key is odd. @@ -122,7 +113,7 @@ void des_key_set_parity( unsigned char key[DES_KEY_SIZE] ); * * \return 0 is parity was ok, 1 if parity was not correct. */ -int des_key_check_key_parity( const unsigned char key[DES_KEY_SIZE] ); +int mbedtls_des_key_check_key_parity( const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); /** * \brief Check that key is not a weak or semi-weak DES key @@ -131,7 +122,7 @@ int des_key_check_key_parity( const unsigned char key[DES_KEY_SIZE] ); * * \return 0 if no weak key was found, 1 if a weak key was identified. */ -int des_key_check_weak( const unsigned char key[DES_KEY_SIZE] ); +int mbedtls_des_key_check_weak( const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); /** * \brief DES key schedule (56-bit, encryption) @@ -141,7 +132,7 @@ int des_key_check_weak( const unsigned char key[DES_KEY_SIZE] ); * * \return 0 */ -int des_setkey_enc( des_context *ctx, const unsigned char key[DES_KEY_SIZE] ); +int mbedtls_des_setkey_enc( mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); /** * \brief DES key schedule (56-bit, decryption) @@ -151,7 +142,7 @@ int des_setkey_enc( des_context *ctx, const unsigned char key[DES_KEY_SIZE] ); * * \return 0 */ -int des_setkey_dec( des_context *ctx, const unsigned char key[DES_KEY_SIZE] ); +int mbedtls_des_setkey_dec( mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); /** * \brief Triple-DES key schedule (112-bit, encryption) @@ -161,8 +152,8 @@ int des_setkey_dec( des_context *ctx, const unsigned char key[DES_KEY_SIZE] ); * * \return 0 */ -int des3_set2key_enc( des3_context *ctx, - const unsigned char key[DES_KEY_SIZE * 2] ); +int mbedtls_des3_set2key_enc( mbedtls_des3_context *ctx, + const unsigned char key[MBEDTLS_DES_KEY_SIZE * 2] ); /** * \brief Triple-DES key schedule (112-bit, decryption) @@ -172,8 +163,8 @@ int des3_set2key_enc( des3_context *ctx, * * \return 0 */ -int des3_set2key_dec( des3_context *ctx, - const unsigned char key[DES_KEY_SIZE * 2] ); +int mbedtls_des3_set2key_dec( mbedtls_des3_context *ctx, + const unsigned char key[MBEDTLS_DES_KEY_SIZE * 2] ); /** * \brief Triple-DES key schedule (168-bit, encryption) @@ -183,8 +174,8 @@ int des3_set2key_dec( des3_context *ctx, * * \return 0 */ -int des3_set3key_enc( des3_context *ctx, - const unsigned char key[DES_KEY_SIZE * 3] ); +int mbedtls_des3_set3key_enc( mbedtls_des3_context *ctx, + const unsigned char key[MBEDTLS_DES_KEY_SIZE * 3] ); /** * \brief Triple-DES key schedule (168-bit, decryption) @@ -194,8 +185,8 @@ int des3_set3key_enc( des3_context *ctx, * * \return 0 */ -int des3_set3key_dec( des3_context *ctx, - const unsigned char key[DES_KEY_SIZE * 3] ); +int mbedtls_des3_set3key_dec( mbedtls_des3_context *ctx, + const unsigned char key[MBEDTLS_DES_KEY_SIZE * 3] ); /** * \brief DES-ECB block encryption/decryption @@ -206,11 +197,11 @@ int des3_set3key_dec( des3_context *ctx, * * \return 0 if successful */ -int des_crypt_ecb( des_context *ctx, +int mbedtls_des_crypt_ecb( mbedtls_des_context *ctx, const unsigned char input[8], unsigned char output[8] ); -#if defined(POLARSSL_CIPHER_MODE_CBC) +#if defined(MBEDTLS_CIPHER_MODE_CBC) /** * \brief DES-CBC buffer encryption/decryption * @@ -223,19 +214,19 @@ int des_crypt_ecb( des_context *ctx, * module instead. * * \param ctx DES context - * \param mode DES_ENCRYPT or DES_DECRYPT + * \param mode MBEDTLS_DES_ENCRYPT or MBEDTLS_DES_DECRYPT * \param length length of the input data * \param iv initialization vector (updated after use) * \param input buffer holding the input data * \param output buffer holding the output data */ -int des_crypt_cbc( des_context *ctx, +int mbedtls_des_crypt_cbc( mbedtls_des_context *ctx, int mode, size_t length, unsigned char iv[8], const unsigned char *input, unsigned char *output ); -#endif /* POLARSSL_CIPHER_MODE_CBC */ +#endif /* MBEDTLS_CIPHER_MODE_CBC */ /** * \brief 3DES-ECB block encryption/decryption @@ -246,11 +237,11 @@ int des_crypt_cbc( des_context *ctx, * * \return 0 if successful */ -int des3_crypt_ecb( des3_context *ctx, +int mbedtls_des3_crypt_ecb( mbedtls_des3_context *ctx, const unsigned char input[8], unsigned char output[8] ); -#if defined(POLARSSL_CIPHER_MODE_CBC) +#if defined(MBEDTLS_CIPHER_MODE_CBC) /** * \brief 3DES-CBC buffer encryption/decryption * @@ -263,29 +254,39 @@ int des3_crypt_ecb( des3_context *ctx, * module instead. * * \param ctx 3DES context - * \param mode DES_ENCRYPT or DES_DECRYPT + * \param mode MBEDTLS_DES_ENCRYPT or MBEDTLS_DES_DECRYPT * \param length length of the input data * \param iv initialization vector (updated after use) * \param input buffer holding the input data * \param output buffer holding the output data * - * \return 0 if successful, or POLARSSL_ERR_DES_INVALID_INPUT_LENGTH + * \return 0 if successful, or MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH */ -int des3_crypt_cbc( des3_context *ctx, +int mbedtls_des3_crypt_cbc( mbedtls_des3_context *ctx, int mode, size_t length, unsigned char iv[8], const unsigned char *input, unsigned char *output ); -#endif /* POLARSSL_CIPHER_MODE_CBC */ +#endif /* MBEDTLS_CIPHER_MODE_CBC */ +/** + * \brief Internal function for key expansion. + * (Only exposed to allow overriding it, + * see MBEDTLS_DES_SETKEY_ALT) + * + * \param SK Round keys + * \param key Base key + */ +void mbedtls_des_setkey( uint32_t SK[32], + const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); #ifdef __cplusplus } #endif -#else /* POLARSSL_DES_ALT */ +#else /* MBEDTLS_DES_ALT */ #include "des_alt.h" -#endif /* POLARSSL_DES_ALT */ +#endif /* MBEDTLS_DES_ALT */ #ifdef __cplusplus extern "C" { @@ -296,7 +297,7 @@ extern "C" { * * \return 0 if successful, or 1 if the test failed */ -int des_self_test( int verbose ); +int mbedtls_des_self_test( int verbose ); #ifdef __cplusplus } diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/dhm.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/dhm.h similarity index 56% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/dhm.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/dhm.h index 8d64a5f..d7ab152 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/dhm.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/dhm.h @@ -3,45 +3,42 @@ * * \brief Diffie-Hellman-Merkle key exchange * - * Copyright (C) 2006-2013, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_DHM_H -#define POLARSSL_DHM_H +#ifndef MBEDTLS_DHM_H +#define MBEDTLS_DHM_H #include "bignum.h" /* * DHM Error codes */ -#define POLARSSL_ERR_DHM_BAD_INPUT_DATA -0x3080 /**< Bad input parameters to function. */ -#define POLARSSL_ERR_DHM_READ_PARAMS_FAILED -0x3100 /**< Reading of the DHM parameters failed. */ -#define POLARSSL_ERR_DHM_MAKE_PARAMS_FAILED -0x3180 /**< Making of the DHM parameters failed. */ -#define POLARSSL_ERR_DHM_READ_PUBLIC_FAILED -0x3200 /**< Reading of the public values failed. */ -#define POLARSSL_ERR_DHM_MAKE_PUBLIC_FAILED -0x3280 /**< Making of the public value failed. */ -#define POLARSSL_ERR_DHM_CALC_SECRET_FAILED -0x3300 /**< Calculation of the DHM secret failed. */ -#define POLARSSL_ERR_DHM_INVALID_FORMAT -0x3380 /**< The ASN.1 data is not formatted correctly. */ -#define POLARSSL_ERR_DHM_MALLOC_FAILED -0x3400 /**< Allocation of memory failed. */ -#define POLARSSL_ERR_DHM_FILE_IO_ERROR -0x3480 /**< Read/write of file failed. */ +#define MBEDTLS_ERR_DHM_BAD_INPUT_DATA -0x3080 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_DHM_READ_PARAMS_FAILED -0x3100 /**< Reading of the DHM parameters failed. */ +#define MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED -0x3180 /**< Making of the DHM parameters failed. */ +#define MBEDTLS_ERR_DHM_READ_PUBLIC_FAILED -0x3200 /**< Reading of the public values failed. */ +#define MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED -0x3280 /**< Making of the public value failed. */ +#define MBEDTLS_ERR_DHM_CALC_SECRET_FAILED -0x3300 /**< Calculation of the DHM secret failed. */ +#define MBEDTLS_ERR_DHM_INVALID_FORMAT -0x3380 /**< The ASN.1 data is not formatted correctly. */ +#define MBEDTLS_ERR_DHM_ALLOC_FAILED -0x3400 /**< Allocation of memory failed. */ +#define MBEDTLS_ERR_DHM_FILE_IO_ERROR -0x3480 /**< Read/write of file failed. */ /** - * RFC 2409 defines a number of standardized Diffie-Hellman groups - * that can be used. * RFC 3526 defines a number of standardized Diffie-Hellman groups * for IKE. * RFC 5114 defines a number of standardized Diffie-Hellman groups @@ -50,23 +47,12 @@ * Some are included here for convenience. * * Included are: - * RFC 2409 6.2. 1024-bit MODP Group (Second Oakley Group) * RFC 3526 3. 2048-bit MODP Group * RFC 3526 4. 3072-bit MODP Group - * RFC 5114 2.1. 1024-bit MODP Group with 160-bit Prime Order Subgroup + * RFC 3526 5. 4096-bit MODP Group * RFC 5114 2.2. 2048-bit MODP Group with 224-bit Prime Order Subgroup */ -#define POLARSSL_DHM_RFC2409_MODP_1024_P \ - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381" \ - "FFFFFFFFFFFFFFFF" - -#define POLARSSL_DHM_RFC2409_MODP_1024_G "02" - -#define POLARSSL_DHM_RFC3526_MODP_2048_P \ +#define MBEDTLS_DHM_RFC3526_MODP_2048_P \ "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ @@ -79,9 +65,9 @@ "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ "15728E5A8AACAA68FFFFFFFFFFFFFFFF" -#define POLARSSL_DHM_RFC3526_MODP_2048_G "02" +#define MBEDTLS_DHM_RFC3526_MODP_2048_G "02" -#define POLARSSL_DHM_RFC3526_MODP_3072_P \ +#define MBEDTLS_DHM_RFC3526_MODP_3072_P \ "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ @@ -99,25 +85,35 @@ "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF" -#define POLARSSL_DHM_RFC3526_MODP_3072_G "02" +#define MBEDTLS_DHM_RFC3526_MODP_3072_G "02" -#define POLARSSL_DHM_RFC5114_MODP_1024_P \ - "B10B8F96A080E01DDE92DE5EAE5D54EC52C99FBCFB06A3C6" \ - "9A6A9DCA52D23B616073E28675A23D189838EF1E2EE652C0" \ - "13ECB4AEA906112324975C3CD49B83BFACCBDD7D90C4BD70" \ - "98488E9C219A73724EFFD6FAE5644738FAA31A4FF55BCCC0" \ - "A151AF5F0DC8B4BD45BF37DF365C1A65E68CFDA76D4DA708" \ - "DF1FB2BC2E4A4371" +#define MBEDTLS_DHM_RFC3526_MODP_4096_P \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ + "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" \ + "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" \ + "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" \ + "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" \ + "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" \ + "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199" \ + "FFFFFFFFFFFFFFFF" -#define POLARSSL_DHM_RFC5114_MODP_1024_G \ - "A4D1CBD5C3FD34126765A442EFB99905F8104DD258AC507F" \ - "D6406CFF14266D31266FEA1E5C41564B777E690F5504F213" \ - "160217B4B01B886A5E91547F9E2749F4D7FBD7D3B9A92EE1" \ - "909D0D2263F80A76A6A24C087A091F531DBF0A0169B6A28A" \ - "D662A4D18E73AFA32D779D5918D08BC8858F4DCEF97C2A24" \ - "855E6EEB22B3B2E5" +#define MBEDTLS_DHM_RFC3526_MODP_4096_G "02" -#define POLARSSL_DHM_RFC5114_MODP_2048_P \ +#define MBEDTLS_DHM_RFC5114_MODP_2048_P \ "AD107E1E9123A9D0D660FAA79559C51FA20D64E5683B9FD1" \ "B54B1597B61D0A75E6FA141DF95A56DBAF9A3C407BA1DF15" \ "EB3D688A309C180E1DE6B85A1274A0A66D3F8152AD6AC212" \ @@ -130,7 +126,7 @@ "C9B53DCF4BA80A29E3FB73C16B8E75B97EF363E2FFA31F71" \ "CF9DE5384E71B81C0AC4DFFE0C10E64F" -#define POLARSSL_DHM_RFC5114_MODP_2048_G \ +#define MBEDTLS_DHM_RFC5114_MODP_2048_G \ "AC4032EF4F2D9AE39DF30B5C8FFDAC506CDEBE7B89998CAF"\ "74866A08CFE4FFE3A6824A4E10B9A6F0DD921F01A70C4AFA"\ "AB739D7700C29F52C57DB17C620A8652BE5E9001A8D66AD7"\ @@ -153,25 +149,25 @@ extern "C" { typedef struct { size_t len; /*!< size(P) in chars */ - mpi P; /*!< prime modulus */ - mpi G; /*!< generator */ - mpi X; /*!< secret value */ - mpi GX; /*!< self = G^X mod P */ - mpi GY; /*!< peer = G^Y mod P */ - mpi K; /*!< key = GY^X mod P */ - mpi RP; /*!< cached R^2 mod P */ - mpi Vi; /*!< blinding value */ - mpi Vf; /*!< un-blinding value */ - mpi pX; /*!< previous X */ + mbedtls_mpi P; /*!< prime modulus */ + mbedtls_mpi G; /*!< generator */ + mbedtls_mpi X; /*!< secret value */ + mbedtls_mpi GX; /*!< self = G^X mod P */ + mbedtls_mpi GY; /*!< peer = G^Y mod P */ + mbedtls_mpi K; /*!< key = GY^X mod P */ + mbedtls_mpi RP; /*!< cached R^2 mod P */ + mbedtls_mpi Vi; /*!< blinding value */ + mbedtls_mpi Vf; /*!< un-blinding value */ + mbedtls_mpi pX; /*!< previous X */ } -dhm_context; +mbedtls_dhm_context; /** * \brief Initialize DHM context * * \param ctx DHM context to be initialized */ -void dhm_init( dhm_context *ctx ); +void mbedtls_dhm_init( mbedtls_dhm_context *ctx ); /** * \brief Parse the ServerKeyExchange parameters @@ -180,9 +176,9 @@ void dhm_init( dhm_context *ctx ); * \param p &(start of input buffer) * \param end end of buffer * - * \return 0 if successful, or an POLARSSL_ERR_DHM_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_DHM_XXX error code */ -int dhm_read_params( dhm_context *ctx, +int mbedtls_dhm_read_params( mbedtls_dhm_context *ctx, unsigned char **p, const unsigned char *end ); @@ -198,11 +194,11 @@ int dhm_read_params( dhm_context *ctx, * * \note This function assumes that ctx->P and ctx->G * have already been properly set (for example - * using mpi_read_string or mpi_read_binary). + * using mbedtls_mpi_read_string or mbedtls_mpi_read_binary). * - * \return 0 if successful, or an POLARSSL_ERR_DHM_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_DHM_XXX error code */ -int dhm_make_params( dhm_context *ctx, int x_size, +int mbedtls_dhm_make_params( mbedtls_dhm_context *ctx, int x_size, unsigned char *output, size_t *olen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -214,9 +210,9 @@ int dhm_make_params( dhm_context *ctx, int x_size, * \param input input buffer * \param ilen size of buffer * - * \return 0 if successful, or an POLARSSL_ERR_DHM_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_DHM_XXX error code */ -int dhm_read_public( dhm_context *ctx, +int mbedtls_dhm_read_public( mbedtls_dhm_context *ctx, const unsigned char *input, size_t ilen ); /** @@ -225,13 +221,13 @@ int dhm_read_public( dhm_context *ctx, * \param ctx DHM context * \param x_size private value size in bytes * \param output destination buffer - * \param olen must be equal to ctx->P.len + * \param olen must be at least equal to the size of P, ctx->len * \param f_rng RNG function * \param p_rng RNG parameter * - * \return 0 if successful, or an POLARSSL_ERR_DHM_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_DHM_XXX error code */ -int dhm_make_public( dhm_context *ctx, int x_size, +int mbedtls_dhm_make_public( mbedtls_dhm_context *ctx, int x_size, unsigned char *output, size_t olen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -241,12 +237,12 @@ int dhm_make_public( dhm_context *ctx, int x_size, * * \param ctx DHM context * \param output destination buffer - * \param olen on entry, must hold the size of the destination buffer - * on exit, holds the actual number of bytes written + * \param output_size size of the destination buffer + * \param olen on exit, holds the actual number of bytes written * \param f_rng RNG function, for blinding purposes * \param p_rng RNG parameter * - * \return 0 if successful, or an POLARSSL_ERR_DHM_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_DHM_XXX error code * * \note If non-NULL, f_rng is used to blind the input as * countermeasure against timing attacks. Blinding is @@ -254,8 +250,8 @@ int dhm_make_public( dhm_context *ctx, int x_size, * re-used and costs nothing otherwise, so it is recommended * to always pass a non-NULL f_rng argument. */ -int dhm_calc_secret( dhm_context *ctx, - unsigned char *output, size_t *olen, +int mbedtls_dhm_calc_secret( mbedtls_dhm_context *ctx, + unsigned char *output, size_t output_size, size_t *olen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -264,23 +260,24 @@ int dhm_calc_secret( dhm_context *ctx, * * \param ctx DHM context to free and clear */ -void dhm_free( dhm_context *ctx ); +void mbedtls_dhm_free( mbedtls_dhm_context *ctx ); -#if defined(POLARSSL_ASN1_PARSE_C) +#if defined(MBEDTLS_ASN1_PARSE_C) /** \ingroup x509_module */ /** - * \brief Parse DHM parameters + * \brief Parse DHM parameters in PEM or DER format * * \param dhm DHM context to be initialized * \param dhmin input buffer * \param dhminlen size of the buffer + * (including the terminating null byte for PEM data) * * \return 0 if successful, or a specific DHM or PEM error code */ -int dhm_parse_dhm( dhm_context *dhm, const unsigned char *dhmin, +int mbedtls_dhm_parse_dhm( mbedtls_dhm_context *dhm, const unsigned char *dhmin, size_t dhminlen ); -#if defined(POLARSSL_FS_IO) +#if defined(MBEDTLS_FS_IO) /** \ingroup x509_module */ /** * \brief Load and parse DHM parameters @@ -290,16 +287,16 @@ int dhm_parse_dhm( dhm_context *dhm, const unsigned char *dhmin, * * \return 0 if successful, or a specific DHM or PEM error code */ -int dhm_parse_dhmfile( dhm_context *dhm, const char *path ); -#endif /* POLARSSL_FS_IO */ -#endif /* POLARSSL_ASN1_PARSE_C */ +int mbedtls_dhm_parse_dhmfile( mbedtls_dhm_context *dhm, const char *path ); +#endif /* MBEDTLS_FS_IO */ +#endif /* MBEDTLS_ASN1_PARSE_C */ /** * \brief Checkup routine * * \return 0 if successful, or 1 if the test failed */ -int dhm_self_test( int verbose ); +int mbedtls_dhm_self_test( int verbose ); #ifdef __cplusplus } diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/ecdh.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecdh.h similarity index 60% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/ecdh.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecdh.h index 60f913d..625a281 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/ecdh.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecdh.h @@ -3,26 +3,25 @@ * * \brief Elliptic curve Diffie-Hellman * - * Copyright (C) 2006-2013, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_ECDH_H -#define POLARSSL_ECDH_H +#ifndef MBEDTLS_ECDH_H +#define MBEDTLS_ECDH_H #include "ecp.h" @@ -35,26 +34,26 @@ extern "C" { */ typedef enum { - POLARSSL_ECDH_OURS, - POLARSSL_ECDH_THEIRS, -} ecdh_side; + MBEDTLS_ECDH_OURS, + MBEDTLS_ECDH_THEIRS, +} mbedtls_ecdh_side; /** * \brief ECDH context structure */ typedef struct { - ecp_group grp; /*!< elliptic curve used */ - mpi d; /*!< our secret value (private key) */ - ecp_point Q; /*!< our public value (public key) */ - ecp_point Qp; /*!< peer's public value (public key) */ - mpi z; /*!< shared secret */ + mbedtls_ecp_group grp; /*!< elliptic curve used */ + mbedtls_mpi d; /*!< our secret value (private key) */ + mbedtls_ecp_point Q; /*!< our public value (public key) */ + mbedtls_ecp_point Qp; /*!< peer's public value (public key) */ + mbedtls_mpi z; /*!< shared secret */ int point_format; /*!< format for point export in TLS messages */ - ecp_point Vi; /*!< blinding value (for later) */ - ecp_point Vf; /*!< un-blinding value (for later) */ - mpi _d; /*!< previous d (for later) */ + mbedtls_ecp_point Vi; /*!< blinding value (for later) */ + mbedtls_ecp_point Vf; /*!< un-blinding value (for later) */ + mbedtls_mpi _d; /*!< previous d (for later) */ } -ecdh_context; +mbedtls_ecdh_context; /** * \brief Generate a public key. @@ -67,9 +66,9 @@ ecdh_context; * \param p_rng RNG parameter * * \return 0 if successful, - * or a POLARSSL_ERR_ECP_XXX or POLARSSL_MPI_XXX error code + * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code */ -int ecdh_gen_public( ecp_group *grp, mpi *d, ecp_point *Q, +int mbedtls_ecdh_gen_public( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp_point *Q, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -85,14 +84,14 @@ int ecdh_gen_public( ecp_group *grp, mpi *d, ecp_point *Q, * \param p_rng RNG parameter * * \return 0 if successful, - * or a POLARSSL_ERR_ECP_XXX or POLARSSL_MPI_XXX error code + * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code * * \note If f_rng is not NULL, it is used to implement * countermeasures against potential elaborate timing - * attacks, see \c ecp_mul() for details. + * attacks, see \c mbedtls_ecp_mul() for details. */ -int ecdh_compute_shared( ecp_group *grp, mpi *z, - const ecp_point *Q, const mpi *d, +int mbedtls_ecdh_compute_shared( mbedtls_ecp_group *grp, mbedtls_mpi *z, + const mbedtls_ecp_point *Q, const mbedtls_mpi *d, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -101,14 +100,14 @@ int ecdh_compute_shared( ecp_group *grp, mpi *z, * * \param ctx Context to initialize */ -void ecdh_init( ecdh_context *ctx ); +void mbedtls_ecdh_init( mbedtls_ecdh_context *ctx ); /** * \brief Free context * * \param ctx Context to free */ -void ecdh_free( ecdh_context *ctx ); +void mbedtls_ecdh_free( mbedtls_ecdh_context *ctx ); /** * \brief Generate a public key and a TLS ServerKeyExchange payload. @@ -122,11 +121,11 @@ void ecdh_free( ecdh_context *ctx ); * \param p_rng RNG parameter * * \note This function assumes that ctx->grp has already been - * properly set (for example using ecp_use_known_dp). + * properly set (for example using mbedtls_ecp_group_load). * - * \return 0 if successful, or an POLARSSL_ERR_ECP_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code */ -int ecdh_make_params( ecdh_context *ctx, size_t *olen, +int mbedtls_ecdh_make_params( mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -139,9 +138,9 @@ int ecdh_make_params( ecdh_context *ctx, size_t *olen, * \param buf pointer to start of input buffer * \param end one past end of buffer * - * \return 0 if successful, or an POLARSSL_ERR_ECP_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code */ -int ecdh_read_params( ecdh_context *ctx, +int mbedtls_ecdh_read_params( mbedtls_ecdh_context *ctx, const unsigned char **buf, const unsigned char *end ); /** @@ -154,10 +153,10 @@ int ecdh_read_params( ecdh_context *ctx, * \param key EC key to use * \param side Is it our key (1) or the peer's key (0) ? * - * \return 0 if successful, or an POLARSSL_ERR_ECP_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code */ -int ecdh_get_params( ecdh_context *ctx, const ecp_keypair *key, - ecdh_side side ); +int mbedtls_ecdh_get_params( mbedtls_ecdh_context *ctx, const mbedtls_ecp_keypair *key, + mbedtls_ecdh_side side ); /** * \brief Generate a public key and a TLS ClientKeyExchange payload. @@ -170,9 +169,9 @@ int ecdh_get_params( ecdh_context *ctx, const ecp_keypair *key, * \param f_rng RNG function * \param p_rng RNG parameter * - * \return 0 if successful, or an POLARSSL_ERR_ECP_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code */ -int ecdh_make_public( ecdh_context *ctx, size_t *olen, +int mbedtls_ecdh_make_public( mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -185,9 +184,9 @@ int ecdh_make_public( ecdh_context *ctx, size_t *olen, * \param buf start of input buffer * \param blen length of input buffer * - * \return 0 if successful, or an POLARSSL_ERR_ECP_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code */ -int ecdh_read_public( ecdh_context *ctx, +int mbedtls_ecdh_read_public( mbedtls_ecdh_context *ctx, const unsigned char *buf, size_t blen ); /** @@ -198,23 +197,16 @@ int ecdh_read_public( ecdh_context *ctx, * \param olen number of bytes written * \param buf destination buffer * \param blen buffer length - * \param f_rng RNG function, see notes for \c ecdh_compute_shared() + * \param f_rng RNG function, see notes for \c mbedtls_ecdh_compute_shared() * \param p_rng RNG parameter * - * \return 0 if successful, or an POLARSSL_ERR_ECP_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code */ -int ecdh_calc_secret( ecdh_context *ctx, size_t *olen, +int mbedtls_ecdh_calc_secret( mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); -/** - * \brief Checkup routine - * - * \return 0 if successful, or 1 if the test failed - */ -int ecdh_self_test( int verbose ); - #ifdef __cplusplus } #endif diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecdsa.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecdsa.h new file mode 100644 index 0000000..52827d8 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecdsa.h @@ -0,0 +1,248 @@ +/** + * \file ecdsa.h + * + * \brief Elliptic curve DSA + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_ECDSA_H +#define MBEDTLS_ECDSA_H + +#include "ecp.h" +#include "md.h" + +/* + * RFC 4492 page 20: + * + * Ecdsa-Sig-Value ::= SEQUENCE { + * r INTEGER, + * s INTEGER + * } + * + * Size is at most + * 1 (tag) + 1 (len) + 1 (initial 0) + ECP_MAX_BYTES for each of r and s, + * twice that + 1 (tag) + 2 (len) for the sequence + * (assuming ECP_MAX_BYTES is less than 126 for r and s, + * and less than 124 (total len <= 255) for the sequence) + */ +#if MBEDTLS_ECP_MAX_BYTES > 124 +#error "MBEDTLS_ECP_MAX_BYTES bigger than expected, please fix MBEDTLS_ECDSA_MAX_LEN" +#endif +/** Maximum size of an ECDSA signature in bytes */ +#define MBEDTLS_ECDSA_MAX_LEN ( 3 + 2 * ( 3 + MBEDTLS_ECP_MAX_BYTES ) ) + +/** + * \brief ECDSA context structure + */ +typedef mbedtls_ecp_keypair mbedtls_ecdsa_context; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Compute ECDSA signature of a previously hashed message + * + * \note The deterministic version is usually prefered. + * + * \param grp ECP group + * \param r First output integer + * \param s Second output integer + * \param d Private signing key + * \param buf Message hash + * \param blen Length of buf + * \param f_rng RNG function + * \param p_rng RNG parameter + * + * \return 0 if successful, + * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code + */ +int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, + const mbedtls_mpi *d, const unsigned char *buf, size_t blen, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); + +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) +/** + * \brief Compute ECDSA signature of a previously hashed message, + * deterministic version (RFC 6979). + * + * \param grp ECP group + * \param r First output integer + * \param s Second output integer + * \param d Private signing key + * \param buf Message hash + * \param blen Length of buf + * \param md_alg MD algorithm used to hash the message + * + * \return 0 if successful, + * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code + */ +int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, + const mbedtls_mpi *d, const unsigned char *buf, size_t blen, + mbedtls_md_type_t md_alg ); +#endif /* MBEDTLS_ECDSA_DETERMINISTIC */ + +/** + * \brief Verify ECDSA signature of a previously hashed message + * + * \param grp ECP group + * \param buf Message hash + * \param blen Length of buf + * \param Q Public key to use for verification + * \param r First integer of the signature + * \param s Second integer of the signature + * + * \return 0 if successful, + * MBEDTLS_ERR_ECP_BAD_INPUT_DATA if signature is invalid + * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code + */ +int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, + const unsigned char *buf, size_t blen, + const mbedtls_ecp_point *Q, const mbedtls_mpi *r, const mbedtls_mpi *s); + +/** + * \brief Compute ECDSA signature and write it to buffer, + * serialized as defined in RFC 4492 page 20. + * (Not thread-safe to use same context in multiple threads) + * + * \note The deterministice version (RFC 6979) is used if + * MBEDTLS_ECDSA_DETERMINISTIC is defined. + * + * \param ctx ECDSA context + * \param md_alg Algorithm that was used to hash the message + * \param hash Message hash + * \param hlen Length of hash + * \param sig Buffer that will hold the signature + * \param slen Length of the signature written + * \param f_rng RNG function + * \param p_rng RNG parameter + * + * \note The "sig" buffer must be at least as large as twice the + * size of the curve used, plus 9 (eg. 73 bytes if a 256-bit + * curve is used). MBEDTLS_ECDSA_MAX_LEN is always safe. + * + * \return 0 if successful, + * or a MBEDTLS_ERR_ECP_XXX, MBEDTLS_ERR_MPI_XXX or + * MBEDTLS_ERR_ASN1_XXX error code + */ +int mbedtls_ecdsa_write_signature( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hlen, + unsigned char *sig, size_t *slen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) +#if ! defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief Compute ECDSA signature and write it to buffer, + * serialized as defined in RFC 4492 page 20. + * Deterministic version, RFC 6979. + * (Not thread-safe to use same context in multiple threads) + * + * \deprecated Superseded by mbedtls_ecdsa_write_signature() in 2.0.0 + * + * \param ctx ECDSA context + * \param hash Message hash + * \param hlen Length of hash + * \param sig Buffer that will hold the signature + * \param slen Length of the signature written + * \param md_alg MD algorithm used to hash the message + * + * \note The "sig" buffer must be at least as large as twice the + * size of the curve used, plus 9 (eg. 73 bytes if a 256-bit + * curve is used). MBEDTLS_ECDSA_MAX_LEN is always safe. + * + * \return 0 if successful, + * or a MBEDTLS_ERR_ECP_XXX, MBEDTLS_ERR_MPI_XXX or + * MBEDTLS_ERR_ASN1_XXX error code + */ +int mbedtls_ecdsa_write_signature_det( mbedtls_ecdsa_context *ctx, + const unsigned char *hash, size_t hlen, + unsigned char *sig, size_t *slen, + mbedtls_md_type_t md_alg ) MBEDTLS_DEPRECATED; +#undef MBEDTLS_DEPRECATED +#endif /* MBEDTLS_DEPRECATED_REMOVED */ +#endif /* MBEDTLS_ECDSA_DETERMINISTIC */ + +/** + * \brief Read and verify an ECDSA signature + * + * \param ctx ECDSA context + * \param hash Message hash + * \param hlen Size of hash + * \param sig Signature to read and verify + * \param slen Size of sig + * + * \return 0 if successful, + * MBEDTLS_ERR_ECP_BAD_INPUT_DATA if signature is invalid, + * MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH if the signature is + * valid but its actual length is less than siglen, + * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_ERR_MPI_XXX error code + */ +int mbedtls_ecdsa_read_signature( mbedtls_ecdsa_context *ctx, + const unsigned char *hash, size_t hlen, + const unsigned char *sig, size_t slen ); + +/** + * \brief Generate an ECDSA keypair on the given curve + * + * \param ctx ECDSA context in which the keypair should be stored + * \param gid Group (elliptic curve) to use. One of the various + * MBEDTLS_ECP_DP_XXX macros depending on configuration. + * \param f_rng RNG function + * \param p_rng RNG parameter + * + * \return 0 on success, or a MBEDTLS_ERR_ECP_XXX code. + */ +int mbedtls_ecdsa_genkey( mbedtls_ecdsa_context *ctx, mbedtls_ecp_group_id gid, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); + +/** + * \brief Set an ECDSA context from an EC key pair + * + * \param ctx ECDSA context to set + * \param key EC key to use + * + * \return 0 on success, or a MBEDTLS_ERR_ECP_XXX code. + */ +int mbedtls_ecdsa_from_keypair( mbedtls_ecdsa_context *ctx, const mbedtls_ecp_keypair *key ); + +/** + * \brief Initialize context + * + * \param ctx Context to initialize + */ +void mbedtls_ecdsa_init( mbedtls_ecdsa_context *ctx ); + +/** + * \brief Free context + * + * \param ctx Context to free + */ +void mbedtls_ecdsa_free( mbedtls_ecdsa_context *ctx ); + +#ifdef __cplusplus +} +#endif + +#endif /* ecdsa.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecjpake.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecjpake.h new file mode 100644 index 0000000..b7b6160 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecjpake.h @@ -0,0 +1,238 @@ +/** + * \file ecjpake.h + * + * \brief Elliptic curve J-PAKE + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_ECJPAKE_H +#define MBEDTLS_ECJPAKE_H + +/* + * J-PAKE is a password-authenticated key exchange that allows deriving a + * strong shared secret from a (potentially low entropy) pre-shared + * passphrase, with forward secrecy and mutual authentication. + * https://en.wikipedia.org/wiki/Password_Authenticated_Key_Exchange_by_Juggling + * + * This file implements the Elliptic Curve variant of J-PAKE, + * as defined in Chapter 7.4 of the Thread v1.0 Specification, + * available to members of the Thread Group http://threadgroup.org/ + * + * As the J-PAKE algorithm is inherently symmetric, so is our API. + * Each party needs to send its first round message, in any order, to the + * other party, then each sends its second round message, in any order. + * The payloads are serialized in a way suitable for use in TLS, but could + * also be use outside TLS. + */ + +#include "ecp.h" +#include "md.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Roles in the EC J-PAKE exchange + */ +typedef enum { + MBEDTLS_ECJPAKE_CLIENT = 0, /**< Client */ + MBEDTLS_ECJPAKE_SERVER, /**< Server */ +} mbedtls_ecjpake_role; + +/** + * EC J-PAKE context structure. + * + * J-PAKE is a symmetric protocol, except for the identifiers used in + * Zero-Knowledge Proofs, and the serialization of the second message + * (KeyExchange) as defined by the Thread spec. + * + * In order to benefit from this symmetry, we choose a different naming + * convetion from the Thread v1.0 spec. Correspondance is indicated in the + * description as a pair C: client name, S: server name + */ +typedef struct +{ + const mbedtls_md_info_t *md_info; /**< Hash to use */ + mbedtls_ecp_group grp; /**< Elliptic curve */ + mbedtls_ecjpake_role role; /**< Are we client or server? */ + int point_format; /**< Format for point export */ + + mbedtls_ecp_point Xm1; /**< My public key 1 C: X1, S: X3 */ + mbedtls_ecp_point Xm2; /**< My public key 2 C: X2, S: X4 */ + mbedtls_ecp_point Xp1; /**< Peer public key 1 C: X3, S: X1 */ + mbedtls_ecp_point Xp2; /**< Peer public key 2 C: X4, S: X2 */ + mbedtls_ecp_point Xp; /**< Peer public key C: Xs, S: Xc */ + + mbedtls_mpi xm1; /**< My private key 1 C: x1, S: x3 */ + mbedtls_mpi xm2; /**< My private key 2 C: x2, S: x4 */ + + mbedtls_mpi s; /**< Pre-shared secret (passphrase) */ +} mbedtls_ecjpake_context; + +/** + * \brief Initialize a context + * (just makes it ready for setup() or free()). + * + * \param ctx context to initialize + */ +void mbedtls_ecjpake_init( mbedtls_ecjpake_context *ctx ); + +/** + * \brief Set up a context for use + * + * \note Currently the only values for hash/curve allowed by the + * standard are MBEDTLS_MD_SHA256/MBEDTLS_ECP_DP_SECP256R1. + * + * \param ctx context to set up + * \param role Our role: client or server + * \param hash hash function to use (MBEDTLS_MD_XXX) + * \param curve elliptic curve identifier (MBEDTLS_ECP_DP_XXX) + * \param secret pre-shared secret (passphrase) + * \param len length of the shared secret + * + * \return 0 if successfull, + * a negative error code otherwise + */ +int mbedtls_ecjpake_setup( mbedtls_ecjpake_context *ctx, + mbedtls_ecjpake_role role, + mbedtls_md_type_t hash, + mbedtls_ecp_group_id curve, + const unsigned char *secret, + size_t len ); + +/* + * \brief Check if a context is ready for use + * + * \param ctx Context to check + * + * \return 0 if the context is ready for use, + * MBEDTLS_ERR_ECP_BAD_INPUT_DATA otherwise + */ +int mbedtls_ecjpake_check( const mbedtls_ecjpake_context *ctx ); + +/** + * \brief Generate and write the first round message + * (TLS: contents of the Client/ServerHello extension, + * excluding extension type and length bytes) + * + * \param ctx Context to use + * \param buf Buffer to write the contents to + * \param len Buffer size + * \param olen Will be updated with the number of bytes written + * \param f_rng RNG function + * \param p_rng RNG parameter + * + * \return 0 if successfull, + * a negative error code otherwise + */ +int mbedtls_ecjpake_write_round_one( mbedtls_ecjpake_context *ctx, + unsigned char *buf, size_t len, size_t *olen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief Read and process the first round message + * (TLS: contents of the Client/ServerHello extension, + * excluding extension type and length bytes) + * + * \param ctx Context to use + * \param buf Pointer to extension contents + * \param len Extension length + * + * \return 0 if successfull, + * a negative error code otherwise + */ +int mbedtls_ecjpake_read_round_one( mbedtls_ecjpake_context *ctx, + const unsigned char *buf, + size_t len ); + +/** + * \brief Generate and write the second round message + * (TLS: contents of the Client/ServerKeyExchange) + * + * \param ctx Context to use + * \param buf Buffer to write the contents to + * \param len Buffer size + * \param olen Will be updated with the number of bytes written + * \param f_rng RNG function + * \param p_rng RNG parameter + * + * \return 0 if successfull, + * a negative error code otherwise + */ +int mbedtls_ecjpake_write_round_two( mbedtls_ecjpake_context *ctx, + unsigned char *buf, size_t len, size_t *olen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief Read and process the second round message + * (TLS: contents of the Client/ServerKeyExchange) + * + * \param ctx Context to use + * \param buf Pointer to the message + * \param len Message length + * + * \return 0 if successfull, + * a negative error code otherwise + */ +int mbedtls_ecjpake_read_round_two( mbedtls_ecjpake_context *ctx, + const unsigned char *buf, + size_t len ); + +/** + * \brief Derive the shared secret + * (TLS: Pre-Master Secret) + * + * \param ctx Context to use + * \param buf Buffer to write the contents to + * \param len Buffer size + * \param olen Will be updated with the number of bytes written + * \param f_rng RNG function + * \param p_rng RNG parameter + * + * \return 0 if successfull, + * a negative error code otherwise + */ +int mbedtls_ecjpake_derive_secret( mbedtls_ecjpake_context *ctx, + unsigned char *buf, size_t len, size_t *olen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief Free a context's content + * + * \param ctx context to free + */ +void mbedtls_ecjpake_free( mbedtls_ecjpake_context *ctx ); + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if a test failed + */ +int mbedtls_ecjpake_self_test( int verbose ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ecjpake.h */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/ecp.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecp.h similarity index 50% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/ecp.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecp.h index 094a840..5246c78 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/ecp.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ecp.h @@ -3,40 +3,39 @@ * * \brief Elliptic curves over GF(p) * - * Copyright (C) 2006-2013, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_ECP_H -#define POLARSSL_ECP_H +#ifndef MBEDTLS_ECP_H +#define MBEDTLS_ECP_H #include "bignum.h" /* * ECP error codes */ -#define POLARSSL_ERR_ECP_BAD_INPUT_DATA -0x4F80 /**< Bad input parameters to function. */ -#define POLARSSL_ERR_ECP_BUFFER_TOO_SMALL -0x4F00 /**< The buffer is too small to write to. */ -#define POLARSSL_ERR_ECP_FEATURE_UNAVAILABLE -0x4E80 /**< Requested curve not available. */ -#define POLARSSL_ERR_ECP_VERIFY_FAILED -0x4E00 /**< The signature is not valid. */ -#define POLARSSL_ERR_ECP_MALLOC_FAILED -0x4D80 /**< Memory allocation failed. */ -#define POLARSSL_ERR_ECP_RANDOM_FAILED -0x4D00 /**< Generation of random value, such as (ephemeral) key, failed. */ -#define POLARSSL_ERR_ECP_INVALID_KEY -0x4C80 /**< Invalid private or public key. */ -#define POLARSSL_ERR_ECP_SIG_LEN_MISMATCH -0x4C00 /**< Signature is valid but shorter than the user-supplied length. */ +#define MBEDTLS_ERR_ECP_BAD_INPUT_DATA -0x4F80 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL -0x4F00 /**< The buffer is too small to write to. */ +#define MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE -0x4E80 /**< Requested curve not available. */ +#define MBEDTLS_ERR_ECP_VERIFY_FAILED -0x4E00 /**< The signature is not valid. */ +#define MBEDTLS_ERR_ECP_ALLOC_FAILED -0x4D80 /**< Memory allocation failed. */ +#define MBEDTLS_ERR_ECP_RANDOM_FAILED -0x4D00 /**< Generation of random value, such as (ephemeral) key, failed. */ +#define MBEDTLS_ERR_ECP_INVALID_KEY -0x4C80 /**< Invalid private or public key. */ +#define MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH -0x4C00 /**< Signature is valid but shorter than the user-supplied length. */ #ifdef __cplusplus extern "C" { @@ -49,45 +48,42 @@ extern "C" { * * \warning This library does not support validation of arbitrary domain * parameters. Therefore, only well-known domain parameters from trusted - * sources should be used. See ecp_use_known_dp(). + * sources should be used. See mbedtls_ecp_group_load(). */ typedef enum { - POLARSSL_ECP_DP_NONE = 0, - POLARSSL_ECP_DP_SECP192R1, /*!< 192-bits NIST curve */ - POLARSSL_ECP_DP_SECP224R1, /*!< 224-bits NIST curve */ - POLARSSL_ECP_DP_SECP256R1, /*!< 256-bits NIST curve */ - POLARSSL_ECP_DP_SECP384R1, /*!< 384-bits NIST curve */ - POLARSSL_ECP_DP_SECP521R1, /*!< 521-bits NIST curve */ - POLARSSL_ECP_DP_BP256R1, /*!< 256-bits Brainpool curve */ - POLARSSL_ECP_DP_BP384R1, /*!< 384-bits Brainpool curve */ - POLARSSL_ECP_DP_BP512R1, /*!< 512-bits Brainpool curve */ - POLARSSL_ECP_DP_M221, /*!< (not implemented yet) */ - POLARSSL_ECP_DP_M255, /*!< Curve25519 */ - POLARSSL_ECP_DP_M383, /*!< (not implemented yet) */ - POLARSSL_ECP_DP_M511, /*!< (not implemented yet) */ - POLARSSL_ECP_DP_SECP192K1, /*!< 192-bits "Koblitz" curve */ - POLARSSL_ECP_DP_SECP224K1, /*!< 224-bits "Koblitz" curve */ - POLARSSL_ECP_DP_SECP256K1, /*!< 256-bits "Koblitz" curve */ -} ecp_group_id; + MBEDTLS_ECP_DP_NONE = 0, + MBEDTLS_ECP_DP_SECP192R1, /*!< 192-bits NIST curve */ + MBEDTLS_ECP_DP_SECP224R1, /*!< 224-bits NIST curve */ + MBEDTLS_ECP_DP_SECP256R1, /*!< 256-bits NIST curve */ + MBEDTLS_ECP_DP_SECP384R1, /*!< 384-bits NIST curve */ + MBEDTLS_ECP_DP_SECP521R1, /*!< 521-bits NIST curve */ + MBEDTLS_ECP_DP_BP256R1, /*!< 256-bits Brainpool curve */ + MBEDTLS_ECP_DP_BP384R1, /*!< 384-bits Brainpool curve */ + MBEDTLS_ECP_DP_BP512R1, /*!< 512-bits Brainpool curve */ + MBEDTLS_ECP_DP_CURVE25519, /*!< Curve25519 */ + MBEDTLS_ECP_DP_SECP192K1, /*!< 192-bits "Koblitz" curve */ + MBEDTLS_ECP_DP_SECP224K1, /*!< 224-bits "Koblitz" curve */ + MBEDTLS_ECP_DP_SECP256K1, /*!< 256-bits "Koblitz" curve */ +} mbedtls_ecp_group_id; /** * Number of supported curves (plus one for NONE). * * (Montgomery curves excluded for now.) */ -#define POLARSSL_ECP_DP_MAX 12 +#define MBEDTLS_ECP_DP_MAX 12 /** * Curve information for use by other modules */ typedef struct { - ecp_group_id grp_id; /*!< Internal identifier */ - uint16_t tls_id; /*!< TLS NamedCurve identifier */ - uint16_t size; /*!< Curve size in bits */ - const char *name; /*!< Human-friendly name */ -} ecp_curve_info; + mbedtls_ecp_group_id grp_id; /*!< Internal identifier */ + uint16_t tls_id; /*!< TLS NamedCurve identifier */ + uint16_t bit_size; /*!< Curve size in bits */ + const char *name; /*!< Human-friendly name */ +} mbedtls_ecp_curve_info; /** * \brief ECP point structure (jacobian coordinates) @@ -100,31 +96,31 @@ typedef struct */ typedef struct { - mpi X; /*!< the point's X coordinate */ - mpi Y; /*!< the point's Y coordinate */ - mpi Z; /*!< the point's Z coordinate */ + mbedtls_mpi X; /*!< the point's X coordinate */ + mbedtls_mpi Y; /*!< the point's Y coordinate */ + mbedtls_mpi Z; /*!< the point's Z coordinate */ } -ecp_point; +mbedtls_ecp_point; /** * \brief ECP group structure * * We consider two types of curves equations: * 1. Short Weierstrass y^2 = x^3 + A x + B mod P (SEC1 + RFC 4492) - * 2. Montgomery, y^2 = x^3 + A x^2 + x mod P (M255 + draft) + * 2. Montgomery, y^2 = x^3 + A x^2 + x mod P (Curve25519 + draft) * In both cases, a generator G for a prime-order subgroup is fixed. In the * short weierstrass, this subgroup is actually the whole curve, and its * cardinal is denoted by N. * * In the case of Short Weierstrass curves, our code requires that N is an odd - * prime. (Use odd in ecp_mul() and prime in ecdsa_sign() for blinding.) + * prime. (Use odd in mbedtls_ecp_mul() and prime in mbedtls_ecdsa_sign() for blinding.) * * In the case of Montgomery curves, we don't store A but (A + 2) / 4 which is * the quantity actually used in the formulas. Also, nbits is not the size of N * but the required size for private keys. * * If modp is NULL, reduction modulo P is done using a generic algorithm. - * Otherwise, it must point to a function that takes an mpi in the range + * Otherwise, it must point to a function that takes an mbedtls_mpi in the range * 0..2^(2*pbits)-1 and transforms it in-place in an integer of little more * than pbits, so that the integer may be efficiently brought in the 0..P-1 * range by a few additions or substractions. It must return 0 on success and @@ -132,38 +128,38 @@ ecp_point; */ typedef struct { - ecp_group_id id; /*!< internal group identifier */ - mpi P; /*!< prime modulus of the base field */ - mpi A; /*!< 1. A in the equation, or 2. (A + 2) / 4 */ - mpi B; /*!< 1. B in the equation, or 2. unused */ - ecp_point G; /*!< generator of the (sub)group used */ - mpi N; /*!< 1. the order of G, or 2. unused */ + mbedtls_ecp_group_id id; /*!< internal group identifier */ + mbedtls_mpi P; /*!< prime modulus of the base field */ + mbedtls_mpi A; /*!< 1. A in the equation, or 2. (A + 2) / 4 */ + mbedtls_mpi B; /*!< 1. B in the equation, or 2. unused */ + mbedtls_ecp_point G; /*!< generator of the (sub)group used */ + mbedtls_mpi N; /*!< 1. the order of G, or 2. unused */ size_t pbits; /*!< number of bits in P */ size_t nbits; /*!< number of bits in 1. P, or 2. private keys */ unsigned int h; /*!< internal: 1 if the constants are static */ - int (*modp)(mpi *); /*!< function for fast reduction mod P */ - int (*t_pre)(ecp_point *, void *); /*!< unused */ - int (*t_post)(ecp_point *, void *); /*!< unused */ + int (*modp)(mbedtls_mpi *); /*!< function for fast reduction mod P */ + int (*t_pre)(mbedtls_ecp_point *, void *); /*!< unused */ + int (*t_post)(mbedtls_ecp_point *, void *); /*!< unused */ void *t_data; /*!< unused */ - ecp_point *T; /*!< pre-computed points for ecp_mul_comb() */ + mbedtls_ecp_point *T; /*!< pre-computed points for ecp_mul_comb() */ size_t T_size; /*!< number for pre-computed points */ } -ecp_group; +mbedtls_ecp_group; /** * \brief ECP key pair structure * * A generic key pair that could be used for ECDSA, fixed ECDH, etc. * - * \note Members purposefully in the same order as struc ecdsa_context. + * \note Members purposefully in the same order as struc mbedtls_ecdsa_context. */ typedef struct { - ecp_group grp; /*!< Elliptic curve and base point */ - mpi d; /*!< our secret value */ - ecp_point Q; /*!< our public value */ + mbedtls_ecp_group grp; /*!< Elliptic curve and base point */ + mbedtls_mpi d; /*!< our secret value */ + mbedtls_ecp_point Q; /*!< our public value */ } -ecp_keypair; +mbedtls_ecp_keypair; /** * \name SECTION: Module settings @@ -173,23 +169,23 @@ ecp_keypair; * \{ */ -#if !defined(POLARSSL_ECP_MAX_BITS) +#if !defined(MBEDTLS_ECP_MAX_BITS) /** * Maximum size of the groups (that is, of N and P) */ -#define POLARSSL_ECP_MAX_BITS 521 /**< Maximum bit size of groups */ +#define MBEDTLS_ECP_MAX_BITS 521 /**< Maximum bit size of groups */ #endif -#define POLARSSL_ECP_MAX_BYTES ( ( POLARSSL_ECP_MAX_BITS + 7 ) / 8 ) -#define POLARSSL_ECP_MAX_PT_LEN ( 2 * POLARSSL_ECP_MAX_BYTES + 1 ) +#define MBEDTLS_ECP_MAX_BYTES ( ( MBEDTLS_ECP_MAX_BITS + 7 ) / 8 ) +#define MBEDTLS_ECP_MAX_PT_LEN ( 2 * MBEDTLS_ECP_MAX_BYTES + 1 ) -#if !defined(POLARSSL_ECP_WINDOW_SIZE) +#if !defined(MBEDTLS_ECP_WINDOW_SIZE) /* * Maximum "window" size used for point multiplication. * Default: 6. * Minimum value: 2. Maximum value: 7. * - * Result is an array of at most ( 1 << ( POLARSSL_ECP_WINDOW_SIZE - 1 ) ) + * Result is an array of at most ( 1 << ( MBEDTLS_ECP_WINDOW_SIZE - 1 ) ) * points used for point multiplication. This value is directly tied to EC * peak memory usage, so decreasing it by one should roughly cut memory usage * by two (if large curves are in use). @@ -204,10 +200,10 @@ ecp_keypair; * 224 475 475 453 398 342 * 192 640 640 633 587 476 */ -#define POLARSSL_ECP_WINDOW_SIZE 6 /**< Maximum window size used */ -#endif /* POLARSSL_ECP_WINDOW_SIZE */ +#define MBEDTLS_ECP_WINDOW_SIZE 6 /**< Maximum window size used */ +#endif /* MBEDTLS_ECP_WINDOW_SIZE */ -#if !defined(POLARSSL_ECP_FIXED_POINT_OPTIM) +#if !defined(MBEDTLS_ECP_FIXED_POINT_OPTIM) /* * Trade memory for speed on fixed-point multiplication. * @@ -219,21 +215,21 @@ ecp_keypair; * * Change this value to 0 to reduce peak memory usage. */ -#define POLARSSL_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */ -#endif /* POLARSSL_ECP_FIXED_POINT_OPTIM */ +#define MBEDTLS_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */ +#endif /* MBEDTLS_ECP_FIXED_POINT_OPTIM */ /* \} name SECTION: Module settings */ /* * Point formats, from RFC 4492's enum ECPointFormat */ -#define POLARSSL_ECP_PF_UNCOMPRESSED 0 /**< Uncompressed point format */ -#define POLARSSL_ECP_PF_COMPRESSED 1 /**< Compressed point format */ +#define MBEDTLS_ECP_PF_UNCOMPRESSED 0 /**< Uncompressed point format */ +#define MBEDTLS_ECP_PF_COMPRESSED 1 /**< Compressed point format */ /* * Some other constants from RFC 4492 */ -#define POLARSSL_ECP_TLS_NAMED_CURVE 3 /**< ECCurveType's named_curve */ +#define MBEDTLS_ECP_TLS_NAMED_CURVE 3 /**< ECCurveType's named_curve */ /** * \brief Get the list of supported curves in order of preferrence @@ -241,34 +237,34 @@ ecp_keypair; * * \return A statically allocated array, the last entry is 0. */ -const ecp_curve_info *ecp_curve_list( void ); +const mbedtls_ecp_curve_info *mbedtls_ecp_curve_list( void ); /** * \brief Get the list of supported curves in order of preferrence * (grp_id only) * * \return A statically allocated array, - * terminated with POLARSSL_ECP_DP_NONE. + * terminated with MBEDTLS_ECP_DP_NONE. */ -const ecp_group_id *ecp_grp_id_list( void ); +const mbedtls_ecp_group_id *mbedtls_ecp_grp_id_list( void ); /** * \brief Get curve information from an internal group identifier * - * \param grp_id A POLARSSL_ECP_DP_XXX value + * \param grp_id A MBEDTLS_ECP_DP_XXX value * * \return The associated curve information or NULL */ -const ecp_curve_info *ecp_curve_info_from_grp_id( ecp_group_id grp_id ); +const mbedtls_ecp_curve_info *mbedtls_ecp_curve_info_from_grp_id( mbedtls_ecp_group_id grp_id ); /** * \brief Get curve information from a TLS NamedCurve value * - * \param tls_id A POLARSSL_ECP_DP_XXX value + * \param tls_id A MBEDTLS_ECP_DP_XXX value * * \return The associated curve information or NULL */ -const ecp_curve_info *ecp_curve_info_from_tls_id( uint16_t tls_id ); +const mbedtls_ecp_curve_info *mbedtls_ecp_curve_info_from_tls_id( uint16_t tls_id ); /** * \brief Get curve information from a human-readable name @@ -277,37 +273,37 @@ const ecp_curve_info *ecp_curve_info_from_tls_id( uint16_t tls_id ); * * \return The associated curve information or NULL */ -const ecp_curve_info *ecp_curve_info_from_name( const char *name ); +const mbedtls_ecp_curve_info *mbedtls_ecp_curve_info_from_name( const char *name ); /** * \brief Initialize a point (as zero) */ -void ecp_point_init( ecp_point *pt ); +void mbedtls_ecp_point_init( mbedtls_ecp_point *pt ); /** * \brief Initialize a group (to something meaningless) */ -void ecp_group_init( ecp_group *grp ); +void mbedtls_ecp_group_init( mbedtls_ecp_group *grp ); /** * \brief Initialize a key pair (as an invalid one) */ -void ecp_keypair_init( ecp_keypair *key ); +void mbedtls_ecp_keypair_init( mbedtls_ecp_keypair *key ); /** * \brief Free the components of a point */ -void ecp_point_free( ecp_point *pt ); +void mbedtls_ecp_point_free( mbedtls_ecp_point *pt ); /** * \brief Free the components of an ECP group */ -void ecp_group_free( ecp_group *grp ); +void mbedtls_ecp_group_free( mbedtls_ecp_group *grp ); /** * \brief Free the components of a key pair */ -void ecp_keypair_free( ecp_keypair *key ); +void mbedtls_ecp_keypair_free( mbedtls_ecp_keypair *key ); /** * \brief Copy the contents of point Q into P @@ -316,9 +312,9 @@ void ecp_keypair_free( ecp_keypair *key ); * \param Q Source point * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int ecp_copy( ecp_point *P, const ecp_point *Q ); +int mbedtls_ecp_copy( mbedtls_ecp_point *P, const mbedtls_ecp_point *Q ); /** * \brief Copy the contents of a group object @@ -327,9 +323,9 @@ int ecp_copy( ecp_point *P, const ecp_point *Q ); * \param src Source group * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int ecp_group_copy( ecp_group *dst, const ecp_group *src ); +int mbedtls_ecp_group_copy( mbedtls_ecp_group *dst, const mbedtls_ecp_group *src ); /** * \brief Set a point to zero @@ -337,9 +333,9 @@ int ecp_group_copy( ecp_group *dst, const ecp_group *src ); * \param pt Destination point * * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int ecp_set_zero( ecp_point *pt ); +int mbedtls_ecp_set_zero( mbedtls_ecp_point *pt ); /** * \brief Tell if a point is zero @@ -348,7 +344,22 @@ int ecp_set_zero( ecp_point *pt ); * * \return 1 if point is zero, 0 otherwise */ -int ecp_is_zero( ecp_point *pt ); +int mbedtls_ecp_is_zero( mbedtls_ecp_point *pt ); + +/** + * \brief Compare two points + * + * \note This assumes the points are normalized. Otherwise, + * they may compare as "not equal" even if they are. + * + * \param P First point to compare + * \param Q Second point to compare + * + * \return 0 if the points are equal, + * MBEDTLS_ERR_ECP_BAD_INPUT_DATA otherwise + */ +int mbedtls_ecp_point_cmp( const mbedtls_ecp_point *P, + const mbedtls_ecp_point *Q ); /** * \brief Import a non-zero point from two ASCII strings @@ -358,9 +369,9 @@ int ecp_is_zero( ecp_point *pt ); * \param x First affine coordinate as a null-terminated string * \param y Second affine coordinate as a null-terminated string * - * \return 0 if successful, or a POLARSSL_ERR_MPI_XXX error code + * \return 0 if successful, or a MBEDTLS_ERR_MPI_XXX error code */ -int ecp_point_read_string( ecp_point *P, int radix, +int mbedtls_ecp_point_read_string( mbedtls_ecp_point *P, int radix, const char *x, const char *y ); /** @@ -368,16 +379,16 @@ int ecp_point_read_string( ecp_point *P, int radix, * * \param grp Group to which the point should belong * \param P Point to export - * \param format Point format, should be a POLARSSL_ECP_PF_XXX macro + * \param format Point format, should be a MBEDTLS_ECP_PF_XXX macro * \param olen Length of the actual output * \param buf Output buffer * \param buflen Length of the output buffer * * \return 0 if successful, - * or POLARSSL_ERR_ECP_BAD_INPUT_DATA - * or POLARSSL_ERR_ECP_BUFFER_TOO_SMALL + * or MBEDTLS_ERR_ECP_BAD_INPUT_DATA + * or MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL */ -int ecp_point_write_binary( const ecp_group *grp, const ecp_point *P, +int mbedtls_ecp_point_write_binary( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *P, int format, size_t *olen, unsigned char *buf, size_t buflen ); @@ -390,16 +401,16 @@ int ecp_point_write_binary( const ecp_group *grp, const ecp_point *P, * \param ilen Actual length of input * * \return 0 if successful, - * POLARSSL_ERR_ECP_BAD_INPUT_DATA if input is invalid, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed, - * POLARSSL_ERR_ECP_FEATURE_UNAVAILABLE if the point format + * MBEDTLS_ERR_ECP_BAD_INPUT_DATA if input is invalid, + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the point format * is not implemented. * * \note This function does NOT check that the point actually - * belongs to the given group, see ecp_check_pubkey() for + * belongs to the given group, see mbedtls_ecp_check_pubkey() for * that. */ -int ecp_point_read_binary( const ecp_group *grp, ecp_point *P, +int mbedtls_ecp_point_read_binary( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P, const unsigned char *buf, size_t ilen ); /** @@ -413,10 +424,10 @@ int ecp_point_read_binary( const ecp_group *grp, ecp_point *P, * \note buf is updated to point right after the ECPoint on exit * * \return 0 if successful, - * POLARSSL_ERR_MPI_XXX if initialization failed - * POLARSSL_ERR_ECP_BAD_INPUT_DATA if input is invalid + * MBEDTLS_ERR_MPI_XXX if initialization failed + * MBEDTLS_ERR_ECP_BAD_INPUT_DATA if input is invalid */ -int ecp_tls_read_point( const ecp_group *grp, ecp_point *pt, +int mbedtls_ecp_tls_read_point( const mbedtls_ecp_group *grp, mbedtls_ecp_point *pt, const unsigned char **buf, size_t len ); /** @@ -430,32 +441,13 @@ int ecp_tls_read_point( const ecp_group *grp, ecp_point *pt, * \param blen Buffer length * * \return 0 if successful, - * or POLARSSL_ERR_ECP_BAD_INPUT_DATA - * or POLARSSL_ERR_ECP_BUFFER_TOO_SMALL + * or MBEDTLS_ERR_ECP_BAD_INPUT_DATA + * or MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL */ -int ecp_tls_write_point( const ecp_group *grp, const ecp_point *pt, +int mbedtls_ecp_tls_write_point( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *pt, int format, size_t *olen, unsigned char *buf, size_t blen ); -/** - * \brief Import an ECP group from null-terminated ASCII strings - * - * \param grp Destination group - * \param radix Input numeric base - * \param p Prime modulus of the base field - * \param b Constant term in the equation - * \param gx The generator's X coordinate - * \param gy The generator's Y coordinate - * \param n The generator's order - * - * \return 0 if successful, or a POLARSSL_ERR_MPI_XXX error code - * - * \note Sets all fields except modp. - */ -int ecp_group_read_string( ecp_group *grp, int radix, - const char *p, const char *b, - const char *gx, const char *gy, const char *n); - /** * \brief Set a group using well-known domain parameters * @@ -463,13 +455,13 @@ int ecp_group_read_string( ecp_group *grp, int radix, * \param index Index in the list of well-known domain parameters * * \return 0 if successful, - * POLARSSL_ERR_MPI_XXX if initialization failed - * POLARSSL_ERR_ECP_FEATURE_UNAVAILABLE for unkownn groups + * MBEDTLS_ERR_MPI_XXX if initialization failed + * MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE for unkownn groups * - * \note Index should be a value of RFC 4492's enum NamdeCurve, - * possibly in the form of a POLARSSL_ECP_DP_XXX macro. + * \note Index should be a value of RFC 4492's enum NamedCurve, + * usually in the form of a MBEDTLS_ECP_DP_XXX macro. */ -int ecp_use_known_dp( ecp_group *grp, ecp_group_id index ); +int mbedtls_ecp_group_load( mbedtls_ecp_group *grp, mbedtls_ecp_group_id index ); /** * \brief Set a group from a TLS ECParameters record @@ -481,10 +473,10 @@ int ecp_use_known_dp( ecp_group *grp, ecp_group_id index ); * \note buf is updated to point right after ECParameters on exit * * \return 0 if successful, - * POLARSSL_ERR_MPI_XXX if initialization failed - * POLARSSL_ERR_ECP_BAD_INPUT_DATA if input is invalid + * MBEDTLS_ERR_MPI_XXX if initialization failed + * MBEDTLS_ERR_ECP_BAD_INPUT_DATA if input is invalid */ -int ecp_tls_read_group( ecp_group *grp, const unsigned char **buf, size_t len ); +int mbedtls_ecp_tls_read_group( mbedtls_ecp_group *grp, const unsigned char **buf, size_t len ); /** * \brief Write the TLS ECParameters record for a group @@ -495,61 +487,15 @@ int ecp_tls_read_group( ecp_group *grp, const unsigned char **buf, size_t len ); * \param blen Buffer length * * \return 0 if successful, - * or POLARSSL_ERR_ECP_BUFFER_TOO_SMALL + * or MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL */ -int ecp_tls_write_group( const ecp_group *grp, size_t *olen, +int mbedtls_ecp_tls_write_group( const mbedtls_ecp_group *grp, size_t *olen, unsigned char *buf, size_t blen ); -/** - * \brief Addition: R = P + Q - * - * \param grp ECP group - * \param R Destination point - * \param P Left-hand point - * \param Q Right-hand point - * - * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed - * - * \note This function does not support Montgomery curves, such as - * Curve25519. - */ -int ecp_add( const ecp_group *grp, ecp_point *R, - const ecp_point *P, const ecp_point *Q ); - -/** - * \brief Subtraction: R = P - Q - * - * \param grp ECP group - * \param R Destination point - * \param P Left-hand point - * \param Q Right-hand point - * - * \return 0 if successful, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed - * - * \note This function does not support Montgomery curves, such as - * Curve25519. - */ -int ecp_sub( const ecp_group *grp, ecp_point *R, - const ecp_point *P, const ecp_point *Q ); - /** * \brief Multiplication by an integer: R = m * P * (Not thread-safe to use same group in multiple threads) * - * \param grp ECP group - * \param R Destination point - * \param m Integer by which to multiply - * \param P Point to multiply - * \param f_rng RNG function (see notes) - * \param p_rng RNG parameter - * - * \return 0 if successful, - * POLARSSL_ERR_ECP_INVALID_KEY if m is not a valid privkey - * or P is not a valid pubkey, - * POLARSSL_ERR_MPI_MALLOC_FAILED if memory allocation failed - * * \note In order to prevent timing attacks, this function * executes the exact same sequence of (base field) * operations for any valid m. It avoids any if-branch or @@ -559,11 +505,47 @@ int ecp_sub( const ecp_group *grp, ecp_point *R, * results in order to prevent potential timing attacks * targeting these results. It is recommended to always * provide a non-NULL f_rng (the overhead is negligible). + * + * \param grp ECP group + * \param R Destination point + * \param m Integer by which to multiply + * \param P Point to multiply + * \param f_rng RNG function (see notes) + * \param p_rng RNG parameter + * + * \return 0 if successful, + * MBEDTLS_ERR_ECP_INVALID_KEY if m is not a valid privkey + * or P is not a valid pubkey, + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed */ -int ecp_mul( ecp_group *grp, ecp_point *R, - const mpi *m, const ecp_point *P, +int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, + const mbedtls_mpi *m, const mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); +/** + * \brief Multiplication and addition of two points by integers: + * R = m * P + n * Q + * (Not thread-safe to use same group in multiple threads) + * + * \note In contrast to mbedtls_ecp_mul(), this function does not guarantee + * a constant execution flow and timing. + * + * \param grp ECP group + * \param R Destination point + * \param m Integer by which to multiply P + * \param P Point to multiply by m + * \param n Integer by which to multiply Q + * \param Q Point to be multiplied by n + * + * \return 0 if successful, + * MBEDTLS_ERR_ECP_INVALID_KEY if m or n is not a valid privkey + * or P or Q is not a valid pubkey, + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed + */ +int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, + const mbedtls_mpi *m, const mbedtls_ecp_point *P, + const mbedtls_mpi *n, const mbedtls_ecp_point *Q ); + /** * \brief Check that a point is a valid public key on this curve * @@ -571,7 +553,7 @@ int ecp_mul( ecp_group *grp, ecp_point *R, * \param pt Point to check * * \return 0 if point is a valid public key, - * POLARSSL_ERR_ECP_INVALID_KEY otherwise. + * MBEDTLS_ERR_ECP_INVALID_KEY otherwise. * * \note This function only checks the point is non-zero, has valid * coordinates and lies on the curve, but not that it is @@ -581,26 +563,49 @@ int ecp_mul( ecp_group *grp, ecp_point *R, * particular, it is useless for the NIST groups which all * have a cofactor of 1. * - * \note Uses bare components rather than an ecp_keypair structure + * \note Uses bare components rather than an mbedtls_ecp_keypair structure * in order to ease use with other structures such as - * ecdh_context of ecdsa_context. + * mbedtls_ecdh_context of mbedtls_ecdsa_context. */ -int ecp_check_pubkey( const ecp_group *grp, const ecp_point *pt ); +int mbedtls_ecp_check_pubkey( const mbedtls_ecp_group *grp, const mbedtls_ecp_point *pt ); /** - * \brief Check that an mpi is a valid private key for this curve + * \brief Check that an mbedtls_mpi is a valid private key for this curve * * \param grp Group used * \param d Integer to check * * \return 0 if point is a valid private key, - * POLARSSL_ERR_ECP_INVALID_KEY otherwise. + * MBEDTLS_ERR_ECP_INVALID_KEY otherwise. * - * \note Uses bare components rather than an ecp_keypair structure + * \note Uses bare components rather than an mbedtls_ecp_keypair structure * in order to ease use with other structures such as - * ecdh_context of ecdsa_context. + * mbedtls_ecdh_context of mbedtls_ecdsa_context. */ -int ecp_check_privkey( const ecp_group *grp, const mpi *d ); +int mbedtls_ecp_check_privkey( const mbedtls_ecp_group *grp, const mbedtls_mpi *d ); + +/** + * \brief Generate a keypair with configurable base point + * + * \param grp ECP group + * \param G Chosen base point + * \param d Destination MPI (secret part) + * \param Q Destination point (public part) + * \param f_rng RNG function + * \param p_rng RNG parameter + * + * \return 0 if successful, + * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code + * + * \note Uses bare components rather than an mbedtls_ecp_keypair structure + * in order to ease use with other structures such as + * mbedtls_ecdh_context of mbedtls_ecdsa_context. + */ +int mbedtls_ecp_gen_keypair_base( mbedtls_ecp_group *grp, + const mbedtls_ecp_point *G, + mbedtls_mpi *d, mbedtls_ecp_point *Q, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); /** * \brief Generate a keypair @@ -612,13 +617,13 @@ int ecp_check_privkey( const ecp_group *grp, const mpi *d ); * \param p_rng RNG parameter * * \return 0 if successful, - * or a POLARSSL_ERR_ECP_XXX or POLARSSL_MPI_XXX error code + * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code * - * \note Uses bare components rather than an ecp_keypair structure + * \note Uses bare components rather than an mbedtls_ecp_keypair structure * in order to ease use with other structures such as - * ecdh_context of ecdsa_context. + * mbedtls_ecdh_context of mbedtls_ecdsa_context. */ -int ecp_gen_keypair( ecp_group *grp, mpi *d, ecp_point *Q, +int mbedtls_ecp_gen_keypair( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp_point *Q, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -631,9 +636,9 @@ int ecp_gen_keypair( ecp_group *grp, mpi *d, ecp_point *Q, * \param p_rng RNG parameter * * \return 0 if successful, - * or a POLARSSL_ERR_ECP_XXX or POLARSSL_MPI_XXX error code + * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code */ -int ecp_gen_key( ecp_group_id grp_id, ecp_keypair *key, +int mbedtls_ecp_gen_key( mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); /** @@ -643,18 +648,18 @@ int ecp_gen_key( ecp_group_id grp_id, ecp_keypair *key, * \param prv Keypair structure holding a private (plus public) key * * \return 0 if successful (keys are valid and match), or - * POLARSSL_ERR_ECP_BAD_INPUT_DATA, or - * a POLARSSL_ERR_ECP_XXX or POLARSSL_ERR_MPI_XXX code. + * MBEDTLS_ERR_ECP_BAD_INPUT_DATA, or + * a MBEDTLS_ERR_ECP_XXX or MBEDTLS_ERR_MPI_XXX code. */ -int ecp_check_pub_priv( const ecp_keypair *pub, const ecp_keypair *prv ); +int mbedtls_ecp_check_pub_priv( const mbedtls_ecp_keypair *pub, const mbedtls_ecp_keypair *prv ); -#if defined(POLARSSL_SELF_TEST) +#if defined(MBEDTLS_SELF_TEST) /** * \brief Checkup routine * * \return 0 if successful, or 1 if a test failed */ -int ecp_self_test( int verbose ); +int mbedtls_ecp_self_test( int verbose ); #endif #ifdef __cplusplus diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/entropy.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/entropy.h new file mode 100644 index 0000000..747aca4 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/entropy.h @@ -0,0 +1,287 @@ +/** + * \file entropy.h + * + * \brief Entropy accumulator implementation + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_ENTROPY_H +#define MBEDTLS_ENTROPY_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) +#include "sha512.h" +#define MBEDTLS_ENTROPY_SHA512_ACCUMULATOR +#else +#if defined(MBEDTLS_SHA256_C) +#define MBEDTLS_ENTROPY_SHA256_ACCUMULATOR +#include "sha256.h" +#endif +#endif + +#if defined(MBEDTLS_THREADING_C) +#include "threading.h" +#endif + +#if defined(MBEDTLS_HAVEGE_C) +#include "havege.h" +#endif + +#define MBEDTLS_ERR_ENTROPY_SOURCE_FAILED -0x003C /**< Critical entropy source failure. */ +#define MBEDTLS_ERR_ENTROPY_MAX_SOURCES -0x003E /**< No more sources can be added. */ +#define MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED -0x0040 /**< No sources have been added to poll. */ +#define MBEDTLS_ERR_ENTROPY_NO_STRONG_SOURCE -0x003D /**< No strong sources have been added to poll. */ +#define MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR -0x003F /**< Read/write error in file. */ + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ + +#if !defined(MBEDTLS_ENTROPY_MAX_SOURCES) +#define MBEDTLS_ENTROPY_MAX_SOURCES 20 /**< Maximum number of sources supported */ +#endif + +#if !defined(MBEDTLS_ENTROPY_MAX_GATHER) +#define MBEDTLS_ENTROPY_MAX_GATHER 128 /**< Maximum amount requested from entropy sources */ +#endif + +/* \} name SECTION: Module settings */ + +#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR) +#define MBEDTLS_ENTROPY_BLOCK_SIZE 64 /**< Block size of entropy accumulator (SHA-512) */ +#else +#define MBEDTLS_ENTROPY_BLOCK_SIZE 32 /**< Block size of entropy accumulator (SHA-256) */ +#endif + +#define MBEDTLS_ENTROPY_MAX_SEED_SIZE 1024 /**< Maximum size of seed we read from seed file */ +#define MBEDTLS_ENTROPY_SOURCE_MANUAL MBEDTLS_ENTROPY_MAX_SOURCES + +#define MBEDTLS_ENTROPY_SOURCE_STRONG 1 /**< Entropy source is strong */ +#define MBEDTLS_ENTROPY_SOURCE_WEAK 0 /**< Entropy source is weak */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Entropy poll callback pointer + * + * \param data Callback-specific data pointer + * \param output Data to fill + * \param len Maximum size to provide + * \param olen The actual amount of bytes put into the buffer (Can be 0) + * + * \return 0 if no critical failures occurred, + * MBEDTLS_ERR_ENTROPY_SOURCE_FAILED otherwise + */ +typedef int (*mbedtls_entropy_f_source_ptr)(void *data, unsigned char *output, size_t len, + size_t *olen); + +/** + * \brief Entropy source state + */ +typedef struct +{ + mbedtls_entropy_f_source_ptr f_source; /**< The entropy source callback */ + void * p_source; /**< The callback data pointer */ + size_t size; /**< Amount received in bytes */ + size_t threshold; /**< Minimum bytes required before release */ + int strong; /**< Is the source strong? */ +} +mbedtls_entropy_source_state; + +/** + * \brief Entropy context structure + */ +typedef struct +{ +#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR) + mbedtls_sha512_context accumulator; +#else + mbedtls_sha256_context accumulator; +#endif + int source_count; + mbedtls_entropy_source_state source[MBEDTLS_ENTROPY_MAX_SOURCES]; +#if defined(MBEDTLS_HAVEGE_C) + mbedtls_havege_state havege_data; +#endif +#if defined(MBEDTLS_THREADING_C) + mbedtls_threading_mutex_t mutex; /*!< mutex */ +#endif +#if defined(MBEDTLS_ENTROPY_NV_SEED) + int initial_entropy_run; +#endif +} +mbedtls_entropy_context; + +/** + * \brief Initialize the context + * + * \param ctx Entropy context to initialize + */ +void mbedtls_entropy_init( mbedtls_entropy_context *ctx ); + +/** + * \brief Free the data in the context + * + * \param ctx Entropy context to free + */ +void mbedtls_entropy_free( mbedtls_entropy_context *ctx ); + +/** + * \brief Adds an entropy source to poll + * (Thread-safe if MBEDTLS_THREADING_C is enabled) + * + * \param ctx Entropy context + * \param f_source Entropy function + * \param p_source Function data + * \param threshold Minimum required from source before entropy is released + * ( with mbedtls_entropy_func() ) (in bytes) + * \param strong MBEDTLS_ENTROPY_SOURCE_STRONG or + * MBEDTSL_ENTROPY_SOURCE_WEAK. + * At least one strong source needs to be added. + * Weaker sources (such as the cycle counter) can be used as + * a complement. + * + * \return 0 if successful or MBEDTLS_ERR_ENTROPY_MAX_SOURCES + */ +int mbedtls_entropy_add_source( mbedtls_entropy_context *ctx, + mbedtls_entropy_f_source_ptr f_source, void *p_source, + size_t threshold, int strong ); + +/** + * \brief Trigger an extra gather poll for the accumulator + * (Thread-safe if MBEDTLS_THREADING_C is enabled) + * + * \param ctx Entropy context + * + * \return 0 if successful, or MBEDTLS_ERR_ENTROPY_SOURCE_FAILED + */ +int mbedtls_entropy_gather( mbedtls_entropy_context *ctx ); + +/** + * \brief Retrieve entropy from the accumulator + * (Maximum length: MBEDTLS_ENTROPY_BLOCK_SIZE) + * (Thread-safe if MBEDTLS_THREADING_C is enabled) + * + * \param data Entropy context + * \param output Buffer to fill + * \param len Number of bytes desired, must be at most MBEDTLS_ENTROPY_BLOCK_SIZE + * + * \return 0 if successful, or MBEDTLS_ERR_ENTROPY_SOURCE_FAILED + */ +int mbedtls_entropy_func( void *data, unsigned char *output, size_t len ); + +/** + * \brief Add data to the accumulator manually + * (Thread-safe if MBEDTLS_THREADING_C is enabled) + * + * \param ctx Entropy context + * \param data Data to add + * \param len Length of data + * + * \return 0 if successful + */ +int mbedtls_entropy_update_manual( mbedtls_entropy_context *ctx, + const unsigned char *data, size_t len ); + +#if defined(MBEDTLS_ENTROPY_NV_SEED) +/** + * \brief Trigger an update of the seed file in NV by using the + * current entropy pool. + * + * \param ctx Entropy context + * + * \return 0 if successful + */ +int mbedtls_entropy_update_nv_seed( mbedtls_entropy_context *ctx ); +#endif /* MBEDTLS_ENTROPY_NV_SEED */ + +#if defined(MBEDTLS_FS_IO) +/** + * \brief Write a seed file + * + * \param ctx Entropy context + * \param path Name of the file + * + * \return 0 if successful, + * MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR on file error, or + * MBEDTLS_ERR_ENTROPY_SOURCE_FAILED + */ +int mbedtls_entropy_write_seed_file( mbedtls_entropy_context *ctx, const char *path ); + +/** + * \brief Read and update a seed file. Seed is added to this + * instance. No more than MBEDTLS_ENTROPY_MAX_SEED_SIZE bytes are + * read from the seed file. The rest is ignored. + * + * \param ctx Entropy context + * \param path Name of the file + * + * \return 0 if successful, + * MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR on file error, + * MBEDTLS_ERR_ENTROPY_SOURCE_FAILED + */ +int mbedtls_entropy_update_seed_file( mbedtls_entropy_context *ctx, const char *path ); +#endif /* MBEDTLS_FS_IO */ + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief Checkup routine + * + * This module self-test also calls the entropy self-test, + * mbedtls_entropy_source_self_test(); + * + * \return 0 if successful, or 1 if a test failed + */ +int mbedtls_entropy_self_test( int verbose ); + +#if defined(MBEDTLS_ENTROPY_HARDWARE_ALT) +/** + * \brief Checkup routine + * + * Verifies the integrity of the hardware entropy source + * provided by the function 'mbedtls_hardware_poll()'. + * + * Note this is the only hardware entropy source that is known + * at link time, and other entropy sources configured + * dynamically at runtime by the function + * mbedtls_entropy_add_source() will not be tested. + * + * \return 0 if successful, or 1 if a test failed + */ +int mbedtls_entropy_source_self_test( int verbose ); +#endif /* MBEDTLS_ENTROPY_HARDWARE_ALT */ +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* entropy.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/entropy_poll.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/entropy_poll.h new file mode 100644 index 0000000..81258d5 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/entropy_poll.h @@ -0,0 +1,109 @@ +/** + * \file entropy_poll.h + * + * \brief Platform-specific and custom entropy polling functions + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_ENTROPY_POLL_H +#define MBEDTLS_ENTROPY_POLL_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Default thresholds for built-in sources, in bytes + */ +#define MBEDTLS_ENTROPY_MIN_PLATFORM 32 /**< Minimum for platform source */ +#define MBEDTLS_ENTROPY_MIN_HAVEGE 32 /**< Minimum for HAVEGE */ +#define MBEDTLS_ENTROPY_MIN_HARDCLOCK 4 /**< Minimum for mbedtls_timing_hardclock() */ +#if !defined(MBEDTLS_ENTROPY_MIN_HARDWARE) +#define MBEDTLS_ENTROPY_MIN_HARDWARE 32 /**< Minimum for the hardware source */ +#endif + +/** + * \brief Entropy poll callback that provides 0 entropy. + */ +#if defined(MBEDTLS_TEST_NULL_ENTROPY) + int mbedtls_null_entropy_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#if !defined(MBEDTLS_NO_PLATFORM_ENTROPY) +/** + * \brief Platform-specific entropy poll callback + */ +int mbedtls_platform_entropy_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#if defined(MBEDTLS_HAVEGE_C) +/** + * \brief HAVEGE based entropy poll callback + * + * Requires an HAVEGE state as its data pointer. + */ +int mbedtls_havege_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#if defined(MBEDTLS_TIMING_C) +/** + * \brief mbedtls_timing_hardclock-based entropy poll callback + */ +int mbedtls_hardclock_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#if defined(MBEDTLS_ENTROPY_HARDWARE_ALT) +/** + * \brief Entropy poll callback for a hardware source + * + * \warning This is not provided by mbed TLS! + * See \c MBEDTLS_ENTROPY_HARDWARE_ALT in config.h. + * + * \note This must accept NULL as its first argument. + */ +int mbedtls_hardware_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#if defined(MBEDTLS_ENTROPY_NV_SEED) +/** + * \brief Entropy poll callback for a non-volatile seed file + * + * \note This must accept NULL as its first argument. + */ +int mbedtls_nv_seed_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* entropy_poll.h */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/error.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/error.h similarity index 57% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/error.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/error.h index 3041155..5e549f6 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/error.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/error.h @@ -3,26 +3,25 @@ * * \brief Error to string translation * - * Copyright (C) 2006-2013, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_ERROR_H -#define POLARSSL_ERROR_H +#ifndef MBEDTLS_ERROR_H +#define MBEDTLS_ERROR_H #include @@ -30,7 +29,7 @@ * Error code layout. * * Currently we try to keep all error codes within the negative space of 16 - * bytes signed integers to support all platforms (-0x0000 - -0x8000). In + * bits signed integers to support all platforms (-0x0001 - -0x7FFF). In * addition we'd like to give two layers of information on the error if * possible. * @@ -38,7 +37,7 @@ * * 16 bit error code bit-segmentation * - * 1 bit - Sign bit + * 1 bit - Unused (sign bit) * 3 bits - High level module ID * 5 bits - Module-dependent error code * 7 bits - Low level module errors @@ -61,18 +60,10 @@ * PADLOCK 1 0x0030-0x0030 * DES 1 0x0032-0x0032 * CTR_DBRG 4 0x0034-0x003A - * ENTROPY 3 0x003C-0x0040 - * NET 11 0x0042-0x0056 - * ENTROPY 1 0x0058-0x0058 + * ENTROPY 3 0x003C-0x0040 0x003D-0x003F + * NET 11 0x0042-0x0052 0x0043-0x0045 * ASN1 7 0x0060-0x006C - * MD2 1 0x0070-0x0070 - * MD4 1 0x0072-0x0072 - * MD5 1 0x0074-0x0074 - * SHA1 1 0x0076-0x0076 - * SHA256 1 0x0078-0x0078 - * SHA512 1 0x007A-0x007A * PBKDF2 1 0x007C-0x007C - * RIPEMD160 1 0x007E-0x007E * HMAC_DRBG 4 0x0003-0x0009 * CCM 2 0x000D-0x000F * @@ -80,15 +71,15 @@ * Name ID Nr of Errors * PEM 1 9 * PKCS#12 1 4 (Started from top) - * X509 2 18 - * PK 2 14 (Started from top, plus 0x2000) + * X509 2 19 + * PKCS5 2 4 (Started from top) * DHM 3 9 - * PKCS5 3 4 (Started from top) + * PK 3 14 (Started from top) * RSA 4 9 * ECP 4 8 (Started from top) * MD 5 4 * CIPHER 6 6 - * SSL 6 11 (Started from top) + * SSL 6 17 (Started from top) * SSL 7 31 * * Module dependent error code (5 bits 0x.00.-0x.F8.) @@ -107,11 +98,7 @@ extern "C" { * \param buffer buffer to place representation in * \param buflen length of the buffer */ -void polarssl_strerror( int errnum, char *buffer, size_t buflen ); - -#if defined(POLARSSL_ERROR_STRERROR_BC) -void error_strerror( int errnum, char *buffer, size_t buflen ); -#endif +void mbedtls_strerror( int errnum, char *buffer, size_t buflen ); #ifdef __cplusplus } diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/gcm.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/gcm.h similarity index 67% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/gcm.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/gcm.h index 5a94722..1b77aae 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/gcm.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/gcm.h @@ -3,42 +3,35 @@ * * \brief Galois/Counter mode for 128-bit block ciphers * - * Copyright (C) 2006-2013, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_GCM_H -#define POLARSSL_GCM_H +#ifndef MBEDTLS_GCM_H +#define MBEDTLS_GCM_H #include "cipher.h" -#if defined(_MSC_VER) && !defined(EFIX64) && !defined(EFI32) -#include -typedef UINT32 uint32_t; -typedef UINT64 uint64_t; -#else #include -#endif -#define GCM_ENCRYPT 1 -#define GCM_DECRYPT 0 +#define MBEDTLS_GCM_ENCRYPT 1 +#define MBEDTLS_GCM_DECRYPT 0 -#define POLARSSL_ERR_GCM_AUTH_FAILED -0x0012 /**< Authenticated decryption failed. */ -#define POLARSSL_ERR_GCM_BAD_INPUT -0x0014 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_GCM_AUTH_FAILED -0x0012 /**< Authenticated decryption failed. */ +#define MBEDTLS_ERR_GCM_BAD_INPUT -0x0014 /**< Bad input parameters to function. */ #ifdef __cplusplus extern "C" { @@ -48,7 +41,7 @@ extern "C" { * \brief GCM context structure */ typedef struct { - cipher_context_t cipher_ctx;/*!< cipher context used */ + mbedtls_cipher_context_t cipher_ctx;/*!< cipher context used */ uint64_t HL[16]; /*!< Precalculated HTable */ uint64_t HH[16]; /*!< Precalculated HTable */ uint64_t len; /*!< Total data length */ @@ -58,7 +51,16 @@ typedef struct { unsigned char buf[16]; /*!< buf working value */ int mode; /*!< Encrypt or Decrypt */ } -gcm_context; +mbedtls_gcm_context; + +/** + * \brief Initialize GCM context (just makes references valid) + * Makes the context ready for mbedtls_gcm_setkey() or + * mbedtls_gcm_free(). + * + * \param ctx GCM context to initialize + */ +void mbedtls_gcm_init( mbedtls_gcm_context *ctx ); /** * \brief GCM initialization (encryption) @@ -66,12 +68,14 @@ gcm_context; * \param ctx GCM context to be initialized * \param cipher cipher to use (a 128-bit block cipher) * \param key encryption key - * \param keysize must be 128, 192 or 256 + * \param keybits must be 128, 192 or 256 * * \return 0 if successful, or a cipher specific error code */ -int gcm_init( gcm_context *ctx, cipher_id_t cipher, const unsigned char *key, - unsigned int keysize ); +int mbedtls_gcm_setkey( mbedtls_gcm_context *ctx, + mbedtls_cipher_id_t cipher, + const unsigned char *key, + unsigned int keybits ); /** * \brief GCM buffer encryption/decryption using a block cipher @@ -82,7 +86,7 @@ int gcm_init( gcm_context *ctx, cipher_id_t cipher, const unsigned char *key, * behind the input buffer. * * \param ctx GCM context - * \param mode GCM_ENCRYPT or GCM_DECRYPT + * \param mode MBEDTLS_GCM_ENCRYPT or MBEDTLS_GCM_DECRYPT * \param length length of the input data * \param iv initialization vector * \param iv_len length of IV @@ -95,7 +99,7 @@ int gcm_init( gcm_context *ctx, cipher_id_t cipher, const unsigned char *key, * * \return 0 if successful */ -int gcm_crypt_and_tag( gcm_context *ctx, +int mbedtls_gcm_crypt_and_tag( mbedtls_gcm_context *ctx, int mode, size_t length, const unsigned char *iv, @@ -126,9 +130,9 @@ int gcm_crypt_and_tag( gcm_context *ctx, * \param output buffer for holding the output data * * \return 0 if successful and authenticated, - * POLARSSL_ERR_GCM_AUTH_FAILED if tag does not match + * MBEDTLS_ERR_GCM_AUTH_FAILED if tag does not match */ -int gcm_auth_decrypt( gcm_context *ctx, +int mbedtls_gcm_auth_decrypt( mbedtls_gcm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, @@ -143,7 +147,7 @@ int gcm_auth_decrypt( gcm_context *ctx, * \brief Generic GCM stream start function * * \param ctx GCM context - * \param mode GCM_ENCRYPT or GCM_DECRYPT + * \param mode MBEDTLS_GCM_ENCRYPT or MBEDTLS_GCM_DECRYPT * \param iv initialization vector * \param iv_len length of IV * \param add additional data (or NULL if length is 0) @@ -151,7 +155,7 @@ int gcm_auth_decrypt( gcm_context *ctx, * * \return 0 if successful */ -int gcm_starts( gcm_context *ctx, +int mbedtls_gcm_starts( mbedtls_gcm_context *ctx, int mode, const unsigned char *iv, size_t iv_len, @@ -161,7 +165,7 @@ int gcm_starts( gcm_context *ctx, /** * \brief Generic GCM update function. Encrypts/decrypts using the * given GCM context. Expects input to be a multiple of 16 - * bytes! Only the last call before gcm_finish() can be less + * bytes! Only the last call before mbedtls_gcm_finish() can be less * than 16 bytes! * * \note On decryption, the output buffer cannot be the same as input buffer. @@ -173,9 +177,9 @@ int gcm_starts( gcm_context *ctx, * \param input buffer holding the input data * \param output buffer for holding the output data * - * \return 0 if successful or POLARSSL_ERR_GCM_BAD_INPUT + * \return 0 if successful or MBEDTLS_ERR_GCM_BAD_INPUT */ -int gcm_update( gcm_context *ctx, +int mbedtls_gcm_update( mbedtls_gcm_context *ctx, size_t length, const unsigned char *input, unsigned char *output ); @@ -186,12 +190,12 @@ int gcm_update( gcm_context *ctx, * 16 bytes. * * \param ctx GCM context - * \param tag buffer for holding the tag (may be NULL if tag_len is 0) - * \param tag_len length of the tag to generate + * \param tag buffer for holding the tag + * \param tag_len length of the tag to generate (must be at least 4) * - * \return 0 if successful or POLARSSL_ERR_GCM_BAD_INPUT + * \return 0 if successful or MBEDTLS_ERR_GCM_BAD_INPUT */ -int gcm_finish( gcm_context *ctx, +int mbedtls_gcm_finish( mbedtls_gcm_context *ctx, unsigned char *tag, size_t tag_len ); @@ -200,14 +204,14 @@ int gcm_finish( gcm_context *ctx, * * \param ctx GCM context to free */ -void gcm_free( gcm_context *ctx ); +void mbedtls_gcm_free( mbedtls_gcm_context *ctx ); /** * \brief Checkup routine * * \return 0 if successful, or 1 if the test failed */ -int gcm_self_test( int verbose ); +int mbedtls_gcm_self_test( int verbose ); #ifdef __cplusplus } diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/havege.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/havege.h new file mode 100644 index 0000000..dac5d31 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/havege.h @@ -0,0 +1,74 @@ +/** + * \file havege.h + * + * \brief HAVEGE: HArdware Volatile Entropy Gathering and Expansion + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_HAVEGE_H +#define MBEDTLS_HAVEGE_H + +#include + +#define MBEDTLS_HAVEGE_COLLECT_SIZE 1024 + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief HAVEGE state structure + */ +typedef struct +{ + int PT1, PT2, offset[2]; + int pool[MBEDTLS_HAVEGE_COLLECT_SIZE]; + int WALK[8192]; +} +mbedtls_havege_state; + +/** + * \brief HAVEGE initialization + * + * \param hs HAVEGE state to be initialized + */ +void mbedtls_havege_init( mbedtls_havege_state *hs ); + +/** + * \brief Clear HAVEGE state + * + * \param hs HAVEGE state to be cleared + */ +void mbedtls_havege_free( mbedtls_havege_state *hs ); + +/** + * \brief HAVEGE rand function + * + * \param p_rng A HAVEGE state + * \param output Buffer to fill + * \param len Length of buffer + * + * \return 0 + */ +int mbedtls_havege_random( void *p_rng, unsigned char *output, size_t len ); + +#ifdef __cplusplus +} +#endif + +#endif /* havege.h */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/hmac_drbg.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/hmac_drbg.h similarity index 54% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/hmac_drbg.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/hmac_drbg.h index 0fe7b03..e010558 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/hmac_drbg.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/hmac_drbg.h @@ -3,36 +3,39 @@ * * \brief HMAC_DRBG (NIST SP 800-90A) * - * Copyright (C) 2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_HMAC_DRBG_H -#define POLARSSL_HMAC_DRBG_H +#ifndef MBEDTLS_HMAC_DRBG_H +#define MBEDTLS_HMAC_DRBG_H #include "md.h" +#if defined(MBEDTLS_THREADING_C) +#include "mbedtls/threading.h" +#endif + /* * Error codes */ -#define POLARSSL_ERR_HMAC_DRBG_REQUEST_TOO_BIG -0x0003 /**< Too many random requested in single call. */ -#define POLARSSL_ERR_HMAC_DRBG_INPUT_TOO_BIG -0x0005 /**< Input too large (Entropy + additional). */ -#define POLARSSL_ERR_HMAC_DRBG_FILE_IO_ERROR -0x0007 /**< Read/write error in file. */ -#define POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED -0x0009 /**< The entropy source failed. */ +#define MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG -0x0003 /**< Too many random requested in single call. */ +#define MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG -0x0005 /**< Input too large (Entropy + additional). */ +#define MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR -0x0007 /**< Read/write error in file. */ +#define MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED -0x0009 /**< The entropy source failed. */ /** * \name SECTION: Module settings @@ -42,26 +45,26 @@ * \{ */ -#if !defined(POLARSSL_HMAC_DRBG_RESEED_INTERVAL) -#define POLARSSL_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ +#if !defined(MBEDTLS_HMAC_DRBG_RESEED_INTERVAL) +#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ #endif -#if !defined(POLARSSL_HMAC_DRBG_MAX_INPUT) -#define POLARSSL_HMAC_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ +#if !defined(MBEDTLS_HMAC_DRBG_MAX_INPUT) +#define MBEDTLS_HMAC_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ #endif -#if !defined(POLARSSL_HMAC_DRBG_MAX_REQUEST) -#define POLARSSL_HMAC_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ +#if !defined(MBEDTLS_HMAC_DRBG_MAX_REQUEST) +#define MBEDTLS_HMAC_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ #endif -#if !defined(POLARSSL_HMAC_DRBG_MAX_SEED_INPUT) -#define POLARSSL_HMAC_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ +#if !defined(MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT) +#define MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ #endif /* \} name SECTION: Module settings */ -#define POLARSSL_HMAC_DRBG_PR_OFF 0 /**< No prediction resistance */ -#define POLARSSL_HMAC_DRBG_PR_ON 1 /**< Prediction resistance enabled */ +#define MBEDTLS_HMAC_DRBG_PR_OFF 0 /**< No prediction resistance */ +#define MBEDTLS_HMAC_DRBG_PR_ON 1 /**< Prediction resistance enabled */ #ifdef __cplusplus extern "C" { @@ -74,8 +77,8 @@ typedef struct { /* Working state: the key K is not stored explicitely, * but is implied by the HMAC context */ - md_context_t md_ctx; /*!< HMAC context (inc. K) */ - unsigned char V[POLARSSL_MD_MAX_SIZE]; /*!< V in the spec */ + mbedtls_md_context_t md_ctx; /*!< HMAC context (inc. K) */ + unsigned char V[MBEDTLS_MD_MAX_SIZE]; /*!< V in the spec */ int reseed_counter; /*!< reseed counter */ /* Administrative state */ @@ -87,12 +90,27 @@ typedef struct /* Callbacks */ int (*f_entropy)(void *, unsigned char *, size_t); /*!< entropy function */ void *p_entropy; /*!< context for the entropy function */ -} hmac_drbg_context; + +#if defined(MBEDTLS_THREADING_C) + mbedtls_threading_mutex_t mutex; +#endif +} mbedtls_hmac_drbg_context; /** - * \brief HMAC_DRBG initialisation + * \brief HMAC_DRBG context initialization + * Makes the context ready for mbedtls_hmac_drbg_seed(), + * mbedtls_hmac_drbg_seed_buf() or + * mbedtls_hmac_drbg_free(). * - * \param ctx HMAC_DRBG context to be initialised + * \param ctx HMAC_DRBG context to be initialized + */ +void mbedtls_hmac_drbg_init( mbedtls_hmac_drbg_context *ctx ); + +/** + * \brief HMAC_DRBG initial seeding + * Seed and setup entropy source for future reseeds. + * + * \param ctx HMAC_DRBG context to be seeded * \param md_info MD algorithm to use for HMAC_DRBG * \param f_entropy Entropy callback (p_entropy, buffer to fill, buffer * length) @@ -108,12 +126,12 @@ typedef struct * Note that SHA-256 is just as efficient as SHA-224. * * \return 0 if successful, or - * POLARSSL_ERR_MD_BAD_INPUT_DATA, or - * POLARSSL_ERR_MD_ALLOC_FAILED, or - * POLARSSL_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED. + * MBEDTLS_ERR_MD_BAD_INPUT_DATA, or + * MBEDTLS_ERR_MD_ALLOC_FAILED, or + * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED. */ -int hmac_drbg_init( hmac_drbg_context *ctx, - const md_info_t * md_info, +int mbedtls_hmac_drbg_seed( mbedtls_hmac_drbg_context *ctx, + const mbedtls_md_info_t * md_info, int (*f_entropy)(void *, unsigned char *, size_t), void *p_entropy, const unsigned char *custom, @@ -129,11 +147,11 @@ int hmac_drbg_init( hmac_drbg_context *ctx, * \param data_len Length of data in bytes * * \return 0 if successful, or - * POLARSSL_ERR_MD_BAD_INPUT_DATA, or - * POLARSSL_ERR_MD_ALLOC_FAILED. + * MBEDTLS_ERR_MD_BAD_INPUT_DATA, or + * MBEDTLS_ERR_MD_ALLOC_FAILED. */ -int hmac_drbg_init_buf( hmac_drbg_context *ctx, - const md_info_t * md_info, +int mbedtls_hmac_drbg_seed_buf( mbedtls_hmac_drbg_context *ctx, + const mbedtls_md_info_t * md_info, const unsigned char *data, size_t data_len ); /** @@ -143,30 +161,30 @@ int hmac_drbg_init_buf( hmac_drbg_context *ctx, * Only use this if you have ample supply of good entropy! * * \param ctx HMAC_DRBG context - * \param resistance POLARSSL_HMAC_DRBG_PR_ON or POLARSSL_HMAC_DRBG_PR_OFF + * \param resistance MBEDTLS_HMAC_DRBG_PR_ON or MBEDTLS_HMAC_DRBG_PR_OFF */ -void hmac_drbg_set_prediction_resistance( hmac_drbg_context *ctx, +void mbedtls_hmac_drbg_set_prediction_resistance( mbedtls_hmac_drbg_context *ctx, int resistance ); /** * \brief Set the amount of entropy grabbed on each reseed * (Default: given by the security strength, which - * depends on the hash used, see \c hmac_drbg_init() ) + * depends on the hash used, see \c mbedtls_hmac_drbg_init() ) * * \param ctx HMAC_DRBG context * \param len Amount of entropy to grab, in bytes */ -void hmac_drbg_set_entropy_len( hmac_drbg_context *ctx, +void mbedtls_hmac_drbg_set_entropy_len( mbedtls_hmac_drbg_context *ctx, size_t len ); /** * \brief Set the reseed interval - * (Default: POLARSSL_HMAC_DRBG_RESEED_INTERVAL) + * (Default: MBEDTLS_HMAC_DRBG_RESEED_INTERVAL) * * \param ctx HMAC_DRBG context * \param interval Reseed interval */ -void hmac_drbg_set_reseed_interval( hmac_drbg_context *ctx, +void mbedtls_hmac_drbg_set_reseed_interval( mbedtls_hmac_drbg_context *ctx, int interval ); /** @@ -179,7 +197,7 @@ void hmac_drbg_set_reseed_interval( hmac_drbg_context *ctx, * \note Additional data is optional, pass NULL and 0 as second * third argument if no additional data is being used. */ -void hmac_drbg_update( hmac_drbg_context *ctx, +void mbedtls_hmac_drbg_update( mbedtls_hmac_drbg_context *ctx, const unsigned char *additional, size_t add_len ); /** @@ -190,9 +208,9 @@ void hmac_drbg_update( hmac_drbg_context *ctx, * \param len Length of additional data * * \return 0 if successful, or - * POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED */ -int hmac_drbg_reseed( hmac_drbg_context *ctx, +int mbedtls_hmac_drbg_reseed( mbedtls_hmac_drbg_context *ctx, const unsigned char *additional, size_t len ); /** @@ -207,11 +225,11 @@ int hmac_drbg_reseed( hmac_drbg_context *ctx, * \param add_len Length of additional data (can be 0) * * \return 0 if successful, or - * POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED, or - * POLARSSL_ERR_HMAC_DRBG_REQUEST_TOO_BIG, or - * POLARSSL_ERR_HMAC_DRBG_INPUT_TOO_BIG. + * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED, or + * MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG, or + * MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG. */ -int hmac_drbg_random_with_add( void *p_rng, +int mbedtls_hmac_drbg_random_with_add( void *p_rng, unsigned char *output, size_t output_len, const unsigned char *additional, size_t add_len ); @@ -226,19 +244,19 @@ int hmac_drbg_random_with_add( void *p_rng, * \param out_len Length of the buffer * * \return 0 if successful, or - * POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED, or - * POLARSSL_ERR_HMAC_DRBG_REQUEST_TOO_BIG + * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED, or + * MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG */ -int hmac_drbg_random( void *p_rng, unsigned char *output, size_t out_len ); +int mbedtls_hmac_drbg_random( void *p_rng, unsigned char *output, size_t out_len ); /** * \brief Free an HMAC_DRBG context * * \param ctx HMAC_DRBG context to free. */ -void hmac_drbg_free( hmac_drbg_context *ctx ); +void mbedtls_hmac_drbg_free( mbedtls_hmac_drbg_context *ctx ); -#if defined(POLARSSL_FS_IO) +#if defined(MBEDTLS_FS_IO) /** * \brief Write a seed file * @@ -246,9 +264,9 @@ void hmac_drbg_free( hmac_drbg_context *ctx ); * \param path Name of the file * * \return 0 if successful, 1 on file error, or - * POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED */ -int hmac_drbg_write_seed_file( hmac_drbg_context *ctx, const char *path ); +int mbedtls_hmac_drbg_write_seed_file( mbedtls_hmac_drbg_context *ctx, const char *path ); /** * \brief Read and update a seed file. Seed is added to this @@ -258,20 +276,20 @@ int hmac_drbg_write_seed_file( hmac_drbg_context *ctx, const char *path ); * \param path Name of the file * * \return 0 if successful, 1 on file error, - * POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED or - * POLARSSL_ERR_HMAC_DRBG_INPUT_TOO_BIG + * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED or + * MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG */ -int hmac_drbg_update_seed_file( hmac_drbg_context *ctx, const char *path ); -#endif /* POLARSSL_FS_IO */ +int mbedtls_hmac_drbg_update_seed_file( mbedtls_hmac_drbg_context *ctx, const char *path ); +#endif /* MBEDTLS_FS_IO */ -#if defined(POLARSSL_SELF_TEST) +#if defined(MBEDTLS_SELF_TEST) /** * \brief Checkup routine * * \return 0 if successful, or 1 if the test failed */ -int hmac_drbg_self_test( int verbose ); +int mbedtls_hmac_drbg_self_test( int verbose ); #endif #ifdef __cplusplus diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md.h new file mode 100644 index 0000000..9b996a9 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md.h @@ -0,0 +1,354 @@ +/** + * \file md.h + * + * \brief Generic message digest wrapper + * + * \author Adriaan de Jong + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_MD_H +#define MBEDTLS_MD_H + +#include + +#define MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE -0x5080 /**< The selected feature is not available. */ +#define MBEDTLS_ERR_MD_BAD_INPUT_DATA -0x5100 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_MD_ALLOC_FAILED -0x5180 /**< Failed to allocate memory. */ +#define MBEDTLS_ERR_MD_FILE_IO_ERROR -0x5200 /**< Opening or reading of file failed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + MBEDTLS_MD_NONE=0, + MBEDTLS_MD_MD2, + MBEDTLS_MD_MD4, + MBEDTLS_MD_MD5, + MBEDTLS_MD_SHA1, + MBEDTLS_MD_SHA224, + MBEDTLS_MD_SHA256, + MBEDTLS_MD_SHA384, + MBEDTLS_MD_SHA512, + MBEDTLS_MD_RIPEMD160, +} mbedtls_md_type_t; + +#if defined(MBEDTLS_SHA512_C) +#define MBEDTLS_MD_MAX_SIZE 64 /* longest known is SHA512 */ +#else +#define MBEDTLS_MD_MAX_SIZE 32 /* longest known is SHA256 or less */ +#endif + +/** + * Opaque struct defined in md_internal.h + */ +typedef struct mbedtls_md_info_t mbedtls_md_info_t; + +/** + * Generic message digest context. + */ +typedef struct { + /** Information about the associated message digest */ + const mbedtls_md_info_t *md_info; + + /** Digest-specific context */ + void *md_ctx; + + /** HMAC part of the context */ + void *hmac_ctx; +} mbedtls_md_context_t; + +/** + * \brief Returns the list of digests supported by the generic digest module. + * + * \return a statically allocated array of digests, the last entry + * is 0. + */ +const int *mbedtls_md_list( void ); + +/** + * \brief Returns the message digest information associated with the + * given digest name. + * + * \param md_name Name of the digest to search for. + * + * \return The message digest information associated with md_name or + * NULL if not found. + */ +const mbedtls_md_info_t *mbedtls_md_info_from_string( const char *md_name ); + +/** + * \brief Returns the message digest information associated with the + * given digest type. + * + * \param md_type type of digest to search for. + * + * \return The message digest information associated with md_type or + * NULL if not found. + */ +const mbedtls_md_info_t *mbedtls_md_info_from_type( mbedtls_md_type_t md_type ); + +/** + * \brief Initialize a md_context (as NONE) + * This should always be called first. + * Prepares the context for mbedtls_md_setup() or mbedtls_md_free(). + */ +void mbedtls_md_init( mbedtls_md_context_t *ctx ); + +/** + * \brief Free and clear the internal structures of ctx. + * Can be called at any time after mbedtls_md_init(). + * Mandatory once mbedtls_md_setup() has been called. + */ +void mbedtls_md_free( mbedtls_md_context_t *ctx ); + +#if ! defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief Select MD to use and allocate internal structures. + * Should be called after mbedtls_md_init() or mbedtls_md_free(). + * Makes it necessary to call mbedtls_md_free() later. + * + * \deprecated Superseded by mbedtls_md_setup() in 2.0.0 + * + * \param ctx Context to set up. + * \param md_info Message digest to use. + * + * \returns \c 0 on success, + * \c MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter failure, + * \c MBEDTLS_ERR_MD_ALLOC_FAILED memory allocation failure. + */ +int mbedtls_md_init_ctx( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info ) MBEDTLS_DEPRECATED; +#undef MBEDTLS_DEPRECATED +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief Select MD to use and allocate internal structures. + * Should be called after mbedtls_md_init() or mbedtls_md_free(). + * Makes it necessary to call mbedtls_md_free() later. + * + * \param ctx Context to set up. + * \param md_info Message digest to use. + * \param hmac 0 to save some memory if HMAC will not be used, + * non-zero is HMAC is going to be used with this context. + * + * \returns \c 0 on success, + * \c MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter failure, + * \c MBEDTLS_ERR_MD_ALLOC_FAILED memory allocation failure. + */ +int mbedtls_md_setup( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info, int hmac ); + +/** + * \brief Clone the state of an MD context + * + * \note The two contexts must have been setup to the same type + * (cloning from SHA-256 to SHA-512 make no sense). + * + * \warning Only clones the MD state, not the HMAC state! (for now) + * + * \param dst The destination context + * \param src The context to be cloned + * + * \return \c 0 on success, + * \c MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter failure. + */ +int mbedtls_md_clone( mbedtls_md_context_t *dst, + const mbedtls_md_context_t *src ); + +/** + * \brief Returns the size of the message digest output. + * + * \param md_info message digest info + * + * \return size of the message digest output in bytes. + */ +unsigned char mbedtls_md_get_size( const mbedtls_md_info_t *md_info ); + +/** + * \brief Returns the type of the message digest output. + * + * \param md_info message digest info + * + * \return type of the message digest output. + */ +mbedtls_md_type_t mbedtls_md_get_type( const mbedtls_md_info_t *md_info ); + +/** + * \brief Returns the name of the message digest output. + * + * \param md_info message digest info + * + * \return name of the message digest output. + */ +const char *mbedtls_md_get_name( const mbedtls_md_info_t *md_info ); + +/** + * \brief Prepare the context to digest a new message. + * Generally called after mbedtls_md_setup() or mbedtls_md_finish(). + * Followed by mbedtls_md_update(). + * + * \param ctx generic message digest context. + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_md_starts( mbedtls_md_context_t *ctx ); + +/** + * \brief Generic message digest process buffer + * Called between mbedtls_md_starts() and mbedtls_md_finish(). + * May be called repeatedly. + * + * \param ctx Generic message digest context + * \param input buffer holding the datal + * \param ilen length of the input data + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_md_update( mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen ); + +/** + * \brief Generic message digest final digest + * Called after mbedtls_md_update(). + * Usually followed by mbedtls_md_free() or mbedtls_md_starts(). + * + * \param ctx Generic message digest context + * \param output Generic message digest checksum result + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_md_finish( mbedtls_md_context_t *ctx, unsigned char *output ); + +/** + * \brief Output = message_digest( input buffer ) + * + * \param md_info message digest info + * \param input buffer holding the data + * \param ilen length of the input data + * \param output Generic message digest checksum result + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_md( const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen, + unsigned char *output ); + +#if defined(MBEDTLS_FS_IO) +/** + * \brief Output = message_digest( file contents ) + * + * \param md_info message digest info + * \param path input file name + * \param output generic message digest checksum result + * + * \return 0 if successful, + * MBEDTLS_ERR_MD_FILE_IO_ERROR if file input failed, + * MBEDTLS_ERR_MD_BAD_INPUT_DATA if md_info was NULL. + */ +int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path, + unsigned char *output ); +#endif /* MBEDTLS_FS_IO */ + +/** + * \brief Set HMAC key and prepare to authenticate a new message. + * Usually called after mbedtls_md_setup() or mbedtls_md_hmac_finish(). + * + * \param ctx HMAC context + * \param key HMAC secret key + * \param keylen length of the HMAC key in bytes + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key, + size_t keylen ); + +/** + * \brief Generic HMAC process buffer. + * Called between mbedtls_md_hmac_starts() or mbedtls_md_hmac_reset() + * and mbedtls_md_hmac_finish(). + * May be called repeatedly. + * + * \param ctx HMAC context + * \param input buffer holding the data + * \param ilen length of the input data + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_md_hmac_update( mbedtls_md_context_t *ctx, const unsigned char *input, + size_t ilen ); + +/** + * \brief Output HMAC. + * Called after mbedtls_md_hmac_update(). + * Usually followed by mbedtls_md_hmac_reset(), + * mbedtls_md_hmac_starts(), or mbedtls_md_free(). + * + * \param ctx HMAC context + * \param output Generic HMAC checksum result + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output); + +/** + * \brief Prepare to authenticate a new message with the same key. + * Called after mbedtls_md_hmac_finish() and before + * mbedtls_md_hmac_update(). + * + * \param ctx HMAC context to be reset + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_md_hmac_reset( mbedtls_md_context_t *ctx ); + +/** + * \brief Output = Generic_HMAC( hmac key, input buffer ) + * + * \param md_info message digest info + * \param key HMAC secret key + * \param keylen length of the HMAC key in bytes + * \param input buffer holding the data + * \param ilen length of the input data + * \param output Generic HMAC-result + * + * \returns 0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter + * verification fails. + */ +int mbedtls_md_hmac( const mbedtls_md_info_t *md_info, const unsigned char *key, size_t keylen, + const unsigned char *input, size_t ilen, + unsigned char *output ); + +/* Internal use */ +int mbedtls_md_process( mbedtls_md_context_t *ctx, const unsigned char *data ); + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_MD_H */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md2.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md2.h new file mode 100644 index 0000000..0f93fbf --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md2.h @@ -0,0 +1,136 @@ +/** + * \file md2.h + * + * \brief MD2 message digest algorithm (hash function) + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_MD2_H +#define MBEDTLS_MD2_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +#if !defined(MBEDTLS_MD2_ALT) +// Regular implementation +// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief MD2 context structure + */ +typedef struct +{ + unsigned char cksum[16]; /*!< checksum of the data block */ + unsigned char state[48]; /*!< intermediate digest state */ + unsigned char buffer[16]; /*!< data block being processed */ + size_t left; /*!< amount of data in buffer */ +} +mbedtls_md2_context; + +/** + * \brief Initialize MD2 context + * + * \param ctx MD2 context to be initialized + */ +void mbedtls_md2_init( mbedtls_md2_context *ctx ); + +/** + * \brief Clear MD2 context + * + * \param ctx MD2 context to be cleared + */ +void mbedtls_md2_free( mbedtls_md2_context *ctx ); + +/** + * \brief Clone (the state of) an MD2 context + * + * \param dst The destination context + * \param src The context to be cloned + */ +void mbedtls_md2_clone( mbedtls_md2_context *dst, + const mbedtls_md2_context *src ); + +/** + * \brief MD2 context setup + * + * \param ctx context to be initialized + */ +void mbedtls_md2_starts( mbedtls_md2_context *ctx ); + +/** + * \brief MD2 process buffer + * + * \param ctx MD2 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void mbedtls_md2_update( mbedtls_md2_context *ctx, const unsigned char *input, size_t ilen ); + +/** + * \brief MD2 final digest + * + * \param ctx MD2 context + * \param output MD2 checksum result + */ +void mbedtls_md2_finish( mbedtls_md2_context *ctx, unsigned char output[16] ); + +#ifdef __cplusplus +} +#endif + +#else /* MBEDTLS_MD2_ALT */ +#include "md2_alt.h" +#endif /* MBEDTLS_MD2_ALT */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Output = MD2( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD2 checksum result + */ +void mbedtls_md2( const unsigned char *input, size_t ilen, unsigned char output[16] ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_md2_self_test( int verbose ); + +/* Internal use */ +void mbedtls_md2_process( mbedtls_md2_context *ctx ); + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_md2.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md4.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md4.h new file mode 100644 index 0000000..45214d4 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md4.h @@ -0,0 +1,136 @@ +/** + * \file md4.h + * + * \brief MD4 message digest algorithm (hash function) + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_MD4_H +#define MBEDTLS_MD4_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#if !defined(MBEDTLS_MD4_ALT) +// Regular implementation +// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief MD4 context structure + */ +typedef struct +{ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[4]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ +} +mbedtls_md4_context; + +/** + * \brief Initialize MD4 context + * + * \param ctx MD4 context to be initialized + */ +void mbedtls_md4_init( mbedtls_md4_context *ctx ); + +/** + * \brief Clear MD4 context + * + * \param ctx MD4 context to be cleared + */ +void mbedtls_md4_free( mbedtls_md4_context *ctx ); + +/** + * \brief Clone (the state of) an MD4 context + * + * \param dst The destination context + * \param src The context to be cloned + */ +void mbedtls_md4_clone( mbedtls_md4_context *dst, + const mbedtls_md4_context *src ); + +/** + * \brief MD4 context setup + * + * \param ctx context to be initialized + */ +void mbedtls_md4_starts( mbedtls_md4_context *ctx ); + +/** + * \brief MD4 process buffer + * + * \param ctx MD4 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void mbedtls_md4_update( mbedtls_md4_context *ctx, const unsigned char *input, size_t ilen ); + +/** + * \brief MD4 final digest + * + * \param ctx MD4 context + * \param output MD4 checksum result + */ +void mbedtls_md4_finish( mbedtls_md4_context *ctx, unsigned char output[16] ); + +#ifdef __cplusplus +} +#endif + +#else /* MBEDTLS_MD4_ALT */ +#include "md4_alt.h" +#endif /* MBEDTLS_MD4_ALT */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Output = MD4( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD4 checksum result + */ +void mbedtls_md4( const unsigned char *input, size_t ilen, unsigned char output[16] ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_md4_self_test( int verbose ); + +/* Internal use */ +void mbedtls_md4_process( mbedtls_md4_context *ctx, const unsigned char data[64] ); + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_md4.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md5.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md5.h new file mode 100644 index 0000000..5a64061 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md5.h @@ -0,0 +1,136 @@ +/** + * \file md5.h + * + * \brief MD5 message digest algorithm (hash function) + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_MD5_H +#define MBEDTLS_MD5_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#if !defined(MBEDTLS_MD5_ALT) +// Regular implementation +// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief MD5 context structure + */ +typedef struct +{ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[4]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ +} +mbedtls_md5_context; + +/** + * \brief Initialize MD5 context + * + * \param ctx MD5 context to be initialized + */ +void mbedtls_md5_init( mbedtls_md5_context *ctx ); + +/** + * \brief Clear MD5 context + * + * \param ctx MD5 context to be cleared + */ +void mbedtls_md5_free( mbedtls_md5_context *ctx ); + +/** + * \brief Clone (the state of) an MD5 context + * + * \param dst The destination context + * \param src The context to be cloned + */ +void mbedtls_md5_clone( mbedtls_md5_context *dst, + const mbedtls_md5_context *src ); + +/** + * \brief MD5 context setup + * + * \param ctx context to be initialized + */ +void mbedtls_md5_starts( mbedtls_md5_context *ctx ); + +/** + * \brief MD5 process buffer + * + * \param ctx MD5 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void mbedtls_md5_update( mbedtls_md5_context *ctx, const unsigned char *input, size_t ilen ); + +/** + * \brief MD5 final digest + * + * \param ctx MD5 context + * \param output MD5 checksum result + */ +void mbedtls_md5_finish( mbedtls_md5_context *ctx, unsigned char output[16] ); + +/* Internal use */ +void mbedtls_md5_process( mbedtls_md5_context *ctx, const unsigned char data[64] ); + +#ifdef __cplusplus +} +#endif + +#else /* MBEDTLS_MD5_ALT */ +#include "md5_alt.h" +#endif /* MBEDTLS_MD5_ALT */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Output = MD5( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD5 checksum result + */ +void mbedtls_md5( const unsigned char *input, size_t ilen, unsigned char output[16] ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_md5_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_md5.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md_internal.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md_internal.h new file mode 100644 index 0000000..e2441bb --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/md_internal.h @@ -0,0 +1,114 @@ +/** + * \file md_internal.h + * + * \brief Message digest wrappers. + * + * \warning This in an internal header. Do not include directly. + * + * \author Adriaan de Jong + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_MD_WRAP_H +#define MBEDTLS_MD_WRAP_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "md.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Message digest information. + * Allows message digest functions to be called in a generic way. + */ +struct mbedtls_md_info_t +{ + /** Digest identifier */ + mbedtls_md_type_t type; + + /** Name of the message digest */ + const char * name; + + /** Output length of the digest function in bytes */ + int size; + + /** Block length of the digest function in bytes */ + int block_size; + + /** Digest initialisation function */ + void (*starts_func)( void *ctx ); + + /** Digest update function */ + void (*update_func)( void *ctx, const unsigned char *input, size_t ilen ); + + /** Digest finalisation function */ + void (*finish_func)( void *ctx, unsigned char *output ); + + /** Generic digest function */ + void (*digest_func)( const unsigned char *input, size_t ilen, + unsigned char *output ); + + /** Allocate a new context */ + void * (*ctx_alloc_func)( void ); + + /** Free the given context */ + void (*ctx_free_func)( void *ctx ); + + /** Clone state from a context */ + void (*clone_func)( void *dst, const void *src ); + + /** Internal use only */ + void (*process_func)( void *ctx, const unsigned char *input ); +}; + +#if defined(MBEDTLS_MD2_C) +extern const mbedtls_md_info_t mbedtls_md2_info; +#endif +#if defined(MBEDTLS_MD4_C) +extern const mbedtls_md_info_t mbedtls_md4_info; +#endif +#if defined(MBEDTLS_MD5_C) +extern const mbedtls_md_info_t mbedtls_md5_info; +#endif +#if defined(MBEDTLS_RIPEMD160_C) +extern const mbedtls_md_info_t mbedtls_ripemd160_info; +#endif +#if defined(MBEDTLS_SHA1_C) +extern const mbedtls_md_info_t mbedtls_sha1_info; +#endif +#if defined(MBEDTLS_SHA256_C) +extern const mbedtls_md_info_t mbedtls_sha224_info; +extern const mbedtls_md_info_t mbedtls_sha256_info; +#endif +#if defined(MBEDTLS_SHA512_C) +extern const mbedtls_md_info_t mbedtls_sha384_info; +extern const mbedtls_md_info_t mbedtls_sha512_info; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_MD_WRAP_H */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/memory_buffer_alloc.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/memory_buffer_alloc.h new file mode 100644 index 0000000..d5df316 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/memory_buffer_alloc.h @@ -0,0 +1,150 @@ +/** + * \file memory_buffer_alloc.h + * + * \brief Buffer-based memory allocator + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_MEMORY_BUFFER_ALLOC_H +#define MBEDTLS_MEMORY_BUFFER_ALLOC_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ + +#if !defined(MBEDTLS_MEMORY_ALIGN_MULTIPLE) +#define MBEDTLS_MEMORY_ALIGN_MULTIPLE 4 /**< Align on multiples of this value */ +#endif + +/* \} name SECTION: Module settings */ + +#define MBEDTLS_MEMORY_VERIFY_NONE 0 +#define MBEDTLS_MEMORY_VERIFY_ALLOC (1 << 0) +#define MBEDTLS_MEMORY_VERIFY_FREE (1 << 1) +#define MBEDTLS_MEMORY_VERIFY_ALWAYS (MBEDTLS_MEMORY_VERIFY_ALLOC | MBEDTLS_MEMORY_VERIFY_FREE) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Initialize use of stack-based memory allocator. + * The stack-based allocator does memory management inside the + * presented buffer and does not call calloc() and free(). + * It sets the global mbedtls_calloc() and mbedtls_free() pointers + * to its own functions. + * (Provided mbedtls_calloc() and mbedtls_free() are thread-safe if + * MBEDTLS_THREADING_C is defined) + * + * \note This code is not optimized and provides a straight-forward + * implementation of a stack-based memory allocator. + * + * \param buf buffer to use as heap + * \param len size of the buffer + */ +void mbedtls_memory_buffer_alloc_init( unsigned char *buf, size_t len ); + +/** + * \brief Free the mutex for thread-safety and clear remaining memory + */ +void mbedtls_memory_buffer_alloc_free( void ); + +/** + * \brief Determine when the allocator should automatically verify the state + * of the entire chain of headers / meta-data. + * (Default: MBEDTLS_MEMORY_VERIFY_NONE) + * + * \param verify One of MBEDTLS_MEMORY_VERIFY_NONE, MBEDTLS_MEMORY_VERIFY_ALLOC, + * MBEDTLS_MEMORY_VERIFY_FREE or MBEDTLS_MEMORY_VERIFY_ALWAYS + */ +void mbedtls_memory_buffer_set_verify( int verify ); + +#if defined(MBEDTLS_MEMORY_DEBUG) +/** + * \brief Print out the status of the allocated memory (primarily for use + * after a program should have de-allocated all memory) + * Prints out a list of 'still allocated' blocks and their stack + * trace if MBEDTLS_MEMORY_BACKTRACE is defined. + */ +void mbedtls_memory_buffer_alloc_status( void ); + +/** + * \brief Get the peak heap usage so far + * + * \param max_used Peak number of bytes in use or committed. This + * includes bytes in allocated blocks too small to split + * into smaller blocks but larger than the requested size. + * \param max_blocks Peak number of blocks in use, including free and used + */ +void mbedtls_memory_buffer_alloc_max_get( size_t *max_used, size_t *max_blocks ); + +/** + * \brief Reset peak statistics + */ +void mbedtls_memory_buffer_alloc_max_reset( void ); + +/** + * \brief Get the current heap usage + * + * \param cur_used Current number of bytes in use or committed. This + * includes bytes in allocated blocks too small to split + * into smaller blocks but larger than the requested size. + * \param cur_blocks Current number of blocks in use, including free and used + */ +void mbedtls_memory_buffer_alloc_cur_get( size_t *cur_used, size_t *cur_blocks ); +#endif /* MBEDTLS_MEMORY_DEBUG */ + +/** + * \brief Verifies that all headers in the memory buffer are correct + * and contain sane values. Helps debug buffer-overflow errors. + * + * Prints out first failure if MBEDTLS_MEMORY_DEBUG is defined. + * Prints out full header information if MBEDTLS_MEMORY_DEBUG + * is defined. (Includes stack trace information for each block if + * MBEDTLS_MEMORY_BACKTRACE is defined as well). + * + * \return 0 if verified, 1 otherwise + */ +int mbedtls_memory_buffer_alloc_verify( void ); + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if a test failed + */ +int mbedtls_memory_buffer_alloc_self_test( int verbose ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* memory_buffer_alloc.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/net.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/net.h new file mode 100644 index 0000000..774559b --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/net.h @@ -0,0 +1,31 @@ +/** + * \file net.h + * + * \brief Deprecated header file that includes mbedtls/net_sockets.h + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + * + * \deprecated Superseded by mbedtls/net_sockets.h + */ + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#include "mbedtls/net_sockets.h" +#if defined(MBEDTLS_DEPRECATED_WARNING) +#warning "Deprecated header file: Superseded by mbedtls/net_sockets.h" +#endif /* MBEDTLS_DEPRECATED_WARNING */ +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/net_sockets.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/net_sockets.h new file mode 100644 index 0000000..de33552 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/net_sockets.h @@ -0,0 +1,225 @@ +/** + * \file net_sockets.h + * + * \brief Network communication functions + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_NET_SOCKETS_H +#define MBEDTLS_NET_SOCKETS_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "ssl.h" + +#include +#include + +#define MBEDTLS_ERR_NET_SOCKET_FAILED -0x0042 /**< Failed to open a socket. */ +#define MBEDTLS_ERR_NET_CONNECT_FAILED -0x0044 /**< The connection to the given server / port failed. */ +#define MBEDTLS_ERR_NET_BIND_FAILED -0x0046 /**< Binding of the socket failed. */ +#define MBEDTLS_ERR_NET_LISTEN_FAILED -0x0048 /**< Could not listen on the socket. */ +#define MBEDTLS_ERR_NET_ACCEPT_FAILED -0x004A /**< Could not accept the incoming connection. */ +#define MBEDTLS_ERR_NET_RECV_FAILED -0x004C /**< Reading information from the socket failed. */ +#define MBEDTLS_ERR_NET_SEND_FAILED -0x004E /**< Sending information through the socket failed. */ +#define MBEDTLS_ERR_NET_CONN_RESET -0x0050 /**< Connection was reset by peer. */ +#define MBEDTLS_ERR_NET_UNKNOWN_HOST -0x0052 /**< Failed to get an IP address for the given hostname. */ +#define MBEDTLS_ERR_NET_BUFFER_TOO_SMALL -0x0043 /**< Buffer is too small to hold the data. */ +#define MBEDTLS_ERR_NET_INVALID_CONTEXT -0x0045 /**< The context is invalid, eg because it was free()ed. */ + +#define MBEDTLS_NET_LISTEN_BACKLOG 10 /**< The backlog that listen() should use. */ + +#define MBEDTLS_NET_PROTO_TCP 0 /**< The TCP transport protocol */ +#define MBEDTLS_NET_PROTO_UDP 1 /**< The UDP transport protocol */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Wrapper type for sockets. + * + * Currently backed by just a file descriptor, but might be more in the future + * (eg two file descriptors for combined IPv4 + IPv6 support, or additional + * structures for hand-made UDP demultiplexing). + */ +typedef struct +{ + int fd; /**< The underlying file descriptor */ +} +mbedtls_net_context; + +/** + * \brief Initialize a context + * Just makes the context ready to be used or freed safely. + * + * \param ctx Context to initialize + */ +void mbedtls_net_init( mbedtls_net_context *ctx ); + +/** + * \brief Initiate a connection with host:port in the given protocol + * + * \param ctx Socket to use + * \param host Host to connect to + * \param port Port to connect to + * \param proto Protocol: MBEDTLS_NET_PROTO_TCP or MBEDTLS_NET_PROTO_UDP + * + * \return 0 if successful, or one of: + * MBEDTLS_ERR_NET_SOCKET_FAILED, + * MBEDTLS_ERR_NET_UNKNOWN_HOST, + * MBEDTLS_ERR_NET_CONNECT_FAILED + * + * \note Sets the socket in connected mode even with UDP. + */ +int mbedtls_net_connect( mbedtls_net_context *ctx, const char *host, const char *port, int proto ); + +/** + * \brief Create a receiving socket on bind_ip:port in the chosen + * protocol. If bind_ip == NULL, all interfaces are bound. + * + * \param ctx Socket to use + * \param bind_ip IP to bind to, can be NULL + * \param port Port number to use + * \param proto Protocol: MBEDTLS_NET_PROTO_TCP or MBEDTLS_NET_PROTO_UDP + * + * \return 0 if successful, or one of: + * MBEDTLS_ERR_NET_SOCKET_FAILED, + * MBEDTLS_ERR_NET_BIND_FAILED, + * MBEDTLS_ERR_NET_LISTEN_FAILED + * + * \note Regardless of the protocol, opens the sockets and binds it. + * In addition, make the socket listening if protocol is TCP. + */ +int mbedtls_net_bind( mbedtls_net_context *ctx, const char *bind_ip, const char *port, int proto ); + +/** + * \brief Accept a connection from a remote client + * + * \param bind_ctx Relevant socket + * \param client_ctx Will contain the connected client socket + * \param client_ip Will contain the client IP address + * \param buf_size Size of the client_ip buffer + * \param ip_len Will receive the size of the client IP written + * + * \return 0 if successful, or + * MBEDTLS_ERR_NET_ACCEPT_FAILED, or + * MBEDTLS_ERR_NET_BUFFER_TOO_SMALL if buf_size is too small, + * MBEDTLS_ERR_SSL_WANT_READ if bind_fd was set to + * non-blocking and accept() would block. + */ +int mbedtls_net_accept( mbedtls_net_context *bind_ctx, + mbedtls_net_context *client_ctx, + void *client_ip, size_t buf_size, size_t *ip_len ); + +/** + * \brief Set the socket blocking + * + * \param ctx Socket to set + * + * \return 0 if successful, or a non-zero error code + */ +int mbedtls_net_set_block( mbedtls_net_context *ctx ); + +/** + * \brief Set the socket non-blocking + * + * \param ctx Socket to set + * + * \return 0 if successful, or a non-zero error code + */ +int mbedtls_net_set_nonblock( mbedtls_net_context *ctx ); + +/** + * \brief Portable usleep helper + * + * \param usec Amount of microseconds to sleep + * + * \note Real amount of time slept will not be less than + * select()'s timeout granularity (typically, 10ms). + */ +void mbedtls_net_usleep( unsigned long usec ); + +/** + * \brief Read at most 'len' characters. If no error occurs, + * the actual amount read is returned. + * + * \param ctx Socket + * \param buf The buffer to write to + * \param len Maximum length of the buffer + * + * \return the number of bytes received, + * or a non-zero error code; with a non-blocking socket, + * MBEDTLS_ERR_SSL_WANT_READ indicates read() would block. + */ +int mbedtls_net_recv( void *ctx, unsigned char *buf, size_t len ); + +/** + * \brief Write at most 'len' characters. If no error occurs, + * the actual amount read is returned. + * + * \param ctx Socket + * \param buf The buffer to read from + * \param len The length of the buffer + * + * \return the number of bytes sent, + * or a non-zero error code; with a non-blocking socket, + * MBEDTLS_ERR_SSL_WANT_WRITE indicates write() would block. + */ +int mbedtls_net_send( void *ctx, const unsigned char *buf, size_t len ); + +/** + * \brief Read at most 'len' characters, blocking for at most + * 'timeout' seconds. If no error occurs, the actual amount + * read is returned. + * + * \param ctx Socket + * \param buf The buffer to write to + * \param len Maximum length of the buffer + * \param timeout Maximum number of milliseconds to wait for data + * 0 means no timeout (wait forever) + * + * \return the number of bytes received, + * or a non-zero error code: + * MBEDTLS_ERR_SSL_TIMEOUT if the operation timed out, + * MBEDTLS_ERR_SSL_WANT_READ if interrupted by a signal. + * + * \note This function will block (until data becomes available or + * timeout is reached) even if the socket is set to + * non-blocking. Handling timeouts with non-blocking reads + * requires a different strategy. + */ +int mbedtls_net_recv_timeout( void *ctx, unsigned char *buf, size_t len, + uint32_t timeout ); + +/** + * \brief Gracefully shutdown the connection and free associated data + * + * \param ctx The context to free + */ +void mbedtls_net_free( mbedtls_net_context *ctx ); + +#ifdef __cplusplus +} +#endif + +#endif /* net_sockets.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/oid.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/oid.h new file mode 100644 index 0000000..fcecdaf --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/oid.h @@ -0,0 +1,570 @@ +/** + * \file oid.h + * + * \brief Object Identifier (OID) database + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_OID_H +#define MBEDTLS_OID_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "asn1.h" +#include "pk.h" + +#include + +#if defined(MBEDTLS_CIPHER_C) +#include "cipher.h" +#endif + +#if defined(MBEDTLS_MD_C) +#include "md.h" +#endif + +#if defined(MBEDTLS_X509_USE_C) || defined(MBEDTLS_X509_CREATE_C) +#include "x509.h" +#endif + +#define MBEDTLS_ERR_OID_NOT_FOUND -0x002E /**< OID is not found. */ +#define MBEDTLS_ERR_OID_BUF_TOO_SMALL -0x000B /**< output buffer is too small */ + +/* + * Top level OID tuples + */ +#define MBEDTLS_OID_ISO_MEMBER_BODIES "\x2a" /* {iso(1) member-body(2)} */ +#define MBEDTLS_OID_ISO_IDENTIFIED_ORG "\x2b" /* {iso(1) identified-organization(3)} */ +#define MBEDTLS_OID_ISO_CCITT_DS "\x55" /* {joint-iso-ccitt(2) ds(5)} */ +#define MBEDTLS_OID_ISO_ITU_COUNTRY "\x60" /* {joint-iso-itu-t(2) country(16)} */ + +/* + * ISO Member bodies OID parts + */ +#define MBEDTLS_OID_COUNTRY_US "\x86\x48" /* {us(840)} */ +#define MBEDTLS_OID_ORG_RSA_DATA_SECURITY "\x86\xf7\x0d" /* {rsadsi(113549)} */ +#define MBEDTLS_OID_RSA_COMPANY MBEDTLS_OID_ISO_MEMBER_BODIES MBEDTLS_OID_COUNTRY_US \ + MBEDTLS_OID_ORG_RSA_DATA_SECURITY /* {iso(1) member-body(2) us(840) rsadsi(113549)} */ +#define MBEDTLS_OID_ORG_ANSI_X9_62 "\xce\x3d" /* ansi-X9-62(10045) */ +#define MBEDTLS_OID_ANSI_X9_62 MBEDTLS_OID_ISO_MEMBER_BODIES MBEDTLS_OID_COUNTRY_US \ + MBEDTLS_OID_ORG_ANSI_X9_62 + +/* + * ISO Identified organization OID parts + */ +#define MBEDTLS_OID_ORG_DOD "\x06" /* {dod(6)} */ +#define MBEDTLS_OID_ORG_OIW "\x0e" +#define MBEDTLS_OID_OIW_SECSIG MBEDTLS_OID_ORG_OIW "\x03" +#define MBEDTLS_OID_OIW_SECSIG_ALG MBEDTLS_OID_OIW_SECSIG "\x02" +#define MBEDTLS_OID_OIW_SECSIG_SHA1 MBEDTLS_OID_OIW_SECSIG_ALG "\x1a" +#define MBEDTLS_OID_ORG_CERTICOM "\x81\x04" /* certicom(132) */ +#define MBEDTLS_OID_CERTICOM MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ORG_CERTICOM +#define MBEDTLS_OID_ORG_TELETRUST "\x24" /* teletrust(36) */ +#define MBEDTLS_OID_TELETRUST MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ORG_TELETRUST + +/* + * ISO ITU OID parts + */ +#define MBEDTLS_OID_ORGANIZATION "\x01" /* {organization(1)} */ +#define MBEDTLS_OID_ISO_ITU_US_ORG MBEDTLS_OID_ISO_ITU_COUNTRY MBEDTLS_OID_COUNTRY_US MBEDTLS_OID_ORGANIZATION /* {joint-iso-itu-t(2) country(16) us(840) organization(1)} */ + +#define MBEDTLS_OID_ORG_GOV "\x65" /* {gov(101)} */ +#define MBEDTLS_OID_GOV MBEDTLS_OID_ISO_ITU_US_ORG MBEDTLS_OID_ORG_GOV /* {joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)} */ + +#define MBEDTLS_OID_ORG_NETSCAPE "\x86\xF8\x42" /* {netscape(113730)} */ +#define MBEDTLS_OID_NETSCAPE MBEDTLS_OID_ISO_ITU_US_ORG MBEDTLS_OID_ORG_NETSCAPE /* Netscape OID {joint-iso-itu-t(2) country(16) us(840) organization(1) netscape(113730)} */ + +/* ISO arc for standard certificate and CRL extensions */ +#define MBEDTLS_OID_ID_CE MBEDTLS_OID_ISO_CCITT_DS "\x1D" /**< id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} */ + +/** + * Private Internet Extensions + * { iso(1) identified-organization(3) dod(6) internet(1) + * security(5) mechanisms(5) pkix(7) } + */ +#define MBEDTLS_OID_PKIX MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ORG_DOD "\x01\x05\x05\x07" + +/* + * Arc for standard naming attributes + */ +#define MBEDTLS_OID_AT MBEDTLS_OID_ISO_CCITT_DS "\x04" /**< id-at OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 4} */ +#define MBEDTLS_OID_AT_CN MBEDTLS_OID_AT "\x03" /**< id-at-commonName AttributeType:= {id-at 3} */ +#define MBEDTLS_OID_AT_SUR_NAME MBEDTLS_OID_AT "\x04" /**< id-at-surName AttributeType:= {id-at 4} */ +#define MBEDTLS_OID_AT_SERIAL_NUMBER MBEDTLS_OID_AT "\x05" /**< id-at-serialNumber AttributeType:= {id-at 5} */ +#define MBEDTLS_OID_AT_COUNTRY MBEDTLS_OID_AT "\x06" /**< id-at-countryName AttributeType:= {id-at 6} */ +#define MBEDTLS_OID_AT_LOCALITY MBEDTLS_OID_AT "\x07" /**< id-at-locality AttributeType:= {id-at 7} */ +#define MBEDTLS_OID_AT_STATE MBEDTLS_OID_AT "\x08" /**< id-at-state AttributeType:= {id-at 8} */ +#define MBEDTLS_OID_AT_ORGANIZATION MBEDTLS_OID_AT "\x0A" /**< id-at-organizationName AttributeType:= {id-at 10} */ +#define MBEDTLS_OID_AT_ORG_UNIT MBEDTLS_OID_AT "\x0B" /**< id-at-organizationalUnitName AttributeType:= {id-at 11} */ +#define MBEDTLS_OID_AT_TITLE MBEDTLS_OID_AT "\x0C" /**< id-at-title AttributeType:= {id-at 12} */ +#define MBEDTLS_OID_AT_POSTAL_ADDRESS MBEDTLS_OID_AT "\x10" /**< id-at-postalAddress AttributeType:= {id-at 16} */ +#define MBEDTLS_OID_AT_POSTAL_CODE MBEDTLS_OID_AT "\x11" /**< id-at-postalCode AttributeType:= {id-at 17} */ +#define MBEDTLS_OID_AT_GIVEN_NAME MBEDTLS_OID_AT "\x2A" /**< id-at-givenName AttributeType:= {id-at 42} */ +#define MBEDTLS_OID_AT_INITIALS MBEDTLS_OID_AT "\x2B" /**< id-at-initials AttributeType:= {id-at 43} */ +#define MBEDTLS_OID_AT_GENERATION_QUALIFIER MBEDTLS_OID_AT "\x2C" /**< id-at-generationQualifier AttributeType:= {id-at 44} */ +#define MBEDTLS_OID_AT_UNIQUE_IDENTIFIER MBEDTLS_OID_AT "\x2D" /**< id-at-uniqueIdentifier AttributType:= {id-at 45} */ +#define MBEDTLS_OID_AT_DN_QUALIFIER MBEDTLS_OID_AT "\x2E" /**< id-at-dnQualifier AttributeType:= {id-at 46} */ +#define MBEDTLS_OID_AT_PSEUDONYM MBEDTLS_OID_AT "\x41" /**< id-at-pseudonym AttributeType:= {id-at 65} */ + +#define MBEDTLS_OID_DOMAIN_COMPONENT "\x09\x92\x26\x89\x93\xF2\x2C\x64\x01\x19" /** id-domainComponent AttributeType:= {itu-t(0) data(9) pss(2342) ucl(19200300) pilot(100) pilotAttributeType(1) domainComponent(25)} */ + +/* + * OIDs for standard certificate extensions + */ +#define MBEDTLS_OID_AUTHORITY_KEY_IDENTIFIER MBEDTLS_OID_ID_CE "\x23" /**< id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 } */ +#define MBEDTLS_OID_SUBJECT_KEY_IDENTIFIER MBEDTLS_OID_ID_CE "\x0E" /**< id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 } */ +#define MBEDTLS_OID_KEY_USAGE MBEDTLS_OID_ID_CE "\x0F" /**< id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } */ +#define MBEDTLS_OID_CERTIFICATE_POLICIES MBEDTLS_OID_ID_CE "\x20" /**< id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 } */ +#define MBEDTLS_OID_POLICY_MAPPINGS MBEDTLS_OID_ID_CE "\x21" /**< id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 } */ +#define MBEDTLS_OID_SUBJECT_ALT_NAME MBEDTLS_OID_ID_CE "\x11" /**< id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 } */ +#define MBEDTLS_OID_ISSUER_ALT_NAME MBEDTLS_OID_ID_CE "\x12" /**< id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 } */ +#define MBEDTLS_OID_SUBJECT_DIRECTORY_ATTRS MBEDTLS_OID_ID_CE "\x09" /**< id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 } */ +#define MBEDTLS_OID_BASIC_CONSTRAINTS MBEDTLS_OID_ID_CE "\x13" /**< id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 } */ +#define MBEDTLS_OID_NAME_CONSTRAINTS MBEDTLS_OID_ID_CE "\x1E" /**< id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 } */ +#define MBEDTLS_OID_POLICY_CONSTRAINTS MBEDTLS_OID_ID_CE "\x24" /**< id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 } */ +#define MBEDTLS_OID_EXTENDED_KEY_USAGE MBEDTLS_OID_ID_CE "\x25" /**< id-ce-extKeyUsage OBJECT IDENTIFIER ::= { id-ce 37 } */ +#define MBEDTLS_OID_CRL_DISTRIBUTION_POINTS MBEDTLS_OID_ID_CE "\x1F" /**< id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= { id-ce 31 } */ +#define MBEDTLS_OID_INIHIBIT_ANYPOLICY MBEDTLS_OID_ID_CE "\x36" /**< id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= { id-ce 54 } */ +#define MBEDTLS_OID_FRESHEST_CRL MBEDTLS_OID_ID_CE "\x2E" /**< id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 } */ + +/* + * Netscape certificate extensions + */ +#define MBEDTLS_OID_NS_CERT MBEDTLS_OID_NETSCAPE "\x01" +#define MBEDTLS_OID_NS_CERT_TYPE MBEDTLS_OID_NS_CERT "\x01" +#define MBEDTLS_OID_NS_BASE_URL MBEDTLS_OID_NS_CERT "\x02" +#define MBEDTLS_OID_NS_REVOCATION_URL MBEDTLS_OID_NS_CERT "\x03" +#define MBEDTLS_OID_NS_CA_REVOCATION_URL MBEDTLS_OID_NS_CERT "\x04" +#define MBEDTLS_OID_NS_RENEWAL_URL MBEDTLS_OID_NS_CERT "\x07" +#define MBEDTLS_OID_NS_CA_POLICY_URL MBEDTLS_OID_NS_CERT "\x08" +#define MBEDTLS_OID_NS_SSL_SERVER_NAME MBEDTLS_OID_NS_CERT "\x0C" +#define MBEDTLS_OID_NS_COMMENT MBEDTLS_OID_NS_CERT "\x0D" +#define MBEDTLS_OID_NS_DATA_TYPE MBEDTLS_OID_NETSCAPE "\x02" +#define MBEDTLS_OID_NS_CERT_SEQUENCE MBEDTLS_OID_NS_DATA_TYPE "\x05" + +/* + * OIDs for CRL extensions + */ +#define MBEDTLS_OID_PRIVATE_KEY_USAGE_PERIOD MBEDTLS_OID_ID_CE "\x10" +#define MBEDTLS_OID_CRL_NUMBER MBEDTLS_OID_ID_CE "\x14" /**< id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 } */ + +/* + * X.509 v3 Extended key usage OIDs + */ +#define MBEDTLS_OID_ANY_EXTENDED_KEY_USAGE MBEDTLS_OID_EXTENDED_KEY_USAGE "\x00" /**< anyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 } */ + +#define MBEDTLS_OID_KP MBEDTLS_OID_PKIX "\x03" /**< id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } */ +#define MBEDTLS_OID_SERVER_AUTH MBEDTLS_OID_KP "\x01" /**< id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } */ +#define MBEDTLS_OID_CLIENT_AUTH MBEDTLS_OID_KP "\x02" /**< id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } */ +#define MBEDTLS_OID_CODE_SIGNING MBEDTLS_OID_KP "\x03" /**< id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } */ +#define MBEDTLS_OID_EMAIL_PROTECTION MBEDTLS_OID_KP "\x04" /**< id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } */ +#define MBEDTLS_OID_TIME_STAMPING MBEDTLS_OID_KP "\x08" /**< id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } */ +#define MBEDTLS_OID_OCSP_SIGNING MBEDTLS_OID_KP "\x09" /**< id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 } */ + +/* + * PKCS definition OIDs + */ + +#define MBEDTLS_OID_PKCS MBEDTLS_OID_RSA_COMPANY "\x01" /**< pkcs OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) 1 } */ +#define MBEDTLS_OID_PKCS1 MBEDTLS_OID_PKCS "\x01" /**< pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 } */ +#define MBEDTLS_OID_PKCS5 MBEDTLS_OID_PKCS "\x05" /**< pkcs-5 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 5 } */ +#define MBEDTLS_OID_PKCS9 MBEDTLS_OID_PKCS "\x09" /**< pkcs-9 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 } */ +#define MBEDTLS_OID_PKCS12 MBEDTLS_OID_PKCS "\x0c" /**< pkcs-12 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 12 } */ + +/* + * PKCS#1 OIDs + */ +#define MBEDTLS_OID_PKCS1_RSA MBEDTLS_OID_PKCS1 "\x01" /**< rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } */ +#define MBEDTLS_OID_PKCS1_MD2 MBEDTLS_OID_PKCS1 "\x02" /**< md2WithRSAEncryption ::= { pkcs-1 2 } */ +#define MBEDTLS_OID_PKCS1_MD4 MBEDTLS_OID_PKCS1 "\x03" /**< md4WithRSAEncryption ::= { pkcs-1 3 } */ +#define MBEDTLS_OID_PKCS1_MD5 MBEDTLS_OID_PKCS1 "\x04" /**< md5WithRSAEncryption ::= { pkcs-1 4 } */ +#define MBEDTLS_OID_PKCS1_SHA1 MBEDTLS_OID_PKCS1 "\x05" /**< sha1WithRSAEncryption ::= { pkcs-1 5 } */ +#define MBEDTLS_OID_PKCS1_SHA224 MBEDTLS_OID_PKCS1 "\x0e" /**< sha224WithRSAEncryption ::= { pkcs-1 14 } */ +#define MBEDTLS_OID_PKCS1_SHA256 MBEDTLS_OID_PKCS1 "\x0b" /**< sha256WithRSAEncryption ::= { pkcs-1 11 } */ +#define MBEDTLS_OID_PKCS1_SHA384 MBEDTLS_OID_PKCS1 "\x0c" /**< sha384WithRSAEncryption ::= { pkcs-1 12 } */ +#define MBEDTLS_OID_PKCS1_SHA512 MBEDTLS_OID_PKCS1 "\x0d" /**< sha512WithRSAEncryption ::= { pkcs-1 13 } */ + +#define MBEDTLS_OID_RSA_SHA_OBS "\x2B\x0E\x03\x02\x1D" + +#define MBEDTLS_OID_PKCS9_EMAIL MBEDTLS_OID_PKCS9 "\x01" /**< emailAddress AttributeType ::= { pkcs-9 1 } */ + +/* RFC 4055 */ +#define MBEDTLS_OID_RSASSA_PSS MBEDTLS_OID_PKCS1 "\x0a" /**< id-RSASSA-PSS ::= { pkcs-1 10 } */ +#define MBEDTLS_OID_MGF1 MBEDTLS_OID_PKCS1 "\x08" /**< id-mgf1 ::= { pkcs-1 8 } */ + +/* + * Digest algorithms + */ +#define MBEDTLS_OID_DIGEST_ALG_MD2 MBEDTLS_OID_RSA_COMPANY "\x02\x02" /**< id-mbedtls_md2 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } */ +#define MBEDTLS_OID_DIGEST_ALG_MD4 MBEDTLS_OID_RSA_COMPANY "\x02\x04" /**< id-mbedtls_md4 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 4 } */ +#define MBEDTLS_OID_DIGEST_ALG_MD5 MBEDTLS_OID_RSA_COMPANY "\x02\x05" /**< id-mbedtls_md5 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA1 MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_OIW_SECSIG_SHA1 /**< id-mbedtls_sha1 OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 26 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA224 MBEDTLS_OID_GOV "\x03\x04\x02\x04" /**< id-sha224 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 4 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA256 MBEDTLS_OID_GOV "\x03\x04\x02\x01" /**< id-mbedtls_sha256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 1 } */ + +#define MBEDTLS_OID_DIGEST_ALG_SHA384 MBEDTLS_OID_GOV "\x03\x04\x02\x02" /**< id-sha384 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 2 } */ + +#define MBEDTLS_OID_DIGEST_ALG_SHA512 MBEDTLS_OID_GOV "\x03\x04\x02\x03" /**< id-mbedtls_sha512 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 3 } */ + +#define MBEDTLS_OID_HMAC_SHA1 MBEDTLS_OID_RSA_COMPANY "\x02\x07" /**< id-hmacWithSHA1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 7 } */ + +/* + * Encryption algorithms + */ +#define MBEDTLS_OID_DES_CBC MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_OIW_SECSIG_ALG "\x07" /**< desCBC OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 7 } */ +#define MBEDTLS_OID_DES_EDE3_CBC MBEDTLS_OID_RSA_COMPANY "\x03\x07" /**< des-ede3-cbc OBJECT IDENTIFIER ::= { iso(1) member-body(2) -- us(840) rsadsi(113549) encryptionAlgorithm(3) 7 } */ + +/* + * PKCS#5 OIDs + */ +#define MBEDTLS_OID_PKCS5_PBKDF2 MBEDTLS_OID_PKCS5 "\x0c" /**< id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12} */ +#define MBEDTLS_OID_PKCS5_PBES2 MBEDTLS_OID_PKCS5 "\x0d" /**< id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13} */ +#define MBEDTLS_OID_PKCS5_PBMAC1 MBEDTLS_OID_PKCS5 "\x0e" /**< id-PBMAC1 OBJECT IDENTIFIER ::= {pkcs-5 14} */ + +/* + * PKCS#5 PBES1 algorithms + */ +#define MBEDTLS_OID_PKCS5_PBE_MD2_DES_CBC MBEDTLS_OID_PKCS5 "\x01" /**< pbeWithMD2AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 1} */ +#define MBEDTLS_OID_PKCS5_PBE_MD2_RC2_CBC MBEDTLS_OID_PKCS5 "\x04" /**< pbeWithMD2AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 4} */ +#define MBEDTLS_OID_PKCS5_PBE_MD5_DES_CBC MBEDTLS_OID_PKCS5 "\x03" /**< pbeWithMD5AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 3} */ +#define MBEDTLS_OID_PKCS5_PBE_MD5_RC2_CBC MBEDTLS_OID_PKCS5 "\x06" /**< pbeWithMD5AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 6} */ +#define MBEDTLS_OID_PKCS5_PBE_SHA1_DES_CBC MBEDTLS_OID_PKCS5 "\x0a" /**< pbeWithSHA1AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 10} */ +#define MBEDTLS_OID_PKCS5_PBE_SHA1_RC2_CBC MBEDTLS_OID_PKCS5 "\x0b" /**< pbeWithSHA1AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 11} */ + +/* + * PKCS#8 OIDs + */ +#define MBEDTLS_OID_PKCS9_CSR_EXT_REQ MBEDTLS_OID_PKCS9 "\x0e" /**< extensionRequest OBJECT IDENTIFIER ::= {pkcs-9 14} */ + +/* + * PKCS#12 PBE OIDs + */ +#define MBEDTLS_OID_PKCS12_PBE MBEDTLS_OID_PKCS12 "\x01" /**< pkcs-12PbeIds OBJECT IDENTIFIER ::= {pkcs-12 1} */ + +#define MBEDTLS_OID_PKCS12_PBE_SHA1_RC4_128 MBEDTLS_OID_PKCS12_PBE "\x01" /**< pbeWithSHAAnd128BitRC4 OBJECT IDENTIFIER ::= {pkcs-12PbeIds 1} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_RC4_40 MBEDTLS_OID_PKCS12_PBE "\x02" /**< pbeWithSHAAnd40BitRC4 OBJECT IDENTIFIER ::= {pkcs-12PbeIds 2} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_DES3_EDE_CBC MBEDTLS_OID_PKCS12_PBE "\x03" /**< pbeWithSHAAnd3-KeyTripleDES-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 3} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_DES2_EDE_CBC MBEDTLS_OID_PKCS12_PBE "\x04" /**< pbeWithSHAAnd2-KeyTripleDES-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 4} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_RC2_128_CBC MBEDTLS_OID_PKCS12_PBE "\x05" /**< pbeWithSHAAnd128BitRC2-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 5} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_RC2_40_CBC MBEDTLS_OID_PKCS12_PBE "\x06" /**< pbeWithSHAAnd40BitRC2-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 6} */ + +/* + * EC key algorithms from RFC 5480 + */ + +/* id-ecPublicKey OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 } */ +#define MBEDTLS_OID_EC_ALG_UNRESTRICTED MBEDTLS_OID_ANSI_X9_62 "\x02\01" + +/* id-ecDH OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) + * schemes(1) ecdh(12) } */ +#define MBEDTLS_OID_EC_ALG_ECDH MBEDTLS_OID_CERTICOM "\x01\x0c" + +/* + * ECParameters namedCurve identifiers, from RFC 5480, RFC 5639, and SEC2 + */ + +/* secp192r1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) prime(1) 1 } */ +#define MBEDTLS_OID_EC_GRP_SECP192R1 MBEDTLS_OID_ANSI_X9_62 "\x03\x01\x01" + +/* secp224r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 33 } */ +#define MBEDTLS_OID_EC_GRP_SECP224R1 MBEDTLS_OID_CERTICOM "\x00\x21" + +/* secp256r1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) prime(1) 7 } */ +#define MBEDTLS_OID_EC_GRP_SECP256R1 MBEDTLS_OID_ANSI_X9_62 "\x03\x01\x07" + +/* secp384r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 34 } */ +#define MBEDTLS_OID_EC_GRP_SECP384R1 MBEDTLS_OID_CERTICOM "\x00\x22" + +/* secp521r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 35 } */ +#define MBEDTLS_OID_EC_GRP_SECP521R1 MBEDTLS_OID_CERTICOM "\x00\x23" + +/* secp192k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 31 } */ +#define MBEDTLS_OID_EC_GRP_SECP192K1 MBEDTLS_OID_CERTICOM "\x00\x1f" + +/* secp224k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 32 } */ +#define MBEDTLS_OID_EC_GRP_SECP224K1 MBEDTLS_OID_CERTICOM "\x00\x20" + +/* secp256k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 10 } */ +#define MBEDTLS_OID_EC_GRP_SECP256K1 MBEDTLS_OID_CERTICOM "\x00\x0a" + +/* RFC 5639 4.1 + * ecStdCurvesAndGeneration OBJECT IDENTIFIER::= {iso(1) + * identified-organization(3) teletrust(36) algorithm(3) signature- + * algorithm(3) ecSign(2) 8} + * ellipticCurve OBJECT IDENTIFIER ::= {ecStdCurvesAndGeneration 1} + * versionOne OBJECT IDENTIFIER ::= {ellipticCurve 1} */ +#define MBEDTLS_OID_EC_BRAINPOOL_V1 MBEDTLS_OID_TELETRUST "\x03\x03\x02\x08\x01\x01" + +/* brainpoolP256r1 OBJECT IDENTIFIER ::= {versionOne 7} */ +#define MBEDTLS_OID_EC_GRP_BP256R1 MBEDTLS_OID_EC_BRAINPOOL_V1 "\x07" + +/* brainpoolP384r1 OBJECT IDENTIFIER ::= {versionOne 11} */ +#define MBEDTLS_OID_EC_GRP_BP384R1 MBEDTLS_OID_EC_BRAINPOOL_V1 "\x0B" + +/* brainpoolP512r1 OBJECT IDENTIFIER ::= {versionOne 13} */ +#define MBEDTLS_OID_EC_GRP_BP512R1 MBEDTLS_OID_EC_BRAINPOOL_V1 "\x0D" + +/* + * SEC1 C.1 + * + * prime-field OBJECT IDENTIFIER ::= { id-fieldType 1 } + * id-fieldType OBJECT IDENTIFIER ::= { ansi-X9-62 fieldType(1)} + */ +#define MBEDTLS_OID_ANSI_X9_62_FIELD_TYPE MBEDTLS_OID_ANSI_X9_62 "\x01" +#define MBEDTLS_OID_ANSI_X9_62_PRIME_FIELD MBEDTLS_OID_ANSI_X9_62_FIELD_TYPE "\x01" + +/* + * ECDSA signature identifiers, from RFC 5480 + */ +#define MBEDTLS_OID_ANSI_X9_62_SIG MBEDTLS_OID_ANSI_X9_62 "\x04" /* signatures(4) */ +#define MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 MBEDTLS_OID_ANSI_X9_62_SIG "\x03" /* ecdsa-with-SHA2(3) */ + +/* ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) 1 } */ +#define MBEDTLS_OID_ECDSA_SHA1 MBEDTLS_OID_ANSI_X9_62_SIG "\x01" + +/* ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 1 } */ +#define MBEDTLS_OID_ECDSA_SHA224 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x01" + +/* ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 2 } */ +#define MBEDTLS_OID_ECDSA_SHA256 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x02" + +/* ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 3 } */ +#define MBEDTLS_OID_ECDSA_SHA384 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x03" + +/* ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 4 } */ +#define MBEDTLS_OID_ECDSA_SHA512 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x04" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Base OID descriptor structure + */ +typedef struct { + const char *asn1; /*!< OID ASN.1 representation */ + size_t asn1_len; /*!< length of asn1 */ + const char *name; /*!< official name (e.g. from RFC) */ + const char *description; /*!< human friendly description */ +} mbedtls_oid_descriptor_t; + +/** + * \brief Translate an ASN.1 OID into its numeric representation + * (e.g. "\x2A\x86\x48\x86\xF7\x0D" into "1.2.840.113549") + * + * \param buf buffer to put representation in + * \param size size of the buffer + * \param oid OID to translate + * + * \return Length of the string written (excluding final NULL) or + * MBEDTLS_ERR_OID_BUF_TOO_SMALL in case of error + */ +int mbedtls_oid_get_numeric_string( char *buf, size_t size, const mbedtls_asn1_buf *oid ); + +#if defined(MBEDTLS_X509_USE_C) || defined(MBEDTLS_X509_CREATE_C) +/** + * \brief Translate an X.509 extension OID into local values + * + * \param oid OID to use + * \param ext_type place to store the extension type + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_x509_ext_type( const mbedtls_asn1_buf *oid, int *ext_type ); +#endif + +/** + * \brief Translate an X.509 attribute type OID into the short name + * (e.g. the OID for an X520 Common Name into "CN") + * + * \param oid OID to use + * \param short_name place to store the string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_attr_short_name( const mbedtls_asn1_buf *oid, const char **short_name ); + +/** + * \brief Translate PublicKeyAlgorithm OID into pk_type + * + * \param oid OID to use + * \param pk_alg place to store public key algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_pk_alg( const mbedtls_asn1_buf *oid, mbedtls_pk_type_t *pk_alg ); + +/** + * \brief Translate pk_type into PublicKeyAlgorithm OID + * + * \param pk_alg Public key type to look for + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_pk_alg( mbedtls_pk_type_t pk_alg, + const char **oid, size_t *olen ); + +#if defined(MBEDTLS_ECP_C) +/** + * \brief Translate NamedCurve OID into an EC group identifier + * + * \param oid OID to use + * \param grp_id place to store group id + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_ec_grp( const mbedtls_asn1_buf *oid, mbedtls_ecp_group_id *grp_id ); + +/** + * \brief Translate EC group identifier into NamedCurve OID + * + * \param grp_id EC group identifier + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_ec_grp( mbedtls_ecp_group_id grp_id, + const char **oid, size_t *olen ); +#endif /* MBEDTLS_ECP_C */ + +#if defined(MBEDTLS_MD_C) +/** + * \brief Translate SignatureAlgorithm OID into md_type and pk_type + * + * \param oid OID to use + * \param md_alg place to store message digest algorithm + * \param pk_alg place to store public key algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_sig_alg( const mbedtls_asn1_buf *oid, + mbedtls_md_type_t *md_alg, mbedtls_pk_type_t *pk_alg ); + +/** + * \brief Translate SignatureAlgorithm OID into description + * + * \param oid OID to use + * \param desc place to store string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_sig_alg_desc( const mbedtls_asn1_buf *oid, const char **desc ); + +/** + * \brief Translate md_type and pk_type into SignatureAlgorithm OID + * + * \param md_alg message digest algorithm + * \param pk_alg public key algorithm + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_sig_alg( mbedtls_pk_type_t pk_alg, mbedtls_md_type_t md_alg, + const char **oid, size_t *olen ); + +/** + * \brief Translate hash algorithm OID into md_type + * + * \param oid OID to use + * \param md_alg place to store message digest algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_md_alg( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_alg ); +#endif /* MBEDTLS_MD_C */ + +/** + * \brief Translate Extended Key Usage OID into description + * + * \param oid OID to use + * \param desc place to store string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_extended_key_usage( const mbedtls_asn1_buf *oid, const char **desc ); + +/** + * \brief Translate md_type into hash algorithm OID + * + * \param md_alg message digest algorithm + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_md( mbedtls_md_type_t md_alg, const char **oid, size_t *olen ); + +#if defined(MBEDTLS_CIPHER_C) +/** + * \brief Translate encryption algorithm OID into cipher_type + * + * \param oid OID to use + * \param cipher_alg place to store cipher algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_cipher_alg( const mbedtls_asn1_buf *oid, mbedtls_cipher_type_t *cipher_alg ); +#endif /* MBEDTLS_CIPHER_C */ + +#if defined(MBEDTLS_PKCS12_C) +/** + * \brief Translate PKCS#12 PBE algorithm OID into md_type and + * cipher_type + * + * \param oid OID to use + * \param md_alg place to store message digest algorithm + * \param cipher_alg place to store cipher algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_pkcs12_pbe_alg( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_alg, + mbedtls_cipher_type_t *cipher_alg ); +#endif /* MBEDTLS_PKCS12_C */ + +#ifdef __cplusplus +} +#endif + +#endif /* oid.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/padlock.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/padlock.h new file mode 100644 index 0000000..2045a5a --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/padlock.h @@ -0,0 +1,107 @@ +/** + * \file padlock.h + * + * \brief VIA PadLock ACE for HW encryption/decryption supported by some + * processors + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PADLOCK_H +#define MBEDTLS_PADLOCK_H + +#include "aes.h" + +#define MBEDTLS_ERR_PADLOCK_DATA_MISALIGNED -0x0030 /**< Input data should be aligned. */ + +#if defined(__has_feature) +#if __has_feature(address_sanitizer) +#define MBEDTLS_HAVE_ASAN +#endif +#endif + +/* Some versions of ASan result in errors about not enough registers */ +#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) && defined(__i386__) && \ + !defined(MBEDTLS_HAVE_ASAN) + +#ifndef MBEDTLS_HAVE_X86 +#define MBEDTLS_HAVE_X86 +#endif + +#include + +#define MBEDTLS_PADLOCK_RNG 0x000C +#define MBEDTLS_PADLOCK_ACE 0x00C0 +#define MBEDTLS_PADLOCK_PHE 0x0C00 +#define MBEDTLS_PADLOCK_PMM 0x3000 + +#define MBEDTLS_PADLOCK_ALIGN16(x) (uint32_t *) (16 + ((int32_t) x & ~15)) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief PadLock detection routine + * + * \param feature The feature to detect + * + * \return 1 if CPU has support for the feature, 0 otherwise + */ +int mbedtls_padlock_has_support( int feature ); + +/** + * \brief PadLock AES-ECB block en(de)cryption + * + * \param ctx AES context + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT + * \param input 16-byte input block + * \param output 16-byte output block + * + * \return 0 if success, 1 if operation failed + */ +int mbedtls_padlock_xcryptecb( mbedtls_aes_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ); + +/** + * \brief PadLock AES-CBC buffer en(de)cryption + * + * \param ctx AES context + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT + * \param length length of the input data + * \param iv initialization vector (updated after use) + * \param input buffer holding the input data + * \param output buffer holding the output data + * + * \return 0 if success, 1 if operation failed + */ +int mbedtls_padlock_xcryptcbc( mbedtls_aes_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); + +#ifdef __cplusplus +} +#endif + +#endif /* HAVE_X86 */ + +#endif /* padlock.h */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/pem.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pem.h similarity index 50% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/pem.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pem.h index b47e0e9..54dc02d 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/pem.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pem.h @@ -3,26 +3,25 @@ * * \brief Privacy Enhanced Mail (PEM) decoding * - * Copyright (C) 2006-2013, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_PEM_H -#define POLARSSL_PEM_H +#ifndef MBEDTLS_PEM_H +#define MBEDTLS_PEM_H #include @@ -32,22 +31,22 @@ * PEM data. * \{ */ -#define POLARSSL_ERR_PEM_NO_HEADER_FOOTER_PRESENT -0x1080 /**< No PEM header or footer found. */ -#define POLARSSL_ERR_PEM_INVALID_DATA -0x1100 /**< PEM string is not as expected. */ -#define POLARSSL_ERR_PEM_MALLOC_FAILED -0x1180 /**< Failed to allocate memory. */ -#define POLARSSL_ERR_PEM_INVALID_ENC_IV -0x1200 /**< RSA IV is not in hex-format. */ -#define POLARSSL_ERR_PEM_UNKNOWN_ENC_ALG -0x1280 /**< Unsupported key encryption algorithm. */ -#define POLARSSL_ERR_PEM_PASSWORD_REQUIRED -0x1300 /**< Private key password can't be empty. */ -#define POLARSSL_ERR_PEM_PASSWORD_MISMATCH -0x1380 /**< Given private key password does not allow for correct decryption. */ -#define POLARSSL_ERR_PEM_FEATURE_UNAVAILABLE -0x1400 /**< Unavailable feature, e.g. hashing/encryption combination. */ -#define POLARSSL_ERR_PEM_BAD_INPUT_DATA -0x1480 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT -0x1080 /**< No PEM header or footer found. */ +#define MBEDTLS_ERR_PEM_INVALID_DATA -0x1100 /**< PEM string is not as expected. */ +#define MBEDTLS_ERR_PEM_ALLOC_FAILED -0x1180 /**< Failed to allocate memory. */ +#define MBEDTLS_ERR_PEM_INVALID_ENC_IV -0x1200 /**< RSA IV is not in hex-format. */ +#define MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG -0x1280 /**< Unsupported key encryption algorithm. */ +#define MBEDTLS_ERR_PEM_PASSWORD_REQUIRED -0x1300 /**< Private key password can't be empty. */ +#define MBEDTLS_ERR_PEM_PASSWORD_MISMATCH -0x1380 /**< Given private key password does not allow for correct decryption. */ +#define MBEDTLS_ERR_PEM_FEATURE_UNAVAILABLE -0x1400 /**< Unavailable feature, e.g. hashing/encryption combination. */ +#define MBEDTLS_ERR_PEM_BAD_INPUT_DATA -0x1480 /**< Bad input parameters to function. */ /* \} name */ #ifdef __cplusplus extern "C" { #endif -#if defined(POLARSSL_PEM_PARSE_C) +#if defined(MBEDTLS_PEM_PARSE_C) /** * \brief PEM context structure */ @@ -57,14 +56,14 @@ typedef struct size_t buflen; /*!< length of the buffer */ unsigned char *info; /*!< buffer for extra header information */ } -pem_context; +mbedtls_pem_context; /** * \brief PEM context setup * * \param ctx context to be initialized */ -void pem_init( pem_context *ctx ); +void mbedtls_pem_init( mbedtls_pem_context *ctx ); /** * \brief Read a buffer for PEM information and store the resulting @@ -73,13 +72,13 @@ void pem_init( pem_context *ctx ); * \param ctx context to use * \param header header string to seek and expect * \param footer footer string to seek and expect - * \param data source data to look in + * \param data source data to look in (must be nul-terminated) * \param pwd password for decryption (can be NULL) * \param pwdlen length of password * \param use_len destination for total length used (set after header is * correctly read, so unless you get - * POLARSSL_ERR_PEM_BAD_INPUT_DATA or - * POLARSSL_ERR_PEM_NO_HEADER_FOOTER_PRESENT, use_len is + * MBEDTLS_ERR_PEM_BAD_INPUT_DATA or + * MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT, use_len is * the length to skip) * * \note Attempts to check password correctness by verifying if @@ -88,7 +87,7 @@ void pem_init( pem_context *ctx ); * * \return 0 on success, or a specific PEM error code */ -int pem_read_buffer( pem_context *ctx, const char *header, const char *footer, +int mbedtls_pem_read_buffer( mbedtls_pem_context *ctx, const char *header, const char *footer, const unsigned char *data, const unsigned char *pwd, size_t pwdlen, size_t *use_len ); @@ -98,10 +97,10 @@ int pem_read_buffer( pem_context *ctx, const char *header, const char *footer, * * \param ctx context to be freed */ -void pem_free( pem_context *ctx ); -#endif /* POLARSSL_PEM_PARSE_C */ +void mbedtls_pem_free( mbedtls_pem_context *ctx ); +#endif /* MBEDTLS_PEM_PARSE_C */ -#if defined(POLARSSL_PEM_WRITE_C) +#if defined(MBEDTLS_PEM_WRITE_C) /** * \brief Write a buffer of PEM information from a DER encoded * buffer. @@ -115,13 +114,13 @@ void pem_free( pem_context *ctx ); * \param olen total length written / required (if buf_len is not enough) * * \return 0 on success, or a specific PEM or BASE64 error code. On - * POLARSSL_ERR_BASE64_BUFFER_TOO_SMALL olen is the required + * MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL olen is the required * size. */ -int pem_write_buffer( const char *header, const char *footer, +int mbedtls_pem_write_buffer( const char *header, const char *footer, const unsigned char *der_data, size_t der_len, unsigned char *buf, size_t buf_len, size_t *olen ); -#endif /* POLARSSL_PEM_WRITE_C */ +#endif /* MBEDTLS_PEM_WRITE_C */ #ifdef __cplusplus } diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/pk.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pk.h similarity index 55% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/pk.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pk.h index 8d9407c..f9f9b9b 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/pk.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pk.h @@ -3,84 +3,66 @@ * * \brief Public Key abstraction layer * - * Copyright (C) 2006-2013, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_PK_H -#define POLARSSL_PK_H +#ifndef MBEDTLS_PK_H +#define MBEDTLS_PK_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif #include "md.h" -#if defined(POLARSSL_RSA_C) +#if defined(MBEDTLS_RSA_C) #include "rsa.h" #endif -#if defined(POLARSSL_ECP_C) +#if defined(MBEDTLS_ECP_C) #include "ecp.h" #endif -#if defined(POLARSSL_ECDSA_C) +#if defined(MBEDTLS_ECDSA_C) #include "ecdsa.h" #endif -#define POLARSSL_ERR_PK_MALLOC_FAILED -0x2F80 /**< Memory alloation failed. */ -#define POLARSSL_ERR_PK_TYPE_MISMATCH -0x2F00 /**< Type mismatch, eg attempt to encrypt with an ECDSA key */ -#define POLARSSL_ERR_PK_BAD_INPUT_DATA -0x2E80 /**< Bad input parameters to function. */ -#define POLARSSL_ERR_PK_FILE_IO_ERROR -0x2E00 /**< Read/write of file failed. */ -#define POLARSSL_ERR_PK_KEY_INVALID_VERSION -0x2D80 /**< Unsupported key version */ -#define POLARSSL_ERR_PK_KEY_INVALID_FORMAT -0x2D00 /**< Invalid key tag or value. */ -#define POLARSSL_ERR_PK_UNKNOWN_PK_ALG -0x2C80 /**< Key algorithm is unsupported (only RSA and EC are supported). */ -#define POLARSSL_ERR_PK_PASSWORD_REQUIRED -0x2C00 /**< Private key password can't be empty. */ -#define POLARSSL_ERR_PK_PASSWORD_MISMATCH -0x2B80 /**< Given private key password does not allow for correct decryption. */ -#define POLARSSL_ERR_PK_INVALID_PUBKEY -0x2B00 /**< The pubkey tag or value is invalid (only RSA and EC are supported). */ -#define POLARSSL_ERR_PK_INVALID_ALG -0x2A80 /**< The algorithm tag or value is invalid. */ -#define POLARSSL_ERR_PK_UNKNOWN_NAMED_CURVE -0x2A00 /**< Elliptic curve is unsupported (only NIST curves are supported). */ -#define POLARSSL_ERR_PK_FEATURE_UNAVAILABLE -0x2980 /**< Unavailable feature, e.g. RSA disabled for RSA key. */ -#define POLARSSL_ERR_PK_SIG_LEN_MISMATCH -0x2000 /**< The signature is valid but its length is less than expected. */ - - -#if defined(POLARSSL_RSA_C) -/** - * Quick access to an RSA context inside a PK context. - * - * \warning You must make sure the PK context actually holds an RSA context - * before using this macro! - */ -#define pk_rsa( pk ) ( (rsa_context *) (pk).pk_ctx ) -#endif /* POLARSSL_RSA_C */ - -#if defined(POLARSSL_ECP_C) -/** - * Quick access to an EC context inside a PK context. - * - * \warning You must make sure the PK context actually holds an EC context - * before using this macro! - */ -#define pk_ec( pk ) ( (ecp_keypair *) (pk).pk_ctx ) -#endif /* POLARSSL_ECP_C */ +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif +#define MBEDTLS_ERR_PK_ALLOC_FAILED -0x3F80 /**< Memory allocation failed. */ +#define MBEDTLS_ERR_PK_TYPE_MISMATCH -0x3F00 /**< Type mismatch, eg attempt to encrypt with an ECDSA key */ +#define MBEDTLS_ERR_PK_BAD_INPUT_DATA -0x3E80 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_PK_FILE_IO_ERROR -0x3E00 /**< Read/write of file failed. */ +#define MBEDTLS_ERR_PK_KEY_INVALID_VERSION -0x3D80 /**< Unsupported key version */ +#define MBEDTLS_ERR_PK_KEY_INVALID_FORMAT -0x3D00 /**< Invalid key tag or value. */ +#define MBEDTLS_ERR_PK_UNKNOWN_PK_ALG -0x3C80 /**< Key algorithm is unsupported (only RSA and EC are supported). */ +#define MBEDTLS_ERR_PK_PASSWORD_REQUIRED -0x3C00 /**< Private key password can't be empty. */ +#define MBEDTLS_ERR_PK_PASSWORD_MISMATCH -0x3B80 /**< Given private key password does not allow for correct decryption. */ +#define MBEDTLS_ERR_PK_INVALID_PUBKEY -0x3B00 /**< The pubkey tag or value is invalid (only RSA and EC are supported). */ +#define MBEDTLS_ERR_PK_INVALID_ALG -0x3A80 /**< The algorithm tag or value is invalid. */ +#define MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE -0x3A00 /**< Elliptic curve is unsupported (only NIST curves are supported). */ +#define MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE -0x3980 /**< Unavailable feature, e.g. RSA disabled for RSA key. */ +#define MBEDTLS_ERR_PK_SIG_LEN_MISMATCH -0x3900 /**< The signature is valid but its length is less than expected. */ #ifdef __cplusplus extern "C" { @@ -90,124 +72,102 @@ extern "C" { * \brief Public key types */ typedef enum { - POLARSSL_PK_NONE=0, - POLARSSL_PK_RSA, - POLARSSL_PK_ECKEY, - POLARSSL_PK_ECKEY_DH, - POLARSSL_PK_ECDSA, - POLARSSL_PK_RSA_ALT, - POLARSSL_PK_RSASSA_PSS, -} pk_type_t; + MBEDTLS_PK_NONE=0, + MBEDTLS_PK_RSA, + MBEDTLS_PK_ECKEY, + MBEDTLS_PK_ECKEY_DH, + MBEDTLS_PK_ECDSA, + MBEDTLS_PK_RSA_ALT, + MBEDTLS_PK_RSASSA_PSS, +} mbedtls_pk_type_t; /** * \brief Options for RSASSA-PSS signature verification. - * See \c rsa_rsassa_pss_verify_ext() + * See \c mbedtls_rsa_rsassa_pss_verify_ext() */ typedef struct { - md_type_t mgf1_hash_id; + mbedtls_md_type_t mgf1_hash_id; int expected_salt_len; -} pk_rsassa_pss_options; +} mbedtls_pk_rsassa_pss_options; /** * \brief Types for interfacing with the debug module */ typedef enum { - POLARSSL_PK_DEBUG_NONE = 0, - POLARSSL_PK_DEBUG_MPI, - POLARSSL_PK_DEBUG_ECP, -} pk_debug_type; + MBEDTLS_PK_DEBUG_NONE = 0, + MBEDTLS_PK_DEBUG_MPI, + MBEDTLS_PK_DEBUG_ECP, +} mbedtls_pk_debug_type; /** * \brief Item to send to the debug module */ typedef struct { - pk_debug_type type; + mbedtls_pk_debug_type type; const char *name; void *value; -} pk_debug_item; +} mbedtls_pk_debug_item; /** Maximum number of item send for debugging, plus 1 */ -#define POLARSSL_PK_DEBUG_MAX_ITEMS 3 +#define MBEDTLS_PK_DEBUG_MAX_ITEMS 3 /** * \brief Public key information and operations */ -typedef struct -{ - /** Public key type */ - pk_type_t type; - - /** Type name */ - const char *name; - - /** Get key size in bits */ - size_t (*get_size)( const void * ); - - /** Tell if the context implements this type (e.g. ECKEY can do ECDSA) */ - int (*can_do)( pk_type_t type ); - - /** Verify signature */ - int (*verify_func)( void *ctx, md_type_t md_alg, - const unsigned char *hash, size_t hash_len, - const unsigned char *sig, size_t sig_len ); - - /** Make signature */ - int (*sign_func)( void *ctx, md_type_t md_alg, - const unsigned char *hash, size_t hash_len, - unsigned char *sig, size_t *sig_len, - int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ); - - /** Decrypt message */ - int (*decrypt_func)( void *ctx, const unsigned char *input, size_t ilen, - unsigned char *output, size_t *olen, size_t osize, - int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ); - - /** Encrypt message */ - int (*encrypt_func)( void *ctx, const unsigned char *input, size_t ilen, - unsigned char *output, size_t *olen, size_t osize, - int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ); - - /** Check public-private key pair */ - int (*check_pair_func)( const void *pub, const void *prv ); - - /** Allocate a new context */ - void * (*ctx_alloc_func)( void ); - - /** Free the given context */ - void (*ctx_free_func)( void *ctx ); - - /** Interface with the debug module */ - void (*debug_func)( const void *ctx, pk_debug_item *items ); - -} pk_info_t; +typedef struct mbedtls_pk_info_t mbedtls_pk_info_t; /** * \brief Public key container */ typedef struct { - const pk_info_t * pk_info; /**< Public key informations */ - void * pk_ctx; /**< Underlying public key context */ -} pk_context; + const mbedtls_pk_info_t * pk_info; /**< Public key informations */ + void * pk_ctx; /**< Underlying public key context */ +} mbedtls_pk_context; +#if defined(MBEDTLS_RSA_C) +/** + * Quick access to an RSA context inside a PK context. + * + * \warning You must make sure the PK context actually holds an RSA context + * before using this function! + */ +static inline mbedtls_rsa_context *mbedtls_pk_rsa( const mbedtls_pk_context pk ) +{ + return( (mbedtls_rsa_context *) (pk).pk_ctx ); +} +#endif /* MBEDTLS_RSA_C */ + +#if defined(MBEDTLS_ECP_C) +/** + * Quick access to an EC context inside a PK context. + * + * \warning You must make sure the PK context actually holds an EC context + * before using this function! + */ +static inline mbedtls_ecp_keypair *mbedtls_pk_ec( const mbedtls_pk_context pk ) +{ + return( (mbedtls_ecp_keypair *) (pk).pk_ctx ); +} +#endif /* MBEDTLS_ECP_C */ + +#if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) /** * \brief Types for RSA-alt abstraction */ -typedef int (*pk_rsa_alt_decrypt_func)( void *ctx, int mode, size_t *olen, +typedef int (*mbedtls_pk_rsa_alt_decrypt_func)( void *ctx, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len ); -typedef int (*pk_rsa_alt_sign_func)( void *ctx, +typedef int (*mbedtls_pk_rsa_alt_sign_func)( void *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, - int mode, md_type_t md_alg, unsigned int hashlen, + int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig ); -typedef size_t (*pk_rsa_alt_key_len_func)( void *ctx ); +typedef size_t (*mbedtls_pk_rsa_alt_key_len_func)( void *ctx ); +#endif /* MBEDTLS_PK_RSA_ALT_SUPPORT */ /** * \brief Return information associated with the given PK type @@ -216,17 +176,17 @@ typedef size_t (*pk_rsa_alt_key_len_func)( void *ctx ); * * \return The PK info associated with the type or NULL if not found. */ -const pk_info_t *pk_info_from_type( pk_type_t pk_type ); +const mbedtls_pk_info_t *mbedtls_pk_info_from_type( mbedtls_pk_type_t pk_type ); /** - * \brief Initialize a pk_context (as NONE) + * \brief Initialize a mbedtls_pk_context (as NONE) */ -void pk_init( pk_context *ctx ); +void mbedtls_pk_init( mbedtls_pk_context *ctx ); /** - * \brief Free a pk_context + * \brief Free a mbedtls_pk_context */ -void pk_free( pk_context *ctx ); +void mbedtls_pk_free( mbedtls_pk_context *ctx ); /** * \brief Initialize a PK context with the information given @@ -236,14 +196,15 @@ void pk_free( pk_context *ctx ); * \param info Information to use * * \return 0 on success, - * POLARSSL_ERR_PK_BAD_INPUT_DATA on invalid input, - * POLARSSL_ERR_PK_MALLOC_FAILED on allocation failure. + * MBEDTLS_ERR_PK_BAD_INPUT_DATA on invalid input, + * MBEDTLS_ERR_PK_ALLOC_FAILED on allocation failure. * * \note For contexts holding an RSA-alt key, use - * \c pk_init_ctx_rsa_alt() instead. + * \c mbedtls_pk_setup_rsa_alt() instead. */ -int pk_init_ctx( pk_context *ctx, const pk_info_t *info ); +int mbedtls_pk_setup( mbedtls_pk_context *ctx, const mbedtls_pk_info_t *info ); +#if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) /** * \brief Initialize an RSA-alt context * @@ -253,15 +214,16 @@ int pk_init_ctx( pk_context *ctx, const pk_info_t *info ); * \param sign_func Signing function * \param key_len_func Function returning key length in bytes * - * \return 0 on success, or POLARSSL_ERR_PK_BAD_INPUT_DATA if the + * \return 0 on success, or MBEDTLS_ERR_PK_BAD_INPUT_DATA if the * context wasn't already initialized as RSA_ALT. * - * \note This function replaces \c pk_init_ctx() for RSA-alt. + * \note This function replaces \c mbedtls_pk_setup() for RSA-alt. */ -int pk_init_ctx_rsa_alt( pk_context *ctx, void * key, - pk_rsa_alt_decrypt_func decrypt_func, - pk_rsa_alt_sign_func sign_func, - pk_rsa_alt_key_len_func key_len_func ); +int mbedtls_pk_setup_rsa_alt( mbedtls_pk_context *ctx, void * key, + mbedtls_pk_rsa_alt_decrypt_func decrypt_func, + mbedtls_pk_rsa_alt_sign_func sign_func, + mbedtls_pk_rsa_alt_key_len_func key_len_func ); +#endif /* MBEDTLS_PK_RSA_ALT_SUPPORT */ /** * \brief Get the size in bits of the underlying key @@ -270,7 +232,7 @@ int pk_init_ctx_rsa_alt( pk_context *ctx, void * key, * * \return Key size in bits, or 0 on error */ -size_t pk_get_size( const pk_context *ctx ); +size_t mbedtls_pk_get_bitlen( const mbedtls_pk_context *ctx ); /** * \brief Get the length in bytes of the underlying key @@ -278,9 +240,9 @@ size_t pk_get_size( const pk_context *ctx ); * * \return Key length in bytes, or 0 on error */ -static inline size_t pk_get_len( const pk_context *ctx ) +static inline size_t mbedtls_pk_get_len( const mbedtls_pk_context *ctx ) { - return( ( pk_get_size( ctx ) + 7 ) / 8 ); + return( ( mbedtls_pk_get_bitlen( ctx ) + 7 ) / 8 ); } /** @@ -292,7 +254,7 @@ static inline size_t pk_get_len( const pk_context *ctx ) * \return 0 if context can't do the operations, * 1 otherwise. */ -int pk_can_do( pk_context *ctx, pk_type_t type ); +int mbedtls_pk_can_do( const mbedtls_pk_context *ctx, mbedtls_pk_type_t type ); /** * \brief Verify signature (including padding if relevant). @@ -305,20 +267,20 @@ int pk_can_do( pk_context *ctx, pk_type_t type ); * \param sig_len Signature length * * \return 0 on success (signature is valid), - * POLARSSL_ERR_PK_SIG_LEN_MISMATCH if the signature is + * MBEDTLS_ERR_PK_SIG_LEN_MISMATCH if the signature is * valid but its actual length is less than sig_len, * or a specific error code. * * \note For RSA keys, the default padding type is PKCS#1 v1.5. - * Use \c pk_verify_ext( POLARSSL_PK_RSASSA_PSS, ... ) + * Use \c mbedtls_pk_verify_ext( MBEDTLS_PK_RSASSA_PSS, ... ) * to verify RSASSA_PSS signatures. * * \note If hash_len is 0, then the length associated with md_alg * is used instead, or an error returned if it is invalid. * - * \note md_alg may be POLARSSL_MD_NONE, only if hash_len != 0 + * \note md_alg may be MBEDTLS_MD_NONE, only if hash_len != 0 */ -int pk_verify( pk_context *ctx, md_type_t md_alg, +int mbedtls_pk_verify( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len ); @@ -336,30 +298,30 @@ int pk_verify( pk_context *ctx, md_type_t md_alg, * \param sig_len Signature length * * \return 0 on success (signature is valid), - * POLARSSL_ERR_PK_TYPE_MISMATCH if the PK context can't be + * MBEDTLS_ERR_PK_TYPE_MISMATCH if the PK context can't be * used for this type of signatures, - * POLARSSL_ERR_PK_SIG_LEN_MISMATCH if the signature is + * MBEDTLS_ERR_PK_SIG_LEN_MISMATCH if the signature is * valid but its actual length is less than sig_len, * or a specific error code. * * \note If hash_len is 0, then the length associated with md_alg * is used instead, or an error returned if it is invalid. * - * \note md_alg may be POLARSSL_MD_NONE, only if hash_len != 0 + * \note md_alg may be MBEDTLS_MD_NONE, only if hash_len != 0 * - * \note If type is POLARSSL_PK_RSASSA_PSS, then options must point - * to a pk_rsassa_pss_options structure, + * \note If type is MBEDTLS_PK_RSASSA_PSS, then options must point + * to a mbedtls_pk_rsassa_pss_options structure, * otherwise it must be NULL. */ -int pk_verify_ext( pk_type_t type, const void *options, - pk_context *ctx, md_type_t md_alg, +int mbedtls_pk_verify_ext( mbedtls_pk_type_t type, const void *options, + mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len ); /** * \brief Make signature, including padding if relevant. * - * \param ctx PK context to use + * \param ctx PK context to use - must hold a private key * \param md_alg Hash algorithm used (see notes) * \param hash Hash of the message to sign * \param hash_len Hash length or 0 (see notes) @@ -377,9 +339,10 @@ int pk_verify_ext( pk_type_t type, const void *options, * \note If hash_len is 0, then the length associated with md_alg * is used instead, or an error returned if it is invalid. * - * \note md_alg may be POLARSSL_MD_NONE, only if hash_len != 0 + * \note For RSA, md_alg may be MBEDTLS_MD_NONE if hash_len != 0. + * For ECDSA, md_alg may never be MBEDTLS_MD_NONE. */ -int pk_sign( pk_context *ctx, md_type_t md_alg, +int mbedtls_pk_sign( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, unsigned char *sig, size_t *sig_len, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -387,7 +350,7 @@ int pk_sign( pk_context *ctx, md_type_t md_alg, /** * \brief Decrypt message (including padding if relevant). * - * \param ctx PK context to use + * \param ctx PK context to use - must hold a private key * \param input Input to decrypt * \param ilen Input size * \param output Decrypted output @@ -400,7 +363,7 @@ int pk_sign( pk_context *ctx, md_type_t md_alg, * * \return 0 on success, or a specific error code. */ -int pk_decrypt( pk_context *ctx, +int mbedtls_pk_decrypt( mbedtls_pk_context *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, size_t osize, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -421,7 +384,7 @@ int pk_decrypt( pk_context *ctx, * * \return 0 on success, or a specific error code. */ -int pk_encrypt( pk_context *ctx, +int mbedtls_pk_encrypt( mbedtls_pk_context *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, size_t osize, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); @@ -432,9 +395,9 @@ int pk_encrypt( pk_context *ctx, * \param pub Context holding a public key. * \param prv Context holding a private (and public) key. * - * \return 0 on success or POLARSSL_ERR_PK_BAD_INPUT_DATA + * \return 0 on success or MBEDTLS_ERR_PK_BAD_INPUT_DATA */ -int pk_check_pair( const pk_context *pub, const pk_context *prv ); +int mbedtls_pk_check_pair( const mbedtls_pk_context *pub, const mbedtls_pk_context *prv ); /** * \brief Export debug information @@ -442,9 +405,9 @@ int pk_check_pair( const pk_context *pub, const pk_context *prv ); * \param ctx Context to use * \param items Place to write debug items * - * \return 0 on success or POLARSSL_ERR_PK_BAD_INPUT_DATA + * \return 0 on success or MBEDTLS_ERR_PK_BAD_INPUT_DATA */ -int pk_debug( const pk_context *ctx, pk_debug_item *items ); +int mbedtls_pk_debug( const mbedtls_pk_context *ctx, mbedtls_pk_debug_item *items ); /** * \brief Access the type name @@ -453,60 +416,62 @@ int pk_debug( const pk_context *ctx, pk_debug_item *items ); * * \return Type name on success, or "invalid PK" */ -const char * pk_get_name( const pk_context *ctx ); +const char * mbedtls_pk_get_name( const mbedtls_pk_context *ctx ); /** * \brief Get the key type * * \param ctx Context to use * - * \return Type on success, or POLARSSL_PK_NONE + * \return Type on success, or MBEDTLS_PK_NONE */ -pk_type_t pk_get_type( const pk_context *ctx ); +mbedtls_pk_type_t mbedtls_pk_get_type( const mbedtls_pk_context *ctx ); -#if defined(POLARSSL_PK_PARSE_C) +#if defined(MBEDTLS_PK_PARSE_C) /** \ingroup pk_module */ /** - * \brief Parse a private key + * \brief Parse a private key in PEM or DER format * * \param ctx key to be initialized * \param key input buffer * \param keylen size of the buffer + * (including the terminating null byte for PEM data) * \param pwd password for decryption (optional) * \param pwdlen size of the password * * \note On entry, ctx must be empty, either freshly initialised - * with pk_init() or reset with pk_free(). If you need a - * specific key type, check the result with pk_can_do(). + * with mbedtls_pk_init() or reset with mbedtls_pk_free(). If you need a + * specific key type, check the result with mbedtls_pk_can_do(). * * \note The key is also checked for correctness. * * \return 0 if successful, or a specific PK or PEM error code */ -int pk_parse_key( pk_context *ctx, +int mbedtls_pk_parse_key( mbedtls_pk_context *ctx, const unsigned char *key, size_t keylen, const unsigned char *pwd, size_t pwdlen ); /** \ingroup pk_module */ /** - * \brief Parse a public key + * \brief Parse a public key in PEM or DER format * * \param ctx key to be initialized * \param key input buffer * \param keylen size of the buffer + * (including the terminating null byte for PEM data) * * \note On entry, ctx must be empty, either freshly initialised - * with pk_init() or reset with pk_free(). If you need a - * specific key type, check the result with pk_can_do(). + * with mbedtls_pk_init() or reset with mbedtls_pk_free(). If you need a + * specific key type, check the result with mbedtls_pk_can_do(). * * \note The key is also checked for correctness. * * \return 0 if successful, or a specific PK or PEM error code */ -int pk_parse_public_key( pk_context *ctx, +int mbedtls_pk_parse_public_key( mbedtls_pk_context *ctx, const unsigned char *key, size_t keylen ); -#if defined(POLARSSL_FS_IO) +#if defined(MBEDTLS_FS_IO) /** \ingroup pk_module */ /** * \brief Load and parse a private key @@ -516,14 +481,14 @@ int pk_parse_public_key( pk_context *ctx, * \param password password to decrypt the file (can be NULL) * * \note On entry, ctx must be empty, either freshly initialised - * with pk_init() or reset with pk_free(). If you need a - * specific key type, check the result with pk_can_do(). + * with mbedtls_pk_init() or reset with mbedtls_pk_free(). If you need a + * specific key type, check the result with mbedtls_pk_can_do(). * * \note The key is also checked for correctness. * * \return 0 if successful, or a specific PK or PEM error code */ -int pk_parse_keyfile( pk_context *ctx, +int mbedtls_pk_parse_keyfile( mbedtls_pk_context *ctx, const char *path, const char *password ); /** \ingroup pk_module */ @@ -531,21 +496,22 @@ int pk_parse_keyfile( pk_context *ctx, * \brief Load and parse a public key * * \param ctx key to be initialized - * \param path filename to read the private key from + * \param path filename to read the public key from * * \note On entry, ctx must be empty, either freshly initialised - * with pk_init() or reset with pk_free(). If you need a - * specific key type, check the result with pk_can_do(). + * with mbedtls_pk_init() or reset with mbedtls_pk_free(). If + * you need a specific key type, check the result with + * mbedtls_pk_can_do(). * * \note The key is also checked for correctness. * * \return 0 if successful, or a specific PK or PEM error code */ -int pk_parse_public_keyfile( pk_context *ctx, const char *path ); -#endif /* POLARSSL_FS_IO */ -#endif /* POLARSSL_PK_PARSE_C */ +int mbedtls_pk_parse_public_keyfile( mbedtls_pk_context *ctx, const char *path ); +#endif /* MBEDTLS_FS_IO */ +#endif /* MBEDTLS_PK_PARSE_C */ -#if defined(POLARSSL_PK_WRITE_C) +#if defined(MBEDTLS_PK_WRITE_C) /** * \brief Write a private key to a PKCS#1 or SEC1 DER structure * Note: data is written at the end of the buffer! Use the @@ -559,7 +525,7 @@ int pk_parse_public_keyfile( pk_context *ctx, const char *path ); * \return length of data written if successful, or a specific * error code */ -int pk_write_key_der( pk_context *ctx, unsigned char *buf, size_t size ); +int mbedtls_pk_write_key_der( mbedtls_pk_context *ctx, unsigned char *buf, size_t size ); /** * \brief Write a public key to a SubjectPublicKeyInfo DER structure @@ -574,9 +540,9 @@ int pk_write_key_der( pk_context *ctx, unsigned char *buf, size_t size ); * \return length of data written if successful, or a specific * error code */ -int pk_write_pubkey_der( pk_context *ctx, unsigned char *buf, size_t size ); +int mbedtls_pk_write_pubkey_der( mbedtls_pk_context *ctx, unsigned char *buf, size_t size ); -#if defined(POLARSSL_PEM_WRITE_C) +#if defined(MBEDTLS_PEM_WRITE_C) /** * \brief Write a public key to a PEM string * @@ -584,9 +550,9 @@ int pk_write_pubkey_der( pk_context *ctx, unsigned char *buf, size_t size ); * \param buf buffer to write to * \param size size of the buffer * - * \return 0 successful, or a specific error code + * \return 0 if successful, or a specific error code */ -int pk_write_pubkey_pem( pk_context *ctx, unsigned char *buf, size_t size ); +int mbedtls_pk_write_pubkey_pem( mbedtls_pk_context *ctx, unsigned char *buf, size_t size ); /** * \brief Write a private key to a PKCS#1 or SEC1 PEM string @@ -595,18 +561,18 @@ int pk_write_pubkey_pem( pk_context *ctx, unsigned char *buf, size_t size ); * \param buf buffer to write to * \param size size of the buffer * - * \return 0 successful, or a specific error code + * \return 0 if successful, or a specific error code */ -int pk_write_key_pem( pk_context *ctx, unsigned char *buf, size_t size ); -#endif /* POLARSSL_PEM_WRITE_C */ -#endif /* POLARSSL_PK_WRITE_C */ +int mbedtls_pk_write_key_pem( mbedtls_pk_context *ctx, unsigned char *buf, size_t size ); +#endif /* MBEDTLS_PEM_WRITE_C */ +#endif /* MBEDTLS_PK_WRITE_C */ /* * WARNING: Low-level functions. You probably do not want to use these unless * you are certain you do ;) */ -#if defined(POLARSSL_PK_PARSE_C) +#if defined(MBEDTLS_PK_PARSE_C) /** * \brief Parse a SubjectPublicKeyInfo DER structure * @@ -616,11 +582,11 @@ int pk_write_key_pem( pk_context *ctx, unsigned char *buf, size_t size ); * * \return 0 if successful, or a specific PK error code */ -int pk_parse_subpubkey( unsigned char **p, const unsigned char *end, - pk_context *pk ); -#endif /* POLARSSL_PK_PARSE_C */ +int mbedtls_pk_parse_subpubkey( unsigned char **p, const unsigned char *end, + mbedtls_pk_context *pk ); +#endif /* MBEDTLS_PK_PARSE_C */ -#if defined(POLARSSL_PK_WRITE_C) +#if defined(MBEDTLS_PK_WRITE_C) /** * \brief Write a subjectPublicKey to ASN.1 data * Note: function works backwards in data buffer @@ -631,20 +597,20 @@ int pk_parse_subpubkey( unsigned char **p, const unsigned char *end, * * \return the length written or a negative error code */ -int pk_write_pubkey( unsigned char **p, unsigned char *start, - const pk_context *key ); -#endif /* POLARSSL_PK_WRITE_C */ +int mbedtls_pk_write_pubkey( unsigned char **p, unsigned char *start, + const mbedtls_pk_context *key ); +#endif /* MBEDTLS_PK_WRITE_C */ /* * Internal module functions. You probably do not want to use these unless you * know you do. */ -#if defined(POLARSSL_FS_IO) -int pk_load_file( const char *path, unsigned char **buf, size_t *n ); +#if defined(MBEDTLS_FS_IO) +int mbedtls_pk_load_file( const char *path, unsigned char **buf, size_t *n ); #endif #ifdef __cplusplus } #endif -#endif /* POLARSSL_PK_H */ +#endif /* MBEDTLS_PK_H */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pk_internal.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pk_internal.h new file mode 100644 index 0000000..01d0f21 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pk_internal.h @@ -0,0 +1,114 @@ +/** + * \file pk.h + * + * \brief Public Key abstraction layer: wrapper functions + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_PK_WRAP_H +#define MBEDTLS_PK_WRAP_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "pk.h" + +struct mbedtls_pk_info_t +{ + /** Public key type */ + mbedtls_pk_type_t type; + + /** Type name */ + const char *name; + + /** Get key size in bits */ + size_t (*get_bitlen)( const void * ); + + /** Tell if the context implements this type (e.g. ECKEY can do ECDSA) */ + int (*can_do)( mbedtls_pk_type_t type ); + + /** Verify signature */ + int (*verify_func)( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len ); + + /** Make signature */ + int (*sign_func)( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + + /** Decrypt message */ + int (*decrypt_func)( void *ctx, const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, size_t osize, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + + /** Encrypt message */ + int (*encrypt_func)( void *ctx, const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, size_t osize, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + + /** Check public-private key pair */ + int (*check_pair_func)( const void *pub, const void *prv ); + + /** Allocate a new context */ + void * (*ctx_alloc_func)( void ); + + /** Free the given context */ + void (*ctx_free_func)( void *ctx ); + + /** Interface with the debug module */ + void (*debug_func)( const void *ctx, mbedtls_pk_debug_item *items ); + +}; +#if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) +/* Container for RSA-alt */ +typedef struct +{ + void *key; + mbedtls_pk_rsa_alt_decrypt_func decrypt_func; + mbedtls_pk_rsa_alt_sign_func sign_func; + mbedtls_pk_rsa_alt_key_len_func key_len_func; +} mbedtls_rsa_alt_context; +#endif + +#if defined(MBEDTLS_RSA_C) +extern const mbedtls_pk_info_t mbedtls_rsa_info; +#endif + +#if defined(MBEDTLS_ECP_C) +extern const mbedtls_pk_info_t mbedtls_eckey_info; +extern const mbedtls_pk_info_t mbedtls_eckeydh_info; +#endif + +#if defined(MBEDTLS_ECDSA_C) +extern const mbedtls_pk_info_t mbedtls_ecdsa_info; +#endif + +#if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) +extern const mbedtls_pk_info_t mbedtls_rsa_alt_info; +#endif + +#endif /* MBEDTLS_PK_WRAP_H */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/pkcs11.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pkcs11.h similarity index 54% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/pkcs11.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pkcs11.h index 4ca4a4c..2e88928 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/pkcs11.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pkcs11.h @@ -5,34 +5,33 @@ * * \author Adriaan de Jong * - * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_PKCS11_H -#define POLARSSL_PKCS11_H +#ifndef MBEDTLS_PKCS11_H +#define MBEDTLS_PKCS11_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif -#if defined(POLARSSL_PKCS11_C) +#if defined(MBEDTLS_PKCS11_C) #include "x509_crt.h" @@ -53,7 +52,13 @@ extern "C" { typedef struct { pkcs11h_certificate_t pkcs11h_cert; int len; -} pkcs11_context; +} mbedtls_pkcs11_context; + +/** + * Initialize a mbedtls_pkcs11_context. + * (Just making memory references valid.) + */ +void mbedtls_pkcs11_init( mbedtls_pkcs11_context *ctx ); /** * Fill in a mbed TLS certificate, based on the given PKCS11 helper certificate. @@ -63,11 +68,11 @@ typedef struct { * * \return 0 on success. */ -int pkcs11_x509_cert_init( x509_crt *cert, pkcs11h_certificate_t pkcs11h_cert ); +int mbedtls_pkcs11_x509_cert_bind( mbedtls_x509_crt *cert, pkcs11h_certificate_t pkcs11h_cert ); /** - * Initialise a pkcs11_context, storing the given certificate. Note that the - * pkcs11_context will take over control of the certificate, freeing it when + * Set up a mbedtls_pkcs11_context storing the given certificate. Note that the + * mbedtls_pkcs11_context will take over control of the certificate, freeing it when * done. * * \param priv_key Private key structure to fill. @@ -75,7 +80,7 @@ int pkcs11_x509_cert_init( x509_crt *cert, pkcs11h_certificate_t pkcs11h_cert ); * * \return 0 on success */ -int pkcs11_priv_key_init( pkcs11_context *priv_key, +int mbedtls_pkcs11_priv_key_bind( mbedtls_pkcs11_context *priv_key, pkcs11h_certificate_t pkcs11_cert ); /** @@ -84,26 +89,26 @@ int pkcs11_priv_key_init( pkcs11_context *priv_key, * * \param priv_key Private key structure to cleanup */ -void pkcs11_priv_key_free( pkcs11_context *priv_key ); +void mbedtls_pkcs11_priv_key_free( mbedtls_pkcs11_context *priv_key ); /** * \brief Do an RSA private key decrypt, then remove the message * padding * * \param ctx PKCS #11 context - * \param mode must be RSA_PRIVATE, for compatibility with rsa.c's signature + * \param mode must be MBEDTLS_RSA_PRIVATE, for compatibility with rsa.c's signature * \param input buffer holding the encrypted data * \param output buffer that will hold the plaintext * \param olen will contain the plaintext length * \param output_max_len maximum length of the output buffer * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code * * \note The output buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used) otherwise * an error is thrown. */ -int pkcs11_decrypt( pkcs11_context *ctx, +int mbedtls_pkcs11_decrypt( mbedtls_pkcs11_context *ctx, int mode, size_t *olen, const unsigned char *input, unsigned char *output, @@ -113,21 +118,21 @@ int pkcs11_decrypt( pkcs11_context *ctx, * \brief Do a private RSA to sign a message digest * * \param ctx PKCS #11 context - * \param mode must be RSA_PRIVATE, for compatibility with rsa.c's signature - * \param md_alg a POLARSSL_MD_* (use POLARSSL_MD_NONE for signing raw data) - * \param hashlen message digest length (for POLARSSL_MD_NONE only) + * \param mode must be MBEDTLS_RSA_PRIVATE, for compatibility with rsa.c's signature + * \param md_alg a MBEDTLS_MD_XXX (use MBEDTLS_MD_NONE for signing raw data) + * \param hashlen message digest length (for MBEDTLS_MD_NONE only) * \param hash buffer holding the message digest * \param sig buffer that will hold the ciphertext * * \return 0 if the signing operation was successful, - * or an POLARSSL_ERR_RSA_XXX error code + * or an MBEDTLS_ERR_RSA_XXX error code * * \note The "sig" buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). */ -int pkcs11_sign( pkcs11_context *ctx, +int mbedtls_pkcs11_sign( mbedtls_pkcs11_context *ctx, int mode, - md_type_t md_alg, + mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig ); @@ -135,34 +140,34 @@ int pkcs11_sign( pkcs11_context *ctx, /** * SSL/TLS wrappers for PKCS#11 functions */ -static inline int ssl_pkcs11_decrypt( void *ctx, int mode, size_t *olen, +static inline int mbedtls_ssl_pkcs11_decrypt( void *ctx, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len ) { - return pkcs11_decrypt( (pkcs11_context *) ctx, mode, olen, input, output, + return mbedtls_pkcs11_decrypt( (mbedtls_pkcs11_context *) ctx, mode, olen, input, output, output_max_len ); } -static inline int ssl_pkcs11_sign( void *ctx, +static inline int mbedtls_ssl_pkcs11_sign( void *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, - int mode, md_type_t md_alg, unsigned int hashlen, + int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig ) { ((void) f_rng); ((void) p_rng); - return pkcs11_sign( (pkcs11_context *) ctx, mode, md_alg, + return mbedtls_pkcs11_sign( (mbedtls_pkcs11_context *) ctx, mode, md_alg, hashlen, hash, sig ); } -static inline size_t ssl_pkcs11_key_len( void *ctx ) +static inline size_t mbedtls_ssl_pkcs11_key_len( void *ctx ) { - return ( (pkcs11_context *) ctx )->len; + return ( (mbedtls_pkcs11_context *) ctx )->len; } #ifdef __cplusplus } #endif -#endif /* POLARSSL_PKCS11_C */ +#endif /* MBEDTLS_PKCS11_C */ -#endif /* POLARSSL_PKCS11_H */ +#endif /* MBEDTLS_PKCS11_H */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pkcs12.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pkcs12.h new file mode 100644 index 0000000..9b2d904 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pkcs12.h @@ -0,0 +1,119 @@ +/** + * \file pkcs12.h + * + * \brief PKCS#12 Personal Information Exchange Syntax + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PKCS12_H +#define MBEDTLS_PKCS12_H + +#include "md.h" +#include "cipher.h" +#include "asn1.h" + +#include + +#define MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA -0x1F80 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE -0x1F00 /**< Feature not available, e.g. unsupported encryption scheme. */ +#define MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT -0x1E80 /**< PBE ASN.1 data not as expected. */ +#define MBEDTLS_ERR_PKCS12_PASSWORD_MISMATCH -0x1E00 /**< Given private key password does not allow for correct decryption. */ + +#define MBEDTLS_PKCS12_DERIVE_KEY 1 /**< encryption/decryption key */ +#define MBEDTLS_PKCS12_DERIVE_IV 2 /**< initialization vector */ +#define MBEDTLS_PKCS12_DERIVE_MAC_KEY 3 /**< integrity / MAC key */ + +#define MBEDTLS_PKCS12_PBE_DECRYPT 0 +#define MBEDTLS_PKCS12_PBE_ENCRYPT 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief PKCS12 Password Based function (encryption / decryption) + * for pbeWithSHAAnd128BitRC4 + * + * \param pbe_params an ASN1 buffer containing the pkcs-12PbeParams structure + * \param mode either MBEDTLS_PKCS12_PBE_ENCRYPT or MBEDTLS_PKCS12_PBE_DECRYPT + * \param pwd the password used (may be NULL if no password is used) + * \param pwdlen length of the password (may be 0) + * \param input the input data + * \param len data length + * \param output the output buffer + * + * \return 0 if successful, or a MBEDTLS_ERR_XXX code + */ +int mbedtls_pkcs12_pbe_sha1_rc4_128( mbedtls_asn1_buf *pbe_params, int mode, + const unsigned char *pwd, size_t pwdlen, + const unsigned char *input, size_t len, + unsigned char *output ); + +/** + * \brief PKCS12 Password Based function (encryption / decryption) + * for cipher-based and mbedtls_md-based PBE's + * + * \param pbe_params an ASN1 buffer containing the pkcs-12PbeParams structure + * \param mode either MBEDTLS_PKCS12_PBE_ENCRYPT or MBEDTLS_PKCS12_PBE_DECRYPT + * \param cipher_type the cipher used + * \param md_type the mbedtls_md used + * \param pwd the password used (may be NULL if no password is used) + * \param pwdlen length of the password (may be 0) + * \param input the input data + * \param len data length + * \param output the output buffer + * + * \return 0 if successful, or a MBEDTLS_ERR_XXX code + */ +int mbedtls_pkcs12_pbe( mbedtls_asn1_buf *pbe_params, int mode, + mbedtls_cipher_type_t cipher_type, mbedtls_md_type_t md_type, + const unsigned char *pwd, size_t pwdlen, + const unsigned char *input, size_t len, + unsigned char *output ); + +/** + * \brief The PKCS#12 derivation function uses a password and a salt + * to produce pseudo-random bits for a particular "purpose". + * + * Depending on the given id, this function can produce an + * encryption/decryption key, an nitialization vector or an + * integrity key. + * + * \param data buffer to store the derived data in + * \param datalen length to fill + * \param pwd password to use (may be NULL if no password is used) + * \param pwdlen length of the password (may be 0) + * \param salt salt buffer to use + * \param saltlen length of the salt + * \param mbedtls_md mbedtls_md type to use during the derivation + * \param id id that describes the purpose (can be MBEDTLS_PKCS12_DERIVE_KEY, + * MBEDTLS_PKCS12_DERIVE_IV or MBEDTLS_PKCS12_DERIVE_MAC_KEY) + * \param iterations number of iterations + * + * \return 0 if successful, or a MD, BIGNUM type error. + */ +int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen, + const unsigned char *pwd, size_t pwdlen, + const unsigned char *salt, size_t saltlen, + mbedtls_md_type_t mbedtls_md, int id, int iterations ); + +#ifdef __cplusplus +} +#endif + +#endif /* pkcs12.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pkcs5.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pkcs5.h new file mode 100644 index 0000000..ec5cb9e --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/pkcs5.h @@ -0,0 +1,94 @@ +/** + * \file pkcs5.h + * + * \brief PKCS#5 functions + * + * \author Mathias Olsson + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PKCS5_H +#define MBEDTLS_PKCS5_H + +#include "asn1.h" +#include "md.h" + +#include +#include + +#define MBEDTLS_ERR_PKCS5_BAD_INPUT_DATA -0x2f80 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_PKCS5_INVALID_FORMAT -0x2f00 /**< Unexpected ASN.1 data. */ +#define MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE -0x2e80 /**< Requested encryption or digest alg not available. */ +#define MBEDTLS_ERR_PKCS5_PASSWORD_MISMATCH -0x2e00 /**< Given private key password does not allow for correct decryption. */ + +#define MBEDTLS_PKCS5_DECRYPT 0 +#define MBEDTLS_PKCS5_ENCRYPT 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief PKCS#5 PBES2 function + * + * \param pbe_params the ASN.1 algorithm parameters + * \param mode either MBEDTLS_PKCS5_DECRYPT or MBEDTLS_PKCS5_ENCRYPT + * \param pwd password to use when generating key + * \param pwdlen length of password + * \param data data to process + * \param datalen length of data + * \param output output buffer + * + * \returns 0 on success, or a MBEDTLS_ERR_XXX code if verification fails. + */ +int mbedtls_pkcs5_pbes2( const mbedtls_asn1_buf *pbe_params, int mode, + const unsigned char *pwd, size_t pwdlen, + const unsigned char *data, size_t datalen, + unsigned char *output ); + +/** + * \brief PKCS#5 PBKDF2 using HMAC + * + * \param ctx Generic HMAC context + * \param password Password to use when generating key + * \param plen Length of password + * \param salt Salt to use when generating key + * \param slen Length of salt + * \param iteration_count Iteration count + * \param key_length Length of generated key in bytes + * \param output Generated key. Must be at least as big as key_length + * + * \returns 0 on success, or a MBEDTLS_ERR_XXX code if verification fails. + */ +int mbedtls_pkcs5_pbkdf2_hmac( mbedtls_md_context_t *ctx, const unsigned char *password, + size_t plen, const unsigned char *salt, size_t slen, + unsigned int iteration_count, + uint32_t key_length, unsigned char *output ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_pkcs5_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* pkcs5.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/platform.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/platform.h new file mode 100644 index 0000000..b1b019e --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/platform.h @@ -0,0 +1,295 @@ +/** + * \file platform.h + * + * \brief mbed TLS Platform abstraction layer + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PLATFORM_H +#define MBEDTLS_PLATFORM_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_HAVE_TIME) +#include "mbedtls/platform_time.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ + +#if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) +#include +#include +#include +#if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF) +#if defined(_WIN32) +#define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf /**< Default snprintf to use */ +#else +#define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf /**< Default snprintf to use */ +#endif +#endif +#if !defined(MBEDTLS_PLATFORM_STD_PRINTF) +#define MBEDTLS_PLATFORM_STD_PRINTF printf /**< Default printf to use */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_FPRINTF) +#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_CALLOC) +#define MBEDTLS_PLATFORM_STD_CALLOC calloc /**< Default allocator to use */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_FREE) +#define MBEDTLS_PLATFORM_STD_FREE free /**< Default free to use */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_EXIT) +#define MBEDTLS_PLATFORM_STD_EXIT exit /**< Default exit to use */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_TIME) +#define MBEDTLS_PLATFORM_STD_TIME time /**< Default time to use */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS) +#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS /**< Default exit value to use */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE) +#define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE /**< Default exit value to use */ +#endif +#if defined(MBEDTLS_FS_IO) +#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ) +#define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read +#endif +#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE) +#define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write +#endif +#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE) +#define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile" +#endif +#endif /* MBEDTLS_FS_IO */ +#else /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */ +#if defined(MBEDTLS_PLATFORM_STD_MEM_HDR) +#include MBEDTLS_PLATFORM_STD_MEM_HDR +#endif +#endif /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */ + + +/* \} name SECTION: Module settings */ + +/* + * The function pointers for calloc and free + */ +#if defined(MBEDTLS_PLATFORM_MEMORY) +#if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \ + defined(MBEDTLS_PLATFORM_CALLOC_MACRO) +#define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO +#define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO +#else +/* For size_t */ +#include +extern void * (*mbedtls_calloc)( size_t n, size_t size ); +extern void (*mbedtls_free)( void *ptr ); + +/** + * \brief Set your own memory implementation function pointers + * + * \param calloc_func the calloc function implementation + * \param free_func the free function implementation + * + * \return 0 if successful + */ +int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ), + void (*free_func)( void * ) ); +#endif /* MBEDTLS_PLATFORM_FREE_MACRO && MBEDTLS_PLATFORM_CALLOC_MACRO */ +#else /* !MBEDTLS_PLATFORM_MEMORY */ +#define mbedtls_free free +#define mbedtls_calloc calloc +#endif /* MBEDTLS_PLATFORM_MEMORY && !MBEDTLS_PLATFORM_{FREE,CALLOC}_MACRO */ + +/* + * The function pointers for fprintf + */ +#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT) +/* We need FILE * */ +#include +extern int (*mbedtls_fprintf)( FILE *stream, const char *format, ... ); + +/** + * \brief Set your own fprintf function pointer + * + * \param fprintf_func the fprintf function implementation + * + * \return 0 + */ +int mbedtls_platform_set_fprintf( int (*fprintf_func)( FILE *stream, const char *, + ... ) ); +#else +#if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO) +#define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO +#else +#define mbedtls_fprintf fprintf +#endif /* MBEDTLS_PLATFORM_FPRINTF_MACRO */ +#endif /* MBEDTLS_PLATFORM_FPRINTF_ALT */ + +/* + * The function pointers for printf + */ +#if defined(MBEDTLS_PLATFORM_PRINTF_ALT) +extern int (*mbedtls_printf)( const char *format, ... ); + +/** + * \brief Set your own printf function pointer + * + * \param printf_func the printf function implementation + * + * \return 0 + */ +int mbedtls_platform_set_printf( int (*printf_func)( const char *, ... ) ); +#else /* !MBEDTLS_PLATFORM_PRINTF_ALT */ +#if defined(MBEDTLS_PLATFORM_PRINTF_MACRO) +#define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO +#else +#define mbedtls_printf printf +#endif /* MBEDTLS_PLATFORM_PRINTF_MACRO */ +#endif /* MBEDTLS_PLATFORM_PRINTF_ALT */ + +/* + * The function pointers for snprintf + * + * The snprintf implementation should conform to C99: + * - it *must* always correctly zero-terminate the buffer + * (except when n == 0, then it must leave the buffer untouched) + * - however it is acceptable to return -1 instead of the required length when + * the destination buffer is too short. + */ +#if defined(_WIN32) +/* For Windows (inc. MSYS2), we provide our own fixed implementation */ +int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... ); +#endif + +#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) +extern int (*mbedtls_snprintf)( char * s, size_t n, const char * format, ... ); + +/** + * \brief Set your own snprintf function pointer + * + * \param snprintf_func the snprintf function implementation + * + * \return 0 + */ +int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n, + const char * format, ... ) ); +#else /* MBEDTLS_PLATFORM_SNPRINTF_ALT */ +#if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO) +#define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO +#else +#define mbedtls_snprintf snprintf +#endif /* MBEDTLS_PLATFORM_SNPRINTF_MACRO */ +#endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */ + +/* + * The function pointers for exit + */ +#if defined(MBEDTLS_PLATFORM_EXIT_ALT) +extern void (*mbedtls_exit)( int status ); + +/** + * \brief Set your own exit function pointer + * + * \param exit_func the exit function implementation + * + * \return 0 + */ +int mbedtls_platform_set_exit( void (*exit_func)( int status ) ); +#else +#if defined(MBEDTLS_PLATFORM_EXIT_MACRO) +#define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO +#else +#define mbedtls_exit exit +#endif /* MBEDTLS_PLATFORM_EXIT_MACRO */ +#endif /* MBEDTLS_PLATFORM_EXIT_ALT */ + +/* + * The default exit values + */ +#if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS) +#define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS +#else +#define MBEDTLS_EXIT_SUCCESS 0 +#endif +#if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE) +#define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE +#else +#define MBEDTLS_EXIT_FAILURE 1 +#endif + +/* + * The function pointers for reading from and writing a seed file to + * Non-Volatile storage (NV) in a platform-independent way + * + * Only enabled when the NV seed entropy source is enabled + */ +#if defined(MBEDTLS_ENTROPY_NV_SEED) +#if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO) +/* Internal standard platform definitions */ +int mbedtls_platform_std_nv_seed_read( unsigned char *buf, size_t buf_len ); +int mbedtls_platform_std_nv_seed_write( unsigned char *buf, size_t buf_len ); +#endif + +#if defined(MBEDTLS_PLATFORM_NV_SEED_ALT) +extern int (*mbedtls_nv_seed_read)( unsigned char *buf, size_t buf_len ); +extern int (*mbedtls_nv_seed_write)( unsigned char *buf, size_t buf_len ); + +/** + * \brief Set your own seed file writing/reading functions + * + * \param nv_seed_read_func the seed reading function implementation + * \param nv_seed_write_func the seed writing function implementation + * + * \return 0 + */ +int mbedtls_platform_set_nv_seed( + int (*nv_seed_read_func)( unsigned char *buf, size_t buf_len ), + int (*nv_seed_write_func)( unsigned char *buf, size_t buf_len ) + ); +#else +#if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \ + defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO) +#define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO +#define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO +#else +#define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read +#define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write +#endif +#endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */ +#endif /* MBEDTLS_ENTROPY_NV_SEED */ + +#ifdef __cplusplus +} +#endif + +#endif /* platform.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/platform_time.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/platform_time.h new file mode 100644 index 0000000..abb3431 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/platform_time.h @@ -0,0 +1,81 @@ +/** + * \file platform_time.h + * + * \brief mbed TLS Platform time abstraction + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PLATFORM_TIME_H +#define MBEDTLS_PLATFORM_TIME_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ + +/* + * The time_t datatype + */ +#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) +typedef MBEDTLS_PLATFORM_TIME_TYPE_MACRO mbedtls_time_t; +#else +/* For time_t */ +#include +typedef time_t mbedtls_time_t; +#endif /* MBEDTLS_PLATFORM_TIME_TYPE_MACRO */ + +/* + * The function pointers for time + */ +#if defined(MBEDTLS_PLATFORM_TIME_ALT) +extern mbedtls_time_t (*mbedtls_time)( mbedtls_time_t* time ); + +/** + * \brief Set your own time function pointer + * + * \param time_func the time function implementation + * + * \return 0 + */ +int mbedtls_platform_set_time( mbedtls_time_t (*time_func)( mbedtls_time_t* time ) ); +#else +#if defined(MBEDTLS_PLATFORM_TIME_MACRO) +#define mbedtls_time MBEDTLS_PLATFORM_TIME_MACRO +#else +#define mbedtls_time time +#endif /* MBEDTLS_PLATFORM_TIME_MACRO */ +#endif /* MBEDTLS_PLATFORM_TIME_ALT */ + +#ifdef __cplusplus +} +#endif + +#endif /* platform_time.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ripemd160.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ripemd160.h new file mode 100644 index 0000000..7083fc8 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ripemd160.h @@ -0,0 +1,138 @@ +/** + * \file ripemd160.h + * + * \brief RIPE MD-160 message digest + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_RIPEMD160_H +#define MBEDTLS_RIPEMD160_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#if !defined(MBEDTLS_RIPEMD160_ALT) +// Regular implementation +// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief RIPEMD-160 context structure + */ +typedef struct +{ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[5]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ +} +mbedtls_ripemd160_context; + +/** + * \brief Initialize RIPEMD-160 context + * + * \param ctx RIPEMD-160 context to be initialized + */ +void mbedtls_ripemd160_init( mbedtls_ripemd160_context *ctx ); + +/** + * \brief Clear RIPEMD-160 context + * + * \param ctx RIPEMD-160 context to be cleared + */ +void mbedtls_ripemd160_free( mbedtls_ripemd160_context *ctx ); + +/** + * \brief Clone (the state of) an RIPEMD-160 context + * + * \param dst The destination context + * \param src The context to be cloned + */ +void mbedtls_ripemd160_clone( mbedtls_ripemd160_context *dst, + const mbedtls_ripemd160_context *src ); + +/** + * \brief RIPEMD-160 context setup + * + * \param ctx context to be initialized + */ +void mbedtls_ripemd160_starts( mbedtls_ripemd160_context *ctx ); + +/** + * \brief RIPEMD-160 process buffer + * + * \param ctx RIPEMD-160 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void mbedtls_ripemd160_update( mbedtls_ripemd160_context *ctx, + const unsigned char *input, size_t ilen ); + +/** + * \brief RIPEMD-160 final digest + * + * \param ctx RIPEMD-160 context + * \param output RIPEMD-160 checksum result + */ +void mbedtls_ripemd160_finish( mbedtls_ripemd160_context *ctx, unsigned char output[20] ); + +/* Internal use */ +void mbedtls_ripemd160_process( mbedtls_ripemd160_context *ctx, const unsigned char data[64] ); + +#ifdef __cplusplus +} +#endif + +#else /* MBEDTLS_RIPEMD160_ALT */ +#include "ripemd160.h" +#endif /* MBEDTLS_RIPEMD160_ALT */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Output = RIPEMD-160( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output RIPEMD-160 checksum result + */ +void mbedtls_ripemd160( const unsigned char *input, size_t ilen, + unsigned char output[20] ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_ripemd160_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_ripemd160.h */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/rsa.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/rsa.h similarity index 62% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/rsa.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/rsa.h index e80bb4d..54653df 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/rsa.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/rsa.h @@ -3,72 +3,71 @@ * * \brief The RSA public-key cryptosystem * - * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_RSA_H -#define POLARSSL_RSA_H +#ifndef MBEDTLS_RSA_H +#define MBEDTLS_RSA_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif #include "bignum.h" #include "md.h" -#if defined(POLARSSL_THREADING_C) +#if defined(MBEDTLS_THREADING_C) #include "threading.h" #endif /* * RSA Error codes */ -#define POLARSSL_ERR_RSA_BAD_INPUT_DATA -0x4080 /**< Bad input parameters to function. */ -#define POLARSSL_ERR_RSA_INVALID_PADDING -0x4100 /**< Input data contains invalid padding and is rejected. */ -#define POLARSSL_ERR_RSA_KEY_GEN_FAILED -0x4180 /**< Something failed during generation of a key. */ -#define POLARSSL_ERR_RSA_KEY_CHECK_FAILED -0x4200 /**< Key failed to pass the library's validity check. */ -#define POLARSSL_ERR_RSA_PUBLIC_FAILED -0x4280 /**< The public key operation failed. */ -#define POLARSSL_ERR_RSA_PRIVATE_FAILED -0x4300 /**< The private key operation failed. */ -#define POLARSSL_ERR_RSA_VERIFY_FAILED -0x4380 /**< The PKCS#1 verification failed. */ -#define POLARSSL_ERR_RSA_OUTPUT_TOO_LARGE -0x4400 /**< The output buffer for decryption is not large enough. */ -#define POLARSSL_ERR_RSA_RNG_FAILED -0x4480 /**< The random generator failed to generate non-zeros. */ +#define MBEDTLS_ERR_RSA_BAD_INPUT_DATA -0x4080 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_RSA_INVALID_PADDING -0x4100 /**< Input data contains invalid padding and is rejected. */ +#define MBEDTLS_ERR_RSA_KEY_GEN_FAILED -0x4180 /**< Something failed during generation of a key. */ +#define MBEDTLS_ERR_RSA_KEY_CHECK_FAILED -0x4200 /**< Key failed to pass the library's validity check. */ +#define MBEDTLS_ERR_RSA_PUBLIC_FAILED -0x4280 /**< The public key operation failed. */ +#define MBEDTLS_ERR_RSA_PRIVATE_FAILED -0x4300 /**< The private key operation failed. */ +#define MBEDTLS_ERR_RSA_VERIFY_FAILED -0x4380 /**< The PKCS#1 verification failed. */ +#define MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE -0x4400 /**< The output buffer for decryption is not large enough. */ +#define MBEDTLS_ERR_RSA_RNG_FAILED -0x4480 /**< The random generator failed to generate non-zeros. */ /* * RSA constants */ -#define RSA_PUBLIC 0 -#define RSA_PRIVATE 1 +#define MBEDTLS_RSA_PUBLIC 0 +#define MBEDTLS_RSA_PRIVATE 1 -#define RSA_PKCS_V15 0 -#define RSA_PKCS_V21 1 +#define MBEDTLS_RSA_PKCS_V15 0 +#define MBEDTLS_RSA_PKCS_V21 1 -#define RSA_SIGN 1 -#define RSA_CRYPT 2 +#define MBEDTLS_RSA_SIGN 1 +#define MBEDTLS_RSA_CRYPT 2 -#define RSA_SALT_LEN_ANY -1 +#define MBEDTLS_RSA_SALT_LEN_ANY -1 /* * The above constants may be used even if the RSA module is compile out, * eg for alternative (PKCS#11) RSA implemenations in the PK layers. */ -#if defined(POLARSSL_RSA_C) +#if defined(MBEDTLS_RSA_C) #ifdef __cplusplus extern "C" { @@ -82,47 +81,47 @@ typedef struct int ver; /*!< always 0 */ size_t len; /*!< size(N) in chars */ - mpi N; /*!< public modulus */ - mpi E; /*!< public exponent */ + mbedtls_mpi N; /*!< public modulus */ + mbedtls_mpi E; /*!< public exponent */ - mpi D; /*!< private exponent */ - mpi P; /*!< 1st prime factor */ - mpi Q; /*!< 2nd prime factor */ - mpi DP; /*!< D % (P - 1) */ - mpi DQ; /*!< D % (Q - 1) */ - mpi QP; /*!< 1 / (Q % P) */ + mbedtls_mpi D; /*!< private exponent */ + mbedtls_mpi P; /*!< 1st prime factor */ + mbedtls_mpi Q; /*!< 2nd prime factor */ + mbedtls_mpi DP; /*!< D % (P - 1) */ + mbedtls_mpi DQ; /*!< D % (Q - 1) */ + mbedtls_mpi QP; /*!< 1 / (Q % P) */ - mpi RN; /*!< cached R^2 mod N */ - mpi RP; /*!< cached R^2 mod P */ - mpi RQ; /*!< cached R^2 mod Q */ + mbedtls_mpi RN; /*!< cached R^2 mod N */ + mbedtls_mpi RP; /*!< cached R^2 mod P */ + mbedtls_mpi RQ; /*!< cached R^2 mod Q */ - mpi Vi; /*!< cached blinding value */ - mpi Vf; /*!< cached un-blinding value */ + mbedtls_mpi Vi; /*!< cached blinding value */ + mbedtls_mpi Vf; /*!< cached un-blinding value */ - int padding; /*!< RSA_PKCS_V15 for 1.5 padding and - RSA_PKCS_v21 for OAEP/PSS */ - int hash_id; /*!< Hash identifier of md_type_t as - specified in the md.h header file + int padding; /*!< MBEDTLS_RSA_PKCS_V15 for 1.5 padding and + MBEDTLS_RSA_PKCS_v21 for OAEP/PSS */ + int hash_id; /*!< Hash identifier of mbedtls_md_type_t as + specified in the mbedtls_md.h header file for the EME-OAEP and EMSA-PSS encoding */ -#if defined(POLARSSL_THREADING_C) - threading_mutex_t mutex; /*!< Thread-safety mutex */ +#if defined(MBEDTLS_THREADING_C) + mbedtls_threading_mutex_t mutex; /*!< Thread-safety mutex */ #endif } -rsa_context; +mbedtls_rsa_context; /** * \brief Initialize an RSA context * - * Note: Set padding to RSA_PKCS_V21 for the RSAES-OAEP + * Note: Set padding to MBEDTLS_RSA_PKCS_V21 for the RSAES-OAEP * encryption scheme and the RSASSA-PSS signature scheme. * * \param ctx RSA context to be initialized - * \param padding RSA_PKCS_V15 or RSA_PKCS_V21 - * \param hash_id RSA_PKCS_V21 hash identifier + * \param padding MBEDTLS_RSA_PKCS_V15 or MBEDTLS_RSA_PKCS_V21 + * \param hash_id MBEDTLS_RSA_PKCS_V21 hash identifier * * \note The hash_id parameter is actually ignored - * when using RSA_PKCS_V15 padding. + * when using MBEDTLS_RSA_PKCS_V15 padding. * * \note Choice of padding mode is strictly enforced for private key * operations, since there might be security concerns in @@ -133,21 +132,21 @@ rsa_context; * \note The chosen hash is always used for OEAP encryption. * For PSS signatures, it's always used for making signatures, * but can be overriden (and always is, if set to - * POLARSSL_MD_NONE) for verifying them. + * MBEDTLS_MD_NONE) for verifying them. */ -void rsa_init( rsa_context *ctx, +void mbedtls_rsa_init( mbedtls_rsa_context *ctx, int padding, int hash_id); /** * \brief Set padding for an already initialized RSA context - * See \c rsa_init() for details. + * See \c mbedtls_rsa_init() for details. * * \param ctx RSA context to be set - * \param padding RSA_PKCS_V15 or RSA_PKCS_V21 - * \param hash_id RSA_PKCS_V21 hash identifier + * \param padding MBEDTLS_RSA_PKCS_V15 or MBEDTLS_RSA_PKCS_V21 + * \param hash_id MBEDTLS_RSA_PKCS_V21 hash identifier */ -void rsa_set_padding( rsa_context *ctx, int padding, int hash_id); +void mbedtls_rsa_set_padding( mbedtls_rsa_context *ctx, int padding, int hash_id); /** * \brief Generate an RSA keypair @@ -158,12 +157,12 @@ void rsa_set_padding( rsa_context *ctx, int padding, int hash_id); * \param nbits size of the public key in bits * \param exponent public exponent (e.g., 65537) * - * \note rsa_init() must be called beforehand to setup + * \note mbedtls_rsa_init() must be called beforehand to setup * the RSA context. * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code */ -int rsa_gen_key( rsa_context *ctx, +int mbedtls_rsa_gen_key( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, unsigned int nbits, int exponent ); @@ -173,18 +172,18 @@ int rsa_gen_key( rsa_context *ctx, * * \param ctx RSA context to be checked * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code */ -int rsa_check_pubkey( const rsa_context *ctx ); +int mbedtls_rsa_check_pubkey( const mbedtls_rsa_context *ctx ); /** * \brief Check a private RSA key * * \param ctx RSA context to be checked * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code */ -int rsa_check_privkey( const rsa_context *ctx ); +int mbedtls_rsa_check_privkey( const mbedtls_rsa_context *ctx ); /** * \brief Check a public-private RSA key pair. @@ -193,34 +192,32 @@ int rsa_check_privkey( const rsa_context *ctx ); * \param pub RSA context holding the public key * \param prv RSA context holding the private key * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code */ -int rsa_check_pub_priv( const rsa_context *pub, const rsa_context *prv ); +int mbedtls_rsa_check_pub_priv( const mbedtls_rsa_context *pub, const mbedtls_rsa_context *prv ); /** * \brief Do an RSA public key operation - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx RSA context * \param input input buffer * \param output output buffer * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code * * \note This function does NOT take care of message - * padding. Also, be sure to set input[0] = 0 or assure that + * padding. Also, be sure to set input[0] = 0 or ensure that * input is smaller than N. * * \note The input and output buffers must be large * enough (eg. 128 bytes if RSA-1024 is used). */ -int rsa_public( rsa_context *ctx, +int mbedtls_rsa_public( mbedtls_rsa_context *ctx, const unsigned char *input, unsigned char *output ); /** * \brief Do an RSA private key operation - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx RSA context * \param f_rng RNG function (Needed for blinding) @@ -228,12 +225,12 @@ int rsa_public( rsa_context *ctx, * \param input input buffer * \param output output buffer * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code * * \note The input and output buffers must be large * enough (eg. 128 bytes if RSA-1024 is used). */ -int rsa_private( rsa_context *ctx, +int mbedtls_rsa_private( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, const unsigned char *input, @@ -243,23 +240,22 @@ int rsa_private( rsa_context *ctx, * \brief Generic wrapper to perform a PKCS#1 encryption using the * mode from the context. Add the message padding, then do an * RSA operation. - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx RSA context * \param f_rng RNG function (Needed for padding and PKCS#1 v2.1 encoding - * and RSA_PRIVATE) + * and MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE * \param ilen contains the plaintext length * \param input buffer holding the data to be encrypted * \param output buffer that will hold the ciphertext * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code * * \note The output buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). */ -int rsa_pkcs1_encrypt( rsa_context *ctx, +int mbedtls_rsa_pkcs1_encrypt( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t ilen, @@ -268,22 +264,21 @@ int rsa_pkcs1_encrypt( rsa_context *ctx, /** * \brief Perform a PKCS#1 v1.5 encryption (RSAES-PKCS1-v1_5-ENCRYPT) - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx RSA context - * \param f_rng RNG function (Needed for padding and RSA_PRIVATE) + * \param f_rng RNG function (Needed for padding and MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE * \param ilen contains the plaintext length * \param input buffer holding the data to be encrypted * \param output buffer that will hold the ciphertext * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code * * \note The output buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). */ -int rsa_rsaes_pkcs1_v15_encrypt( rsa_context *ctx, +int mbedtls_rsa_rsaes_pkcs1_v15_encrypt( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t ilen, @@ -292,25 +287,24 @@ int rsa_rsaes_pkcs1_v15_encrypt( rsa_context *ctx, /** * \brief Perform a PKCS#1 v2.1 OAEP encryption (RSAES-OAEP-ENCRYPT) - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx RSA context * \param f_rng RNG function (Needed for padding and PKCS#1 v2.1 encoding - * and RSA_PRIVATE) + * and MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE * \param label buffer holding the custom label to use * \param label_len contains the label length * \param ilen contains the plaintext length * \param input buffer holding the data to be encrypted * \param output buffer that will hold the ciphertext * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code * * \note The output buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). */ -int rsa_rsaes_oaep_encrypt( rsa_context *ctx, +int mbedtls_rsa_rsaes_oaep_encrypt( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, @@ -323,24 +317,23 @@ int rsa_rsaes_oaep_encrypt( rsa_context *ctx, * \brief Generic wrapper to perform a PKCS#1 decryption using the * mode from the context. Do an RSA operation, then remove * the message padding - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx RSA context - * \param f_rng RNG function (Only needed for RSA_PRIVATE) + * \param f_rng RNG function (Only needed for MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE * \param olen will contain the plaintext length * \param input buffer holding the encrypted data * \param output buffer that will hold the plaintext * \param output_max_len maximum length of the output buffer * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code * * \note The output buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used) otherwise * an error is thrown. */ -int rsa_pkcs1_decrypt( rsa_context *ctx, +int mbedtls_rsa_pkcs1_decrypt( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t *olen, @@ -350,24 +343,23 @@ int rsa_pkcs1_decrypt( rsa_context *ctx, /** * \brief Perform a PKCS#1 v1.5 decryption (RSAES-PKCS1-v1_5-DECRYPT) - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx RSA context - * \param f_rng RNG function (Only needed for RSA_PRIVATE) + * \param f_rng RNG function (Only needed for MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE * \param olen will contain the plaintext length * \param input buffer holding the encrypted data * \param output buffer that will hold the plaintext * \param output_max_len maximum length of the output buffer * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code * * \note The output buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used) otherwise * an error is thrown. */ -int rsa_rsaes_pkcs1_v15_decrypt( rsa_context *ctx, +int mbedtls_rsa_rsaes_pkcs1_v15_decrypt( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t *olen, @@ -377,12 +369,11 @@ int rsa_rsaes_pkcs1_v15_decrypt( rsa_context *ctx, /** * \brief Perform a PKCS#1 v2.1 OAEP decryption (RSAES-OAEP-DECRYPT) - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx RSA context - * \param f_rng RNG function (Only needed for RSA_PRIVATE) + * \param f_rng RNG function (Only needed for MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE * \param label buffer holding the custom label to use * \param label_len contains the label length * \param olen will contain the plaintext length @@ -390,13 +381,13 @@ int rsa_rsaes_pkcs1_v15_decrypt( rsa_context *ctx, * \param output buffer that will hold the plaintext * \param output_max_len maximum length of the output buffer * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code + * \return 0 if successful, or an MBEDTLS_ERR_RSA_XXX error code * * \note The output buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used) otherwise * an error is thrown. */ -int rsa_rsaes_oaep_decrypt( rsa_context *ctx, +int mbedtls_rsa_rsaes_oaep_decrypt( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, @@ -410,32 +401,31 @@ int rsa_rsaes_oaep_decrypt( rsa_context *ctx, * \brief Generic wrapper to perform a PKCS#1 signature using the * mode from the context. Do a private RSA operation to sign * a message digest - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx RSA context * \param f_rng RNG function (Needed for PKCS#1 v2.1 encoding and for - * RSA_PRIVATE) + * MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE - * \param md_alg a POLARSSL_MD_* (use POLARSSL_MD_NONE for signing raw data) - * \param hashlen message digest length (for POLARSSL_MD_NONE only) + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE + * \param md_alg a MBEDTLS_MD_XXX (use MBEDTLS_MD_NONE for signing raw data) + * \param hashlen message digest length (for MBEDTLS_MD_NONE only) * \param hash buffer holding the message digest * \param sig buffer that will hold the ciphertext * * \return 0 if the signing operation was successful, - * or an POLARSSL_ERR_RSA_XXX error code + * or an MBEDTLS_ERR_RSA_XXX error code * * \note The "sig" buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). * * \note In case of PKCS#1 v2.1 encoding, see comments on - * \note \c rsa_rsassa_pss_sign() for details on md_alg and hash_id. + * \note \c mbedtls_rsa_rsassa_pss_sign() for details on md_alg and hash_id. */ -int rsa_pkcs1_sign( rsa_context *ctx, +int mbedtls_rsa_pkcs1_sign( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, - md_type_t md_alg, + mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig ); @@ -444,45 +434,44 @@ int rsa_pkcs1_sign( rsa_context *ctx, * \brief Perform a PKCS#1 v1.5 signature (RSASSA-PKCS1-v1_5-SIGN) * * \param ctx RSA context - * \param f_rng RNG function (Only needed for RSA_PRIVATE) + * \param f_rng RNG function (Only needed for MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE - * \param md_alg a POLARSSL_MD_* (use POLARSSL_MD_NONE for signing raw data) - * \param hashlen message digest length (for POLARSSL_MD_NONE only) + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE + * \param md_alg a MBEDTLS_MD_XXX (use MBEDTLS_MD_NONE for signing raw data) + * \param hashlen message digest length (for MBEDTLS_MD_NONE only) * \param hash buffer holding the message digest * \param sig buffer that will hold the ciphertext * * \return 0 if the signing operation was successful, - * or an POLARSSL_ERR_RSA_XXX error code + * or an MBEDTLS_ERR_RSA_XXX error code * * \note The "sig" buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). */ -int rsa_rsassa_pkcs1_v15_sign( rsa_context *ctx, +int mbedtls_rsa_rsassa_pkcs1_v15_sign( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, - md_type_t md_alg, + mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig ); /** * \brief Perform a PKCS#1 v2.1 PSS signature (RSASSA-PSS-SIGN) - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx RSA context * \param f_rng RNG function (Needed for PKCS#1 v2.1 encoding and for - * RSA_PRIVATE) + * MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE - * \param md_alg a POLARSSL_MD_* (use POLARSSL_MD_NONE for signing raw data) - * \param hashlen message digest length (for POLARSSL_MD_NONE only) + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE + * \param md_alg a MBEDTLS_MD_XXX (use MBEDTLS_MD_NONE for signing raw data) + * \param hashlen message digest length (for MBEDTLS_MD_NONE only) * \param hash buffer holding the message digest * \param sig buffer that will hold the ciphertext * * \return 0 if the signing operation was successful, - * or an POLARSSL_ERR_RSA_XXX error code + * or an MBEDTLS_ERR_RSA_XXX error code * * \note The "sig" buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). @@ -492,11 +481,11 @@ int rsa_rsassa_pkcs1_v15_sign( rsa_context *ctx, * that is encoded. According to RFC 3447 it is advised to * keep both hashes the same. */ -int rsa_rsassa_pss_sign( rsa_context *ctx, +int mbedtls_rsa_rsassa_pss_sign( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, - md_type_t md_alg, + mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig ); @@ -505,59 +494,57 @@ int rsa_rsassa_pss_sign( rsa_context *ctx, * \brief Generic wrapper to perform a PKCS#1 verification using the * mode from the context. Do a public RSA operation and check * the message digest - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx points to an RSA public key - * \param f_rng RNG function (Only needed for RSA_PRIVATE) + * \param f_rng RNG function (Only needed for MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE - * \param md_alg a POLARSSL_MD_* (use POLARSSL_MD_NONE for signing raw data) - * \param hashlen message digest length (for POLARSSL_MD_NONE only) + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE + * \param md_alg a MBEDTLS_MD_XXX (use MBEDTLS_MD_NONE for signing raw data) + * \param hashlen message digest length (for MBEDTLS_MD_NONE only) * \param hash buffer holding the message digest * \param sig buffer holding the ciphertext * * \return 0 if the verify operation was successful, - * or an POLARSSL_ERR_RSA_XXX error code + * or an MBEDTLS_ERR_RSA_XXX error code * * \note The "sig" buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). * * \note In case of PKCS#1 v2.1 encoding, see comments on - * \c rsa_rsassa_pss_verify() about md_alg and hash_id. + * \c mbedtls_rsa_rsassa_pss_verify() about md_alg and hash_id. */ -int rsa_pkcs1_verify( rsa_context *ctx, +int mbedtls_rsa_pkcs1_verify( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, - md_type_t md_alg, + mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig ); /** * \brief Perform a PKCS#1 v1.5 verification (RSASSA-PKCS1-v1_5-VERIFY) - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx points to an RSA public key - * \param f_rng RNG function (Only needed for RSA_PRIVATE) + * \param f_rng RNG function (Only needed for MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE - * \param md_alg a POLARSSL_MD_* (use POLARSSL_MD_NONE for signing raw data) - * \param hashlen message digest length (for POLARSSL_MD_NONE only) + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE + * \param md_alg a MBEDTLS_MD_XXX (use MBEDTLS_MD_NONE for signing raw data) + * \param hashlen message digest length (for MBEDTLS_MD_NONE only) * \param hash buffer holding the message digest * \param sig buffer holding the ciphertext * * \return 0 if the verify operation was successful, - * or an POLARSSL_ERR_RSA_XXX error code + * or an MBEDTLS_ERR_RSA_XXX error code * * \note The "sig" buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). */ -int rsa_rsassa_pkcs1_v15_verify( rsa_context *ctx, +int mbedtls_rsa_rsassa_pkcs1_v15_verify( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, - md_type_t md_alg, + mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig ); @@ -565,19 +552,18 @@ int rsa_rsassa_pkcs1_v15_verify( rsa_context *ctx, /** * \brief Perform a PKCS#1 v2.1 PSS verification (RSASSA-PSS-VERIFY) * (This is the "simple" version.) - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx points to an RSA public key - * \param f_rng RNG function (Only needed for RSA_PRIVATE) + * \param f_rng RNG function (Only needed for MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE - * \param md_alg a POLARSSL_MD_* (use POLARSSL_MD_NONE for signing raw data) - * \param hashlen message digest length (for POLARSSL_MD_NONE only) + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE + * \param md_alg a MBEDTLS_MD_XXX (use MBEDTLS_MD_NONE for signing raw data) + * \param hashlen message digest length (for MBEDTLS_MD_NONE only) * \param hash buffer holding the message digest * \param sig buffer holding the ciphertext * * \return 0 if the verify operation was successful, - * or an POLARSSL_ERR_RSA_XXX error code + * or an MBEDTLS_ERR_RSA_XXX error code * * \note The "sig" buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). @@ -588,11 +574,11 @@ int rsa_rsassa_pkcs1_v15_verify( rsa_context *ctx, * keep both hashes the same. If hash_id in the RSA context is * unset, the md_alg from the function call is used. */ -int rsa_rsassa_pss_verify( rsa_context *ctx, +int mbedtls_rsa_rsassa_pss_verify( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, - md_type_t md_alg, + mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig ); @@ -600,36 +586,35 @@ int rsa_rsassa_pss_verify( rsa_context *ctx, /** * \brief Perform a PKCS#1 v2.1 PSS verification (RSASSA-PSS-VERIFY) * (This is the version with "full" options.) - * (Thread-safe if POLARSSL_THREADING_C is enabled) * * \param ctx points to an RSA public key - * \param f_rng RNG function (Only needed for RSA_PRIVATE) + * \param f_rng RNG function (Only needed for MBEDTLS_RSA_PRIVATE) * \param p_rng RNG parameter - * \param mode RSA_PUBLIC or RSA_PRIVATE - * \param md_alg a POLARSSL_MD_* (use POLARSSL_MD_NONE for signing raw data) - * \param hashlen message digest length (for POLARSSL_MD_NONE only) + * \param mode MBEDTLS_RSA_PUBLIC or MBEDTLS_RSA_PRIVATE + * \param md_alg a MBEDTLS_MD_XXX (use MBEDTLS_MD_NONE for signing raw data) + * \param hashlen message digest length (for MBEDTLS_MD_NONE only) * \param hash buffer holding the message digest * \param mgf1_hash_id message digest used for mask generation * \param expected_salt_len Length of the salt used in padding, use - * RSA_SALT_LEN_ANY to accept any salt length + * MBEDTLS_RSA_SALT_LEN_ANY to accept any salt length * \param sig buffer holding the ciphertext * * \return 0 if the verify operation was successful, - * or an POLARSSL_ERR_RSA_XXX error code + * or an MBEDTLS_ERR_RSA_XXX error code * * \note The "sig" buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). * * \note The hash_id in the RSA context is ignored. */ -int rsa_rsassa_pss_verify_ext( rsa_context *ctx, +int mbedtls_rsa_rsassa_pss_verify_ext( mbedtls_rsa_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, - md_type_t md_alg, + mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, - md_type_t mgf1_hash_id, + mbedtls_md_type_t mgf1_hash_id, int expected_salt_len, const unsigned char *sig ); @@ -639,29 +624,29 @@ int rsa_rsassa_pss_verify_ext( rsa_context *ctx, * \param dst Destination context * \param src Source context * - * \return O on success, - * POLARSSL_ERR_MPI_MALLOC_FAILED on memory allocation failure + * \return 0 on success, + * MBEDTLS_ERR_MPI_ALLOC_FAILED on memory allocation failure */ -int rsa_copy( rsa_context *dst, const rsa_context *src ); +int mbedtls_rsa_copy( mbedtls_rsa_context *dst, const mbedtls_rsa_context *src ); /** * \brief Free the components of an RSA key * * \param ctx RSA Context to free */ -void rsa_free( rsa_context *ctx ); +void mbedtls_rsa_free( mbedtls_rsa_context *ctx ); /** * \brief Checkup routine * * \return 0 if successful, or 1 if the test failed */ -int rsa_self_test( int verbose ); +int mbedtls_rsa_self_test( int verbose ); #ifdef __cplusplus } #endif -#endif /* POLARSSL_RSA_C */ +#endif /* MBEDTLS_RSA_C */ #endif /* rsa.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha1.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha1.h new file mode 100644 index 0000000..7a67c6c --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha1.h @@ -0,0 +1,136 @@ +/** + * \file sha1.h + * + * \brief SHA-1 cryptographic hash function + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SHA1_H +#define MBEDTLS_SHA1_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#if !defined(MBEDTLS_SHA1_ALT) +// Regular implementation +// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief SHA-1 context structure + */ +typedef struct +{ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[5]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ +} +mbedtls_sha1_context; + +/** + * \brief Initialize SHA-1 context + * + * \param ctx SHA-1 context to be initialized + */ +void mbedtls_sha1_init( mbedtls_sha1_context *ctx ); + +/** + * \brief Clear SHA-1 context + * + * \param ctx SHA-1 context to be cleared + */ +void mbedtls_sha1_free( mbedtls_sha1_context *ctx ); + +/** + * \brief Clone (the state of) a SHA-1 context + * + * \param dst The destination context + * \param src The context to be cloned + */ +void mbedtls_sha1_clone( mbedtls_sha1_context *dst, + const mbedtls_sha1_context *src ); + +/** + * \brief SHA-1 context setup + * + * \param ctx context to be initialized + */ +void mbedtls_sha1_starts( mbedtls_sha1_context *ctx ); + +/** + * \brief SHA-1 process buffer + * + * \param ctx SHA-1 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void mbedtls_sha1_update( mbedtls_sha1_context *ctx, const unsigned char *input, size_t ilen ); + +/** + * \brief SHA-1 final digest + * + * \param ctx SHA-1 context + * \param output SHA-1 checksum result + */ +void mbedtls_sha1_finish( mbedtls_sha1_context *ctx, unsigned char output[20] ); + +/* Internal use */ +void mbedtls_sha1_process( mbedtls_sha1_context *ctx, const unsigned char data[64] ); + +#ifdef __cplusplus +} +#endif + +#else /* MBEDTLS_SHA1_ALT */ +#include "sha1_alt.h" +#endif /* MBEDTLS_SHA1_ALT */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Output = SHA-1( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output SHA-1 checksum result + */ +void mbedtls_sha1( const unsigned char *input, size_t ilen, unsigned char output[20] ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_sha1_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_sha1.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha256.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha256.h new file mode 100644 index 0000000..f8041ad --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha256.h @@ -0,0 +1,141 @@ +/** + * \file sha256.h + * + * \brief SHA-224 and SHA-256 cryptographic hash function + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SHA256_H +#define MBEDTLS_SHA256_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#if !defined(MBEDTLS_SHA256_ALT) +// Regular implementation +// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief SHA-256 context structure + */ +typedef struct +{ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[8]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ + int is224; /*!< 0 => SHA-256, else SHA-224 */ +} +mbedtls_sha256_context; + +/** + * \brief Initialize SHA-256 context + * + * \param ctx SHA-256 context to be initialized + */ +void mbedtls_sha256_init( mbedtls_sha256_context *ctx ); + +/** + * \brief Clear SHA-256 context + * + * \param ctx SHA-256 context to be cleared + */ +void mbedtls_sha256_free( mbedtls_sha256_context *ctx ); + +/** + * \brief Clone (the state of) a SHA-256 context + * + * \param dst The destination context + * \param src The context to be cloned + */ +void mbedtls_sha256_clone( mbedtls_sha256_context *dst, + const mbedtls_sha256_context *src ); + +/** + * \brief SHA-256 context setup + * + * \param ctx context to be initialized + * \param is224 0 = use SHA256, 1 = use SHA224 + */ +void mbedtls_sha256_starts( mbedtls_sha256_context *ctx, int is224 ); + +/** + * \brief SHA-256 process buffer + * + * \param ctx SHA-256 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void mbedtls_sha256_update( mbedtls_sha256_context *ctx, const unsigned char *input, + size_t ilen ); + +/** + * \brief SHA-256 final digest + * + * \param ctx SHA-256 context + * \param output SHA-224/256 checksum result + */ +void mbedtls_sha256_finish( mbedtls_sha256_context *ctx, unsigned char output[32] ); + +/* Internal use */ +void mbedtls_sha256_process( mbedtls_sha256_context *ctx, const unsigned char data[64] ); + +#ifdef __cplusplus +} +#endif + +#else /* MBEDTLS_SHA256_ALT */ +#include "sha256_alt.h" +#endif /* MBEDTLS_SHA256_ALT */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Output = SHA-256( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output SHA-224/256 checksum result + * \param is224 0 = use SHA256, 1 = use SHA224 + */ +void mbedtls_sha256( const unsigned char *input, size_t ilen, + unsigned char output[32], int is224 ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_sha256_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_sha256.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha512.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha512.h new file mode 100644 index 0000000..627694f --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/sha512.h @@ -0,0 +1,141 @@ +/** + * \file sha512.h + * + * \brief SHA-384 and SHA-512 cryptographic hash function + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SHA512_H +#define MBEDTLS_SHA512_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#if !defined(MBEDTLS_SHA512_ALT) +// Regular implementation +// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief SHA-512 context structure + */ +typedef struct +{ + uint64_t total[2]; /*!< number of bytes processed */ + uint64_t state[8]; /*!< intermediate digest state */ + unsigned char buffer[128]; /*!< data block being processed */ + int is384; /*!< 0 => SHA-512, else SHA-384 */ +} +mbedtls_sha512_context; + +/** + * \brief Initialize SHA-512 context + * + * \param ctx SHA-512 context to be initialized + */ +void mbedtls_sha512_init( mbedtls_sha512_context *ctx ); + +/** + * \brief Clear SHA-512 context + * + * \param ctx SHA-512 context to be cleared + */ +void mbedtls_sha512_free( mbedtls_sha512_context *ctx ); + +/** + * \brief Clone (the state of) a SHA-512 context + * + * \param dst The destination context + * \param src The context to be cloned + */ +void mbedtls_sha512_clone( mbedtls_sha512_context *dst, + const mbedtls_sha512_context *src ); + +/** + * \brief SHA-512 context setup + * + * \param ctx context to be initialized + * \param is384 0 = use SHA512, 1 = use SHA384 + */ +void mbedtls_sha512_starts( mbedtls_sha512_context *ctx, int is384 ); + +/** + * \brief SHA-512 process buffer + * + * \param ctx SHA-512 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void mbedtls_sha512_update( mbedtls_sha512_context *ctx, const unsigned char *input, + size_t ilen ); + +/** + * \brief SHA-512 final digest + * + * \param ctx SHA-512 context + * \param output SHA-384/512 checksum result + */ +void mbedtls_sha512_finish( mbedtls_sha512_context *ctx, unsigned char output[64] ); + +#ifdef __cplusplus +} +#endif + +#else /* MBEDTLS_SHA512_ALT */ +#include "sha512_alt.h" +#endif /* MBEDTLS_SHA512_ALT */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Output = SHA-512( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output SHA-384/512 checksum result + * \param is384 0 = use SHA512, 1 = use SHA384 + */ +void mbedtls_sha512( const unsigned char *input, size_t ilen, + unsigned char output[64], int is384 ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_sha512_self_test( int verbose ); + +/* Internal use */ +void mbedtls_sha512_process( mbedtls_sha512_context *ctx, const unsigned char data[128] ); + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_sha512.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl.h new file mode 100644 index 0000000..495e02c --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl.h @@ -0,0 +1,2559 @@ +/** + * \file ssl.h + * + * \brief SSL/TLS functions. + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SSL_H +#define MBEDTLS_SSL_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "bignum.h" +#include "ecp.h" + +#include "ssl_ciphersuites.h" + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +#include "x509_crt.h" +#include "x509_crl.h" +#endif + +#if defined(MBEDTLS_DHM_C) +#include "dhm.h" +#endif + +#if defined(MBEDTLS_ECDH_C) +#include "ecdh.h" +#endif + +#if defined(MBEDTLS_ZLIB_SUPPORT) +#include "zlib.h" +#endif + +#if defined(MBEDTLS_HAVE_TIME) +#include "mbedtls/platform_time.h" +#endif + +/* + * SSL Error codes + */ +#define MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE -0x7080 /**< The requested feature is not available. */ +#define MBEDTLS_ERR_SSL_BAD_INPUT_DATA -0x7100 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_SSL_INVALID_MAC -0x7180 /**< Verification of the message MAC failed. */ +#define MBEDTLS_ERR_SSL_INVALID_RECORD -0x7200 /**< An invalid SSL record was received. */ +#define MBEDTLS_ERR_SSL_CONN_EOF -0x7280 /**< The connection indicated an EOF. */ +#define MBEDTLS_ERR_SSL_UNKNOWN_CIPHER -0x7300 /**< An unknown cipher was received. */ +#define MBEDTLS_ERR_SSL_NO_CIPHER_CHOSEN -0x7380 /**< The server has no ciphersuites in common with the client. */ +#define MBEDTLS_ERR_SSL_NO_RNG -0x7400 /**< No RNG was provided to the SSL module. */ +#define MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE -0x7480 /**< No client certification received from the client, but required by the authentication mode. */ +#define MBEDTLS_ERR_SSL_CERTIFICATE_TOO_LARGE -0x7500 /**< Our own certificate(s) is/are too large to send in an SSL message. */ +#define MBEDTLS_ERR_SSL_CERTIFICATE_REQUIRED -0x7580 /**< The own certificate is not set, but needed by the server. */ +#define MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED -0x7600 /**< The own private key or pre-shared key is not set, but needed. */ +#define MBEDTLS_ERR_SSL_CA_CHAIN_REQUIRED -0x7680 /**< No CA Chain is set, but required to operate. */ +#define MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE -0x7700 /**< An unexpected message was received from our peer. */ +#define MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE -0x7780 /**< A fatal alert message was received from our peer. */ +#define MBEDTLS_ERR_SSL_PEER_VERIFY_FAILED -0x7800 /**< Verification of our peer failed. */ +#define MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY -0x7880 /**< The peer notified us that the connection is going to be closed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO -0x7900 /**< Processing of the ClientHello handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO -0x7980 /**< Processing of the ServerHello handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE -0x7A00 /**< Processing of the Certificate handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_REQUEST -0x7A80 /**< Processing of the CertificateRequest handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE -0x7B00 /**< Processing of the ServerKeyExchange handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO_DONE -0x7B80 /**< Processing of the ServerHelloDone handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE -0x7C00 /**< Processing of the ClientKeyExchange handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_RP -0x7C80 /**< Processing of the ClientKeyExchange handshake message failed in DHM / ECDH Read Public. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE_CS -0x7D00 /**< Processing of the ClientKeyExchange handshake message failed in DHM / ECDH Calculate Secret. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE_VERIFY -0x7D80 /**< Processing of the CertificateVerify handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC -0x7E00 /**< Processing of the ChangeCipherSpec handshake message failed. */ +#define MBEDTLS_ERR_SSL_BAD_HS_FINISHED -0x7E80 /**< Processing of the Finished handshake message failed. */ +#define MBEDTLS_ERR_SSL_ALLOC_FAILED -0x7F00 /**< Memory allocation failed */ +#define MBEDTLS_ERR_SSL_HW_ACCEL_FAILED -0x7F80 /**< Hardware acceleration function returned with error */ +#define MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH -0x6F80 /**< Hardware acceleration function skipped / left alone data */ +#define MBEDTLS_ERR_SSL_COMPRESSION_FAILED -0x6F00 /**< Processing of the compression / decompression failed */ +#define MBEDTLS_ERR_SSL_BAD_HS_PROTOCOL_VERSION -0x6E80 /**< Handshake protocol not within min/max boundaries */ +#define MBEDTLS_ERR_SSL_BAD_HS_NEW_SESSION_TICKET -0x6E00 /**< Processing of the NewSessionTicket handshake message failed. */ +#define MBEDTLS_ERR_SSL_SESSION_TICKET_EXPIRED -0x6D80 /**< Session ticket has expired. */ +#define MBEDTLS_ERR_SSL_PK_TYPE_MISMATCH -0x6D00 /**< Public key type mismatch (eg, asked for RSA key exchange and presented EC key) */ +#define MBEDTLS_ERR_SSL_UNKNOWN_IDENTITY -0x6C80 /**< Unknown identity received (eg, PSK identity) */ +#define MBEDTLS_ERR_SSL_INTERNAL_ERROR -0x6C00 /**< Internal error (eg, unexpected failure in lower-level module) */ +#define MBEDTLS_ERR_SSL_COUNTER_WRAPPING -0x6B80 /**< A counter would wrap (eg, too many messages exchanged). */ +#define MBEDTLS_ERR_SSL_WAITING_SERVER_HELLO_RENEGO -0x6B00 /**< Unexpected message at ServerHello in renegotiation. */ +#define MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED -0x6A80 /**< DTLS client must retry for hello verification */ +#define MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL -0x6A00 /**< A buffer is too small to receive or write a message */ +#define MBEDTLS_ERR_SSL_NO_USABLE_CIPHERSUITE -0x6980 /**< None of the common ciphersuites is usable (eg, no suitable certificate, see debug messages). */ +#define MBEDTLS_ERR_SSL_WANT_READ -0x6900 /**< Connection requires a read call. */ +#define MBEDTLS_ERR_SSL_WANT_WRITE -0x6880 /**< Connection requires a write call. */ +#define MBEDTLS_ERR_SSL_TIMEOUT -0x6800 /**< The operation timed out. */ +#define MBEDTLS_ERR_SSL_CLIENT_RECONNECT -0x6780 /**< The client initiated a reconnect from the same port. */ +#define MBEDTLS_ERR_SSL_UNEXPECTED_RECORD -0x6700 /**< Record header looks valid but is not expected. */ +#define MBEDTLS_ERR_SSL_NON_FATAL -0x6680 /**< The alert message received indicates a non-fatal error. */ +#define MBEDTLS_ERR_SSL_INVALID_VERIFY_HASH -0x6600 /**< Couldn't set the hash for verifying CertificateVerify */ + +/* + * Various constants + */ +#define MBEDTLS_SSL_MAJOR_VERSION_3 3 +#define MBEDTLS_SSL_MINOR_VERSION_0 0 /*!< SSL v3.0 */ +#define MBEDTLS_SSL_MINOR_VERSION_1 1 /*!< TLS v1.0 */ +#define MBEDTLS_SSL_MINOR_VERSION_2 2 /*!< TLS v1.1 */ +#define MBEDTLS_SSL_MINOR_VERSION_3 3 /*!< TLS v1.2 */ + +#define MBEDTLS_SSL_TRANSPORT_STREAM 0 /*!< TLS */ +#define MBEDTLS_SSL_TRANSPORT_DATAGRAM 1 /*!< DTLS */ + +#define MBEDTLS_SSL_MAX_HOST_NAME_LEN 255 /*!< Maximum host name defined in RFC 1035 */ + +/* RFC 6066 section 4, see also mfl_code_to_length in ssl_tls.c + * NONE must be zero so that memset()ing structure to zero works */ +#define MBEDTLS_SSL_MAX_FRAG_LEN_NONE 0 /*!< don't use this extension */ +#define MBEDTLS_SSL_MAX_FRAG_LEN_512 1 /*!< MaxFragmentLength 2^9 */ +#define MBEDTLS_SSL_MAX_FRAG_LEN_1024 2 /*!< MaxFragmentLength 2^10 */ +#define MBEDTLS_SSL_MAX_FRAG_LEN_2048 3 /*!< MaxFragmentLength 2^11 */ +#define MBEDTLS_SSL_MAX_FRAG_LEN_4096 4 /*!< MaxFragmentLength 2^12 */ +#define MBEDTLS_SSL_MAX_FRAG_LEN_INVALID 5 /*!< first invalid value */ + +#define MBEDTLS_SSL_IS_CLIENT 0 +#define MBEDTLS_SSL_IS_SERVER 1 + +#define MBEDTLS_SSL_IS_NOT_FALLBACK 0 +#define MBEDTLS_SSL_IS_FALLBACK 1 + +#define MBEDTLS_SSL_EXTENDED_MS_DISABLED 0 +#define MBEDTLS_SSL_EXTENDED_MS_ENABLED 1 + +#define MBEDTLS_SSL_ETM_DISABLED 0 +#define MBEDTLS_SSL_ETM_ENABLED 1 + +#define MBEDTLS_SSL_COMPRESS_NULL 0 +#define MBEDTLS_SSL_COMPRESS_DEFLATE 1 + +#define MBEDTLS_SSL_VERIFY_NONE 0 +#define MBEDTLS_SSL_VERIFY_OPTIONAL 1 +#define MBEDTLS_SSL_VERIFY_REQUIRED 2 +#define MBEDTLS_SSL_VERIFY_UNSET 3 /* Used only for sni_authmode */ + +#define MBEDTLS_SSL_LEGACY_RENEGOTIATION 0 +#define MBEDTLS_SSL_SECURE_RENEGOTIATION 1 + +#define MBEDTLS_SSL_RENEGOTIATION_DISABLED 0 +#define MBEDTLS_SSL_RENEGOTIATION_ENABLED 1 + +#define MBEDTLS_SSL_ANTI_REPLAY_DISABLED 0 +#define MBEDTLS_SSL_ANTI_REPLAY_ENABLED 1 + +#define MBEDTLS_SSL_RENEGOTIATION_NOT_ENFORCED -1 +#define MBEDTLS_SSL_RENEGO_MAX_RECORDS_DEFAULT 16 + +#define MBEDTLS_SSL_LEGACY_NO_RENEGOTIATION 0 +#define MBEDTLS_SSL_LEGACY_ALLOW_RENEGOTIATION 1 +#define MBEDTLS_SSL_LEGACY_BREAK_HANDSHAKE 2 + +#define MBEDTLS_SSL_TRUNC_HMAC_DISABLED 0 +#define MBEDTLS_SSL_TRUNC_HMAC_ENABLED 1 +#define MBEDTLS_SSL_TRUNCATED_HMAC_LEN 10 /* 80 bits, rfc 6066 section 7 */ + +#define MBEDTLS_SSL_SESSION_TICKETS_DISABLED 0 +#define MBEDTLS_SSL_SESSION_TICKETS_ENABLED 1 + +#define MBEDTLS_SSL_CBC_RECORD_SPLITTING_DISABLED 0 +#define MBEDTLS_SSL_CBC_RECORD_SPLITTING_ENABLED 1 + +#define MBEDTLS_SSL_ARC4_ENABLED 0 +#define MBEDTLS_SSL_ARC4_DISABLED 1 + +#define MBEDTLS_SSL_PRESET_DEFAULT 0 +#define MBEDTLS_SSL_PRESET_SUITEB 2 + +/* + * Default range for DTLS retransmission timer value, in milliseconds. + * RFC 6347 4.2.4.1 says from 1 second to 60 seconds. + */ +#define MBEDTLS_SSL_DTLS_TIMEOUT_DFL_MIN 1000 +#define MBEDTLS_SSL_DTLS_TIMEOUT_DFL_MAX 60000 + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ + +#if !defined(MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME) +#define MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME 86400 /**< Lifetime of session tickets (if enabled) */ +#endif + +/* + * Maxium fragment length in bytes, + * determines the size of each of the two internal I/O buffers. + * + * Note: the RFC defines the default size of SSL / TLS messages. If you + * change the value here, other clients / servers may not be able to + * communicate with you anymore. Only change this value if you control + * both sides of the connection and have it reduced at both sides, or + * if you're using the Max Fragment Length extension and you know all your + * peers are using it too! + */ +#if !defined(MBEDTLS_SSL_MAX_CONTENT_LEN) +#define MBEDTLS_SSL_MAX_CONTENT_LEN 16384 /**< Size of the input / output buffer */ +#endif + +/* \} name SECTION: Module settings */ + +/* + * Length of the verify data for secure renegotiation + */ +#if defined(MBEDTLS_SSL_PROTO_SSL3) +#define MBEDTLS_SSL_VERIFY_DATA_MAX_LEN 36 +#else +#define MBEDTLS_SSL_VERIFY_DATA_MAX_LEN 12 +#endif + +/* + * Signaling ciphersuite values (SCSV) + */ +#define MBEDTLS_SSL_EMPTY_RENEGOTIATION_INFO 0xFF /**< renegotiation info ext */ +#define MBEDTLS_SSL_FALLBACK_SCSV_VALUE 0x5600 /**< RFC 7507 section 2 */ + +/* + * Supported Signature and Hash algorithms (For TLS 1.2) + * RFC 5246 section 7.4.1.4.1 + */ +#define MBEDTLS_SSL_HASH_NONE 0 +#define MBEDTLS_SSL_HASH_MD5 1 +#define MBEDTLS_SSL_HASH_SHA1 2 +#define MBEDTLS_SSL_HASH_SHA224 3 +#define MBEDTLS_SSL_HASH_SHA256 4 +#define MBEDTLS_SSL_HASH_SHA384 5 +#define MBEDTLS_SSL_HASH_SHA512 6 + +#define MBEDTLS_SSL_SIG_ANON 0 +#define MBEDTLS_SSL_SIG_RSA 1 +#define MBEDTLS_SSL_SIG_ECDSA 3 + +/* + * Client Certificate Types + * RFC 5246 section 7.4.4 plus RFC 4492 section 5.5 + */ +#define MBEDTLS_SSL_CERT_TYPE_RSA_SIGN 1 +#define MBEDTLS_SSL_CERT_TYPE_ECDSA_SIGN 64 + +/* + * Message, alert and handshake types + */ +#define MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC 20 +#define MBEDTLS_SSL_MSG_ALERT 21 +#define MBEDTLS_SSL_MSG_HANDSHAKE 22 +#define MBEDTLS_SSL_MSG_APPLICATION_DATA 23 + +#define MBEDTLS_SSL_ALERT_LEVEL_WARNING 1 +#define MBEDTLS_SSL_ALERT_LEVEL_FATAL 2 + +#define MBEDTLS_SSL_ALERT_MSG_CLOSE_NOTIFY 0 /* 0x00 */ +#define MBEDTLS_SSL_ALERT_MSG_UNEXPECTED_MESSAGE 10 /* 0x0A */ +#define MBEDTLS_SSL_ALERT_MSG_BAD_RECORD_MAC 20 /* 0x14 */ +#define MBEDTLS_SSL_ALERT_MSG_DECRYPTION_FAILED 21 /* 0x15 */ +#define MBEDTLS_SSL_ALERT_MSG_RECORD_OVERFLOW 22 /* 0x16 */ +#define MBEDTLS_SSL_ALERT_MSG_DECOMPRESSION_FAILURE 30 /* 0x1E */ +#define MBEDTLS_SSL_ALERT_MSG_HANDSHAKE_FAILURE 40 /* 0x28 */ +#define MBEDTLS_SSL_ALERT_MSG_NO_CERT 41 /* 0x29 */ +#define MBEDTLS_SSL_ALERT_MSG_BAD_CERT 42 /* 0x2A */ +#define MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_CERT 43 /* 0x2B */ +#define MBEDTLS_SSL_ALERT_MSG_CERT_REVOKED 44 /* 0x2C */ +#define MBEDTLS_SSL_ALERT_MSG_CERT_EXPIRED 45 /* 0x2D */ +#define MBEDTLS_SSL_ALERT_MSG_CERT_UNKNOWN 46 /* 0x2E */ +#define MBEDTLS_SSL_ALERT_MSG_ILLEGAL_PARAMETER 47 /* 0x2F */ +#define MBEDTLS_SSL_ALERT_MSG_UNKNOWN_CA 48 /* 0x30 */ +#define MBEDTLS_SSL_ALERT_MSG_ACCESS_DENIED 49 /* 0x31 */ +#define MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR 50 /* 0x32 */ +#define MBEDTLS_SSL_ALERT_MSG_DECRYPT_ERROR 51 /* 0x33 */ +#define MBEDTLS_SSL_ALERT_MSG_EXPORT_RESTRICTION 60 /* 0x3C */ +#define MBEDTLS_SSL_ALERT_MSG_PROTOCOL_VERSION 70 /* 0x46 */ +#define MBEDTLS_SSL_ALERT_MSG_INSUFFICIENT_SECURITY 71 /* 0x47 */ +#define MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR 80 /* 0x50 */ +#define MBEDTLS_SSL_ALERT_MSG_INAPROPRIATE_FALLBACK 86 /* 0x56 */ +#define MBEDTLS_SSL_ALERT_MSG_USER_CANCELED 90 /* 0x5A */ +#define MBEDTLS_SSL_ALERT_MSG_NO_RENEGOTIATION 100 /* 0x64 */ +#define MBEDTLS_SSL_ALERT_MSG_UNSUPPORTED_EXT 110 /* 0x6E */ +#define MBEDTLS_SSL_ALERT_MSG_UNRECOGNIZED_NAME 112 /* 0x70 */ +#define MBEDTLS_SSL_ALERT_MSG_UNKNOWN_PSK_IDENTITY 115 /* 0x73 */ +#define MBEDTLS_SSL_ALERT_MSG_NO_APPLICATION_PROTOCOL 120 /* 0x78 */ + +#define MBEDTLS_SSL_HS_HELLO_REQUEST 0 +#define MBEDTLS_SSL_HS_CLIENT_HELLO 1 +#define MBEDTLS_SSL_HS_SERVER_HELLO 2 +#define MBEDTLS_SSL_HS_HELLO_VERIFY_REQUEST 3 +#define MBEDTLS_SSL_HS_NEW_SESSION_TICKET 4 +#define MBEDTLS_SSL_HS_CERTIFICATE 11 +#define MBEDTLS_SSL_HS_SERVER_KEY_EXCHANGE 12 +#define MBEDTLS_SSL_HS_CERTIFICATE_REQUEST 13 +#define MBEDTLS_SSL_HS_SERVER_HELLO_DONE 14 +#define MBEDTLS_SSL_HS_CERTIFICATE_VERIFY 15 +#define MBEDTLS_SSL_HS_CLIENT_KEY_EXCHANGE 16 +#define MBEDTLS_SSL_HS_FINISHED 20 + +/* + * TLS extensions + */ +#define MBEDTLS_TLS_EXT_SERVERNAME 0 +#define MBEDTLS_TLS_EXT_SERVERNAME_HOSTNAME 0 + +#define MBEDTLS_TLS_EXT_MAX_FRAGMENT_LENGTH 1 + +#define MBEDTLS_TLS_EXT_TRUNCATED_HMAC 4 + +#define MBEDTLS_TLS_EXT_SUPPORTED_ELLIPTIC_CURVES 10 +#define MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS 11 + +#define MBEDTLS_TLS_EXT_SIG_ALG 13 + +#define MBEDTLS_TLS_EXT_ALPN 16 + +#define MBEDTLS_TLS_EXT_ENCRYPT_THEN_MAC 22 /* 0x16 */ +#define MBEDTLS_TLS_EXT_EXTENDED_MASTER_SECRET 0x0017 /* 23 */ + +#define MBEDTLS_TLS_EXT_SESSION_TICKET 35 + +#define MBEDTLS_TLS_EXT_ECJPAKE_KKPP 256 /* experimental */ + +#define MBEDTLS_TLS_EXT_RENEGOTIATION_INFO 0xFF01 + +/* + * Size defines + */ +#if !defined(MBEDTLS_PSK_MAX_LEN) +#define MBEDTLS_PSK_MAX_LEN 32 /* 256 bits */ +#endif + +/* Dummy type used only for its size */ +union mbedtls_ssl_premaster_secret +{ +#if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) + unsigned char _pms_rsa[48]; /* RFC 5246 8.1.1 */ +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) + unsigned char _pms_dhm[MBEDTLS_MPI_MAX_SIZE]; /* RFC 5246 8.1.2 */ +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) + unsigned char _pms_ecdh[MBEDTLS_ECP_MAX_BYTES]; /* RFC 4492 5.10 */ +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) + unsigned char _pms_psk[4 + 2 * MBEDTLS_PSK_MAX_LEN]; /* RFC 4279 2 */ +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) + unsigned char _pms_dhe_psk[4 + MBEDTLS_MPI_MAX_SIZE + + MBEDTLS_PSK_MAX_LEN]; /* RFC 4279 3 */ +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) + unsigned char _pms_rsa_psk[52 + MBEDTLS_PSK_MAX_LEN]; /* RFC 4279 4 */ +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) + unsigned char _pms_ecdhe_psk[4 + MBEDTLS_ECP_MAX_BYTES + + MBEDTLS_PSK_MAX_LEN]; /* RFC 5489 2 */ +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) + unsigned char _pms_ecjpake[32]; /* Thread spec: SHA-256 output */ +#endif +}; + +#define MBEDTLS_PREMASTER_SIZE sizeof( union mbedtls_ssl_premaster_secret ) + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SSL state machine + */ +typedef enum +{ + MBEDTLS_SSL_HELLO_REQUEST, + MBEDTLS_SSL_CLIENT_HELLO, + MBEDTLS_SSL_SERVER_HELLO, + MBEDTLS_SSL_SERVER_CERTIFICATE, + MBEDTLS_SSL_SERVER_KEY_EXCHANGE, + MBEDTLS_SSL_CERTIFICATE_REQUEST, + MBEDTLS_SSL_SERVER_HELLO_DONE, + MBEDTLS_SSL_CLIENT_CERTIFICATE, + MBEDTLS_SSL_CLIENT_KEY_EXCHANGE, + MBEDTLS_SSL_CERTIFICATE_VERIFY, + MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC, + MBEDTLS_SSL_CLIENT_FINISHED, + MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC, + MBEDTLS_SSL_SERVER_FINISHED, + MBEDTLS_SSL_FLUSH_BUFFERS, + MBEDTLS_SSL_HANDSHAKE_WRAPUP, + MBEDTLS_SSL_HANDSHAKE_OVER, + MBEDTLS_SSL_SERVER_NEW_SESSION_TICKET, + MBEDTLS_SSL_SERVER_HELLO_VERIFY_REQUEST_SENT, +} +mbedtls_ssl_states; + +/** + * \brief Callback type: send data on the network. + * + * \note That callback may be either blocking or non-blocking. + * + * \param ctx Context for the send callback (typically a file descriptor) + * \param buf Buffer holding the data to send + * \param len Length of the data to send + * + * \return The callback must return the number of bytes sent if any, + * or a non-zero error code. + * If performing non-blocking I/O, \c MBEDTLS_ERR_SSL_WANT_WRITE + * must be returned when the operation would block. + * + * \note The callback is allowed to send fewer bytes than requested. + * It must always return the number of bytes actually sent. + */ +typedef int mbedtls_ssl_send_t( void *ctx, + const unsigned char *buf, + size_t len ); + +/** + * \brief Callback type: receive data from the network. + * + * \note That callback may be either blocking or non-blocking. + * + * \param ctx Context for the receive callback (typically a file + * descriptor) + * \param buf Buffer to write the received data to + * \param len Length of the receive buffer + * + * \return The callback must return the number of bytes received, + * or a non-zero error code. + * If performing non-blocking I/O, \c MBEDTLS_ERR_SSL_WANT_READ + * must be returned when the operation would block. + * + * \note The callback may receive fewer bytes than the length of the + * buffer. It must always return the number of bytes actually + * received and written to the buffer. + */ +typedef int mbedtls_ssl_recv_t( void *ctx, + unsigned char *buf, + size_t len ); + +/** + * \brief Callback type: receive data from the network, with timeout + * + * \note That callback must block until data is received, or the + * timeout delay expires, or the operation is interrupted by a + * signal. + * + * \param ctx Context for the receive callback (typically a file descriptor) + * \param buf Buffer to write the received data to + * \param len Length of the receive buffer + * \param timeout Maximum nomber of millisecondes to wait for data + * 0 means no timeout (potentially waiting forever) + * + * \return The callback must return the number of bytes received, + * or a non-zero error code: + * \c MBEDTLS_ERR_SSL_TIMEOUT if the operation timed out, + * \c MBEDTLS_ERR_SSL_WANT_READ if interrupted by a signal. + * + * \note The callback may receive fewer bytes than the length of the + * buffer. It must always return the number of bytes actually + * received and written to the buffer. + */ +typedef int mbedtls_ssl_recv_timeout_t( void *ctx, + unsigned char *buf, + size_t len, + uint32_t timeout ); +/** + * \brief Callback type: set a pair of timers/delays to watch + * + * \param ctx Context pointer + * \param int_ms Intermediate delay in milliseconds + * \param fin_ms Final delay in milliseconds + * 0 cancels the current timer. + * + * \note This callback must at least store the necessary information + * for the associated \c mbedtls_ssl_get_timer_t callback to + * return correct information. + * + * \note If using a event-driven style of programming, an event must + * be generated when the final delay is passed. The event must + * cause a call to \c mbedtls_ssl_handshake() with the proper + * SSL context to be scheduled. Care must be taken to ensure + * that at most one such call happens at a time. + * + * \note Only one timer at a time must be running. Calling this + * function while a timer is running must cancel it. Cancelled + * timers must not generate any event. + */ +typedef void mbedtls_ssl_set_timer_t( void * ctx, + uint32_t int_ms, + uint32_t fin_ms ); + +/** + * \brief Callback type: get status of timers/delays + * + * \param ctx Context pointer + * + * \return This callback must return: + * -1 if cancelled (fin_ms == 0), + * 0 if none of the delays have passed, + * 1 if only the intermediate delay has passed, + * 2 if the final delay has passed. + */ +typedef int mbedtls_ssl_get_timer_t( void * ctx ); + + +/* Defined below */ +typedef struct mbedtls_ssl_session mbedtls_ssl_session; +typedef struct mbedtls_ssl_context mbedtls_ssl_context; +typedef struct mbedtls_ssl_config mbedtls_ssl_config; + +/* Defined in ssl_internal.h */ +typedef struct mbedtls_ssl_transform mbedtls_ssl_transform; +typedef struct mbedtls_ssl_handshake_params mbedtls_ssl_handshake_params; +#if defined(MBEDTLS_X509_CRT_PARSE_C) +typedef struct mbedtls_ssl_key_cert mbedtls_ssl_key_cert; +#endif +#if defined(MBEDTLS_SSL_PROTO_DTLS) +typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; +#endif + +/* + * This structure is used for storing current session data. + */ +struct mbedtls_ssl_session +{ +#if defined(MBEDTLS_HAVE_TIME) + mbedtls_time_t start; /*!< starting time */ +#endif + int ciphersuite; /*!< chosen ciphersuite */ + int compression; /*!< chosen compression */ + size_t id_len; /*!< session id length */ + unsigned char id[32]; /*!< session identifier */ + unsigned char master[48]; /*!< the master secret */ + +#if defined(MBEDTLS_X509_CRT_PARSE_C) + mbedtls_x509_crt *peer_cert; /*!< peer X.509 cert chain */ +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + uint32_t verify_result; /*!< verification result */ + +#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) + unsigned char *ticket; /*!< RFC 5077 session ticket */ + size_t ticket_len; /*!< session ticket length */ + uint32_t ticket_lifetime; /*!< ticket lifetime hint */ +#endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_CLI_C */ + +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) + unsigned char mfl_code; /*!< MaxFragmentLength negotiated by peer */ +#endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ + +#if defined(MBEDTLS_SSL_TRUNCATED_HMAC) + int trunc_hmac; /*!< flag for truncated hmac activation */ +#endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ + +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + int encrypt_then_mac; /*!< flag for EtM activation */ +#endif +}; + +/** + * SSL/TLS configuration to be shared between mbedtls_ssl_context structures. + */ +struct mbedtls_ssl_config +{ + /* Group items by size (largest first) to minimize padding overhead */ + + /* + * Pointers + */ + + const int *ciphersuite_list[4]; /*!< allowed ciphersuites per version */ + + /** Callback for printing debug output */ + void (*f_dbg)(void *, int, const char *, int, const char *); + void *p_dbg; /*!< context for the debug function */ + + /** Callback for getting (pseudo-)random numbers */ + int (*f_rng)(void *, unsigned char *, size_t); + void *p_rng; /*!< context for the RNG function */ + + /** Callback to retrieve a session from the cache */ + int (*f_get_cache)(void *, mbedtls_ssl_session *); + /** Callback to store a session into the cache */ + int (*f_set_cache)(void *, const mbedtls_ssl_session *); + void *p_cache; /*!< context for cache callbacks */ + +#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) + /** Callback for setting cert according to SNI extension */ + int (*f_sni)(void *, mbedtls_ssl_context *, const unsigned char *, size_t); + void *p_sni; /*!< context for SNI callback */ +#endif + +#if defined(MBEDTLS_X509_CRT_PARSE_C) + /** Callback to customize X.509 certificate chain verification */ + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *); + void *p_vrfy; /*!< context for X.509 verify calllback */ +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) + /** Callback to retrieve PSK key from identity */ + int (*f_psk)(void *, mbedtls_ssl_context *, const unsigned char *, size_t); + void *p_psk; /*!< context for PSK callback */ +#endif + +#if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C) + /** Callback to create & write a cookie for ClientHello veirifcation */ + int (*f_cookie_write)( void *, unsigned char **, unsigned char *, + const unsigned char *, size_t ); + /** Callback to verify validity of a ClientHello cookie */ + int (*f_cookie_check)( void *, const unsigned char *, size_t, + const unsigned char *, size_t ); + void *p_cookie; /*!< context for the cookie callbacks */ +#endif + +#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_SRV_C) + /** Callback to create & write a session ticket */ + int (*f_ticket_write)( void *, const mbedtls_ssl_session *, + unsigned char *, const unsigned char *, size_t *, uint32_t * ); + /** Callback to parse a session ticket into a session structure */ + int (*f_ticket_parse)( void *, mbedtls_ssl_session *, unsigned char *, size_t); + void *p_ticket; /*!< context for the ticket callbacks */ +#endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_SRV_C */ + +#if defined(MBEDTLS_SSL_EXPORT_KEYS) + /** Callback to export key block and master secret */ + int (*f_export_keys)( void *, const unsigned char *, + const unsigned char *, size_t, size_t, size_t ); + void *p_export_keys; /*!< context for key export callback */ +#endif + +#if defined(MBEDTLS_X509_CRT_PARSE_C) + const mbedtls_x509_crt_profile *cert_profile; /*!< verification profile */ + mbedtls_ssl_key_cert *key_cert; /*!< own certificate/key pair(s) */ + mbedtls_x509_crt *ca_chain; /*!< trusted CAs */ + mbedtls_x509_crl *ca_crl; /*!< trusted CAs CRLs */ +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + const int *sig_hashes; /*!< allowed signature hashes */ +#endif + +#if defined(MBEDTLS_ECP_C) + const mbedtls_ecp_group_id *curve_list; /*!< allowed curves */ +#endif + +#if defined(MBEDTLS_DHM_C) + mbedtls_mpi dhm_P; /*!< prime modulus for DHM */ + mbedtls_mpi dhm_G; /*!< generator for DHM */ +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) + unsigned char *psk; /*!< pre-shared key */ + size_t psk_len; /*!< length of the pre-shared key */ + unsigned char *psk_identity; /*!< identity for PSK negotiation */ + size_t psk_identity_len;/*!< length of identity */ +#endif + +#if defined(MBEDTLS_SSL_ALPN) + const char **alpn_list; /*!< ordered list of protocols */ +#endif + + /* + * Numerical settings (int then char) + */ + + uint32_t read_timeout; /*!< timeout for mbedtls_ssl_read (ms) */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + uint32_t hs_timeout_min; /*!< initial value of the handshake + retransmission timeout (ms) */ + uint32_t hs_timeout_max; /*!< maximum value of the handshake + retransmission timeout (ms) */ +#endif + +#if defined(MBEDTLS_SSL_RENEGOTIATION) + int renego_max_records; /*!< grace period for renegotiation */ + unsigned char renego_period[8]; /*!< value of the record counters + that triggers renegotiation */ +#endif + +#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) + unsigned int badmac_limit; /*!< limit of records with a bad MAC */ +#endif + +#if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_CLI_C) + unsigned int dhm_min_bitlen; /*!< min. bit length of the DHM prime */ +#endif + + unsigned char max_major_ver; /*!< max. major version used */ + unsigned char max_minor_ver; /*!< max. minor version used */ + unsigned char min_major_ver; /*!< min. major version used */ + unsigned char min_minor_ver; /*!< min. minor version used */ + + /* + * Flags (bitfields) + */ + + unsigned int endpoint : 1; /*!< 0: client, 1: server */ + unsigned int transport : 1; /*!< stream (TLS) or datagram (DTLS) */ + unsigned int authmode : 2; /*!< MBEDTLS_SSL_VERIFY_XXX */ + /* needed even with renego disabled for LEGACY_BREAK_HANDSHAKE */ + unsigned int allow_legacy_renegotiation : 2 ; /*!< MBEDTLS_LEGACY_XXX */ +#if defined(MBEDTLS_ARC4_C) + unsigned int arc4_disabled : 1; /*!< blacklist RC4 ciphersuites? */ +#endif +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) + unsigned int mfl_code : 3; /*!< desired fragment length */ +#endif +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) + unsigned int encrypt_then_mac : 1 ; /*!< negotiate encrypt-then-mac? */ +#endif +#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) + unsigned int extended_ms : 1; /*!< negotiate extended master secret? */ +#endif +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) + unsigned int anti_replay : 1; /*!< detect and prevent replay? */ +#endif +#if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) + unsigned int cbc_record_splitting : 1; /*!< do cbc record splitting */ +#endif +#if defined(MBEDTLS_SSL_RENEGOTIATION) + unsigned int disable_renegotiation : 1; /*!< disable renegotiation? */ +#endif +#if defined(MBEDTLS_SSL_TRUNCATED_HMAC) + unsigned int trunc_hmac : 1; /*!< negotiate truncated hmac? */ +#endif +#if defined(MBEDTLS_SSL_SESSION_TICKETS) + unsigned int session_tickets : 1; /*!< use session tickets? */ +#endif +#if defined(MBEDTLS_SSL_FALLBACK_SCSV) && defined(MBEDTLS_SSL_CLI_C) + unsigned int fallback : 1; /*!< is this a fallback? */ +#endif +}; + + +struct mbedtls_ssl_context +{ + const mbedtls_ssl_config *conf; /*!< configuration information */ + + /* + * Miscellaneous + */ + int state; /*!< SSL handshake: current state */ +#if defined(MBEDTLS_SSL_RENEGOTIATION) + int renego_status; /*!< Initial, in progress, pending? */ + int renego_records_seen; /*!< Records since renego request, or with DTLS, + number of retransmissions of request if + renego_max_records is < 0 */ +#endif + + int major_ver; /*!< equal to MBEDTLS_SSL_MAJOR_VERSION_3 */ + int minor_ver; /*!< either 0 (SSL3) or 1 (TLS1.0) */ + +#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) + unsigned badmac_seen; /*!< records with a bad MAC received */ +#endif + + mbedtls_ssl_send_t *f_send; /*!< Callback for network send */ + mbedtls_ssl_recv_t *f_recv; /*!< Callback for network receive */ + mbedtls_ssl_recv_timeout_t *f_recv_timeout; + /*!< Callback for network receive with timeout */ + + void *p_bio; /*!< context for I/O operations */ + + /* + * Session layer + */ + mbedtls_ssl_session *session_in; /*!< current session data (in) */ + mbedtls_ssl_session *session_out; /*!< current session data (out) */ + mbedtls_ssl_session *session; /*!< negotiated session data */ + mbedtls_ssl_session *session_negotiate; /*!< session data in negotiation */ + + mbedtls_ssl_handshake_params *handshake; /*!< params required only during + the handshake process */ + + /* + * Record layer transformations + */ + mbedtls_ssl_transform *transform_in; /*!< current transform params (in) */ + mbedtls_ssl_transform *transform_out; /*!< current transform params (in) */ + mbedtls_ssl_transform *transform; /*!< negotiated transform params */ + mbedtls_ssl_transform *transform_negotiate; /*!< transform params in negotiation */ + + /* + * Timers + */ + void *p_timer; /*!< context for the timer callbacks */ + + mbedtls_ssl_set_timer_t *f_set_timer; /*!< set timer callback */ + mbedtls_ssl_get_timer_t *f_get_timer; /*!< get timer callback */ + + /* + * Record layer (incoming data) + */ + unsigned char *in_buf; /*!< input buffer */ + unsigned char *in_ctr; /*!< 64-bit incoming message counter + TLS: maintained by us + DTLS: read from peer */ + unsigned char *in_hdr; /*!< start of record header */ + unsigned char *in_len; /*!< two-bytes message length field */ + unsigned char *in_iv; /*!< ivlen-byte IV */ + unsigned char *in_msg; /*!< message contents (in_iv+ivlen) */ + unsigned char *in_offt; /*!< read offset in application data */ + + int in_msgtype; /*!< record header: message type */ + size_t in_msglen; /*!< record header: message length */ + size_t in_left; /*!< amount of data read so far */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + uint16_t in_epoch; /*!< DTLS epoch for incoming records */ + size_t next_record_offset; /*!< offset of the next record in datagram + (equal to in_left if none) */ +#endif +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) + uint64_t in_window_top; /*!< last validated record seq_num */ + uint64_t in_window; /*!< bitmask for replay detection */ +#endif + + size_t in_hslen; /*!< current handshake message length, + including the handshake header */ + int nb_zero; /*!< # of 0-length encrypted messages */ + int record_read; /*!< record is already present */ + + /* + * Record layer (outgoing data) + */ + unsigned char *out_buf; /*!< output buffer */ + unsigned char *out_ctr; /*!< 64-bit outgoing message counter */ + unsigned char *out_hdr; /*!< start of record header */ + unsigned char *out_len; /*!< two-bytes message length field */ + unsigned char *out_iv; /*!< ivlen-byte IV */ + unsigned char *out_msg; /*!< message contents (out_iv+ivlen) */ + + int out_msgtype; /*!< record header: message type */ + size_t out_msglen; /*!< record header: message length */ + size_t out_left; /*!< amount of data not yet written */ + +#if defined(MBEDTLS_ZLIB_SUPPORT) + unsigned char *compress_buf; /*!< zlib data buffer */ +#endif +#if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) + signed char split_done; /*!< current record already splitted? */ +#endif + + /* + * PKI layer + */ + int client_auth; /*!< flag for client auth. */ + + /* + * User settings + */ +#if defined(MBEDTLS_X509_CRT_PARSE_C) + char *hostname; /*!< expected peer CN for verification + (and SNI if available) */ +#endif + +#if defined(MBEDTLS_SSL_ALPN) + const char *alpn_chosen; /*!< negotiated protocol */ +#endif + + /* + * Information for DTLS hello verify + */ +#if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C) + unsigned char *cli_id; /*!< transport-level ID of the client */ + size_t cli_id_len; /*!< length of cli_id */ +#endif + + /* + * Secure renegotiation + */ + /* needed to know when to send extension on server */ + int secure_renegotiation; /*!< does peer support legacy or + secure renegotiation */ +#if defined(MBEDTLS_SSL_RENEGOTIATION) + size_t verify_data_len; /*!< length of verify data stored */ + char own_verify_data[MBEDTLS_SSL_VERIFY_DATA_MAX_LEN]; /*!< previous handshake verify data */ + char peer_verify_data[MBEDTLS_SSL_VERIFY_DATA_MAX_LEN]; /*!< previous handshake verify data */ +#endif +}; + +#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) + +#define MBEDTLS_SSL_CHANNEL_OUTBOUND 0 +#define MBEDTLS_SSL_CHANNEL_INBOUND 1 + +extern int (*mbedtls_ssl_hw_record_init)(mbedtls_ssl_context *ssl, + const unsigned char *key_enc, const unsigned char *key_dec, + size_t keylen, + const unsigned char *iv_enc, const unsigned char *iv_dec, + size_t ivlen, + const unsigned char *mac_enc, const unsigned char *mac_dec, + size_t maclen); +extern int (*mbedtls_ssl_hw_record_activate)(mbedtls_ssl_context *ssl, int direction); +extern int (*mbedtls_ssl_hw_record_reset)(mbedtls_ssl_context *ssl); +extern int (*mbedtls_ssl_hw_record_write)(mbedtls_ssl_context *ssl); +extern int (*mbedtls_ssl_hw_record_read)(mbedtls_ssl_context *ssl); +extern int (*mbedtls_ssl_hw_record_finish)(mbedtls_ssl_context *ssl); +#endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ + +/** + * \brief Returns the list of ciphersuites supported by the SSL/TLS module. + * + * \return a statically allocated array of ciphersuites, the last + * entry is 0. + */ +const int *mbedtls_ssl_list_ciphersuites( void ); + +/** + * \brief Return the name of the ciphersuite associated with the + * given ID + * + * \param ciphersuite_id SSL ciphersuite ID + * + * \return a string containing the ciphersuite name + */ +const char *mbedtls_ssl_get_ciphersuite_name( const int ciphersuite_id ); + +/** + * \brief Return the ID of the ciphersuite associated with the + * given name + * + * \param ciphersuite_name SSL ciphersuite name + * + * \return the ID with the ciphersuite or 0 if not found + */ +int mbedtls_ssl_get_ciphersuite_id( const char *ciphersuite_name ); + +/** + * \brief Initialize an SSL context + * Just makes the context ready for mbedtls_ssl_setup() or + * mbedtls_ssl_free() + * + * \param ssl SSL context + */ +void mbedtls_ssl_init( mbedtls_ssl_context *ssl ); + +/** + * \brief Set up an SSL context for use + * + * \note No copy of the configuration context is made, it can be + * shared by many mbedtls_ssl_context structures. + * + * \warning Modifying the conf structure after it has been used in this + * function is unsupported! + * + * \param ssl SSL context + * \param conf SSL configuration to use + * + * \return 0 if successful, or MBEDTLS_ERR_SSL_ALLOC_FAILED if + * memory allocation failed + */ +int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, + const mbedtls_ssl_config *conf ); + +/** + * \brief Reset an already initialized SSL context for re-use + * while retaining application-set variables, function + * pointers and data. + * + * \param ssl SSL context + * \return 0 if successful, or MBEDTLS_ERR_SSL_ALLOC_FAILED, + MBEDTLS_ERR_SSL_HW_ACCEL_FAILED or + * MBEDTLS_ERR_SSL_COMPRESSION_FAILED + */ +int mbedtls_ssl_session_reset( mbedtls_ssl_context *ssl ); + +/** + * \brief Set the current endpoint type + * + * \param conf SSL configuration + * \param endpoint must be MBEDTLS_SSL_IS_CLIENT or MBEDTLS_SSL_IS_SERVER + */ +void mbedtls_ssl_conf_endpoint( mbedtls_ssl_config *conf, int endpoint ); + +/** + * \brief Set the transport type (TLS or DTLS). + * Default: TLS + * + * \note For DTLS, you must either provide a recv callback that + * doesn't block, or one that handles timeouts, see + * \c mbedtls_ssl_set_bio(). You also need to provide timer + * callbacks with \c mbedtls_ssl_set_timer_cb(). + * + * \param conf SSL configuration + * \param transport transport type: + * MBEDTLS_SSL_TRANSPORT_STREAM for TLS, + * MBEDTLS_SSL_TRANSPORT_DATAGRAM for DTLS. + */ +void mbedtls_ssl_conf_transport( mbedtls_ssl_config *conf, int transport ); + +/** + * \brief Set the certificate verification mode + * Default: NONE on server, REQUIRED on client + * + * \param conf SSL configuration + * \param authmode can be: + * + * MBEDTLS_SSL_VERIFY_NONE: peer certificate is not checked + * (default on server) + * (insecure on client) + * + * MBEDTLS_SSL_VERIFY_OPTIONAL: peer certificate is checked, however the + * handshake continues even if verification failed; + * mbedtls_ssl_get_verify_result() can be called after the + * handshake is complete. + * + * MBEDTLS_SSL_VERIFY_REQUIRED: peer *must* present a valid certificate, + * handshake is aborted if verification failed. + * (default on client) + * + * \note On client, MBEDTLS_SSL_VERIFY_REQUIRED is the recommended mode. + * With MBEDTLS_SSL_VERIFY_OPTIONAL, the user needs to call mbedtls_ssl_get_verify_result() at + * the right time(s), which may not be obvious, while REQUIRED always perform + * the verification as soon as possible. For example, REQUIRED was protecting + * against the "triple handshake" attack even before it was found. + */ +void mbedtls_ssl_conf_authmode( mbedtls_ssl_config *conf, int authmode ); + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +/** + * \brief Set the verification callback (Optional). + * + * If set, the verify callback is called for each + * certificate in the chain. For implementation + * information, please see \c x509parse_verify() + * + * \param conf SSL configuration + * \param f_vrfy verification function + * \param p_vrfy verification parameter + */ +void mbedtls_ssl_conf_verify( mbedtls_ssl_config *conf, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy ); +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +/** + * \brief Set the random number generator callback + * + * \param conf SSL configuration + * \param f_rng RNG function + * \param p_rng RNG parameter + */ +void mbedtls_ssl_conf_rng( mbedtls_ssl_config *conf, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief Set the debug callback + * + * The callback has the following argument: + * void * opaque context for the callback + * int debug level + * const char * file name + * int line number + * const char * message + * + * \param conf SSL configuration + * \param f_dbg debug function + * \param p_dbg debug parameter + */ +void mbedtls_ssl_conf_dbg( mbedtls_ssl_config *conf, + void (*f_dbg)(void *, int, const char *, int, const char *), + void *p_dbg ); + +/** + * \brief Set the underlying BIO callbacks for write, read and + * read-with-timeout. + * + * \param ssl SSL context + * \param p_bio parameter (context) shared by BIO callbacks + * \param f_send write callback + * \param f_recv read callback + * \param f_recv_timeout blocking read callback with timeout. + * + * \note One of f_recv or f_recv_timeout can be NULL, in which case + * the other is used. If both are non-NULL, f_recv_timeout is + * used and f_recv is ignored (as if it were NULL). + * + * \note The two most common use cases are: + * - non-blocking I/O, f_recv != NULL, f_recv_timeout == NULL + * - blocking I/O, f_recv == NULL, f_recv_timout != NULL + * + * \note For DTLS, you need to provide either a non-NULL + * f_recv_timeout callback, or a f_recv that doesn't block. + * + * \note See the documentations of \c mbedtls_ssl_sent_t, + * \c mbedtls_ssl_recv_t and \c mbedtls_ssl_recv_timeout_t for + * the conventions those callbacks must follow. + * + * \note On some platforms, net_sockets.c provides + * \c mbedtls_net_send(), \c mbedtls_net_recv() and + * \c mbedtls_net_recv_timeout() that are suitable to be used + * here. + */ +void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, + void *p_bio, + mbedtls_ssl_send_t *f_send, + mbedtls_ssl_recv_t *f_recv, + mbedtls_ssl_recv_timeout_t *f_recv_timeout ); + +/** + * \brief Set the timeout period for mbedtls_ssl_read() + * (Default: no timeout.) + * + * \param conf SSL configuration context + * \param timeout Timeout value in milliseconds. + * Use 0 for no timeout (default). + * + * \note With blocking I/O, this will only work if a non-NULL + * \c f_recv_timeout was set with \c mbedtls_ssl_set_bio(). + * With non-blocking I/O, this will only work if timer + * callbacks were set with \c mbedtls_ssl_set_timer_cb(). + * + * \note With non-blocking I/O, you may also skip this function + * altogether and handle timeouts at the application layer. + */ +void mbedtls_ssl_conf_read_timeout( mbedtls_ssl_config *conf, uint32_t timeout ); + +/** + * \brief Set the timer callbacks (Mandatory for DTLS.) + * + * \param ssl SSL context + * \param p_timer parameter (context) shared by timer callbacks + * \param f_set_timer set timer callback + * \param f_get_timer get timer callback. Must return: + * + * \note See the documentation of \c mbedtls_ssl_set_timer_t and + * \c mbedtls_ssl_get_timer_t for the conventions this pair of + * callbacks must follow. + * + * \note On some platforms, timing.c provides + * \c mbedtls_timing_set_delay() and + * \c mbedtls_timing_get_delay() that are suitable for using + * here, except if using an event-driven style. + * + * \note See also the "DTLS tutorial" article in our knowledge base. + * https://tls.mbed.org/kb/how-to/dtls-tutorial + */ +void mbedtls_ssl_set_timer_cb( mbedtls_ssl_context *ssl, + void *p_timer, + mbedtls_ssl_set_timer_t *f_set_timer, + mbedtls_ssl_get_timer_t *f_get_timer ); + +/** + * \brief Callback type: generate and write session ticket + * + * \note This describes what a callback implementation should do. + * This callback should generate an encrypted and + * authenticated ticket for the session and write it to the + * output buffer. Here, ticket means the opaque ticket part + * of the NewSessionTicket structure of RFC 5077. + * + * \param p_ticket Context for the callback + * \param session SSL session to be written in the ticket + * \param start Start of the output buffer + * \param end End of the output buffer + * \param tlen On exit, holds the length written + * \param lifetime On exit, holds the lifetime of the ticket in seconds + * + * \return 0 if successful, or + * a specific MBEDTLS_ERR_XXX code. + */ +typedef int mbedtls_ssl_ticket_write_t( void *p_ticket, + const mbedtls_ssl_session *session, + unsigned char *start, + const unsigned char *end, + size_t *tlen, + uint32_t *lifetime ); + +#if defined(MBEDTLS_SSL_EXPORT_KEYS) +/** + * \brief Callback type: Export key block and master secret + * + * \note This is required for certain uses of TLS, e.g. EAP-TLS + * (RFC 5216) and Thread. The key pointers are ephemeral and + * therefore must not be stored. The master secret and keys + * should not be used directly except as an input to a key + * derivation function. + * + * \param p_expkey Context for the callback + * \param ms Pointer to master secret (fixed length: 48 bytes) + * \param kb Pointer to key block, see RFC 5246 section 6.3 + * (variable length: 2 * maclen + 2 * keylen + 2 * ivlen). + * \param maclen MAC length + * \param keylen Key length + * \param ivlen IV length + * + * \return 0 if successful, or + * a specific MBEDTLS_ERR_XXX code. + */ +typedef int mbedtls_ssl_export_keys_t( void *p_expkey, + const unsigned char *ms, + const unsigned char *kb, + size_t maclen, + size_t keylen, + size_t ivlen ); +#endif /* MBEDTLS_SSL_EXPORT_KEYS */ + +/** + * \brief Callback type: parse and load session ticket + * + * \note This describes what a callback implementation should do. + * This callback should parse a session ticket as generated + * by the corresponding mbedtls_ssl_ticket_write_t function, + * and, if the ticket is authentic and valid, load the + * session. + * + * \note The implementation is allowed to modify the first len + * bytes of the input buffer, eg to use it as a temporary + * area for the decrypted ticket contents. + * + * \param p_ticket Context for the callback + * \param session SSL session to be loaded + * \param buf Start of the buffer containing the ticket + * \param len Length of the ticket. + * + * \return 0 if successful, or + * MBEDTLS_ERR_SSL_INVALID_MAC if not authentic, or + * MBEDTLS_ERR_SSL_SESSION_TICKET_EXPIRED if expired, or + * any other non-zero code for other failures. + */ +typedef int mbedtls_ssl_ticket_parse_t( void *p_ticket, + mbedtls_ssl_session *session, + unsigned char *buf, + size_t len ); + +#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_SRV_C) +/** + * \brief Configure SSL session ticket callbacks (server only). + * (Default: none.) + * + * \note On server, session tickets are enabled by providing + * non-NULL callbacks. + * + * \note On client, use \c mbedtls_ssl_conf_session_tickets(). + * + * \param conf SSL configuration context + * \param f_ticket_write Callback for writing a ticket + * \param f_ticket_parse Callback for parsing a ticket + * \param p_ticket Context shared by the two callbacks + */ +void mbedtls_ssl_conf_session_tickets_cb( mbedtls_ssl_config *conf, + mbedtls_ssl_ticket_write_t *f_ticket_write, + mbedtls_ssl_ticket_parse_t *f_ticket_parse, + void *p_ticket ); +#endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_SRV_C */ + +#if defined(MBEDTLS_SSL_EXPORT_KEYS) +/** + * \brief Configure key export callback. + * (Default: none.) + * + * \note See \c mbedtls_ssl_export_keys_t. + * + * \param conf SSL configuration context + * \param f_export_keys Callback for exporting keys + * \param p_export_keys Context for the callback + */ +void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, + mbedtls_ssl_export_keys_t *f_export_keys, + void *p_export_keys ); +#endif /* MBEDTLS_SSL_EXPORT_KEYS */ + +/** + * \brief Callback type: generate a cookie + * + * \param ctx Context for the callback + * \param p Buffer to write to, + * must be updated to point right after the cookie + * \param end Pointer to one past the end of the output buffer + * \param info Client ID info that was passed to + * \c mbedtls_ssl_set_client_transport_id() + * \param ilen Length of info in bytes + * + * \return The callback must return 0 on success, + * or a negative error code. + */ +typedef int mbedtls_ssl_cookie_write_t( void *ctx, + unsigned char **p, unsigned char *end, + const unsigned char *info, size_t ilen ); + +/** + * \brief Callback type: verify a cookie + * + * \param ctx Context for the callback + * \param cookie Cookie to verify + * \param clen Length of cookie + * \param info Client ID info that was passed to + * \c mbedtls_ssl_set_client_transport_id() + * \param ilen Length of info in bytes + * + * \return The callback must return 0 if cookie is valid, + * or a negative error code. + */ +typedef int mbedtls_ssl_cookie_check_t( void *ctx, + const unsigned char *cookie, size_t clen, + const unsigned char *info, size_t ilen ); + +#if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C) +/** + * \brief Register callbacks for DTLS cookies + * (Server only. DTLS only.) + * + * Default: dummy callbacks that fail, in order to force you to + * register working callbacks (and initialize their context). + * + * To disable HelloVerifyRequest, register NULL callbacks. + * + * \warning Disabling hello verification allows your server to be used + * for amplification in DoS attacks against other hosts. + * Only disable if you known this can't happen in your + * particular environment. + * + * \note See comments on \c mbedtls_ssl_handshake() about handling + * the MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED that is expected + * on the first handshake attempt when this is enabled. + * + * \note This is also necessary to handle client reconnection from + * the same port as described in RFC 6347 section 4.2.8 (only + * the variant with cookies is supported currently). See + * comments on \c mbedtls_ssl_read() for details. + * + * \param conf SSL configuration + * \param f_cookie_write Cookie write callback + * \param f_cookie_check Cookie check callback + * \param p_cookie Context for both callbacks + */ +void mbedtls_ssl_conf_dtls_cookies( mbedtls_ssl_config *conf, + mbedtls_ssl_cookie_write_t *f_cookie_write, + mbedtls_ssl_cookie_check_t *f_cookie_check, + void *p_cookie ); + +/** + * \brief Set client's transport-level identification info. + * (Server only. DTLS only.) + * + * This is usually the IP address (and port), but could be + * anything identify the client depending on the underlying + * network stack. Used for HelloVerifyRequest with DTLS. + * This is *not* used to route the actual packets. + * + * \param ssl SSL context + * \param info Transport-level info identifying the client (eg IP + port) + * \param ilen Length of info in bytes + * + * \note An internal copy is made, so the info buffer can be reused. + * + * \return 0 on success, + * MBEDTLS_ERR_SSL_BAD_INPUT_DATA if used on client, + * MBEDTLS_ERR_SSL_ALLOC_FAILED if out of memory. + */ +int mbedtls_ssl_set_client_transport_id( mbedtls_ssl_context *ssl, + const unsigned char *info, + size_t ilen ); + +#endif /* MBEDTLS_SSL_DTLS_HELLO_VERIFY && MBEDTLS_SSL_SRV_C */ + +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) +/** + * \brief Enable or disable anti-replay protection for DTLS. + * (DTLS only, no effect on TLS.) + * Default: enabled. + * + * \param conf SSL configuration + * \param mode MBEDTLS_SSL_ANTI_REPLAY_ENABLED or MBEDTLS_SSL_ANTI_REPLAY_DISABLED. + * + * \warning Disabling this is a security risk unless the application + * protocol handles duplicated packets in a safe way. You + * should not disable this without careful consideration. + * However, if your application already detects duplicated + * packets and needs information about them to adjust its + * transmission strategy, then you'll want to disable this. + */ +void mbedtls_ssl_conf_dtls_anti_replay( mbedtls_ssl_config *conf, char mode ); +#endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */ + +#if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) +/** + * \brief Set a limit on the number of records with a bad MAC + * before terminating the connection. + * (DTLS only, no effect on TLS.) + * Default: 0 (disabled). + * + * \param conf SSL configuration + * \param limit Limit, or 0 to disable. + * + * \note If the limit is N, then the connection is terminated when + * the Nth non-authentic record is seen. + * + * \note Records with an invalid header are not counted, only the + * ones going through the authentication-decryption phase. + * + * \note This is a security trade-off related to the fact that it's + * often relatively easy for an active attacker ot inject UDP + * datagrams. On one hand, setting a low limit here makes it + * easier for such an attacker to forcibly terminated a + * connection. On the other hand, a high limit or no limit + * might make us waste resources checking authentication on + * many bogus packets. + */ +void mbedtls_ssl_conf_dtls_badmac_limit( mbedtls_ssl_config *conf, unsigned limit ); +#endif /* MBEDTLS_SSL_DTLS_BADMAC_LIMIT */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) +/** + * \brief Set retransmit timeout values for the DTLS handshake. + * (DTLS only, no effect on TLS.) + * + * \param conf SSL configuration + * \param min Initial timeout value in milliseconds. + * Default: 1000 (1 second). + * \param max Maximum timeout value in milliseconds. + * Default: 60000 (60 seconds). + * + * \note Default values are from RFC 6347 section 4.2.4.1. + * + * \note The 'min' value should typically be slightly above the + * expected round-trip time to your peer, plus whatever time + * it takes for the peer to process the message. For example, + * if your RTT is about 600ms and you peer needs up to 1s to + * do the cryptographic operations in the handshake, then you + * should set 'min' slightly above 1600. Lower values of 'min' + * might cause spurious resends which waste network resources, + * while larger value of 'min' will increase overall latency + * on unreliable network links. + * + * \note The more unreliable your network connection is, the larger + * your max / min ratio needs to be in order to achieve + * reliable handshakes. + * + * \note Messages are retransmitted up to log2(ceil(max/min)) times. + * For example, if min = 1s and max = 5s, the retransmit plan + * goes: send ... 1s -> resend ... 2s -> resend ... 4s -> + * resend ... 5s -> give up and return a timeout error. + */ +void mbedtls_ssl_conf_handshake_timeout( mbedtls_ssl_config *conf, uint32_t min, uint32_t max ); +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +#if defined(MBEDTLS_SSL_SRV_C) +/** + * \brief Set the session cache callbacks (server-side only) + * If not set, no session resuming is done (except if session + * tickets are enabled too). + * + * The session cache has the responsibility to check for stale + * entries based on timeout. See RFC 5246 for recommendations. + * + * Warning: session.peer_cert is cleared by the SSL/TLS layer on + * connection shutdown, so do not cache the pointer! Either set + * it to NULL or make a full copy of the certificate. + * + * The get callback is called once during the initial handshake + * to enable session resuming. The get function has the + * following parameters: (void *parameter, mbedtls_ssl_session *session) + * If a valid entry is found, it should fill the master of + * the session object with the cached values and return 0, + * return 1 otherwise. Optionally peer_cert can be set as well + * if it is properly present in cache entry. + * + * The set callback is called once during the initial handshake + * to enable session resuming after the entire handshake has + * been finished. The set function has the following parameters: + * (void *parameter, const mbedtls_ssl_session *session). The function + * should create a cache entry for future retrieval based on + * the data in the session structure and should keep in mind + * that the mbedtls_ssl_session object presented (and all its referenced + * data) is cleared by the SSL/TLS layer when the connection is + * terminated. It is recommended to add metadata to determine if + * an entry is still valid in the future. Return 0 if + * successfully cached, return 1 otherwise. + * + * \param conf SSL configuration + * \param p_cache parmater (context) for both callbacks + * \param f_get_cache session get callback + * \param f_set_cache session set callback + */ +void mbedtls_ssl_conf_session_cache( mbedtls_ssl_config *conf, + void *p_cache, + int (*f_get_cache)(void *, mbedtls_ssl_session *), + int (*f_set_cache)(void *, const mbedtls_ssl_session *) ); +#endif /* MBEDTLS_SSL_SRV_C */ + +#if defined(MBEDTLS_SSL_CLI_C) +/** + * \brief Request resumption of session (client-side only) + * Session data is copied from presented session structure. + * + * \param ssl SSL context + * \param session session context + * + * \return 0 if successful, + * MBEDTLS_ERR_SSL_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_SSL_BAD_INPUT_DATA if used server-side or + * arguments are otherwise invalid + * + * \sa mbedtls_ssl_get_session() + */ +int mbedtls_ssl_set_session( mbedtls_ssl_context *ssl, const mbedtls_ssl_session *session ); +#endif /* MBEDTLS_SSL_CLI_C */ + +/** + * \brief Set the list of allowed ciphersuites and the preference + * order. First in the list has the highest preference. + * (Overrides all version-specific lists) + * + * The ciphersuites array is not copied, and must remain + * valid for the lifetime of the ssl_config. + * + * Note: The server uses its own preferences + * over the preference of the client unless + * MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE is defined! + * + * \param conf SSL configuration + * \param ciphersuites 0-terminated list of allowed ciphersuites + */ +void mbedtls_ssl_conf_ciphersuites( mbedtls_ssl_config *conf, + const int *ciphersuites ); + +/** + * \brief Set the list of allowed ciphersuites and the + * preference order for a specific version of the protocol. + * (Only useful on the server side) + * + * The ciphersuites array is not copied, and must remain + * valid for the lifetime of the ssl_config. + * + * \param conf SSL configuration + * \param ciphersuites 0-terminated list of allowed ciphersuites + * \param major Major version number (only MBEDTLS_SSL_MAJOR_VERSION_3 + * supported) + * \param minor Minor version number (MBEDTLS_SSL_MINOR_VERSION_0, + * MBEDTLS_SSL_MINOR_VERSION_1 and MBEDTLS_SSL_MINOR_VERSION_2, + * MBEDTLS_SSL_MINOR_VERSION_3 supported) + * + * \note With DTLS, use MBEDTLS_SSL_MINOR_VERSION_2 for DTLS 1.0 + * and MBEDTLS_SSL_MINOR_VERSION_3 for DTLS 1.2 + */ +void mbedtls_ssl_conf_ciphersuites_for_version( mbedtls_ssl_config *conf, + const int *ciphersuites, + int major, int minor ); + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +/** + * \brief Set the X.509 security profile used for verification + * + * \note The restrictions are enforced for all certificates in the + * chain. However, signatures in the handshake are not covered + * by this setting but by \b mbedtls_ssl_conf_sig_hashes(). + * + * \param conf SSL configuration + * \param profile Profile to use + */ +void mbedtls_ssl_conf_cert_profile( mbedtls_ssl_config *conf, + const mbedtls_x509_crt_profile *profile ); + +/** + * \brief Set the data required to verify peer certificate + * + * \param conf SSL configuration + * \param ca_chain trusted CA chain (meaning all fully trusted top-level CAs) + * \param ca_crl trusted CA CRLs + */ +void mbedtls_ssl_conf_ca_chain( mbedtls_ssl_config *conf, + mbedtls_x509_crt *ca_chain, + mbedtls_x509_crl *ca_crl ); + +/** + * \brief Set own certificate chain and private key + * + * \note own_cert should contain in order from the bottom up your + * certificate chain. The top certificate (self-signed) + * can be omitted. + * + * \note On server, this function can be called multiple times to + * provision more than one cert/key pair (eg one ECDSA, one + * RSA with SHA-256, one RSA with SHA-1). An adequate + * certificate will be selected according to the client's + * advertised capabilities. In case mutliple certificates are + * adequate, preference is given to the one set by the first + * call to this function, then second, etc. + * + * \note On client, only the first call has any effect. That is, + * only one client certificate can be provisioned. The + * server's preferences in its CertficateRequest message will + * be ignored and our only cert will be sent regardless of + * whether it matches those preferences - the server can then + * decide what it wants to do with it. + * + * \param conf SSL configuration + * \param own_cert own public certificate chain + * \param pk_key own private key + * + * \return 0 on success or MBEDTLS_ERR_SSL_ALLOC_FAILED + */ +int mbedtls_ssl_conf_own_cert( mbedtls_ssl_config *conf, + mbedtls_x509_crt *own_cert, + mbedtls_pk_context *pk_key ); +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +/** + * \brief Set the Pre Shared Key (PSK) and the expected identity name + * + * \note This is mainly useful for clients. Servers will usually + * want to use \c mbedtls_ssl_conf_psk_cb() instead. + * + * \note Currently clients can only register one pre-shared key. + * In other words, the servers' identity hint is ignored. + * Support for setting multiple PSKs on clients and selecting + * one based on the identity hint is not a planned feature but + * feedback is welcomed. + * + * \param conf SSL configuration + * \param psk pointer to the pre-shared key + * \param psk_len pre-shared key length + * \param psk_identity pointer to the pre-shared key identity + * \param psk_identity_len identity key length + * + * \return 0 if successful or MBEDTLS_ERR_SSL_ALLOC_FAILED + */ +int mbedtls_ssl_conf_psk( mbedtls_ssl_config *conf, + const unsigned char *psk, size_t psk_len, + const unsigned char *psk_identity, size_t psk_identity_len ); + + +/** + * \brief Set the Pre Shared Key (PSK) for the current handshake + * + * \note This should only be called inside the PSK callback, + * ie the function passed to \c mbedtls_ssl_conf_psk_cb(). + * + * \param ssl SSL context + * \param psk pointer to the pre-shared key + * \param psk_len pre-shared key length + * + * \return 0 if successful or MBEDTLS_ERR_SSL_ALLOC_FAILED + */ +int mbedtls_ssl_set_hs_psk( mbedtls_ssl_context *ssl, + const unsigned char *psk, size_t psk_len ); + +/** + * \brief Set the PSK callback (server-side only). + * + * If set, the PSK callback is called for each + * handshake where a PSK ciphersuite was negotiated. + * The caller provides the identity received and wants to + * receive the actual PSK data and length. + * + * The callback has the following parameters: (void *parameter, + * mbedtls_ssl_context *ssl, const unsigned char *psk_identity, + * size_t identity_len) + * If a valid PSK identity is found, the callback should use + * \c mbedtls_ssl_set_hs_psk() on the ssl context to set the + * correct PSK and return 0. + * Any other return value will result in a denied PSK identity. + * + * \note If you set a PSK callback using this function, then you + * don't need to set a PSK key and identity using + * \c mbedtls_ssl_conf_psk(). + * + * \param conf SSL configuration + * \param f_psk PSK identity function + * \param p_psk PSK identity parameter + */ +void mbedtls_ssl_conf_psk_cb( mbedtls_ssl_config *conf, + int (*f_psk)(void *, mbedtls_ssl_context *, const unsigned char *, + size_t), + void *p_psk ); +#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ + +#if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_SRV_C) +/** + * \brief Set the Diffie-Hellman public P and G values, + * read as hexadecimal strings (server-side only) + * (Default: MBEDTLS_DHM_RFC5114_MODP_2048_[PG]) + * + * \param conf SSL configuration + * \param dhm_P Diffie-Hellman-Merkle modulus + * \param dhm_G Diffie-Hellman-Merkle generator + * + * \return 0 if successful + */ +int mbedtls_ssl_conf_dh_param( mbedtls_ssl_config *conf, const char *dhm_P, const char *dhm_G ); + +/** + * \brief Set the Diffie-Hellman public P and G values, + * read from existing context (server-side only) + * + * \param conf SSL configuration + * \param dhm_ctx Diffie-Hellman-Merkle context + * + * \return 0 if successful + */ +int mbedtls_ssl_conf_dh_param_ctx( mbedtls_ssl_config *conf, mbedtls_dhm_context *dhm_ctx ); +#endif /* MBEDTLS_DHM_C && defined(MBEDTLS_SSL_SRV_C) */ + +#if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_CLI_C) +/** + * \brief Set the minimum length for Diffie-Hellman parameters. + * (Client-side only.) + * (Default: 1024 bits.) + * + * \param conf SSL configuration + * \param bitlen Minimum bit length of the DHM prime + */ +void mbedtls_ssl_conf_dhm_min_bitlen( mbedtls_ssl_config *conf, + unsigned int bitlen ); +#endif /* MBEDTLS_DHM_C && MBEDTLS_SSL_CLI_C */ + +#if defined(MBEDTLS_ECP_C) +/** + * \brief Set the allowed curves in order of preference. + * (Default: all defined curves.) + * + * On server: this only affects selection of the ECDHE curve; + * the curves used for ECDH and ECDSA are determined by the + * list of available certificates instead. + * + * On client: this affects the list of curves offered for any + * use. The server can override our preference order. + * + * Both sides: limits the set of curves accepted for use in + * ECDHE and in the peer's end-entity certificate. + * + * \note This has no influence on which curves are allowed inside the + * certificate chains, see \c mbedtls_ssl_conf_cert_profile() + * for that. For the end-entity certificate however, the key + * will be accepted only if it is allowed both by this list + * and by the cert profile. + * + * \note This list should be ordered by decreasing preference + * (preferred curve first). + * + * \param conf SSL configuration + * \param curves Ordered list of allowed curves, + * terminated by MBEDTLS_ECP_DP_NONE. + */ +void mbedtls_ssl_conf_curves( mbedtls_ssl_config *conf, + const mbedtls_ecp_group_id *curves ); +#endif /* MBEDTLS_ECP_C */ + +#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +/** + * \brief Set the allowed hashes for signatures during the handshake. + * (Default: all available hashes except MD5.) + * + * \note This only affects which hashes are offered and can be used + * for signatures during the handshake. Hashes for message + * authentication and the TLS PRF are controlled by the + * ciphersuite, see \c mbedtls_ssl_conf_ciphersuites(). Hashes + * used for certificate signature are controlled by the + * verification profile, see \c mbedtls_ssl_conf_cert_profile(). + * + * \note This list should be ordered by decreasing preference + * (preferred hash first). + * + * \param conf SSL configuration + * \param hashes Ordered list of allowed signature hashes, + * terminated by \c MBEDTLS_MD_NONE. + */ +void mbedtls_ssl_conf_sig_hashes( mbedtls_ssl_config *conf, + const int *hashes ); +#endif /* MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +/** + * \brief Set the hostname to check against the received server + * certificate. It sets the ServerName TLS extension too, + * if the extension is enabled. + * (client-side only) + * + * \param ssl SSL context + * \param hostname the server hostname + * + * \return 0 if successful or MBEDTLS_ERR_SSL_ALLOC_FAILED + */ +int mbedtls_ssl_set_hostname( mbedtls_ssl_context *ssl, const char *hostname ); +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) +/** + * \brief Set own certificate and key for the current handshake + * + * \note Same as \c mbedtls_ssl_conf_own_cert() but for use within + * the SNI callback. + * + * \param ssl SSL context + * \param own_cert own public certificate chain + * \param pk_key own private key + * + * \return 0 on success or MBEDTLS_ERR_SSL_ALLOC_FAILED + */ +int mbedtls_ssl_set_hs_own_cert( mbedtls_ssl_context *ssl, + mbedtls_x509_crt *own_cert, + mbedtls_pk_context *pk_key ); + +/** + * \brief Set the data required to verify peer certificate for the + * current handshake + * + * \note Same as \c mbedtls_ssl_conf_ca_chain() but for use within + * the SNI callback. + * + * \param ssl SSL context + * \param ca_chain trusted CA chain (meaning all fully trusted top-level CAs) + * \param ca_crl trusted CA CRLs + */ +void mbedtls_ssl_set_hs_ca_chain( mbedtls_ssl_context *ssl, + mbedtls_x509_crt *ca_chain, + mbedtls_x509_crl *ca_crl ); + +/** + * \brief Set authmode for the current handshake. + * + * \note Same as \c mbedtls_ssl_conf_authmode() but for use within + * the SNI callback. + * + * \param ssl SSL context + * \param authmode MBEDTLS_SSL_VERIFY_NONE, MBEDTLS_SSL_VERIFY_OPTIONAL or + * MBEDTLS_SSL_VERIFY_REQUIRED + */ +void mbedtls_ssl_set_hs_authmode( mbedtls_ssl_context *ssl, + int authmode ); + +/** + * \brief Set server side ServerName TLS extension callback + * (optional, server-side only). + * + * If set, the ServerName callback is called whenever the + * server receives a ServerName TLS extension from the client + * during a handshake. The ServerName callback has the + * following parameters: (void *parameter, mbedtls_ssl_context *ssl, + * const unsigned char *hostname, size_t len). If a suitable + * certificate is found, the callback must set the + * certificate(s) and key(s) to use with \c + * mbedtls_ssl_set_hs_own_cert() (can be called repeatedly), + * and may optionally adjust the CA and associated CRL with \c + * mbedtls_ssl_set_hs_ca_chain() as well as the client + * authentication mode with \c mbedtls_ssl_set_hs_authmode(), + * then must return 0. If no matching name is found, the + * callback must either set a default cert, or + * return non-zero to abort the handshake at this point. + * + * \param conf SSL configuration + * \param f_sni verification function + * \param p_sni verification parameter + */ +void mbedtls_ssl_conf_sni( mbedtls_ssl_config *conf, + int (*f_sni)(void *, mbedtls_ssl_context *, const unsigned char *, + size_t), + void *p_sni ); +#endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ + +#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) +/** + * \brief Set the EC J-PAKE password for current handshake. + * + * \note An internal copy is made, and destroyed as soon as the + * handshake is completed, or when the SSL context is reset or + * freed. + * + * \note The SSL context needs to be already set up. The right place + * to call this function is between \c mbedtls_ssl_setup() or + * \c mbedtls_ssl_reset() and \c mbedtls_ssl_handshake(). + * + * \param ssl SSL context + * \param pw EC J-PAKE password (pre-shared secret) + * \param pw_len length of pw in bytes + * + * \return 0 on success, or a negative error code. + */ +int mbedtls_ssl_set_hs_ecjpake_password( mbedtls_ssl_context *ssl, + const unsigned char *pw, + size_t pw_len ); +#endif /*MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */ + +#if defined(MBEDTLS_SSL_ALPN) +/** + * \brief Set the supported Application Layer Protocols. + * + * \param conf SSL configuration + * \param protos Pointer to a NULL-terminated list of supported protocols, + * in decreasing preference order. The pointer to the list is + * recorded by the library for later reference as required, so + * the lifetime of the table must be atleast as long as the + * lifetime of the SSL configuration structure. + * + * \return 0 on success, or MBEDTLS_ERR_SSL_BAD_INPUT_DATA. + */ +int mbedtls_ssl_conf_alpn_protocols( mbedtls_ssl_config *conf, const char **protos ); + +/** + * \brief Get the name of the negotiated Application Layer Protocol. + * This function should be called after the handshake is + * completed. + * + * \param ssl SSL context + * + * \return Protcol name, or NULL if no protocol was negotiated. + */ +const char *mbedtls_ssl_get_alpn_protocol( const mbedtls_ssl_context *ssl ); +#endif /* MBEDTLS_SSL_ALPN */ + +/** + * \brief Set the maximum supported version sent from the client side + * and/or accepted at the server side + * (Default: MBEDTLS_SSL_MAX_MAJOR_VERSION, MBEDTLS_SSL_MAX_MINOR_VERSION) + * + * \note This ignores ciphersuites from higher versions. + * + * \note With DTLS, use MBEDTLS_SSL_MINOR_VERSION_2 for DTLS 1.0 and + * MBEDTLS_SSL_MINOR_VERSION_3 for DTLS 1.2 + * + * \param conf SSL configuration + * \param major Major version number (only MBEDTLS_SSL_MAJOR_VERSION_3 supported) + * \param minor Minor version number (MBEDTLS_SSL_MINOR_VERSION_0, + * MBEDTLS_SSL_MINOR_VERSION_1 and MBEDTLS_SSL_MINOR_VERSION_2, + * MBEDTLS_SSL_MINOR_VERSION_3 supported) + */ +void mbedtls_ssl_conf_max_version( mbedtls_ssl_config *conf, int major, int minor ); + +/** + * \brief Set the minimum accepted SSL/TLS protocol version + * (Default: TLS 1.0) + * + * \note Input outside of the SSL_MAX_XXXXX_VERSION and + * SSL_MIN_XXXXX_VERSION range is ignored. + * + * \note MBEDTLS_SSL_MINOR_VERSION_0 (SSL v3) should be avoided. + * + * \note With DTLS, use MBEDTLS_SSL_MINOR_VERSION_2 for DTLS 1.0 and + * MBEDTLS_SSL_MINOR_VERSION_3 for DTLS 1.2 + * + * \param conf SSL configuration + * \param major Major version number (only MBEDTLS_SSL_MAJOR_VERSION_3 supported) + * \param minor Minor version number (MBEDTLS_SSL_MINOR_VERSION_0, + * MBEDTLS_SSL_MINOR_VERSION_1 and MBEDTLS_SSL_MINOR_VERSION_2, + * MBEDTLS_SSL_MINOR_VERSION_3 supported) + */ +void mbedtls_ssl_conf_min_version( mbedtls_ssl_config *conf, int major, int minor ); + +#if defined(MBEDTLS_SSL_FALLBACK_SCSV) && defined(MBEDTLS_SSL_CLI_C) +/** + * \brief Set the fallback flag (client-side only). + * (Default: MBEDTLS_SSL_IS_NOT_FALLBACK). + * + * \note Set to MBEDTLS_SSL_IS_FALLBACK when preparing a fallback + * connection, that is a connection with max_version set to a + * lower value than the value you're willing to use. Such + * fallback connections are not recommended but are sometimes + * necessary to interoperate with buggy (version-intolerant) + * servers. + * + * \warning You should NOT set this to MBEDTLS_SSL_IS_FALLBACK for + * non-fallback connections! This would appear to work for a + * while, then cause failures when the server is upgraded to + * support a newer TLS version. + * + * \param conf SSL configuration + * \param fallback MBEDTLS_SSL_IS_NOT_FALLBACK or MBEDTLS_SSL_IS_FALLBACK + */ +void mbedtls_ssl_conf_fallback( mbedtls_ssl_config *conf, char fallback ); +#endif /* MBEDTLS_SSL_FALLBACK_SCSV && MBEDTLS_SSL_CLI_C */ + +#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) +/** + * \brief Enable or disable Encrypt-then-MAC + * (Default: MBEDTLS_SSL_ETM_ENABLED) + * + * \note This should always be enabled, it is a security + * improvement, and should not cause any interoperability + * issue (used only if the peer supports it too). + * + * \param conf SSL configuration + * \param etm MBEDTLS_SSL_ETM_ENABLED or MBEDTLS_SSL_ETM_DISABLED + */ +void mbedtls_ssl_conf_encrypt_then_mac( mbedtls_ssl_config *conf, char etm ); +#endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */ + +#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) +/** + * \brief Enable or disable Extended Master Secret negotiation. + * (Default: MBEDTLS_SSL_EXTENDED_MS_ENABLED) + * + * \note This should always be enabled, it is a security fix to the + * protocol, and should not cause any interoperability issue + * (used only if the peer supports it too). + * + * \param conf SSL configuration + * \param ems MBEDTLS_SSL_EXTENDED_MS_ENABLED or MBEDTLS_SSL_EXTENDED_MS_DISABLED + */ +void mbedtls_ssl_conf_extended_master_secret( mbedtls_ssl_config *conf, char ems ); +#endif /* MBEDTLS_SSL_EXTENDED_MASTER_SECRET */ + +#if defined(MBEDTLS_ARC4_C) +/** + * \brief Disable or enable support for RC4 + * (Default: MBEDTLS_SSL_ARC4_DISABLED) + * + * \warning Use of RC4 in DTLS/TLS has been prohibited by RFC 7465 + * for security reasons. Use at your own risk. + * + * \note This function is deprecated and will likely be removed in + * a future version of the library. + * RC4 is disabled by default at compile time and needs to be + * actively enabled for use with legacy systems. + * + * \param conf SSL configuration + * \param arc4 MBEDTLS_SSL_ARC4_ENABLED or MBEDTLS_SSL_ARC4_DISABLED + */ +void mbedtls_ssl_conf_arc4_support( mbedtls_ssl_config *conf, char arc4 ); +#endif /* MBEDTLS_ARC4_C */ + +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) +/** + * \brief Set the maximum fragment length to emit and/or negotiate + * (Default: MBEDTLS_SSL_MAX_CONTENT_LEN, usually 2^14 bytes) + * (Server: set maximum fragment length to emit, + * usually negotiated by the client during handshake + * (Client: set maximum fragment length to emit *and* + * negotiate with the server during handshake) + * + * \param conf SSL configuration + * \param mfl_code Code for maximum fragment length (allowed values: + * MBEDTLS_SSL_MAX_FRAG_LEN_512, MBEDTLS_SSL_MAX_FRAG_LEN_1024, + * MBEDTLS_SSL_MAX_FRAG_LEN_2048, MBEDTLS_SSL_MAX_FRAG_LEN_4096) + * + * \return 0 if successful or MBEDTLS_ERR_SSL_BAD_INPUT_DATA + */ +int mbedtls_ssl_conf_max_frag_len( mbedtls_ssl_config *conf, unsigned char mfl_code ); +#endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ + +#if defined(MBEDTLS_SSL_TRUNCATED_HMAC) +/** + * \brief Activate negotiation of truncated HMAC + * (Default: MBEDTLS_SSL_TRUNC_HMAC_DISABLED) + * + * \param conf SSL configuration + * \param truncate Enable or disable (MBEDTLS_SSL_TRUNC_HMAC_ENABLED or + * MBEDTLS_SSL_TRUNC_HMAC_DISABLED) + */ +void mbedtls_ssl_conf_truncated_hmac( mbedtls_ssl_config *conf, int truncate ); +#endif /* MBEDTLS_SSL_TRUNCATED_HMAC */ + +#if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) +/** + * \brief Enable / Disable 1/n-1 record splitting + * (Default: MBEDTLS_SSL_CBC_RECORD_SPLITTING_ENABLED) + * + * \note Only affects SSLv3 and TLS 1.0, not higher versions. + * Does not affect non-CBC ciphersuites in any version. + * + * \param conf SSL configuration + * \param split MBEDTLS_SSL_CBC_RECORD_SPLITTING_ENABLED or + * MBEDTLS_SSL_CBC_RECORD_SPLITTING_DISABLED + */ +void mbedtls_ssl_conf_cbc_record_splitting( mbedtls_ssl_config *conf, char split ); +#endif /* MBEDTLS_SSL_CBC_RECORD_SPLITTING */ + +#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C) +/** + * \brief Enable / Disable session tickets (client only). + * (Default: MBEDTLS_SSL_SESSION_TICKETS_ENABLED.) + * + * \note On server, use \c mbedtls_ssl_conf_session_tickets_cb(). + * + * \param conf SSL configuration + * \param use_tickets Enable or disable (MBEDTLS_SSL_SESSION_TICKETS_ENABLED or + * MBEDTLS_SSL_SESSION_TICKETS_DISABLED) + */ +void mbedtls_ssl_conf_session_tickets( mbedtls_ssl_config *conf, int use_tickets ); +#endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_CLI_C */ + +#if defined(MBEDTLS_SSL_RENEGOTIATION) +/** + * \brief Enable / Disable renegotiation support for connection when + * initiated by peer + * (Default: MBEDTLS_SSL_RENEGOTIATION_DISABLED) + * + * \warning It is recommended to always disable renegotation unless you + * know you need it and you know what you're doing. In the + * past, there have been several issues associated with + * renegotiation or a poor understanding of its properties. + * + * \note Server-side, enabling renegotiation also makes the server + * susceptible to a resource DoS by a malicious client. + * + * \param conf SSL configuration + * \param renegotiation Enable or disable (MBEDTLS_SSL_RENEGOTIATION_ENABLED or + * MBEDTLS_SSL_RENEGOTIATION_DISABLED) + */ +void mbedtls_ssl_conf_renegotiation( mbedtls_ssl_config *conf, int renegotiation ); +#endif /* MBEDTLS_SSL_RENEGOTIATION */ + +/** + * \brief Prevent or allow legacy renegotiation. + * (Default: MBEDTLS_SSL_LEGACY_NO_RENEGOTIATION) + * + * MBEDTLS_SSL_LEGACY_NO_RENEGOTIATION allows connections to + * be established even if the peer does not support + * secure renegotiation, but does not allow renegotiation + * to take place if not secure. + * (Interoperable and secure option) + * + * MBEDTLS_SSL_LEGACY_ALLOW_RENEGOTIATION allows renegotiations + * with non-upgraded peers. Allowing legacy renegotiation + * makes the connection vulnerable to specific man in the + * middle attacks. (See RFC 5746) + * (Most interoperable and least secure option) + * + * MBEDTLS_SSL_LEGACY_BREAK_HANDSHAKE breaks off connections + * if peer does not support secure renegotiation. Results + * in interoperability issues with non-upgraded peers + * that do not support renegotiation altogether. + * (Most secure option, interoperability issues) + * + * \param conf SSL configuration + * \param allow_legacy Prevent or allow (SSL_NO_LEGACY_RENEGOTIATION, + * SSL_ALLOW_LEGACY_RENEGOTIATION or + * MBEDTLS_SSL_LEGACY_BREAK_HANDSHAKE) + */ +void mbedtls_ssl_conf_legacy_renegotiation( mbedtls_ssl_config *conf, int allow_legacy ); + +#if defined(MBEDTLS_SSL_RENEGOTIATION) +/** + * \brief Enforce renegotiation requests. + * (Default: enforced, max_records = 16) + * + * When we request a renegotiation, the peer can comply or + * ignore the request. This function allows us to decide + * whether to enforce our renegotiation requests by closing + * the connection if the peer doesn't comply. + * + * However, records could already be in transit from the peer + * when the request is emitted. In order to increase + * reliability, we can accept a number of records before the + * expected handshake records. + * + * The optimal value is highly dependent on the specific usage + * scenario. + * + * \note With DTLS and server-initiated renegotiation, the + * HelloRequest is retransmited every time mbedtls_ssl_read() times + * out or receives Application Data, until: + * - max_records records have beens seen, if it is >= 0, or + * - the number of retransmits that would happen during an + * actual handshake has been reached. + * Please remember the request might be lost a few times + * if you consider setting max_records to a really low value. + * + * \warning On client, the grace period can only happen during + * mbedtls_ssl_read(), as opposed to mbedtls_ssl_write() and mbedtls_ssl_renegotiate() + * which always behave as if max_record was 0. The reason is, + * if we receive application data from the server, we need a + * place to write it, which only happens during mbedtls_ssl_read(). + * + * \param conf SSL configuration + * \param max_records Use MBEDTLS_SSL_RENEGOTIATION_NOT_ENFORCED if you don't want to + * enforce renegotiation, or a non-negative value to enforce + * it but allow for a grace period of max_records records. + */ +void mbedtls_ssl_conf_renegotiation_enforced( mbedtls_ssl_config *conf, int max_records ); + +/** + * \brief Set record counter threshold for periodic renegotiation. + * (Default: 2^48 - 1) + * + * Renegotiation is automatically triggered when a record + * counter (outgoing or ingoing) crosses the defined + * threshold. The default value is meant to prevent the + * connection from being closed when the counter is about to + * reached its maximal value (it is not allowed to wrap). + * + * Lower values can be used to enforce policies such as "keys + * must be refreshed every N packets with cipher X". + * + * The renegotiation period can be disabled by setting + * conf->disable_renegotiation to + * MBEDTLS_SSL_RENEGOTIATION_DISABLED. + * + * \note When the configured transport is + * MBEDTLS_SSL_TRANSPORT_DATAGRAM the maximum renegotiation + * period is 2^48 - 1, and for MBEDTLS_SSL_TRANSPORT_STREAM, + * the maximum renegotiation period is 2^64 - 1. + * + * \param conf SSL configuration + * \param period The threshold value: a big-endian 64-bit number. + */ +void mbedtls_ssl_conf_renegotiation_period( mbedtls_ssl_config *conf, + const unsigned char period[8] ); +#endif /* MBEDTLS_SSL_RENEGOTIATION */ + +/** + * \brief Return the number of data bytes available to read + * + * \param ssl SSL context + * + * \return how many bytes are available in the read buffer + */ +size_t mbedtls_ssl_get_bytes_avail( const mbedtls_ssl_context *ssl ); + +/** + * \brief Return the result of the certificate verification + * + * \param ssl SSL context + * + * \return 0 if successful, + * -1 if result is not available (eg because the handshake was + * aborted too early), or + * a combination of BADCERT_xxx and BADCRL_xxx flags, see + * x509.h + */ +uint32_t mbedtls_ssl_get_verify_result( const mbedtls_ssl_context *ssl ); + +/** + * \brief Return the name of the current ciphersuite + * + * \param ssl SSL context + * + * \return a string containing the ciphersuite name + */ +const char *mbedtls_ssl_get_ciphersuite( const mbedtls_ssl_context *ssl ); + +/** + * \brief Return the current SSL version (SSLv3/TLSv1/etc) + * + * \param ssl SSL context + * + * \return a string containing the SSL version + */ +const char *mbedtls_ssl_get_version( const mbedtls_ssl_context *ssl ); + +/** + * \brief Return the (maximum) number of bytes added by the record + * layer: header + encryption/MAC overhead (inc. padding) + * + * \param ssl SSL context + * + * \return Current maximum record expansion in bytes, or + * MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE if compression is + * enabled, which makes expansion much less predictable + */ +int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ); + +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) +/** + * \brief Return the maximum fragment length (payload, in bytes). + * This is the value negotiated with peer if any, + * or the locally configured value. + * + * \note With DTLS, \c mbedtls_ssl_write() will return an error if + * called with a larger length value. + * With TLS, \c mbedtls_ssl_write() will fragment the input if + * necessary and return the number of bytes written; it is up + * to the caller to call \c mbedtls_ssl_write() again in + * order to send the remaining bytes if any. + * + * \param ssl SSL context + * + * \return Current maximum fragment length. + */ +size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ); +#endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +/** + * \brief Return the peer certificate from the current connection + * + * Note: Can be NULL in case no certificate was sent during + * the handshake. Different calls for the same connection can + * return the same or different pointers for the same + * certificate and even a different certificate altogether. + * The peer cert CAN change in a single connection if + * renegotiation is performed. + * + * \param ssl SSL context + * + * \return the current peer certificate + */ +const mbedtls_x509_crt *mbedtls_ssl_get_peer_cert( const mbedtls_ssl_context *ssl ); +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +#if defined(MBEDTLS_SSL_CLI_C) +/** + * \brief Save session in order to resume it later (client-side only) + * Session data is copied to presented session structure. + * + * \warning Currently, peer certificate is lost in the operation. + * + * \param ssl SSL context + * \param session session context + * + * \return 0 if successful, + * MBEDTLS_ERR_SSL_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_SSL_BAD_INPUT_DATA if used server-side or + * arguments are otherwise invalid + * + * \sa mbedtls_ssl_set_session() + */ +int mbedtls_ssl_get_session( const mbedtls_ssl_context *ssl, mbedtls_ssl_session *session ); +#endif /* MBEDTLS_SSL_CLI_C */ + +/** + * \brief Perform the SSL handshake + * + * \param ssl SSL context + * + * \return 0 if successful, or + * MBEDTLS_ERR_SSL_WANT_READ or MBEDTLS_ERR_SSL_WANT_WRITE, or + * MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED (see below), or + * a specific SSL error code. + * + * \note If this function returns something other than 0 or + * MBEDTLS_ERR_SSL_WANT_READ/WRITE, then the ssl context + * becomes unusable, and you should either free it or call + * \c mbedtls_ssl_session_reset() on it before re-using it for + * a new connection; the current connection must be closed. + * + * \note If DTLS is in use, then you may choose to handle + * MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED specially for logging + * purposes, as it is an expected return value rather than an + * actual error, but you still need to reset/free the context. + */ +int mbedtls_ssl_handshake( mbedtls_ssl_context *ssl ); + +/** + * \brief Perform a single step of the SSL handshake + * + * \note The state of the context (ssl->state) will be at + * the next state after execution of this function. Do not + * call this function if state is MBEDTLS_SSL_HANDSHAKE_OVER. + * + * \note If this function returns something other than 0 or + * MBEDTLS_ERR_SSL_WANT_READ/WRITE, then the ssl context + * becomes unusable, and you should either free it or call + * \c mbedtls_ssl_session_reset() on it before re-using it for + * a new connection; the current connection must be closed. + * + * \param ssl SSL context + * + * \return 0 if successful, or + * MBEDTLS_ERR_SSL_WANT_READ or MBEDTLS_ERR_SSL_WANT_WRITE, or + * a specific SSL error code. + */ +int mbedtls_ssl_handshake_step( mbedtls_ssl_context *ssl ); + +#if defined(MBEDTLS_SSL_RENEGOTIATION) +/** + * \brief Initiate an SSL renegotiation on the running connection. + * Client: perform the renegotiation right now. + * Server: request renegotiation, which will be performed + * during the next call to mbedtls_ssl_read() if honored by + * client. + * + * \param ssl SSL context + * + * \return 0 if successful, or any mbedtls_ssl_handshake() return + * value. + * + * \note If this function returns something other than 0 or + * MBEDTLS_ERR_SSL_WANT_READ/WRITE, then the ssl context + * becomes unusable, and you should either free it or call + * \c mbedtls_ssl_session_reset() on it before re-using it for + * a new connection; the current connection must be closed. + */ +int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ); +#endif /* MBEDTLS_SSL_RENEGOTIATION */ + +/** + * \brief Read at most 'len' application data bytes + * + * \param ssl SSL context + * \param buf buffer that will hold the data + * \param len maximum number of bytes to read + * + * \return the number of bytes read, or + * 0 for EOF, or + * MBEDTLS_ERR_SSL_WANT_READ or MBEDTLS_ERR_SSL_WANT_WRITE, or + * MBEDTLS_ERR_SSL_CLIENT_RECONNECT (see below), or + * another negative error code. + * + * \note If this function returns something other than a positive + * value or MBEDTLS_ERR_SSL_WANT_READ/WRITE or + * MBEDTLS_ERR_SSL_CLIENT_RECONNECT, then the ssl context + * becomes unusable, and you should either free it or call + * \c mbedtls_ssl_session_reset() on it before re-using it for + * a new connection; the current connection must be closed. + * + * \note When this function return MBEDTLS_ERR_SSL_CLIENT_RECONNECT + * (which can only happen server-side), it means that a client + * is initiating a new connection using the same source port. + * You can either treat that as a connection close and wait + * for the client to resend a ClientHello, or directly + * continue with \c mbedtls_ssl_handshake() with the same + * context (as it has beeen reset internally). Either way, you + * should make sure this is seen by the application as a new + * connection: application state, if any, should be reset, and + * most importantly the identity of the client must be checked + * again. WARNING: not validating the identity of the client + * again, or not transmitting the new identity to the + * application layer, would allow authentication bypass! + */ +int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ); + +/** + * \brief Try to write exactly 'len' application data bytes + * + * \warning This function will do partial writes in some cases. If the + * return value is non-negative but less than length, the + * function must be called again with updated arguments: + * buf + ret, len - ret (if ret is the return value) until + * it returns a value equal to the last 'len' argument. + * + * \param ssl SSL context + * \param buf buffer holding the data + * \param len how many bytes must be written + * + * \return the number of bytes actually written (may be less than len), + * or MBEDTLS_ERR_SSL_WANT_WRITE or MBEDTLS_ERR_SSL_WANT_READ, + * or another negative error code. + * + * \note If this function returns something other than a positive + * value or MBEDTLS_ERR_SSL_WANT_READ/WRITE, the ssl context + * becomes unusable, and you should either free it or call + * \c mbedtls_ssl_session_reset() on it before re-using it for + * a new connection; the current connection must be closed. + * + * \note When this function returns MBEDTLS_ERR_SSL_WANT_WRITE/READ, + * it must be called later with the *same* arguments, + * until it returns a positive value. + * + * \note If the requested length is greater than the maximum + * fragment length (either the built-in limit or the one set + * or negotiated with the peer), then: + * - with TLS, less bytes than requested are written. + * - with DTLS, MBEDTLS_ERR_SSL_BAD_INPUT_DATA is returned. + * \c mbedtls_ssl_get_max_frag_len() may be used to query the + * active maximum fragment length. + */ +int mbedtls_ssl_write( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ); + +/** + * \brief Send an alert message + * + * \param ssl SSL context + * \param level The alert level of the message + * (MBEDTLS_SSL_ALERT_LEVEL_WARNING or MBEDTLS_SSL_ALERT_LEVEL_FATAL) + * \param message The alert message (SSL_ALERT_MSG_*) + * + * \return 0 if successful, or a specific SSL error code. + * + * \note If this function returns something other than 0 or + * MBEDTLS_ERR_SSL_WANT_READ/WRITE, then the ssl context + * becomes unusable, and you should either free it or call + * \c mbedtls_ssl_session_reset() on it before re-using it for + * a new connection; the current connection must be closed. + */ +int mbedtls_ssl_send_alert_message( mbedtls_ssl_context *ssl, + unsigned char level, + unsigned char message ); +/** + * \brief Notify the peer that the connection is being closed + * + * \param ssl SSL context + * + * \return 0 if successful, or a specific SSL error code. + * + * \note If this function returns something other than 0 or + * MBEDTLS_ERR_SSL_WANT_READ/WRITE, then the ssl context + * becomes unusable, and you should either free it or call + * \c mbedtls_ssl_session_reset() on it before re-using it for + * a new connection; the current connection must be closed. + */ +int mbedtls_ssl_close_notify( mbedtls_ssl_context *ssl ); + +/** + * \brief Free referenced items in an SSL context and clear memory + * + * \param ssl SSL context + */ +void mbedtls_ssl_free( mbedtls_ssl_context *ssl ); + +/** + * \brief Initialize an SSL configuration context + * Just makes the context ready for + * mbedtls_ssl_config_defaults() or mbedtls_ssl_config_free(). + * + * \note You need to call mbedtls_ssl_config_defaults() unless you + * manually set all of the relevent fields yourself. + * + * \param conf SSL configuration context + */ +void mbedtls_ssl_config_init( mbedtls_ssl_config *conf ); + +/** + * \brief Load reasonnable default SSL configuration values. + * (You need to call mbedtls_ssl_config_init() first.) + * + * \param conf SSL configuration context + * \param endpoint MBEDTLS_SSL_IS_CLIENT or MBEDTLS_SSL_IS_SERVER + * \param transport MBEDTLS_SSL_TRANSPORT_STREAM for TLS, or + * MBEDTLS_SSL_TRANSPORT_DATAGRAM for DTLS + * \param preset a MBEDTLS_SSL_PRESET_XXX value + * + * \note See \c mbedtls_ssl_conf_transport() for notes on DTLS. + * + * \return 0 if successful, or + * MBEDTLS_ERR_XXX_ALLOC_FAILED on memory allocation error. + */ +int mbedtls_ssl_config_defaults( mbedtls_ssl_config *conf, + int endpoint, int transport, int preset ); + +/** + * \brief Free an SSL configuration context + * + * \param conf SSL configuration context + */ +void mbedtls_ssl_config_free( mbedtls_ssl_config *conf ); + +/** + * \brief Initialize SSL session structure + * + * \param session SSL session + */ +void mbedtls_ssl_session_init( mbedtls_ssl_session *session ); + +/** + * \brief Free referenced items in an SSL session including the + * peer certificate and clear memory + * + * \param session SSL session + */ +void mbedtls_ssl_session_free( mbedtls_ssl_session *session ); + +#ifdef __cplusplus +} +#endif + +#endif /* ssl.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_cache.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_cache.h new file mode 100644 index 0000000..3734bb7 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_cache.h @@ -0,0 +1,143 @@ +/** + * \file ssl_cache.h + * + * \brief SSL session cache implementation + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SSL_CACHE_H +#define MBEDTLS_SSL_CACHE_H + +#include "ssl.h" + +#if defined(MBEDTLS_THREADING_C) +#include "threading.h" +#endif + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ + +#if !defined(MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT) +#define MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT 86400 /*!< 1 day */ +#endif + +#if !defined(MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES) +#define MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /*!< Maximum entries in cache */ +#endif + +/* \} name SECTION: Module settings */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct mbedtls_ssl_cache_context mbedtls_ssl_cache_context; +typedef struct mbedtls_ssl_cache_entry mbedtls_ssl_cache_entry; + +/** + * \brief This structure is used for storing cache entries + */ +struct mbedtls_ssl_cache_entry +{ +#if defined(MBEDTLS_HAVE_TIME) + mbedtls_time_t timestamp; /*!< entry timestamp */ +#endif + mbedtls_ssl_session session; /*!< entry session */ +#if defined(MBEDTLS_X509_CRT_PARSE_C) + mbedtls_x509_buf peer_cert; /*!< entry peer_cert */ +#endif + mbedtls_ssl_cache_entry *next; /*!< chain pointer */ +}; + +/** + * \brief Cache context + */ +struct mbedtls_ssl_cache_context +{ + mbedtls_ssl_cache_entry *chain; /*!< start of the chain */ + int timeout; /*!< cache entry timeout */ + int max_entries; /*!< maximum entries */ +#if defined(MBEDTLS_THREADING_C) + mbedtls_threading_mutex_t mutex; /*!< mutex */ +#endif +}; + +/** + * \brief Initialize an SSL cache context + * + * \param cache SSL cache context + */ +void mbedtls_ssl_cache_init( mbedtls_ssl_cache_context *cache ); + +/** + * \brief Cache get callback implementation + * (Thread-safe if MBEDTLS_THREADING_C is enabled) + * + * \param data SSL cache context + * \param session session to retrieve entry for + */ +int mbedtls_ssl_cache_get( void *data, mbedtls_ssl_session *session ); + +/** + * \brief Cache set callback implementation + * (Thread-safe if MBEDTLS_THREADING_C is enabled) + * + * \param data SSL cache context + * \param session session to store entry for + */ +int mbedtls_ssl_cache_set( void *data, const mbedtls_ssl_session *session ); + +#if defined(MBEDTLS_HAVE_TIME) +/** + * \brief Set the cache timeout + * (Default: MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT (1 day)) + * + * A timeout of 0 indicates no timeout. + * + * \param cache SSL cache context + * \param timeout cache entry timeout in seconds + */ +void mbedtls_ssl_cache_set_timeout( mbedtls_ssl_cache_context *cache, int timeout ); +#endif /* MBEDTLS_HAVE_TIME */ + +/** + * \brief Set the maximum number of cache entries + * (Default: MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES (50)) + * + * \param cache SSL cache context + * \param max cache entry maximum + */ +void mbedtls_ssl_cache_set_max_entries( mbedtls_ssl_cache_context *cache, int max ); + +/** + * \brief Free referenced items in a cache context and clear memory + * + * \param cache SSL cache context + */ +void mbedtls_ssl_cache_free( mbedtls_ssl_cache_context *cache ); + +#ifdef __cplusplus +} +#endif + +#endif /* ssl_cache.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_ciphersuites.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_ciphersuites.h new file mode 100644 index 0000000..deaaa37 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_ciphersuites.h @@ -0,0 +1,321 @@ +/** + * \file ssl_ciphersuites.h + * + * \brief SSL Ciphersuites for mbed TLS + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SSL_CIPHERSUITES_H +#define MBEDTLS_SSL_CIPHERSUITES_H + +#include "pk.h" +#include "cipher.h" +#include "md.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Supported ciphersuites (Official IANA names) + */ +#define MBEDTLS_TLS_RSA_WITH_NULL_MD5 0x01 /**< Weak! */ +#define MBEDTLS_TLS_RSA_WITH_NULL_SHA 0x02 /**< Weak! */ + +#define MBEDTLS_TLS_RSA_WITH_RC4_128_MD5 0x04 +#define MBEDTLS_TLS_RSA_WITH_RC4_128_SHA 0x05 +#define MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA 0x09 /**< Weak! Not in TLS 1.2 */ + +#define MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA 0x0A + +#define MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA 0x15 /**< Weak! Not in TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA 0x16 + +#define MBEDTLS_TLS_PSK_WITH_NULL_SHA 0x2C /**< Weak! */ +#define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA 0x2D /**< Weak! */ +#define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA 0x2E /**< Weak! */ +#define MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA 0x2F + +#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA 0x33 +#define MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA 0x35 +#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA 0x39 + +#define MBEDTLS_TLS_RSA_WITH_NULL_SHA256 0x3B /**< Weak! */ +#define MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256 0x3C /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256 0x3D /**< TLS 1.2 */ + +#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA 0x41 +#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x45 + +#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 0x67 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 0x6B /**< TLS 1.2 */ + +#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA 0x84 +#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x88 + +#define MBEDTLS_TLS_PSK_WITH_RC4_128_SHA 0x8A +#define MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA 0x8B +#define MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA 0x8C +#define MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA 0x8D + +#define MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA 0x8E +#define MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x8F +#define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA 0x90 +#define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA 0x91 + +#define MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA 0x92 +#define MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x93 +#define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA 0x94 +#define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA 0x95 + +#define MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256 0x9C /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 0x9D /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 0x9E /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 0x9F /**< TLS 1.2 */ + +#define MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256 0xA8 /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384 0xA9 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 0xAA /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 0xAB /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 0xAC /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 0xAD /**< TLS 1.2 */ + +#define MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256 0xAE +#define MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384 0xAF +#define MBEDTLS_TLS_PSK_WITH_NULL_SHA256 0xB0 /**< Weak! */ +#define MBEDTLS_TLS_PSK_WITH_NULL_SHA384 0xB1 /**< Weak! */ + +#define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 0xB2 +#define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 0xB3 +#define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256 0xB4 /**< Weak! */ +#define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384 0xB5 /**< Weak! */ + +#define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 0xB6 +#define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 0xB7 +#define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256 0xB8 /**< Weak! */ +#define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384 0xB9 /**< Weak! */ + +#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBA /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBE /**< TLS 1.2 */ + +#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC0 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC4 /**< TLS 1.2 */ + +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA 0xC001 /**< Weak! */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA 0xC002 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA 0xC003 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0xC004 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0xC005 /**< Not in SSL3! */ + +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA 0xC006 /**< Weak! */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA 0xC007 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA 0xC008 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0xC009 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0xC00A /**< Not in SSL3! */ + +#define MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA 0xC00B /**< Weak! */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA 0xC00C /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA 0xC00D /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA 0xC00E /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA 0xC00F /**< Not in SSL3! */ + +#define MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA 0xC010 /**< Weak! */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA 0xC011 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA 0xC012 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 0xC013 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 0xC014 /**< Not in SSL3! */ + +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 0xC023 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 0xC024 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 0xC025 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 0xC026 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 0xC027 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 0xC028 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 0xC029 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 0xC02A /**< TLS 1.2 */ + +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0xC02B /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0xC02C /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0xC02D /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0xC02E /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0xC02F /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0xC030 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 0xC031 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 0xC032 /**< TLS 1.2 */ + +#define MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA 0xC033 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0xC034 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA 0xC035 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA 0xC036 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0xC037 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0xC038 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA 0xC039 /**< Weak! No SSL3! */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256 0xC03A /**< Weak! No SSL3! */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384 0xC03B /**< Weak! No SSL3! */ + +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC072 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC073 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC074 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC075 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC076 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC077 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC078 /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC079 /**< Not in SSL3! */ + +#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07A /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07B /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07C /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07D /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC086 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC087 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC088 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC089 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08A /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08B /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08C /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08D /**< TLS 1.2 */ + +#define MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC08E /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC08F /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC090 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC091 /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC092 /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC093 /**< TLS 1.2 */ + +#define MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC094 +#define MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC095 +#define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC096 +#define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC097 +#define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC098 +#define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC099 +#define MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC09A /**< Not in SSL3! */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC09B /**< Not in SSL3! */ + +#define MBEDTLS_TLS_RSA_WITH_AES_128_CCM 0xC09C /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_AES_256_CCM 0xC09D /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM 0xC09E /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM 0xC09F /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_AES_128_CCM_8 0xC0A0 /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_AES_256_CCM_8 0xC0A1 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM_8 0xC0A2 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM_8 0xC0A3 /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_AES_128_CCM 0xC0A4 /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_AES_256_CCM 0xC0A5 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM 0xC0A6 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM 0xC0A7 /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_AES_128_CCM_8 0xC0A8 /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_AES_256_CCM_8 0xC0A9 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM_8 0xC0AA /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM_8 0xC0AB /**< TLS 1.2 */ +/* The last two are named with PSK_DHE in the RFC, which looks like a typo */ + +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM 0xC0AC /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM 0xC0AD /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 0xC0AE /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 0xC0AF /**< TLS 1.2 */ + +#define MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 0xC0FF /**< experimental */ + +/* Reminder: update mbedtls_ssl_premaster_secret when adding a new key exchange. + * Reminder: update MBEDTLS_KEY_EXCHANGE__xxx below + */ +typedef enum { + MBEDTLS_KEY_EXCHANGE_NONE = 0, + MBEDTLS_KEY_EXCHANGE_RSA, + MBEDTLS_KEY_EXCHANGE_DHE_RSA, + MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, + MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, + MBEDTLS_KEY_EXCHANGE_PSK, + MBEDTLS_KEY_EXCHANGE_DHE_PSK, + MBEDTLS_KEY_EXCHANGE_RSA_PSK, + MBEDTLS_KEY_EXCHANGE_ECDHE_PSK, + MBEDTLS_KEY_EXCHANGE_ECDH_RSA, + MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, + MBEDTLS_KEY_EXCHANGE_ECJPAKE, +} mbedtls_key_exchange_type_t; + +/* Key exchanges using a certificate */ +#if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) +#define MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED +#endif + +/* Key exchanges using a PSK */ +#if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) +#define MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED +#endif + +/* Key exchanges using a ECDHE */ +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) +#define MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED +#endif + +typedef struct mbedtls_ssl_ciphersuite_t mbedtls_ssl_ciphersuite_t; + +#define MBEDTLS_CIPHERSUITE_WEAK 0x01 /**< Weak ciphersuite flag */ +#define MBEDTLS_CIPHERSUITE_SHORT_TAG 0x02 /**< Short authentication tag, + eg for CCM_8 */ +#define MBEDTLS_CIPHERSUITE_NODTLS 0x04 /**< Can't be used with DTLS */ + +/** + * \brief This structure is used for storing ciphersuite information + */ +struct mbedtls_ssl_ciphersuite_t +{ + int id; + const char * name; + + mbedtls_cipher_type_t cipher; + mbedtls_md_type_t mac; + mbedtls_key_exchange_type_t key_exchange; + + int min_major_ver; + int min_minor_ver; + int max_major_ver; + int max_minor_ver; + + unsigned char flags; +}; + +const int *mbedtls_ssl_list_ciphersuites( void ); + +const mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_string( const char *ciphersuite_name ); +const mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_id( int ciphersuite_id ); + +#if defined(MBEDTLS_PK_C) +mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_pk_alg( const mbedtls_ssl_ciphersuite_t *info ); +#endif + +int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info ); +int mbedtls_ssl_ciphersuite_uses_psk( const mbedtls_ssl_ciphersuite_t *info ); + +#ifdef __cplusplus +} +#endif + +#endif /* ssl_ciphersuites.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_cookie.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_cookie.h new file mode 100644 index 0000000..037e1c3 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_cookie.h @@ -0,0 +1,108 @@ +/** + * \file ssl_cookie.h + * + * \brief DTLS cookie callbacks implementation + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SSL_COOKIE_H +#define MBEDTLS_SSL_COOKIE_H + +#include "ssl.h" + +#if defined(MBEDTLS_THREADING_C) +#include "threading.h" +#endif + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ +#ifndef MBEDTLS_SSL_COOKIE_TIMEOUT +#define MBEDTLS_SSL_COOKIE_TIMEOUT 60 /**< Default expiration delay of DTLS cookies, in seconds if HAVE_TIME, or in number of cookies issued */ +#endif + +/* \} name SECTION: Module settings */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Context for the default cookie functions. + */ +typedef struct +{ + mbedtls_md_context_t hmac_ctx; /*!< context for the HMAC portion */ +#if !defined(MBEDTLS_HAVE_TIME) + unsigned long serial; /*!< serial number for expiration */ +#endif + unsigned long timeout; /*!< timeout delay, in seconds if HAVE_TIME, + or in number of tickets issued */ + +#if defined(MBEDTLS_THREADING_C) + mbedtls_threading_mutex_t mutex; +#endif +} mbedtls_ssl_cookie_ctx; + +/** + * \brief Initialize cookie context + */ +void mbedtls_ssl_cookie_init( mbedtls_ssl_cookie_ctx *ctx ); + +/** + * \brief Setup cookie context (generate keys) + */ +int mbedtls_ssl_cookie_setup( mbedtls_ssl_cookie_ctx *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief Set expiration delay for cookies + * (Default MBEDTLS_SSL_COOKIE_TIMEOUT) + * + * \param ctx Cookie contex + * \param delay Delay, in seconds if HAVE_TIME, or in number of cookies + * issued in the meantime. + * 0 to disable expiration (NOT recommended) + */ +void mbedtls_ssl_cookie_set_timeout( mbedtls_ssl_cookie_ctx *ctx, unsigned long delay ); + +/** + * \brief Free cookie context + */ +void mbedtls_ssl_cookie_free( mbedtls_ssl_cookie_ctx *ctx ); + +/** + * \brief Generate cookie, see \c mbedtls_ssl_cookie_write_t + */ +mbedtls_ssl_cookie_write_t mbedtls_ssl_cookie_write; + +/** + * \brief Verify cookie, see \c mbedtls_ssl_cookie_write_t + */ +mbedtls_ssl_cookie_check_t mbedtls_ssl_cookie_check; + +#ifdef __cplusplus +} +#endif + +#endif /* ssl_cookie.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_internal.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_internal.h new file mode 100644 index 0000000..668c0f5 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_internal.h @@ -0,0 +1,500 @@ +/** + * \file ssl_ticket.h + * + * \brief Internal functions shared by the SSL modules + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SSL_INTERNAL_H +#define MBEDTLS_SSL_INTERNAL_H + +#include "ssl.h" + +#if defined(MBEDTLS_MD5_C) +#include "md5.h" +#endif + +#if defined(MBEDTLS_SHA1_C) +#include "sha1.h" +#endif + +#if defined(MBEDTLS_SHA256_C) +#include "sha256.h" +#endif + +#if defined(MBEDTLS_SHA512_C) +#include "sha512.h" +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) +#include "ecjpake.h" +#endif + +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif + +/* Determine minimum supported version */ +#define MBEDTLS_SSL_MIN_MAJOR_VERSION MBEDTLS_SSL_MAJOR_VERSION_3 + +#if defined(MBEDTLS_SSL_PROTO_SSL3) +#define MBEDTLS_SSL_MIN_MINOR_VERSION MBEDTLS_SSL_MINOR_VERSION_0 +#else +#if defined(MBEDTLS_SSL_PROTO_TLS1) +#define MBEDTLS_SSL_MIN_MINOR_VERSION MBEDTLS_SSL_MINOR_VERSION_1 +#else +#if defined(MBEDTLS_SSL_PROTO_TLS1_1) +#define MBEDTLS_SSL_MIN_MINOR_VERSION MBEDTLS_SSL_MINOR_VERSION_2 +#else +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) +#define MBEDTLS_SSL_MIN_MINOR_VERSION MBEDTLS_SSL_MINOR_VERSION_3 +#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ +#endif /* MBEDTLS_SSL_PROTO_TLS1_1 */ +#endif /* MBEDTLS_SSL_PROTO_TLS1 */ +#endif /* MBEDTLS_SSL_PROTO_SSL3 */ + +/* Determine maximum supported version */ +#define MBEDTLS_SSL_MAX_MAJOR_VERSION MBEDTLS_SSL_MAJOR_VERSION_3 + +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) +#define MBEDTLS_SSL_MAX_MINOR_VERSION MBEDTLS_SSL_MINOR_VERSION_3 +#else +#if defined(MBEDTLS_SSL_PROTO_TLS1_1) +#define MBEDTLS_SSL_MAX_MINOR_VERSION MBEDTLS_SSL_MINOR_VERSION_2 +#else +#if defined(MBEDTLS_SSL_PROTO_TLS1) +#define MBEDTLS_SSL_MAX_MINOR_VERSION MBEDTLS_SSL_MINOR_VERSION_1 +#else +#if defined(MBEDTLS_SSL_PROTO_SSL3) +#define MBEDTLS_SSL_MAX_MINOR_VERSION MBEDTLS_SSL_MINOR_VERSION_0 +#endif /* MBEDTLS_SSL_PROTO_SSL3 */ +#endif /* MBEDTLS_SSL_PROTO_TLS1 */ +#endif /* MBEDTLS_SSL_PROTO_TLS1_1 */ +#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ + +#define MBEDTLS_SSL_INITIAL_HANDSHAKE 0 +#define MBEDTLS_SSL_RENEGOTIATION_IN_PROGRESS 1 /* In progress */ +#define MBEDTLS_SSL_RENEGOTIATION_DONE 2 /* Done or aborted */ +#define MBEDTLS_SSL_RENEGOTIATION_PENDING 3 /* Requested (server only) */ + +/* + * DTLS retransmission states, see RFC 6347 4.2.4 + * + * The SENDING state is merged in PREPARING for initial sends, + * but is distinct for resends. + * + * Note: initial state is wrong for server, but is not used anyway. + */ +#define MBEDTLS_SSL_RETRANS_PREPARING 0 +#define MBEDTLS_SSL_RETRANS_SENDING 1 +#define MBEDTLS_SSL_RETRANS_WAITING 2 +#define MBEDTLS_SSL_RETRANS_FINISHED 3 + +/* + * Allow extra bytes for record, authentication and encryption overhead: + * counter (8) + header (5) + IV(16) + MAC (16-48) + padding (0-256) + * and allow for a maximum of 1024 of compression expansion if + * enabled. + */ +#if defined(MBEDTLS_ZLIB_SUPPORT) +#define MBEDTLS_SSL_COMPRESSION_ADD 1024 +#else +#define MBEDTLS_SSL_COMPRESSION_ADD 0 +#endif + +#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_MODE_CBC) +/* Ciphersuites using HMAC */ +#if defined(MBEDTLS_SHA512_C) +#define MBEDTLS_SSL_MAC_ADD 48 /* SHA-384 used for HMAC */ +#elif defined(MBEDTLS_SHA256_C) +#define MBEDTLS_SSL_MAC_ADD 32 /* SHA-256 used for HMAC */ +#else +#define MBEDTLS_SSL_MAC_ADD 20 /* SHA-1 used for HMAC */ +#endif +#else +/* AEAD ciphersuites: GCM and CCM use a 128 bits tag */ +#define MBEDTLS_SSL_MAC_ADD 16 +#endif + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +#define MBEDTLS_SSL_PADDING_ADD 256 +#else +#define MBEDTLS_SSL_PADDING_ADD 0 +#endif + +#define MBEDTLS_SSL_BUFFER_LEN ( MBEDTLS_SSL_MAX_CONTENT_LEN \ + + MBEDTLS_SSL_COMPRESSION_ADD \ + + 29 /* counter + header + IV */ \ + + MBEDTLS_SSL_MAC_ADD \ + + MBEDTLS_SSL_PADDING_ADD \ + ) + +/* + * TLS extension flags (for extensions with outgoing ServerHello content + * that need it (e.g. for RENEGOTIATION_INFO the server already knows because + * of state of the renegotiation flag, so no indicator is required) + */ +#define MBEDTLS_TLS_EXT_SUPPORTED_POINT_FORMATS_PRESENT (1 << 0) +#define MBEDTLS_TLS_EXT_ECJPAKE_KKPP_OK (1 << 1) + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This structure contains the parameters only needed during handshake. + */ +struct mbedtls_ssl_handshake_params +{ + /* + * Handshake specific crypto variables + */ + int sig_alg; /*!< Hash algorithm for signature */ + int verify_sig_alg; /*!< Signature algorithm for verify */ +#if defined(MBEDTLS_DHM_C) + mbedtls_dhm_context dhm_ctx; /*!< DHM key exchange */ +#endif +#if defined(MBEDTLS_ECDH_C) + mbedtls_ecdh_context ecdh_ctx; /*!< ECDH key exchange */ +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) + mbedtls_ecjpake_context ecjpake_ctx; /*!< EC J-PAKE key exchange */ +#if defined(MBEDTLS_SSL_CLI_C) + unsigned char *ecjpake_cache; /*!< Cache for ClientHello ext */ + size_t ecjpake_cache_len; /*!< Length of cached data */ +#endif +#endif +#if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) + const mbedtls_ecp_curve_info **curves; /*!< Supported elliptic curves */ +#endif +#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) + unsigned char *psk; /*!< PSK from the callback */ + size_t psk_len; /*!< Length of PSK from callback */ +#endif +#if defined(MBEDTLS_X509_CRT_PARSE_C) + mbedtls_ssl_key_cert *key_cert; /*!< chosen key/cert pair (server) */ +#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) + int sni_authmode; /*!< authmode from SNI callback */ + mbedtls_ssl_key_cert *sni_key_cert; /*!< key/cert list from SNI */ + mbedtls_x509_crt *sni_ca_chain; /*!< trusted CAs from SNI callback */ + mbedtls_x509_crl *sni_ca_crl; /*!< trusted CAs CRLs from SNI */ +#endif +#endif /* MBEDTLS_X509_CRT_PARSE_C */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + unsigned int out_msg_seq; /*!< Outgoing handshake sequence number */ + unsigned int in_msg_seq; /*!< Incoming handshake sequence number */ + + unsigned char *verify_cookie; /*!< Cli: HelloVerifyRequest cookie + Srv: unused */ + unsigned char verify_cookie_len; /*!< Cli: cookie length + Srv: flag for sending a cookie */ + + unsigned char *hs_msg; /*!< Reassembled handshake message */ + + uint32_t retransmit_timeout; /*!< Current value of timeout */ + unsigned char retransmit_state; /*!< Retransmission state */ + mbedtls_ssl_flight_item *flight; /*!< Current outgoing flight */ + mbedtls_ssl_flight_item *cur_msg; /*!< Current message in flight */ + unsigned int in_flight_start_seq; /*!< Minimum message sequence in the + flight being received */ + mbedtls_ssl_transform *alt_transform_out; /*!< Alternative transform for + resending messages */ + unsigned char alt_out_ctr[8]; /*!< Alternative record epoch/counter + for resending messages */ +#endif + + /* + * Checksum contexts + */ +#if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_1) + mbedtls_md5_context fin_md5; + mbedtls_sha1_context fin_sha1; +#endif +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) +#if defined(MBEDTLS_SHA256_C) + mbedtls_sha256_context fin_sha256; +#endif +#if defined(MBEDTLS_SHA512_C) + mbedtls_sha512_context fin_sha512; +#endif +#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ + + void (*update_checksum)(mbedtls_ssl_context *, const unsigned char *, size_t); + void (*calc_verify)(mbedtls_ssl_context *, unsigned char *); + void (*calc_finished)(mbedtls_ssl_context *, unsigned char *, int); + int (*tls_prf)(const unsigned char *, size_t, const char *, + const unsigned char *, size_t, + unsigned char *, size_t); + + size_t pmslen; /*!< premaster length */ + + unsigned char randbytes[64]; /*!< random bytes */ + unsigned char premaster[MBEDTLS_PREMASTER_SIZE]; + /*!< premaster secret */ + + int resume; /*!< session resume indicator*/ + int max_major_ver; /*!< max. major version client*/ + int max_minor_ver; /*!< max. minor version client*/ + int cli_exts; /*!< client extension presence*/ + +#if defined(MBEDTLS_SSL_SESSION_TICKETS) + int new_session_ticket; /*!< use NewSessionTicket? */ +#endif /* MBEDTLS_SSL_SESSION_TICKETS */ +#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) + int extended_ms; /*!< use Extended Master Secret? */ +#endif +}; + +/* + * This structure contains a full set of runtime transform parameters + * either in negotiation or active. + */ +struct mbedtls_ssl_transform +{ + /* + * Session specific crypto layer + */ + const mbedtls_ssl_ciphersuite_t *ciphersuite_info; + /*!< Chosen cipersuite_info */ + unsigned int keylen; /*!< symmetric key length (bytes) */ + size_t minlen; /*!< min. ciphertext length */ + size_t ivlen; /*!< IV length */ + size_t fixed_ivlen; /*!< Fixed part of IV (AEAD) */ + size_t maclen; /*!< MAC length */ + + unsigned char iv_enc[16]; /*!< IV (encryption) */ + unsigned char iv_dec[16]; /*!< IV (decryption) */ + +#if defined(MBEDTLS_SSL_PROTO_SSL3) + /* Needed only for SSL v3.0 secret */ + unsigned char mac_enc[20]; /*!< SSL v3.0 secret (enc) */ + unsigned char mac_dec[20]; /*!< SSL v3.0 secret (dec) */ +#endif /* MBEDTLS_SSL_PROTO_SSL3 */ + + mbedtls_md_context_t md_ctx_enc; /*!< MAC (encryption) */ + mbedtls_md_context_t md_ctx_dec; /*!< MAC (decryption) */ + + mbedtls_cipher_context_t cipher_ctx_enc; /*!< encryption context */ + mbedtls_cipher_context_t cipher_ctx_dec; /*!< decryption context */ + + /* + * Session specific compression layer + */ +#if defined(MBEDTLS_ZLIB_SUPPORT) + z_stream ctx_deflate; /*!< compression context */ + z_stream ctx_inflate; /*!< decompression context */ +#endif +}; + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +/* + * List of certificate + private key pairs + */ +struct mbedtls_ssl_key_cert +{ + mbedtls_x509_crt *cert; /*!< cert */ + mbedtls_pk_context *key; /*!< private key */ + mbedtls_ssl_key_cert *next; /*!< next key/cert pair */ +}; +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) +/* + * List of handshake messages kept around for resending + */ +struct mbedtls_ssl_flight_item +{ + unsigned char *p; /*!< message, including handshake headers */ + size_t len; /*!< length of p */ + unsigned char type; /*!< type of the message: handshake or CCS */ + mbedtls_ssl_flight_item *next; /*!< next handshake message(s) */ +}; +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + + +/** + * \brief Free referenced items in an SSL transform context and clear + * memory + * + * \param transform SSL transform context + */ +void mbedtls_ssl_transform_free( mbedtls_ssl_transform *transform ); + +/** + * \brief Free referenced items in an SSL handshake context and clear + * memory + * + * \param handshake SSL handshake context + */ +void mbedtls_ssl_handshake_free( mbedtls_ssl_handshake_params *handshake ); + +int mbedtls_ssl_handshake_client_step( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_handshake_server_step( mbedtls_ssl_context *ssl ); +void mbedtls_ssl_handshake_wrapup( mbedtls_ssl_context *ssl ); + +int mbedtls_ssl_send_fatal_handshake_failure( mbedtls_ssl_context *ssl ); + +void mbedtls_ssl_reset_checksum( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ); + +int mbedtls_ssl_read_record_layer( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_handle_message_type( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ); +void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ); + +int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_fetch_input( mbedtls_ssl_context *ssl, size_t nb_want ); + +int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_flush_output( mbedtls_ssl_context *ssl ); + +int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_write_certificate( mbedtls_ssl_context *ssl ); + +int mbedtls_ssl_parse_change_cipher_spec( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_write_change_cipher_spec( mbedtls_ssl_context *ssl ); + +int mbedtls_ssl_parse_finished( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_write_finished( mbedtls_ssl_context *ssl ); + +void mbedtls_ssl_optimize_checksum( mbedtls_ssl_context *ssl, + const mbedtls_ssl_ciphersuite_t *ciphersuite_info ); + +#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exchange_type_t key_ex ); +#endif + +#if defined(MBEDTLS_PK_C) +unsigned char mbedtls_ssl_sig_from_pk( mbedtls_pk_context *pk ); +mbedtls_pk_type_t mbedtls_ssl_pk_alg_from_sig( unsigned char sig ); +#endif + +mbedtls_md_type_t mbedtls_ssl_md_alg_from_hash( unsigned char hash ); +unsigned char mbedtls_ssl_hash_from_md_alg( int md ); +int mbedtls_ssl_set_calc_verify_md( mbedtls_ssl_context *ssl, int md ); + +#if defined(MBEDTLS_ECP_C) +int mbedtls_ssl_check_curve( const mbedtls_ssl_context *ssl, mbedtls_ecp_group_id grp_id ); +#endif + +#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +int mbedtls_ssl_check_sig_hash( const mbedtls_ssl_context *ssl, + mbedtls_md_type_t md ); +#endif + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +static inline mbedtls_pk_context *mbedtls_ssl_own_key( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_key_cert *key_cert; + + if( ssl->handshake != NULL && ssl->handshake->key_cert != NULL ) + key_cert = ssl->handshake->key_cert; + else + key_cert = ssl->conf->key_cert; + + return( key_cert == NULL ? NULL : key_cert->key ); +} + +static inline mbedtls_x509_crt *mbedtls_ssl_own_cert( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_key_cert *key_cert; + + if( ssl->handshake != NULL && ssl->handshake->key_cert != NULL ) + key_cert = ssl->handshake->key_cert; + else + key_cert = ssl->conf->key_cert; + + return( key_cert == NULL ? NULL : key_cert->cert ); +} + +/* + * Check usage of a certificate wrt extensions: + * keyUsage, extendedKeyUsage (later), and nSCertType (later). + * + * Warning: cert_endpoint is the endpoint of the cert (ie, of our peer when we + * check a cert we received from them)! + * + * Return 0 if everything is OK, -1 if not. + */ +int mbedtls_ssl_check_cert_usage( const mbedtls_x509_crt *cert, + const mbedtls_ssl_ciphersuite_t *ciphersuite, + int cert_endpoint, + uint32_t *flags ); +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +void mbedtls_ssl_write_version( int major, int minor, int transport, + unsigned char ver[2] ); +void mbedtls_ssl_read_version( int *major, int *minor, int transport, + const unsigned char ver[2] ); + +static inline size_t mbedtls_ssl_hdr_len( const mbedtls_ssl_context *ssl ) +{ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + return( 13 ); +#else + ((void) ssl); +#endif + return( 5 ); +} + +static inline size_t mbedtls_ssl_hs_hdr_len( const mbedtls_ssl_context *ssl ) +{ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + return( 12 ); +#else + ((void) ssl); +#endif + return( 4 ); +} + +#if defined(MBEDTLS_SSL_PROTO_DTLS) +void mbedtls_ssl_send_flight_completed( mbedtls_ssl_context *ssl ); +void mbedtls_ssl_recv_flight_completed( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ); +#endif + +/* Visible for testing purposes only */ +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) +int mbedtls_ssl_dtls_replay_check( mbedtls_ssl_context *ssl ); +void mbedtls_ssl_dtls_replay_update( mbedtls_ssl_context *ssl ); +#endif + +/* constant-time buffer comparison */ +static inline int mbedtls_ssl_safer_memcmp( const void *a, const void *b, size_t n ) +{ + size_t i; + const unsigned char *A = (const unsigned char *) a; + const unsigned char *B = (const unsigned char *) b; + unsigned char diff = 0; + + for( i = 0; i < n; i++ ) + diff |= A[i] ^ B[i]; + + return( diff ); +} + +#ifdef __cplusplus +} +#endif + +#endif /* ssl_internal.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_ticket.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_ticket.h new file mode 100644 index 0000000..7c6bc61 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/ssl_ticket.h @@ -0,0 +1,135 @@ +/** + * \file ssl_ticket.h + * + * \brief TLS server ticket callbacks implementation + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SSL_TICKET_H +#define MBEDTLS_SSL_TICKET_H + +/* + * This implementation of the session ticket callbacks includes key + * management, rotating the keys periodically in order to preserve forward + * secrecy, when MBEDTLS_HAVE_TIME is defined. + */ + +#include "ssl.h" +#include "cipher.h" + +#if defined(MBEDTLS_THREADING_C) +#include "threading.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Information for session ticket protection + */ +typedef struct +{ + unsigned char name[4]; /*!< random key identifier */ + uint32_t generation_time; /*!< key generation timestamp (seconds) */ + mbedtls_cipher_context_t ctx; /*!< context for auth enc/decryption */ +} +mbedtls_ssl_ticket_key; + +/** + * \brief Context for session ticket handling functions + */ +typedef struct +{ + mbedtls_ssl_ticket_key keys[2]; /*!< ticket protection keys */ + unsigned char active; /*!< index of the currently active key */ + + uint32_t ticket_lifetime; /*!< lifetime of tickets in seconds */ + + /** Callback for getting (pseudo-)random numbers */ + int (*f_rng)(void *, unsigned char *, size_t); + void *p_rng; /*!< context for the RNG function */ + +#if defined(MBEDTLS_THREADING_C) + mbedtls_threading_mutex_t mutex; +#endif +} +mbedtls_ssl_ticket_context; + +/** + * \brief Initialize a ticket context. + * (Just make it ready for mbedtls_ssl_ticket_setup() + * or mbedtls_ssl_ticket_free().) + * + * \param ctx Context to be initialized + */ +void mbedtls_ssl_ticket_init( mbedtls_ssl_ticket_context *ctx ); + +/** + * \brief Prepare context to be actually used + * + * \param ctx Context to be set up + * \param f_rng RNG callback function + * \param p_rng RNG callback context + * \param cipher AEAD cipher to use for ticket protection. + * Recommended value: MBEDTLS_CIPHER_AES_256_GCM. + * \param lifetime Tickets lifetime in seconds + * Recommended value: 86400 (one day). + * + * \note It is highly recommended to select a cipher that is at + * least as strong as the the strongest ciphersuite + * supported. Usually that means a 256-bit key. + * + * \note The lifetime of the keys is twice the lifetime of tickets. + * It is recommended to pick a reasonnable lifetime so as not + * to negate the benefits of forward secrecy. + * + * \return 0 if successful, + * or a specific MBEDTLS_ERR_XXX error code + */ +int mbedtls_ssl_ticket_setup( mbedtls_ssl_ticket_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + mbedtls_cipher_type_t cipher, + uint32_t lifetime ); + +/** + * \brief Implementation of the ticket write callback + * + * \note See \c mbedlts_ssl_ticket_write_t for description + */ +mbedtls_ssl_ticket_write_t mbedtls_ssl_ticket_write; + +/** + * \brief Implementation of the ticket parse callback + * + * \note See \c mbedlts_ssl_ticket_parse_t for description + */ +mbedtls_ssl_ticket_parse_t mbedtls_ssl_ticket_parse; + +/** + * \brief Free a context's content and zeroize it. + * + * \param ctx Context to be cleaned up + */ +void mbedtls_ssl_ticket_free( mbedtls_ssl_ticket_context *ctx ); + +#ifdef __cplusplus +} +#endif + +#endif /* ssl_ticket.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/threading.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/threading.h new file mode 100644 index 0000000..b0c34ec --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/threading.h @@ -0,0 +1,106 @@ +/** + * \file threading.h + * + * \brief Threading abstraction layer + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_THREADING_H +#define MBEDTLS_THREADING_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE -0x001A /**< The selected feature is not available. */ +#define MBEDTLS_ERR_THREADING_BAD_INPUT_DATA -0x001C /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_THREADING_MUTEX_ERROR -0x001E /**< Locking / unlocking / free failed with error code. */ + +#if defined(MBEDTLS_THREADING_PTHREAD) +#include +typedef struct +{ + pthread_mutex_t mutex; + char is_valid; +} mbedtls_threading_mutex_t; +#endif + +#if defined(MBEDTLS_THREADING_ALT) +/* You should define the mbedtls_threading_mutex_t type in your header */ +#include "threading_alt.h" + +/** + * \brief Set your alternate threading implementation function + * pointers and initialize global mutexes. If used, this + * function must be called once in the main thread before any + * other mbed TLS function is called, and + * mbedtls_threading_free_alt() must be called once in the main + * thread after all other mbed TLS functions. + * + * \note mutex_init() and mutex_free() don't return a status code. + * If mutex_init() fails, it should leave its argument (the + * mutex) in a state such that mutex_lock() will fail when + * called with this argument. + * + * \param mutex_init the init function implementation + * \param mutex_free the free function implementation + * \param mutex_lock the lock function implementation + * \param mutex_unlock the unlock function implementation + */ +void mbedtls_threading_set_alt( void (*mutex_init)( mbedtls_threading_mutex_t * ), + void (*mutex_free)( mbedtls_threading_mutex_t * ), + int (*mutex_lock)( mbedtls_threading_mutex_t * ), + int (*mutex_unlock)( mbedtls_threading_mutex_t * ) ); + +/** + * \brief Free global mutexes. + */ +void mbedtls_threading_free_alt( void ); +#endif /* MBEDTLS_THREADING_ALT */ + +#if defined(MBEDTLS_THREADING_C) +/* + * The function pointers for mutex_init, mutex_free, mutex_ and mutex_unlock + * + * All these functions are expected to work or the result will be undefined. + */ +extern void (*mbedtls_mutex_init)( mbedtls_threading_mutex_t *mutex ); +extern void (*mbedtls_mutex_free)( mbedtls_threading_mutex_t *mutex ); +extern int (*mbedtls_mutex_lock)( mbedtls_threading_mutex_t *mutex ); +extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); + +/* + * Global mutexes + */ +extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; +extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; +#endif /* MBEDTLS_THREADING_C */ + +#ifdef __cplusplus +} +#endif + +#endif /* threading.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/timing.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/timing.h new file mode 100644 index 0000000..ae7a713 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/timing.h @@ -0,0 +1,141 @@ +/** + * \file timing.h + * + * \brief Portable interface to the CPU cycle counter + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_TIMING_H +#define MBEDTLS_TIMING_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if !defined(MBEDTLS_TIMING_ALT) +// Regular implementation +// + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief timer structure + */ +struct mbedtls_timing_hr_time +{ + unsigned char opaque[32]; +}; + +/** + * \brief Context for mbedtls_timing_set/get_delay() + */ +typedef struct +{ + struct mbedtls_timing_hr_time timer; + uint32_t int_ms; + uint32_t fin_ms; +} mbedtls_timing_delay_context; + +extern volatile int mbedtls_timing_alarmed; + +/** + * \brief Return the CPU cycle counter value + * + * \warning This is only a best effort! Do not rely on this! + * In particular, it is known to be unreliable on virtual + * machines. + */ +unsigned long mbedtls_timing_hardclock( void ); + +/** + * \brief Return the elapsed time in milliseconds + * + * \param val points to a timer structure + * \param reset if set to 1, the timer is restarted + */ +unsigned long mbedtls_timing_get_timer( struct mbedtls_timing_hr_time *val, int reset ); + +/** + * \brief Setup an alarm clock + * + * \param seconds delay before the "mbedtls_timing_alarmed" flag is set + * + * \warning Only one alarm at a time is supported. In a threaded + * context, this means one for the whole process, not one per + * thread. + */ +void mbedtls_set_alarm( int seconds ); + +/** + * \brief Set a pair of delays to watch + * (See \c mbedtls_timing_get_delay().) + * + * \param data Pointer to timing data + * Must point to a valid \c mbedtls_timing_delay_context struct. + * \param int_ms First (intermediate) delay in milliseconds. + * \param fin_ms Second (final) delay in milliseconds. + * Pass 0 to cancel the current delay. + */ +void mbedtls_timing_set_delay( void *data, uint32_t int_ms, uint32_t fin_ms ); + +/** + * \brief Get the status of delays + * (Memory helper: number of delays passed.) + * + * \param data Pointer to timing data + * Must point to a valid \c mbedtls_timing_delay_context struct. + * + * \return -1 if cancelled (fin_ms = 0) + * 0 if none of the delays are passed, + * 1 if only the intermediate delay is passed, + * 2 if the final delay is passed. + */ +int mbedtls_timing_get_delay( void *data ); + +#ifdef __cplusplus +} +#endif + +#else /* MBEDTLS_TIMING_ALT */ +#include "timing_alt.h" +#endif /* MBEDTLS_TIMING_ALT */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if a test failed + */ +int mbedtls_timing_self_test( int verbose ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* timing.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/version.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/version.h new file mode 100644 index 0000000..f00e158 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/version.h @@ -0,0 +1,111 @@ +/** + * \file version.h + * + * \brief Run-time version information + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +/* + * This set of compile-time defines and run-time variables can be used to + * determine the version number of the mbed TLS library used. + */ +#ifndef MBEDTLS_VERSION_H +#define MBEDTLS_VERSION_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +/** + * The version number x.y.z is split into three parts. + * Major, Minor, Patchlevel + */ +#define MBEDTLS_VERSION_MAJOR 2 +#define MBEDTLS_VERSION_MINOR 4 +#define MBEDTLS_VERSION_PATCH 2 + +/** + * The single version number has the following structure: + * MMNNPP00 + * Major version | Minor version | Patch version + */ +#define MBEDTLS_VERSION_NUMBER 0x02040200 +#define MBEDTLS_VERSION_STRING "2.4.2" +#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.4.2" + +#if defined(MBEDTLS_VERSION_C) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the version number. + * + * \return The constructed version number in the format + * MMNNPP00 (Major, Minor, Patch). + */ +unsigned int mbedtls_version_get_number( void ); + +/** + * Get the version string ("x.y.z"). + * + * \param string The string that will receive the value. + * (Should be at least 9 bytes in size) + */ +void mbedtls_version_get_string( char *string ); + +/** + * Get the full version string ("mbed TLS x.y.z"). + * + * \param string The string that will receive the value. The mbed TLS version + * string will use 18 bytes AT MOST including a terminating + * null byte. + * (So the buffer should be at least 18 bytes to receive this + * version string). + */ +void mbedtls_version_get_string_full( char *string ); + +/** + * \brief Check if support for a feature was compiled into this + * mbed TLS binary. This allows you to see at runtime if the + * library was for instance compiled with or without + * Multi-threading support. + * + * \note only checks against defines in the sections "System + * support", "mbed TLS modules" and "mbed TLS feature + * support" in config.h + * + * \param feature The string for the define to check (e.g. "MBEDTLS_AES_C") + * + * \return 0 if the feature is present, + * -1 if the feature is not present and + * -2 if support for feature checking as a whole was not + * compiled in. + */ +int mbedtls_version_check_feature( const char *feature ); + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_VERSION_C */ + +#endif /* version.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509.h new file mode 100644 index 0000000..f219bf1 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509.h @@ -0,0 +1,331 @@ +/** + * \file x509.h + * + * \brief X.509 generic defines and structures + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_X509_H +#define MBEDTLS_X509_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "asn1.h" +#include "pk.h" + +#if defined(MBEDTLS_RSA_C) +#include "rsa.h" +#endif + +/** + * \addtogroup x509_module + * \{ + */ + +#if !defined(MBEDTLS_X509_MAX_INTERMEDIATE_CA) +/** + * Maximum number of intermediate CAs in a verification chain. + * That is, maximum length of the chain, excluding the end-entity certificate + * and the trusted root certificate. + * + * Set this to a low value to prevent an adversary from making you waste + * resources verifying an overlong certificate chain. + */ +#define MBEDTLS_X509_MAX_INTERMEDIATE_CA 8 +#endif + +/** + * \name X509 Error codes + * \{ + */ +#define MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE -0x2080 /**< Unavailable feature, e.g. RSA hashing/encryption combination. */ +#define MBEDTLS_ERR_X509_UNKNOWN_OID -0x2100 /**< Requested OID is unknown. */ +#define MBEDTLS_ERR_X509_INVALID_FORMAT -0x2180 /**< The CRT/CRL/CSR format is invalid, e.g. different type expected. */ +#define MBEDTLS_ERR_X509_INVALID_VERSION -0x2200 /**< The CRT/CRL/CSR version element is invalid. */ +#define MBEDTLS_ERR_X509_INVALID_SERIAL -0x2280 /**< The serial tag or value is invalid. */ +#define MBEDTLS_ERR_X509_INVALID_ALG -0x2300 /**< The algorithm tag or value is invalid. */ +#define MBEDTLS_ERR_X509_INVALID_NAME -0x2380 /**< The name tag or value is invalid. */ +#define MBEDTLS_ERR_X509_INVALID_DATE -0x2400 /**< The date tag or value is invalid. */ +#define MBEDTLS_ERR_X509_INVALID_SIGNATURE -0x2480 /**< The signature tag or value invalid. */ +#define MBEDTLS_ERR_X509_INVALID_EXTENSIONS -0x2500 /**< The extension tag or value is invalid. */ +#define MBEDTLS_ERR_X509_UNKNOWN_VERSION -0x2580 /**< CRT/CRL/CSR has an unsupported version number. */ +#define MBEDTLS_ERR_X509_UNKNOWN_SIG_ALG -0x2600 /**< Signature algorithm (oid) is unsupported. */ +#define MBEDTLS_ERR_X509_SIG_MISMATCH -0x2680 /**< Signature algorithms do not match. (see \c ::mbedtls_x509_crt sig_oid) */ +#define MBEDTLS_ERR_X509_CERT_VERIFY_FAILED -0x2700 /**< Certificate verification failed, e.g. CRL, CA or signature check failed. */ +#define MBEDTLS_ERR_X509_CERT_UNKNOWN_FORMAT -0x2780 /**< Format not recognized as DER or PEM. */ +#define MBEDTLS_ERR_X509_BAD_INPUT_DATA -0x2800 /**< Input invalid. */ +#define MBEDTLS_ERR_X509_ALLOC_FAILED -0x2880 /**< Allocation of memory failed. */ +#define MBEDTLS_ERR_X509_FILE_IO_ERROR -0x2900 /**< Read/write of file failed. */ +#define MBEDTLS_ERR_X509_BUFFER_TOO_SMALL -0x2980 /**< Destination buffer is too small. */ +/* \} name */ + +/** + * \name X509 Verify codes + * \{ + */ +/* Reminder: update x509_crt_verify_strings[] in library/x509_crt.c */ +#define MBEDTLS_X509_BADCERT_EXPIRED 0x01 /**< The certificate validity has expired. */ +#define MBEDTLS_X509_BADCERT_REVOKED 0x02 /**< The certificate has been revoked (is on a CRL). */ +#define MBEDTLS_X509_BADCERT_CN_MISMATCH 0x04 /**< The certificate Common Name (CN) does not match with the expected CN. */ +#define MBEDTLS_X509_BADCERT_NOT_TRUSTED 0x08 /**< The certificate is not correctly signed by the trusted CA. */ +#define MBEDTLS_X509_BADCRL_NOT_TRUSTED 0x10 /**< The CRL is not correctly signed by the trusted CA. */ +#define MBEDTLS_X509_BADCRL_EXPIRED 0x20 /**< The CRL is expired. */ +#define MBEDTLS_X509_BADCERT_MISSING 0x40 /**< Certificate was missing. */ +#define MBEDTLS_X509_BADCERT_SKIP_VERIFY 0x80 /**< Certificate verification was skipped. */ +#define MBEDTLS_X509_BADCERT_OTHER 0x0100 /**< Other reason (can be used by verify callback) */ +#define MBEDTLS_X509_BADCERT_FUTURE 0x0200 /**< The certificate validity starts in the future. */ +#define MBEDTLS_X509_BADCRL_FUTURE 0x0400 /**< The CRL is from the future */ +#define MBEDTLS_X509_BADCERT_KEY_USAGE 0x0800 /**< Usage does not match the keyUsage extension. */ +#define MBEDTLS_X509_BADCERT_EXT_KEY_USAGE 0x1000 /**< Usage does not match the extendedKeyUsage extension. */ +#define MBEDTLS_X509_BADCERT_NS_CERT_TYPE 0x2000 /**< Usage does not match the nsCertType extension. */ +#define MBEDTLS_X509_BADCERT_BAD_MD 0x4000 /**< The certificate is signed with an unacceptable hash. */ +#define MBEDTLS_X509_BADCERT_BAD_PK 0x8000 /**< The certificate is signed with an unacceptable PK alg (eg RSA vs ECDSA). */ +#define MBEDTLS_X509_BADCERT_BAD_KEY 0x010000 /**< The certificate is signed with an unacceptable key (eg bad curve, RSA too short). */ +#define MBEDTLS_X509_BADCRL_BAD_MD 0x020000 /**< The CRL is signed with an unacceptable hash. */ +#define MBEDTLS_X509_BADCRL_BAD_PK 0x040000 /**< The CRL is signed with an unacceptable PK alg (eg RSA vs ECDSA). */ +#define MBEDTLS_X509_BADCRL_BAD_KEY 0x080000 /**< The CRL is signed with an unacceptable key (eg bad curve, RSA too short). */ + +/* \} name */ +/* \} addtogroup x509_module */ + +/* + * X.509 v3 Key Usage Extension flags + * Reminder: update x509_info_key_usage() when adding new flags. + */ +#define MBEDTLS_X509_KU_DIGITAL_SIGNATURE (0x80) /* bit 0 */ +#define MBEDTLS_X509_KU_NON_REPUDIATION (0x40) /* bit 1 */ +#define MBEDTLS_X509_KU_KEY_ENCIPHERMENT (0x20) /* bit 2 */ +#define MBEDTLS_X509_KU_DATA_ENCIPHERMENT (0x10) /* bit 3 */ +#define MBEDTLS_X509_KU_KEY_AGREEMENT (0x08) /* bit 4 */ +#define MBEDTLS_X509_KU_KEY_CERT_SIGN (0x04) /* bit 5 */ +#define MBEDTLS_X509_KU_CRL_SIGN (0x02) /* bit 6 */ +#define MBEDTLS_X509_KU_ENCIPHER_ONLY (0x01) /* bit 7 */ +#define MBEDTLS_X509_KU_DECIPHER_ONLY (0x8000) /* bit 8 */ + +/* + * Netscape certificate types + * (http://www.mozilla.org/projects/security/pki/nss/tech-notes/tn3.html) + */ + +#define MBEDTLS_X509_NS_CERT_TYPE_SSL_CLIENT (0x80) /* bit 0 */ +#define MBEDTLS_X509_NS_CERT_TYPE_SSL_SERVER (0x40) /* bit 1 */ +#define MBEDTLS_X509_NS_CERT_TYPE_EMAIL (0x20) /* bit 2 */ +#define MBEDTLS_X509_NS_CERT_TYPE_OBJECT_SIGNING (0x10) /* bit 3 */ +#define MBEDTLS_X509_NS_CERT_TYPE_RESERVED (0x08) /* bit 4 */ +#define MBEDTLS_X509_NS_CERT_TYPE_SSL_CA (0x04) /* bit 5 */ +#define MBEDTLS_X509_NS_CERT_TYPE_EMAIL_CA (0x02) /* bit 6 */ +#define MBEDTLS_X509_NS_CERT_TYPE_OBJECT_SIGNING_CA (0x01) /* bit 7 */ + +/* + * X.509 extension types + * + * Comments refer to the status for using certificates. Status can be + * different for writing certificates or reading CRLs or CSRs. + */ +#define MBEDTLS_X509_EXT_AUTHORITY_KEY_IDENTIFIER (1 << 0) +#define MBEDTLS_X509_EXT_SUBJECT_KEY_IDENTIFIER (1 << 1) +#define MBEDTLS_X509_EXT_KEY_USAGE (1 << 2) +#define MBEDTLS_X509_EXT_CERTIFICATE_POLICIES (1 << 3) +#define MBEDTLS_X509_EXT_POLICY_MAPPINGS (1 << 4) +#define MBEDTLS_X509_EXT_SUBJECT_ALT_NAME (1 << 5) /* Supported (DNS) */ +#define MBEDTLS_X509_EXT_ISSUER_ALT_NAME (1 << 6) +#define MBEDTLS_X509_EXT_SUBJECT_DIRECTORY_ATTRS (1 << 7) +#define MBEDTLS_X509_EXT_BASIC_CONSTRAINTS (1 << 8) /* Supported */ +#define MBEDTLS_X509_EXT_NAME_CONSTRAINTS (1 << 9) +#define MBEDTLS_X509_EXT_POLICY_CONSTRAINTS (1 << 10) +#define MBEDTLS_X509_EXT_EXTENDED_KEY_USAGE (1 << 11) +#define MBEDTLS_X509_EXT_CRL_DISTRIBUTION_POINTS (1 << 12) +#define MBEDTLS_X509_EXT_INIHIBIT_ANYPOLICY (1 << 13) +#define MBEDTLS_X509_EXT_FRESHEST_CRL (1 << 14) + +#define MBEDTLS_X509_EXT_NS_CERT_TYPE (1 << 16) + +/* + * Storage format identifiers + * Recognized formats: PEM and DER + */ +#define MBEDTLS_X509_FORMAT_DER 1 +#define MBEDTLS_X509_FORMAT_PEM 2 + +#define MBEDTLS_X509_MAX_DN_NAME_SIZE 256 /**< Maximum value size of a DN entry */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \addtogroup x509_module + * \{ */ + +/** + * \name Structures for parsing X.509 certificates, CRLs and CSRs + * \{ + */ + +/** + * Type-length-value structure that allows for ASN1 using DER. + */ +typedef mbedtls_asn1_buf mbedtls_x509_buf; + +/** + * Container for ASN1 bit strings. + */ +typedef mbedtls_asn1_bitstring mbedtls_x509_bitstring; + +/** + * Container for ASN1 named information objects. + * It allows for Relative Distinguished Names (e.g. cn=localhost,ou=code,etc.). + */ +typedef mbedtls_asn1_named_data mbedtls_x509_name; + +/** + * Container for a sequence of ASN.1 items + */ +typedef mbedtls_asn1_sequence mbedtls_x509_sequence; + +/** Container for date and time (precision in seconds). */ +typedef struct mbedtls_x509_time +{ + int year, mon, day; /**< Date. */ + int hour, min, sec; /**< Time. */ +} +mbedtls_x509_time; + +/** \} name Structures for parsing X.509 certificates, CRLs and CSRs */ +/** \} addtogroup x509_module */ + +/** + * \brief Store the certificate DN in printable form into buf; + * no more than size characters will be written. + * + * \param buf Buffer to write to + * \param size Maximum size of buffer + * \param dn The X509 name to represent + * + * \return The length of the string written (not including the + * terminated nul byte), or a negative error code. + */ +int mbedtls_x509_dn_gets( char *buf, size_t size, const mbedtls_x509_name *dn ); + +/** + * \brief Store the certificate serial in printable form into buf; + * no more than size characters will be written. + * + * \param buf Buffer to write to + * \param size Maximum size of buffer + * \param serial The X509 serial to represent + * + * \return The length of the string written (not including the + * terminated nul byte), or a negative error code. + */ +int mbedtls_x509_serial_gets( char *buf, size_t size, const mbedtls_x509_buf *serial ); + +/** + * \brief Check a given mbedtls_x509_time against the system time + * and tell if it's in the past. + * + * \note Intended usage is "if( is_past( valid_to ) ) ERROR". + * Hence the return value of 1 if on internal errors. + * + * \param time mbedtls_x509_time to check + * + * \return 1 if the given time is in the past or an error occured, + * 0 otherwise. + */ +int mbedtls_x509_time_is_past( const mbedtls_x509_time *time ); + +/** + * \brief Check a given mbedtls_x509_time against the system time + * and tell if it's in the future. + * + * \note Intended usage is "if( is_future( valid_from ) ) ERROR". + * Hence the return value of 1 if on internal errors. + * + * \param time mbedtls_x509_time to check + * + * \return 1 if the given time is in the future or an error occured, + * 0 otherwise. + */ +int mbedtls_x509_time_is_future( const mbedtls_x509_time *time ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_x509_self_test( int verbose ); + +/* + * Internal module functions. You probably do not want to use these unless you + * know you do. + */ +int mbedtls_x509_get_name( unsigned char **p, const unsigned char *end, + mbedtls_x509_name *cur ); +int mbedtls_x509_get_alg_null( unsigned char **p, const unsigned char *end, + mbedtls_x509_buf *alg ); +int mbedtls_x509_get_alg( unsigned char **p, const unsigned char *end, + mbedtls_x509_buf *alg, mbedtls_x509_buf *params ); +#if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT) +int mbedtls_x509_get_rsassa_pss_params( const mbedtls_x509_buf *params, + mbedtls_md_type_t *md_alg, mbedtls_md_type_t *mgf_md, + int *salt_len ); +#endif +int mbedtls_x509_get_sig( unsigned char **p, const unsigned char *end, mbedtls_x509_buf *sig ); +int mbedtls_x509_get_sig_alg( const mbedtls_x509_buf *sig_oid, const mbedtls_x509_buf *sig_params, + mbedtls_md_type_t *md_alg, mbedtls_pk_type_t *pk_alg, + void **sig_opts ); +int mbedtls_x509_get_time( unsigned char **p, const unsigned char *end, + mbedtls_x509_time *time ); +int mbedtls_x509_get_serial( unsigned char **p, const unsigned char *end, + mbedtls_x509_buf *serial ); +int mbedtls_x509_get_ext( unsigned char **p, const unsigned char *end, + mbedtls_x509_buf *ext, int tag ); +int mbedtls_x509_sig_alg_gets( char *buf, size_t size, const mbedtls_x509_buf *sig_oid, + mbedtls_pk_type_t pk_alg, mbedtls_md_type_t md_alg, + const void *sig_opts ); +int mbedtls_x509_key_size_helper( char *buf, size_t buf_size, const char *name ); +int mbedtls_x509_string_to_names( mbedtls_asn1_named_data **head, const char *name ); +int mbedtls_x509_set_extension( mbedtls_asn1_named_data **head, const char *oid, size_t oid_len, + int critical, const unsigned char *val, + size_t val_len ); +int mbedtls_x509_write_extensions( unsigned char **p, unsigned char *start, + mbedtls_asn1_named_data *first ); +int mbedtls_x509_write_names( unsigned char **p, unsigned char *start, + mbedtls_asn1_named_data *first ); +int mbedtls_x509_write_sig( unsigned char **p, unsigned char *start, + const char *oid, size_t oid_len, + unsigned char *sig, size_t size ); + +#define MBEDTLS_X509_SAFE_SNPRINTF \ + do { \ + if( ret < 0 || (size_t) ret >= n ) \ + return( MBEDTLS_ERR_X509_BUFFER_TOO_SMALL ); \ + \ + n -= (size_t) ret; \ + p += (size_t) ret; \ + } while( 0 ) + +#ifdef __cplusplus +} +#endif + +#endif /* x509.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509_crl.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509_crl.h new file mode 100644 index 0000000..7988439 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509_crl.h @@ -0,0 +1,173 @@ +/** + * \file x509_crl.h + * + * \brief X.509 certificate revocation list parsing + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_X509_CRL_H +#define MBEDTLS_X509_CRL_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "x509.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \addtogroup x509_module + * \{ */ + +/** + * \name Structures and functions for parsing CRLs + * \{ + */ + +/** + * Certificate revocation list entry. + * Contains the CA-specific serial numbers and revocation dates. + */ +typedef struct mbedtls_x509_crl_entry +{ + mbedtls_x509_buf raw; + + mbedtls_x509_buf serial; + + mbedtls_x509_time revocation_date; + + mbedtls_x509_buf entry_ext; + + struct mbedtls_x509_crl_entry *next; +} +mbedtls_x509_crl_entry; + +/** + * Certificate revocation list structure. + * Every CRL may have multiple entries. + */ +typedef struct mbedtls_x509_crl +{ + mbedtls_x509_buf raw; /**< The raw certificate data (DER). */ + mbedtls_x509_buf tbs; /**< The raw certificate body (DER). The part that is To Be Signed. */ + + int version; /**< CRL version (1=v1, 2=v2) */ + mbedtls_x509_buf sig_oid; /**< CRL signature type identifier */ + + mbedtls_x509_buf issuer_raw; /**< The raw issuer data (DER). */ + + mbedtls_x509_name issuer; /**< The parsed issuer data (named information object). */ + + mbedtls_x509_time this_update; + mbedtls_x509_time next_update; + + mbedtls_x509_crl_entry entry; /**< The CRL entries containing the certificate revocation times for this CA. */ + + mbedtls_x509_buf crl_ext; + + mbedtls_x509_buf sig_oid2; + mbedtls_x509_buf sig; + mbedtls_md_type_t sig_md; /**< Internal representation of the MD algorithm of the signature algorithm, e.g. MBEDTLS_MD_SHA256 */ + mbedtls_pk_type_t sig_pk; /**< Internal representation of the Public Key algorithm of the signature algorithm, e.g. MBEDTLS_PK_RSA */ + void *sig_opts; /**< Signature options to be passed to mbedtls_pk_verify_ext(), e.g. for RSASSA-PSS */ + + struct mbedtls_x509_crl *next; +} +mbedtls_x509_crl; + +/** + * \brief Parse a DER-encoded CRL and append it to the chained list + * + * \param chain points to the start of the chain + * \param buf buffer holding the CRL data in DER format + * \param buflen size of the buffer + * (including the terminating null byte for PEM data) + * + * \return 0 if successful, or a specific X509 or PEM error code + */ +int mbedtls_x509_crl_parse_der( mbedtls_x509_crl *chain, + const unsigned char *buf, size_t buflen ); +/** + * \brief Parse one or more CRLs and append them to the chained list + * + * \note Mutliple CRLs are accepted only if using PEM format + * + * \param chain points to the start of the chain + * \param buf buffer holding the CRL data in PEM or DER format + * \param buflen size of the buffer + * (including the terminating null byte for PEM data) + * + * \return 0 if successful, or a specific X509 or PEM error code + */ +int mbedtls_x509_crl_parse( mbedtls_x509_crl *chain, const unsigned char *buf, size_t buflen ); + +#if defined(MBEDTLS_FS_IO) +/** + * \brief Load one or more CRLs and append them to the chained list + * + * \note Mutliple CRLs are accepted only if using PEM format + * + * \param chain points to the start of the chain + * \param path filename to read the CRLs from (in PEM or DER encoding) + * + * \return 0 if successful, or a specific X509 or PEM error code + */ +int mbedtls_x509_crl_parse_file( mbedtls_x509_crl *chain, const char *path ); +#endif /* MBEDTLS_FS_IO */ + +/** + * \brief Returns an informational string about the CRL. + * + * \param buf Buffer to write to + * \param size Maximum size of buffer + * \param prefix A line prefix + * \param crl The X509 CRL to represent + * + * \return The length of the string written (not including the + * terminated nul byte), or a negative error code. + */ +int mbedtls_x509_crl_info( char *buf, size_t size, const char *prefix, + const mbedtls_x509_crl *crl ); + +/** + * \brief Initialize a CRL (chain) + * + * \param crl CRL chain to initialize + */ +void mbedtls_x509_crl_init( mbedtls_x509_crl *crl ); + +/** + * \brief Unallocate all CRL data + * + * \param crl CRL chain to free + */ +void mbedtls_x509_crl_free( mbedtls_x509_crl *crl ); + +/* \} name */ +/* \} addtogroup x509_module */ + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_x509_crl.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509_crt.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509_crt.h new file mode 100644 index 0000000..383e484 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509_crt.h @@ -0,0 +1,654 @@ +/** + * \file x509_crt.h + * + * \brief X.509 certificate parsing and writing + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_X509_CRT_H +#define MBEDTLS_X509_CRT_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "x509.h" +#include "x509_crl.h" + +/** + * \addtogroup x509_module + * \{ + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Structures and functions for parsing and writing X.509 certificates + * \{ + */ + +/** + * Container for an X.509 certificate. The certificate may be chained. + */ +typedef struct mbedtls_x509_crt +{ + mbedtls_x509_buf raw; /**< The raw certificate data (DER). */ + mbedtls_x509_buf tbs; /**< The raw certificate body (DER). The part that is To Be Signed. */ + + int version; /**< The X.509 version. (1=v1, 2=v2, 3=v3) */ + mbedtls_x509_buf serial; /**< Unique id for certificate issued by a specific CA. */ + mbedtls_x509_buf sig_oid; /**< Signature algorithm, e.g. sha1RSA */ + + mbedtls_x509_buf issuer_raw; /**< The raw issuer data (DER). Used for quick comparison. */ + mbedtls_x509_buf subject_raw; /**< The raw subject data (DER). Used for quick comparison. */ + + mbedtls_x509_name issuer; /**< The parsed issuer data (named information object). */ + mbedtls_x509_name subject; /**< The parsed subject data (named information object). */ + + mbedtls_x509_time valid_from; /**< Start time of certificate validity. */ + mbedtls_x509_time valid_to; /**< End time of certificate validity. */ + + mbedtls_pk_context pk; /**< Container for the public key context. */ + + mbedtls_x509_buf issuer_id; /**< Optional X.509 v2/v3 issuer unique identifier. */ + mbedtls_x509_buf subject_id; /**< Optional X.509 v2/v3 subject unique identifier. */ + mbedtls_x509_buf v3_ext; /**< Optional X.509 v3 extensions. */ + mbedtls_x509_sequence subject_alt_names; /**< Optional list of Subject Alternative Names (Only dNSName supported). */ + + int ext_types; /**< Bit string containing detected and parsed extensions */ + int ca_istrue; /**< Optional Basic Constraint extension value: 1 if this certificate belongs to a CA, 0 otherwise. */ + int max_pathlen; /**< Optional Basic Constraint extension value: The maximum path length to the root certificate. Path length is 1 higher than RFC 5280 'meaning', so 1+ */ + + unsigned int key_usage; /**< Optional key usage extension value: See the values in x509.h */ + + mbedtls_x509_sequence ext_key_usage; /**< Optional list of extended key usage OIDs. */ + + unsigned char ns_cert_type; /**< Optional Netscape certificate type extension value: See the values in x509.h */ + + mbedtls_x509_buf sig; /**< Signature: hash of the tbs part signed with the private key. */ + mbedtls_md_type_t sig_md; /**< Internal representation of the MD algorithm of the signature algorithm, e.g. MBEDTLS_MD_SHA256 */ + mbedtls_pk_type_t sig_pk; /**< Internal representation of the Public Key algorithm of the signature algorithm, e.g. MBEDTLS_PK_RSA */ + void *sig_opts; /**< Signature options to be passed to mbedtls_pk_verify_ext(), e.g. for RSASSA-PSS */ + + struct mbedtls_x509_crt *next; /**< Next certificate in the CA-chain. */ +} +mbedtls_x509_crt; + +/** + * Build flag from an algorithm/curve identifier (pk, md, ecp) + * Since 0 is always XXX_NONE, ignore it. + */ +#define MBEDTLS_X509_ID_FLAG( id ) ( 1 << ( id - 1 ) ) + +/** + * Security profile for certificate verification. + * + * All lists are bitfields, built by ORing flags from MBEDTLS_X509_ID_FLAG(). + */ +typedef struct +{ + uint32_t allowed_mds; /**< MDs for signatures */ + uint32_t allowed_pks; /**< PK algs for signatures */ + uint32_t allowed_curves; /**< Elliptic curves for ECDSA */ + uint32_t rsa_min_bitlen; /**< Minimum size for RSA keys */ +} +mbedtls_x509_crt_profile; + +#define MBEDTLS_X509_CRT_VERSION_1 0 +#define MBEDTLS_X509_CRT_VERSION_2 1 +#define MBEDTLS_X509_CRT_VERSION_3 2 + +#define MBEDTLS_X509_RFC5280_MAX_SERIAL_LEN 32 +#define MBEDTLS_X509_RFC5280_UTC_TIME_LEN 15 + +#if !defined( MBEDTLS_X509_MAX_FILE_PATH_LEN ) +#define MBEDTLS_X509_MAX_FILE_PATH_LEN 512 +#endif + +/** + * Container for writing a certificate (CRT) + */ +typedef struct mbedtls_x509write_cert +{ + int version; + mbedtls_mpi serial; + mbedtls_pk_context *subject_key; + mbedtls_pk_context *issuer_key; + mbedtls_asn1_named_data *subject; + mbedtls_asn1_named_data *issuer; + mbedtls_md_type_t md_alg; + char not_before[MBEDTLS_X509_RFC5280_UTC_TIME_LEN + 1]; + char not_after[MBEDTLS_X509_RFC5280_UTC_TIME_LEN + 1]; + mbedtls_asn1_named_data *extensions; +} +mbedtls_x509write_cert; + +#if defined(MBEDTLS_X509_CRT_PARSE_C) +/** + * Default security profile. Should provide a good balance between security + * and compatibility with current deployments. + */ +extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_default; + +/** + * Expected next default profile. Recommended for new deployments. + * Currently targets a 128-bit security level, except for RSA-2048. + */ +extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_next; + +/** + * NSA Suite B profile. + */ +extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_suiteb; + +/** + * \brief Parse a single DER formatted certificate and add it + * to the chained list. + * + * \param chain points to the start of the chain + * \param buf buffer holding the certificate DER data + * \param buflen size of the buffer + * + * \return 0 if successful, or a specific X509 or PEM error code + */ +int mbedtls_x509_crt_parse_der( mbedtls_x509_crt *chain, const unsigned char *buf, + size_t buflen ); + +/** + * \brief Parse one or more certificates and add them + * to the chained list. Parses permissively. If some + * certificates can be parsed, the result is the number + * of failed certificates it encountered. If none complete + * correctly, the first error is returned. + * + * \param chain points to the start of the chain + * \param buf buffer holding the certificate data in PEM or DER format + * \param buflen size of the buffer + * (including the terminating null byte for PEM data) + * + * \return 0 if all certificates parsed successfully, a positive number + * if partly successful or a specific X509 or PEM error code + */ +int mbedtls_x509_crt_parse( mbedtls_x509_crt *chain, const unsigned char *buf, size_t buflen ); + +#if defined(MBEDTLS_FS_IO) +/** + * \brief Load one or more certificates and add them + * to the chained list. Parses permissively. If some + * certificates can be parsed, the result is the number + * of failed certificates it encountered. If none complete + * correctly, the first error is returned. + * + * \param chain points to the start of the chain + * \param path filename to read the certificates from + * + * \return 0 if all certificates parsed successfully, a positive number + * if partly successful or a specific X509 or PEM error code + */ +int mbedtls_x509_crt_parse_file( mbedtls_x509_crt *chain, const char *path ); + +/** + * \brief Load one or more certificate files from a path and add them + * to the chained list. Parses permissively. If some + * certificates can be parsed, the result is the number + * of failed certificates it encountered. If none complete + * correctly, the first error is returned. + * + * \param chain points to the start of the chain + * \param path directory / folder to read the certificate files from + * + * \return 0 if all certificates parsed successfully, a positive number + * if partly successful or a specific X509 or PEM error code + */ +int mbedtls_x509_crt_parse_path( mbedtls_x509_crt *chain, const char *path ); +#endif /* MBEDTLS_FS_IO */ + +/** + * \brief Returns an informational string about the + * certificate. + * + * \param buf Buffer to write to + * \param size Maximum size of buffer + * \param prefix A line prefix + * \param crt The X509 certificate to represent + * + * \return The length of the string written (not including the + * terminated nul byte), or a negative error code. + */ +int mbedtls_x509_crt_info( char *buf, size_t size, const char *prefix, + const mbedtls_x509_crt *crt ); + +/** + * \brief Returns an informational string about the + * verification status of a certificate. + * + * \param buf Buffer to write to + * \param size Maximum size of buffer + * \param prefix A line prefix + * \param flags Verification flags created by mbedtls_x509_crt_verify() + * + * \return The length of the string written (not including the + * terminated nul byte), or a negative error code. + */ +int mbedtls_x509_crt_verify_info( char *buf, size_t size, const char *prefix, + uint32_t flags ); + +/** + * \brief Verify the certificate signature + * + * The verify callback is a user-supplied callback that + * can clear / modify / add flags for a certificate. If set, + * the verification callback is called for each + * certificate in the chain (from the trust-ca down to the + * presented crt). The parameters for the callback are: + * (void *parameter, mbedtls_x509_crt *crt, int certificate_depth, + * int *flags). With the flags representing current flags for + * that specific certificate and the certificate depth from + * the bottom (Peer cert depth = 0). + * + * All flags left after returning from the callback + * are also returned to the application. The function should + * return 0 for anything but a fatal error. + * + * \note In case verification failed, the results can be displayed + * using \c mbedtls_x509_crt_verify_info() + * + * \note Same as \c mbedtls_x509_crt_verify_with_profile() with the + * default security profile. + * + * \note It is your responsibility to provide up-to-date CRLs for + * all trusted CAs. If no CRL is provided for the CA that was + * used to sign the certificate, CRL verification is skipped + * silently, that is *without* setting any flag. + * + * \param crt a certificate (chain) to be verified + * \param trust_ca the list of trusted CAs + * \param ca_crl the list of CRLs for trusted CAs (see note above) + * \param cn expected Common Name (can be set to + * NULL if the CN must not be verified) + * \param flags result of the verification + * \param f_vrfy verification function + * \param p_vrfy verification parameter + * + * \return 0 if successful or MBEDTLS_ERR_X509_CERT_VERIFY_FAILED + * in which case *flags will have one or more + * MBEDTLS_X509_BADCERT_XXX or MBEDTLS_X509_BADCRL_XXX flags + * set, + * or another error in case of a fatal error encountered + * during the verification process. + */ +int mbedtls_x509_crt_verify( mbedtls_x509_crt *crt, + mbedtls_x509_crt *trust_ca, + mbedtls_x509_crl *ca_crl, + const char *cn, uint32_t *flags, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy ); + +/** + * \brief Verify the certificate signature according to profile + * + * \note Same as \c mbedtls_x509_crt_verify(), but with explicit + * security profile. + * + * \note The restrictions on keys (RSA minimum size, allowed curves + * for ECDSA) apply to all certificates: trusted root, + * intermediate CAs if any, and end entity certificate. + * + * \param crt a certificate (chain) to be verified + * \param trust_ca the list of trusted CAs + * \param ca_crl the list of CRLs for trusted CAs + * \param profile security profile for verification + * \param cn expected Common Name (can be set to + * NULL if the CN must not be verified) + * \param flags result of the verification + * \param f_vrfy verification function + * \param p_vrfy verification parameter + * + * \return 0 if successful or MBEDTLS_ERR_X509_CERT_VERIFY_FAILED + * in which case *flags will have one or more + * MBEDTLS_X509_BADCERT_XXX or MBEDTLS_X509_BADCRL_XXX flags + * set, + * or another error in case of a fatal error encountered + * during the verification process. + */ +int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, + mbedtls_x509_crt *trust_ca, + mbedtls_x509_crl *ca_crl, + const mbedtls_x509_crt_profile *profile, + const char *cn, uint32_t *flags, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy ); + +#if defined(MBEDTLS_X509_CHECK_KEY_USAGE) +/** + * \brief Check usage of certificate against keyUsage extension. + * + * \param crt Leaf certificate used. + * \param usage Intended usage(s) (eg MBEDTLS_X509_KU_KEY_ENCIPHERMENT + * before using the certificate to perform an RSA key + * exchange). + * + * \note Except for decipherOnly and encipherOnly, a bit set in the + * usage argument means this bit MUST be set in the + * certificate. For decipherOnly and encipherOnly, it means + * that bit MAY be set. + * + * \return 0 is these uses of the certificate are allowed, + * MBEDTLS_ERR_X509_BAD_INPUT_DATA if the keyUsage extension + * is present but does not match the usage argument. + * + * \note You should only call this function on leaf certificates, on + * (intermediate) CAs the keyUsage extension is automatically + * checked by \c mbedtls_x509_crt_verify(). + */ +int mbedtls_x509_crt_check_key_usage( const mbedtls_x509_crt *crt, + unsigned int usage ); +#endif /* MBEDTLS_X509_CHECK_KEY_USAGE) */ + +#if defined(MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE) +/** + * \brief Check usage of certificate against extentedJeyUsage. + * + * \param crt Leaf certificate used. + * \param usage_oid Intended usage (eg MBEDTLS_OID_SERVER_AUTH or MBEDTLS_OID_CLIENT_AUTH). + * \param usage_len Length of usage_oid (eg given by MBEDTLS_OID_SIZE()). + * + * \return 0 if this use of the certificate is allowed, + * MBEDTLS_ERR_X509_BAD_INPUT_DATA if not. + * + * \note Usually only makes sense on leaf certificates. + */ +int mbedtls_x509_crt_check_extended_key_usage( const mbedtls_x509_crt *crt, + const char *usage_oid, + size_t usage_len ); +#endif /* MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE) */ + +#if defined(MBEDTLS_X509_CRL_PARSE_C) +/** + * \brief Verify the certificate revocation status + * + * \param crt a certificate to be verified + * \param crl the CRL to verify against + * + * \return 1 if the certificate is revoked, 0 otherwise + * + */ +int mbedtls_x509_crt_is_revoked( const mbedtls_x509_crt *crt, const mbedtls_x509_crl *crl ); +#endif /* MBEDTLS_X509_CRL_PARSE_C */ + +/** + * \brief Initialize a certificate (chain) + * + * \param crt Certificate chain to initialize + */ +void mbedtls_x509_crt_init( mbedtls_x509_crt *crt ); + +/** + * \brief Unallocate all certificate data + * + * \param crt Certificate chain to free + */ +void mbedtls_x509_crt_free( mbedtls_x509_crt *crt ); +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +/* \} name */ +/* \} addtogroup x509_module */ + +#if defined(MBEDTLS_X509_CRT_WRITE_C) +/** + * \brief Initialize a CRT writing context + * + * \param ctx CRT context to initialize + */ +void mbedtls_x509write_crt_init( mbedtls_x509write_cert *ctx ); + +/** + * \brief Set the verion for a Certificate + * Default: MBEDTLS_X509_CRT_VERSION_3 + * + * \param ctx CRT context to use + * \param version version to set (MBEDTLS_X509_CRT_VERSION_1, MBEDTLS_X509_CRT_VERSION_2 or + * MBEDTLS_X509_CRT_VERSION_3) + */ +void mbedtls_x509write_crt_set_version( mbedtls_x509write_cert *ctx, int version ); + +/** + * \brief Set the serial number for a Certificate. + * + * \param ctx CRT context to use + * \param serial serial number to set + * + * \return 0 if successful + */ +int mbedtls_x509write_crt_set_serial( mbedtls_x509write_cert *ctx, const mbedtls_mpi *serial ); + +/** + * \brief Set the validity period for a Certificate + * Timestamps should be in string format for UTC timezone + * i.e. "YYYYMMDDhhmmss" + * e.g. "20131231235959" for December 31st 2013 + * at 23:59:59 + * + * \param ctx CRT context to use + * \param not_before not_before timestamp + * \param not_after not_after timestamp + * + * \return 0 if timestamp was parsed successfully, or + * a specific error code + */ +int mbedtls_x509write_crt_set_validity( mbedtls_x509write_cert *ctx, const char *not_before, + const char *not_after ); + +/** + * \brief Set the issuer name for a Certificate + * Issuer names should contain a comma-separated list + * of OID types and values: + * e.g. "C=UK,O=ARM,CN=mbed TLS CA" + * + * \param ctx CRT context to use + * \param issuer_name issuer name to set + * + * \return 0 if issuer name was parsed successfully, or + * a specific error code + */ +int mbedtls_x509write_crt_set_issuer_name( mbedtls_x509write_cert *ctx, + const char *issuer_name ); + +/** + * \brief Set the subject name for a Certificate + * Subject names should contain a comma-separated list + * of OID types and values: + * e.g. "C=UK,O=ARM,CN=mbed TLS Server 1" + * + * \param ctx CRT context to use + * \param subject_name subject name to set + * + * \return 0 if subject name was parsed successfully, or + * a specific error code + */ +int mbedtls_x509write_crt_set_subject_name( mbedtls_x509write_cert *ctx, + const char *subject_name ); + +/** + * \brief Set the subject public key for the certificate + * + * \param ctx CRT context to use + * \param key public key to include + */ +void mbedtls_x509write_crt_set_subject_key( mbedtls_x509write_cert *ctx, mbedtls_pk_context *key ); + +/** + * \brief Set the issuer key used for signing the certificate + * + * \param ctx CRT context to use + * \param key private key to sign with + */ +void mbedtls_x509write_crt_set_issuer_key( mbedtls_x509write_cert *ctx, mbedtls_pk_context *key ); + +/** + * \brief Set the MD algorithm to use for the signature + * (e.g. MBEDTLS_MD_SHA1) + * + * \param ctx CRT context to use + * \param md_alg MD algorithm to use + */ +void mbedtls_x509write_crt_set_md_alg( mbedtls_x509write_cert *ctx, mbedtls_md_type_t md_alg ); + +/** + * \brief Generic function to add to or replace an extension in the + * CRT + * + * \param ctx CRT context to use + * \param oid OID of the extension + * \param oid_len length of the OID + * \param critical if the extension is critical (per the RFC's definition) + * \param val value of the extension OCTET STRING + * \param val_len length of the value data + * + * \return 0 if successful, or a MBEDTLS_ERR_X509_ALLOC_FAILED + */ +int mbedtls_x509write_crt_set_extension( mbedtls_x509write_cert *ctx, + const char *oid, size_t oid_len, + int critical, + const unsigned char *val, size_t val_len ); + +/** + * \brief Set the basicConstraints extension for a CRT + * + * \param ctx CRT context to use + * \param is_ca is this a CA certificate + * \param max_pathlen maximum length of certificate chains below this + * certificate (only for CA certificates, -1 is + * inlimited) + * + * \return 0 if successful, or a MBEDTLS_ERR_X509_ALLOC_FAILED + */ +int mbedtls_x509write_crt_set_basic_constraints( mbedtls_x509write_cert *ctx, + int is_ca, int max_pathlen ); + +#if defined(MBEDTLS_SHA1_C) +/** + * \brief Set the subjectKeyIdentifier extension for a CRT + * Requires that mbedtls_x509write_crt_set_subject_key() has been + * called before + * + * \param ctx CRT context to use + * + * \return 0 if successful, or a MBEDTLS_ERR_X509_ALLOC_FAILED + */ +int mbedtls_x509write_crt_set_subject_key_identifier( mbedtls_x509write_cert *ctx ); + +/** + * \brief Set the authorityKeyIdentifier extension for a CRT + * Requires that mbedtls_x509write_crt_set_issuer_key() has been + * called before + * + * \param ctx CRT context to use + * + * \return 0 if successful, or a MBEDTLS_ERR_X509_ALLOC_FAILED + */ +int mbedtls_x509write_crt_set_authority_key_identifier( mbedtls_x509write_cert *ctx ); +#endif /* MBEDTLS_SHA1_C */ + +/** + * \brief Set the Key Usage Extension flags + * (e.g. MBEDTLS_X509_KU_DIGITAL_SIGNATURE | MBEDTLS_X509_KU_KEY_CERT_SIGN) + * + * \param ctx CRT context to use + * \param key_usage key usage flags to set + * + * \return 0 if successful, or MBEDTLS_ERR_X509_ALLOC_FAILED + */ +int mbedtls_x509write_crt_set_key_usage( mbedtls_x509write_cert *ctx, + unsigned int key_usage ); + +/** + * \brief Set the Netscape Cert Type flags + * (e.g. MBEDTLS_X509_NS_CERT_TYPE_SSL_CLIENT | MBEDTLS_X509_NS_CERT_TYPE_EMAIL) + * + * \param ctx CRT context to use + * \param ns_cert_type Netscape Cert Type flags to set + * + * \return 0 if successful, or MBEDTLS_ERR_X509_ALLOC_FAILED + */ +int mbedtls_x509write_crt_set_ns_cert_type( mbedtls_x509write_cert *ctx, + unsigned char ns_cert_type ); + +/** + * \brief Free the contents of a CRT write context + * + * \param ctx CRT context to free + */ +void mbedtls_x509write_crt_free( mbedtls_x509write_cert *ctx ); + +/** + * \brief Write a built up certificate to a X509 DER structure + * Note: data is written at the end of the buffer! Use the + * return value to determine where you should start + * using the buffer + * + * \param ctx certificate to write away + * \param buf buffer to write to + * \param size size of the buffer + * \param f_rng RNG function (for signature, see note) + * \param p_rng RNG parameter + * + * \return length of data written if successful, or a specific + * error code + * + * \note f_rng may be NULL if RSA is used for signature and the + * signature is made offline (otherwise f_rng is desirable + * for countermeasures against timing attacks). + * ECDSA signatures always require a non-NULL f_rng. + */ +int mbedtls_x509write_crt_der( mbedtls_x509write_cert *ctx, unsigned char *buf, size_t size, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +#if defined(MBEDTLS_PEM_WRITE_C) +/** + * \brief Write a built up certificate to a X509 PEM string + * + * \param ctx certificate to write away + * \param buf buffer to write to + * \param size size of the buffer + * \param f_rng RNG function (for signature, see note) + * \param p_rng RNG parameter + * + * \return 0 if successful, or a specific error code + * + * \note f_rng may be NULL if RSA is used for signature and the + * signature is made offline (otherwise f_rng is desirable + * for countermeasures against timing attacks). + * ECDSA signatures always require a non-NULL f_rng. + */ +int mbedtls_x509write_crt_pem( mbedtls_x509write_cert *ctx, unsigned char *buf, size_t size, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); +#endif /* MBEDTLS_PEM_WRITE_C */ +#endif /* MBEDTLS_X509_CRT_WRITE_C */ + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_x509_crt.h */ diff --git a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/x509_csr.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509_csr.h similarity index 56% rename from OpenVPN Adapter/Vendors/polarssl/include/polarssl/x509_csr.h rename to OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509_csr.h index 34f527b..fe9843c 100644 --- a/OpenVPN Adapter/Vendors/polarssl/include/polarssl/x509_csr.h +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/x509_csr.h @@ -3,31 +3,30 @@ * * \brief X.509 certificate signing request parsing and writing * - * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. * * This file is part of mbed TLS (https://tls.mbed.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef POLARSSL_X509_CSR_H -#define POLARSSL_X509_CSR_H +#ifndef MBEDTLS_X509_CSR_H +#define MBEDTLS_X509_CSR_H -#if !defined(POLARSSL_CONFIG_FILE) +#if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else -#include POLARSSL_CONFIG_FILE +#include MBEDTLS_CONFIG_FILE #endif #include "x509.h" @@ -48,73 +47,80 @@ extern "C" { /** * Certificate Signing Request (CSR) structure. */ -typedef struct _x509_csr +typedef struct mbedtls_x509_csr { - x509_buf raw; /**< The raw CSR data (DER). */ - x509_buf cri; /**< The raw CertificateRequestInfo body (DER). */ + mbedtls_x509_buf raw; /**< The raw CSR data (DER). */ + mbedtls_x509_buf cri; /**< The raw CertificateRequestInfo body (DER). */ int version; /**< CSR version (1=v1). */ - x509_buf subject_raw; /**< The raw subject data (DER). */ - x509_name subject; /**< The parsed subject data (named information object). */ + mbedtls_x509_buf subject_raw; /**< The raw subject data (DER). */ + mbedtls_x509_name subject; /**< The parsed subject data (named information object). */ - pk_context pk; /**< Container for the public key context. */ + mbedtls_pk_context pk; /**< Container for the public key context. */ - x509_buf sig_oid; - x509_buf sig; - md_type_t sig_md; /**< Internal representation of the MD algorithm of the signature algorithm, e.g. POLARSSL_MD_SHA256 */ - pk_type_t sig_pk; /**< Internal representation of the Public Key algorithm of the signature algorithm, e.g. POLARSSL_PK_RSA */ - void *sig_opts; /**< Signature options to be passed to pk_verify_ext(), e.g. for RSASSA-PSS */ + mbedtls_x509_buf sig_oid; + mbedtls_x509_buf sig; + mbedtls_md_type_t sig_md; /**< Internal representation of the MD algorithm of the signature algorithm, e.g. MBEDTLS_MD_SHA256 */ + mbedtls_pk_type_t sig_pk; /**< Internal representation of the Public Key algorithm of the signature algorithm, e.g. MBEDTLS_PK_RSA */ + void *sig_opts; /**< Signature options to be passed to mbedtls_pk_verify_ext(), e.g. for RSASSA-PSS */ } -x509_csr; +mbedtls_x509_csr; /** * Container for writing a CSR */ -typedef struct _x509write_csr +typedef struct mbedtls_x509write_csr { - pk_context *key; - asn1_named_data *subject; - md_type_t md_alg; - asn1_named_data *extensions; + mbedtls_pk_context *key; + mbedtls_asn1_named_data *subject; + mbedtls_md_type_t md_alg; + mbedtls_asn1_named_data *extensions; } -x509write_csr; +mbedtls_x509write_csr; -#if defined(POLARSSL_X509_CSR_PARSE_C) +#if defined(MBEDTLS_X509_CSR_PARSE_C) /** * \brief Load a Certificate Signing Request (CSR) in DER format * + * \note CSR attributes (if any) are currently silently ignored. + * * \param csr CSR context to fill * \param buf buffer holding the CRL data * \param buflen size of the buffer * * \return 0 if successful, or a specific X509 error code */ -int x509_csr_parse_der( x509_csr *csr, +int mbedtls_x509_csr_parse_der( mbedtls_x509_csr *csr, const unsigned char *buf, size_t buflen ); /** * \brief Load a Certificate Signing Request (CSR), DER or PEM format * + * \note See notes for \c mbedtls_x509_csr_parse_der() + * * \param csr CSR context to fill * \param buf buffer holding the CRL data * \param buflen size of the buffer + * (including the terminating null byte for PEM data) * * \return 0 if successful, or a specific X509 or PEM error code */ -int x509_csr_parse( x509_csr *csr, const unsigned char *buf, size_t buflen ); +int mbedtls_x509_csr_parse( mbedtls_x509_csr *csr, const unsigned char *buf, size_t buflen ); -#if defined(POLARSSL_FS_IO) +#if defined(MBEDTLS_FS_IO) /** * \brief Load a Certificate Signing Request (CSR) * + * \note See notes for \c mbedtls_x509_csr_parse() + * * \param csr CSR context to fill * \param path filename to read the CSR from * * \return 0 if successful, or a specific X509 or PEM error code */ -int x509_csr_parse_file( x509_csr *csr, const char *path ); -#endif /* POLARSSL_FS_IO */ +int mbedtls_x509_csr_parse_file( mbedtls_x509_csr *csr, const char *path ); +#endif /* MBEDTLS_FS_IO */ /** * \brief Returns an informational string about the @@ -125,37 +131,37 @@ int x509_csr_parse_file( x509_csr *csr, const char *path ); * \param prefix A line prefix * \param csr The X509 CSR to represent * - * \return The length of the string written (exluding the terminating - * null byte), or a negative value in case of an error. + * \return The length of the string written (not including the + * terminated nul byte), or a negative error code. */ -int x509_csr_info( char *buf, size_t size, const char *prefix, - const x509_csr *csr ); +int mbedtls_x509_csr_info( char *buf, size_t size, const char *prefix, + const mbedtls_x509_csr *csr ); /** * \brief Initialize a CSR * * \param csr CSR to initialize */ -void x509_csr_init( x509_csr *csr ); +void mbedtls_x509_csr_init( mbedtls_x509_csr *csr ); /** * \brief Unallocate all CSR data * * \param csr CSR to free */ -void x509_csr_free( x509_csr *csr ); -#endif /* POLARSSL_X509_CSR_PARSE_C */ +void mbedtls_x509_csr_free( mbedtls_x509_csr *csr ); +#endif /* MBEDTLS_X509_CSR_PARSE_C */ /* \} name */ /* \} addtogroup x509_module */ -#if defined(POLARSSL_X509_CSR_WRITE_C) +#if defined(MBEDTLS_X509_CSR_WRITE_C) /** * \brief Initialize a CSR context * * \param ctx CSR context to initialize */ -void x509write_csr_init( x509write_csr *ctx ); +void mbedtls_x509write_csr_init( mbedtls_x509write_csr *ctx ); /** * \brief Set the subject name for a CSR @@ -169,7 +175,7 @@ void x509write_csr_init( x509write_csr *ctx ); * \return 0 if subject name was parsed successfully, or * a specific error code */ -int x509write_csr_set_subject_name( x509write_csr *ctx, +int mbedtls_x509write_csr_set_subject_name( mbedtls_x509write_csr *ctx, const char *subject_name ); /** @@ -179,38 +185,38 @@ int x509write_csr_set_subject_name( x509write_csr *ctx, * \param ctx CSR context to use * \param key Asymetric key to include */ -void x509write_csr_set_key( x509write_csr *ctx, pk_context *key ); +void mbedtls_x509write_csr_set_key( mbedtls_x509write_csr *ctx, mbedtls_pk_context *key ); /** * \brief Set the MD algorithm to use for the signature - * (e.g. POLARSSL_MD_SHA1) + * (e.g. MBEDTLS_MD_SHA1) * * \param ctx CSR context to use * \param md_alg MD algorithm to use */ -void x509write_csr_set_md_alg( x509write_csr *ctx, md_type_t md_alg ); +void mbedtls_x509write_csr_set_md_alg( mbedtls_x509write_csr *ctx, mbedtls_md_type_t md_alg ); /** * \brief Set the Key Usage Extension flags - * (e.g. KU_DIGITAL_SIGNATURE | KU_KEY_CERT_SIGN) + * (e.g. MBEDTLS_X509_KU_DIGITAL_SIGNATURE | MBEDTLS_X509_KU_KEY_CERT_SIGN) * * \param ctx CSR context to use * \param key_usage key usage flags to set * - * \return 0 if successful, or POLARSSL_ERR_X509WRITE_MALLOC_FAILED + * \return 0 if successful, or MBEDTLS_ERR_X509_ALLOC_FAILED */ -int x509write_csr_set_key_usage( x509write_csr *ctx, unsigned char key_usage ); +int mbedtls_x509write_csr_set_key_usage( mbedtls_x509write_csr *ctx, unsigned char key_usage ); /** * \brief Set the Netscape Cert Type flags - * (e.g. NS_CERT_TYPE_SSL_CLIENT | NS_CERT_TYPE_EMAIL) + * (e.g. MBEDTLS_X509_NS_CERT_TYPE_SSL_CLIENT | MBEDTLS_X509_NS_CERT_TYPE_EMAIL) * * \param ctx CSR context to use * \param ns_cert_type Netscape Cert Type flags to set * - * \return 0 if successful, or POLARSSL_ERR_X509WRITE_MALLOC_FAILED + * \return 0 if successful, or MBEDTLS_ERR_X509_ALLOC_FAILED */ -int x509write_csr_set_ns_cert_type( x509write_csr *ctx, +int mbedtls_x509write_csr_set_ns_cert_type( mbedtls_x509write_csr *ctx, unsigned char ns_cert_type ); /** @@ -223,9 +229,9 @@ int x509write_csr_set_ns_cert_type( x509write_csr *ctx, * \param val value of the extension OCTET STRING * \param val_len length of the value data * - * \return 0 if successful, or a POLARSSL_ERR_X509WRITE_MALLOC_FAILED + * \return 0 if successful, or a MBEDTLS_ERR_X509_ALLOC_FAILED */ -int x509write_csr_set_extension( x509write_csr *ctx, +int mbedtls_x509write_csr_set_extension( mbedtls_x509write_csr *ctx, const char *oid, size_t oid_len, const unsigned char *val, size_t val_len ); @@ -234,7 +240,7 @@ int x509write_csr_set_extension( x509write_csr *ctx, * * \param ctx CSR context to free */ -void x509write_csr_free( x509write_csr *ctx ); +void mbedtls_x509write_csr_free( mbedtls_x509write_csr *ctx ); /** * \brief Write a CSR (Certificate Signing Request) to a @@ -257,11 +263,11 @@ void x509write_csr_free( x509write_csr *ctx ); * for countermeasures against timing attacks). * ECDSA signatures always require a non-NULL f_rng. */ -int x509write_csr_der( x509write_csr *ctx, unsigned char *buf, size_t size, +int mbedtls_x509write_csr_der( mbedtls_x509write_csr *ctx, unsigned char *buf, size_t size, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); -#if defined(POLARSSL_PEM_WRITE_C) +#if defined(MBEDTLS_PEM_WRITE_C) /** * \brief Write a CSR (Certificate Signing Request) to a * PEM string @@ -272,21 +278,21 @@ int x509write_csr_der( x509write_csr *ctx, unsigned char *buf, size_t size, * \param f_rng RNG function (for signature, see note) * \param p_rng RNG parameter * - * \return 0 successful, or a specific error code + * \return 0 if successful, or a specific error code * * \note f_rng may be NULL if RSA is used for signature and the * signature is made offline (otherwise f_rng is desirable - * for couermeasures against timing attacks). + * for countermeasures against timing attacks). * ECDSA signatures always require a non-NULL f_rng. */ -int x509write_csr_pem( x509write_csr *ctx, unsigned char *buf, size_t size, +int mbedtls_x509write_csr_pem( mbedtls_x509write_csr *ctx, unsigned char *buf, size_t size, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); -#endif /* POLARSSL_PEM_WRITE_C */ -#endif /* POLARSSL_X509_CSR_WRITE_C */ +#endif /* MBEDTLS_PEM_WRITE_C */ +#endif /* MBEDTLS_X509_CSR_WRITE_C */ #ifdef __cplusplus } #endif -#endif /* x509_csr.h */ +#endif /* mbedtls_x509_csr.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/xtea.h b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/xtea.h new file mode 100644 index 0000000..b073f84 --- /dev/null +++ b/OpenVPN Adapter/Vendors/mbedtls/include/mbedtls/xtea.h @@ -0,0 +1,139 @@ +/** + * \file xtea.h + * + * \brief XTEA block cipher (32-bit) + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_XTEA_H +#define MBEDTLS_XTEA_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#define MBEDTLS_XTEA_ENCRYPT 1 +#define MBEDTLS_XTEA_DECRYPT 0 + +#define MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH -0x0028 /**< The data input has an invalid length. */ + +#if !defined(MBEDTLS_XTEA_ALT) +// Regular implementation +// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief XTEA context structure + */ +typedef struct +{ + uint32_t k[4]; /*!< key */ +} +mbedtls_xtea_context; + +/** + * \brief Initialize XTEA context + * + * \param ctx XTEA context to be initialized + */ +void mbedtls_xtea_init( mbedtls_xtea_context *ctx ); + +/** + * \brief Clear XTEA context + * + * \param ctx XTEA context to be cleared + */ +void mbedtls_xtea_free( mbedtls_xtea_context *ctx ); + +/** + * \brief XTEA key schedule + * + * \param ctx XTEA context to be initialized + * \param key the secret key + */ +void mbedtls_xtea_setup( mbedtls_xtea_context *ctx, const unsigned char key[16] ); + +/** + * \brief XTEA cipher function + * + * \param ctx XTEA context + * \param mode MBEDTLS_XTEA_ENCRYPT or MBEDTLS_XTEA_DECRYPT + * \param input 8-byte input block + * \param output 8-byte output block + * + * \return 0 if successful + */ +int mbedtls_xtea_crypt_ecb( mbedtls_xtea_context *ctx, + int mode, + const unsigned char input[8], + unsigned char output[8] ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/** + * \brief XTEA CBC cipher function + * + * \param ctx XTEA context + * \param mode MBEDTLS_XTEA_ENCRYPT or MBEDTLS_XTEA_DECRYPT + * \param length the length of input, multiple of 8 + * \param iv initialization vector for CBC mode + * \param input input block + * \param output output block + * + * \return 0 if successful, + * MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH if the length % 8 != 0 + */ +int mbedtls_xtea_crypt_cbc( mbedtls_xtea_context *ctx, + int mode, + size_t length, + unsigned char iv[8], + const unsigned char *input, + unsigned char *output); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#ifdef __cplusplus +} +#endif + +#else /* MBEDTLS_XTEA_ALT */ +#include "xtea_alt.h" +#endif /* MBEDTLS_XTEA_ALT */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_xtea_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* xtea.h */ diff --git a/OpenVPN Adapter/Vendors/mbedtls/lib/ios/libmbedcrypto.a b/OpenVPN Adapter/Vendors/mbedtls/lib/ios/libmbedcrypto.a new file mode 100644 index 0000000000000000000000000000000000000000..48c6d8b44e8bf5d69cce506d002a7791a53338d9 GIT binary patch literal 1394432 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

DGUwG8r^j|Qgi#N3RzS4uU@$I-(E($9Kd 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�e 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�HYVsad@byZ($ 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 RBFiZ~hw3nhs9nTU|J3bsXfZ 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

HeCGaa?3=s3am$d@M1Mv-D=^}*x3_AQB z?_y6aXu4{V(PZ%=19eup-KE^(!I zh*|s7{a{2FlN0h$2 z#j0J-=8Kmg%ohkldX&+8u@7fVG2ae2!z&IsTjE_y*Q3KITeOSs8TdZ~8#OTo+3kC{ zS?B&f*y#xJb^5}{4o8r0=*L7IMSWbdFmbsVPZvk?#kJ7G{C>zf6$afXKQSyQx0do? z`@@hodSOI|!;pu5XOw)iU49gKGXvir9ge8Qwa$+H51>pa87wy_Kjo-@po8V&c9b#X zssCl8>K&YA$TC9y26+p?dp>1w_RmuW9cVinDuV}Mn{zFPhhY29P%aiNXtF9kEF5JG z-_e!ZUCJ#6ZZRl-hfpqJ?h04sjb-hSDu3atSk~S`etikIV<<~3Z<|rxHlr+ki7+g0 zze0J_Wo==gtg-xkj=Vg$z}ew*oMD#1Ruu=&vJ9H-ger&7?dlXII~T+ zSIt%3H`}Mg#@c}KLHqA?@H@7A*Rhoa7i8l+(&HO2Cc$>12G59tXxmJFyFHGmvbNAt z*6?h+$N1pzwRlFsul_UV&cHK=ZP01;&Is!L81$x2e&}P@qvl$CLsPmmT<-bae(62N zGADj#6z`Z|ybBO7#~&H@+1O$@Z27a;;M$-rH$oToy{QY|<7@Dou%_qV^7%9>n7%HO z$BjOplE8aD&!=HOPusxflf4Z7%d`zRZ}6ZW*=V~k z3g4jcEZl&8%@?X)(;`ZJ6GuPEd`5+#u9{`K7JaVKjkRe5f_g8PI$>=a*e|OYg?8aI z{j#3um)YBf!-zMfv3U93BmJqlh_|7(;iqiDcHw8ULGPe0n2&PSZG)L#|FZpt9>Mfs zuCr?Q8f_c8>NCIjK80^0t^9bm+Hg{TtKd7Ba@%NBt%h5Jec#S_A44D6_cD0Z^O5hp z{PuFI`gZKYIg_X#V|^VGtME>^jPHvlXTMp_Z`jnyjgt&B;;vZ#tEpS26w0M-no|EL?M_+WFzScF)9C?|A2zHxxfIP#VjzgP2^2oG^jJ|)4?l$`Am%2Yc{floaTKs+dE7|jhT>RXJTmt%^>pU#r zEdAU26Mw(%;jd%gteW$}kMqt})YT=IyxHaUqHfoEyS%(;_ukb9E4uXU6Sm$r=#9I& z_T04Q@-F|?_Jy%imUmqE(Da)&EvjhJVO`Xa>5-d$=b7MJHfq?7zdE1r)OFIJt5Rc| zE>F4r?r%G+{ zj%;e#?9E{#S2FyP1EW_?zTtx3JIe-aS~IM2#p}yjKUKZ9RrxEI^&0x_U45Q$9NMt{ zpX-M%-L?OPd-g6_F#9jDb3fd){vv1Uz-K>W`18G1e%@_CvtvIF?|9i=NsG4p&smEb zQv7bzP{Tj`NYn4%`gN}!_&L=#TZ5i|JqtCWoGxm#aFV5=T|GLVzr(|FLk5^wD zQ!*;H*ogk_eTeg4W6*7XWWZ_U*McN z^7~6auYGy&RSbW=*Za>Tdaj!|V^*{4-`?}e*N?Y5TY2emZybB{hK0?(xqI-sUW=|? zm~-Wl{o6m=@y^_pYhUX=?t_XYTOLflvBj&NXSOVkx#8Z@gt!0alI-QL+!?v;o&TA9 zfAIyI&nG-}t-dYp_`CBK_J4NN8&@4)IpV$NF0Q#Q>UYz>f4lE@e_i#;`2D|gN7r3G;@P{@D&`3XPQL&B zUHv9qad)Tj>pvfP)5ck&_Vzj2=CyCHoccoR@vnV)-7USo?(wIbr~7<;(`&t-{(kGt z?~K{jzspk}ulT<9rq5enJnD+pAAbJCRn2~NLx-A_O>0lSH)-|T&z|}*>icVYeKYjJ zM|Y?FX}}8){IT%6Ys;cP_`3D@ZiD)M`8B;Yez3myR_iouKe3h&U(M)^%qV1)2F2wuf~n*aOHr7+pl@%;kRxbIl9e{mzV!z zeagL4zU=tmmYpx{{qs$=#~-7OdAU1kOia)?5igRwiVHNB;~eSO6o3+o}Iu}px@Hy;oiZW5RQ8WQ_m$p##gG*QvgKL;syd4j(Y?HJ+Z*npu1`G zgaaAg05beZw?fY$Aj5A0lD}M|X9-ULfUh4`9mMrO~q$NRtf(;+-fpL8E6NuqEhz8a;i07;{VIUcW$3H((3U-18Uc z;hw+fi>J2J=xGbYx2e<^jh=8Ik{-7YnTNi4>Ryd%FJP>zN!H+zXiUR{~jn+(4F}jv77f zfGt6{)#!-jkmZMa0kiyYp%BZ@Nqletdg_2IKi_Ed_<<}x+kh-T+%p*H z*$QO&*`m?29!NdQfGj_&HF~(0a1+oAGCZig zY2Qs6J*$DVV-Aq@bD~Di1aWT*q~0+aJN3FwoNn zNPBYcV4#P42h*Nzjh>D`+OwTTPg@}E8KcqD97ub*GpE}cZ){PCLrxwuFz9I!r&eb<6jQk52K^&5jPD;KJGCK%)CYD2|_0WDbFqL9mSn{ z%2J*WnbZeZgv_Cw0*#r|gy!Cnsdu}owPMoKlG>w^VAmf?P zOvjS|B)z4n#!bi+re_h5=}8232XaqH;#L@y^0>z%Ftc3f^+K-zGTwY~pC;~09Xh^w zK*~=BQqBmCnL~x9fT1ciauar{WTh3-Qd;g<>>FSNN1b*a#? zP?py<_>n(G=*t)%Xde>GYq-!8VLV=G_$mE_zEJ$z34OEpucQHR4aJZA#X?^q{Aog0 zihntb#%sCw$09R$-5}}pNP0#IJyPgj2z{NGQ`fro`c><24%_~djqvDTdT=^#m!#1H;hHD3m z-z)zKs877E18os!+-#%!+UVBM$I8z=d#vQ9V9GMo%$74z1k~9v-lD=_2uTi48_MD_Ls_>? z%Etj-vKK%-KFFL~prmKd1R`Z>zaFGZAyXwA_#mR}8QiZYi^EDr7QEzSFWKHFyWkFU zdmpW=rc66CaZ}Xk%RwdRmhHU*u}zwllZA5#VFz#CtfDDF7M}lx(;R~ilEAqIIM2u8 zOi`vA@2BR@fv*1)t--xGZFvz$U)yKu#W)UO?^y+ z(^*{%XMNsDmKey7{-%X#XKWLNO=qwp3pSS+)Gr<`+B?2qzbgg~bh`&9^iK%n$IMCD zSvlUxQvM~zSeFnx}q zpTvvuDDoCOFUsj~miteba>g($uIA{^SuasH;FOg$xv(%mQNIzx#|{rVBucuN*XD)C zUEs2t=ydy8TxCA@B;d_9{Q`pJrm=F!_m6?#*^l?V^-#!K4k?m9niPF+zSo@fW#7-@ zfb$NuuG@$C<37v@H`i?YoVNWes)Ktyz-EE9>ZnB_>&<<=F<-q0)~R;ITw=_zcVjLA z*K|SA69c`@eySHZ7}bI%WB&I#PT zv8^7s*#9Zk&wY$_bsuAX{-=pUFn@nWWHZc7Ks=QHBhZhZW0IlP_xLb3!sooCf_?{_ zi7(WA%(c^)M~FEOoGV0k${7}6%n8hMfPW42Iskp>@4E=|^Se4eFyr7o3=DHHK76fxT%>70}_Rzq3kxTI!OrCQ5XuopsBJC$= zC$2lDj?B9-%UqgOnS4V|k=8xAP@3`(N5H3pFlwsC5Z^inL%sN%> zBrk${j9i1g4$M79ntgC`b|GAvNKEG3c|0tshuN7_mT^*QXiM4PnY)8B^#x8u&9r_<8&m7~pYuWu5)6ds3vC7{p@dd0kujq-ncU(`%a>6}QYSBKp zy1(-n_I9a@jhD4nSj%Is6SSwf3FARnlRsE?E$gF_uzrX6hkU3(9oiesw=(W>pgo*} z@uS|9H$mJ$bB&*>)2JKB?-O`@Djwc*&AX~kh@bINuOIPKWfS~t=gnsV{c7;*g0@_@ z@%mYz>Mioz^kW&+?Y#Eq`q3JeC+@QWdny{bfqsu`75PlvgErls7SgT>dafSpbg(QX zZ#b2t*AQaQCFHf>uBxgn-;0*)cDL&7{AMJS+<-^WZKD2u-OCKmOSJEl%t&_GM zhxT?X);~81wzt(xH_|-+LOjdPFx~P@!~9E~ZrEL=8}9{;%z&SAm**qPIfh7-?RH#Kt$k#^dlzv)DL^ zHf{qOqkK7=pf7ZZtY>MYTw$#R%SbKSNyfb)JM05|<3qX8>&yHZ4XiC2hW*>X$1)J+ z;J$FiQtX=mEdEgUhmB>!9ER#gvJQSGd6CGu)eXtR+;u*G{o_?%xGiP#IZ1uOB8xw) z$#yKG8|g-6plq5leg}J-;mVnw)5UMjDM$RJ%qzr)_H}6&tY36Ra_=YIzBL+m-(cMH z5Z=_)#0Jyc8(|u!IR%()6(4@_gL@T+@9_$-Sy_D z*Jr(EQhuT4jWo*M**M|&fzQ@|@{8BTeD{mhH|Kn{@7=H^b*+-0TJ&Sy#+$ypy5hR4 zFPix1-do%JZhzu+_pO`%?TusS=Kb=}W5(Lu(f_sT$M~bq4_P(wp5zaH`*`;jLoZno z6SK1Q^6u|ep4=5Twy=G{j+i^w-`~CcBe!1r2cy&7*H7N|$%ql(f30@XGB=2JQS~mz!_??OPA78nC43 zVC~~Se)@+s(<}Gl9Qu|6H{N~pru`fCy?bSwUtF;I=}k$0s9XE`r6nn;k&&mKZ!u@Z z@i(6ObK#{&FZTWR`n}s*_qfLQ>mOcvv9`m&<^T2S%J07z?ayk{a_9ORUpC&thX?ep zQ+H_eR025$xJ2Ab#hvFSqV0%F2BO^N^Snf0=0M;8xc39%FSUOgrwH`y293HE_ZAR;sXH`!%7Nrx45r3YuNdJD~&vO_5(2t8@Cfkd-1$Qpl2Hp zf2oxkJzIfzk4W93(NhjYJ&ogejFh_)$T8j(8a<1|y%ZX^A7Y4mIp|4l%Au8La< zB;OM4pIWNXGY?36XoYf z^OH4Z4g{+BfU)rZ21aK->;f{LO+dy|t}(Mr=+#261co7=6&gJQfewU=1@;6ULndI@ zEp90g-zwDDGV3wNmU{!;z{`Q*z&=2pmq@-PK$iQH$fRDtfk4t_$Q(Ct0Wc1KJTH*` ziNJn97m(@PkHk~&eHt@&04bN}|1o}^=Z8*D+-@jOzFitK-x7L<&?|uqR}5sl(}0YR z=kqcC1fj!$jDIf@&-k|jFNNGK8Z%b_nO<{@dn{;%=h!ygdA=U)&|L5vJcLN^1JW+& z>!^6g0x365V`j3@BZTe-bc6p1q|Z7AZ~$^i^E^#n=(njcYx7(8BjiUKzC!!Q>pr3X zAvA)j@biSOA`M%c-=fViXY*V4?GnC)e5-z2_zQ)eCH@x(ohx)Fp*e<2`PD*i68ebH zw+R0bp&t_3OiwXsi+;aD+BhcclJs8%dDb!Fw(uieiE_vb9}^Y53*}B-LT`Z_UOcym z{LK*uuMHA@ACMR7y7Kp-9`ibmANiMvJeDug`9hD9@SJ18>z_g=XwoPY{spL~yf|jg z@QWlpvv7~Uz_q|e53gPjmwyJR_?4K@9YB0$aw=y!7J8bG=VD;pKERH!QxSb($RK-Q)P2hB-aP9t zdr+b|*lyRsbf1!)KfBN}(2jV5lM;&VD6n`1g{s(4xS;HmJnPtfkVVV?X`av_e#9K= z5EMqk7kG1X^0JHaX3t_C9a*>MVe$v2 zP@tH2b0;-4)j$q!ILkQ(XFI>(ioxatgNczdbAkie_W1>Df_JcSapQ-pJ$?z+#zwgY z|NTXti9X>mX+BE$L({3QGabh+w#Y-XW>m%)#zab}KaTyA=N_1H+zg9rBIHnBW7p}< zWhfK9t`GsmkY~N@vb)1mv*?Ew`h$w*K>>Vhk-r^&J3tSjAI75-U@Ua41M?vmC4cDC zvp>prjFL0`FH zo~U3t@aoktkF!%i4zfdi>!odc_*P%<+dRG-;YD)}zWr1nGv{bNqiPz@27nD+uzM}S zMc%QYlKZwAj?RD4?t0vW-+8Sxia-dBq7g!)yB9*Etc1|0Zy|I*e|*cvnA{0-zq$pd zPMunf-zNOF;kOIF{rD}x&ss)ME-*&B@XY2dG%(IlEc@p1`%*H-4mv?Uj0<8w|MQ^0r?zMo;d5qp{Vvg_JkYvM1*~?kLm-h zIUa|uvf96%{I2e>2l#0Z@^=xt1jnnc#<%$Tb@~9utD#ek6M7+>)VGkm2NAAb8gNc$ z75OJJPY`b@$9Y7rOU*p%BzXgWqlt`(^wqlK8Nqz5!u#PspYv{If5!#Id`((GdH4u| zeKnCT;cninSBo!>prlwQ^R)dT;I+Z!>nbwr9E`r z(D$g1rDonIb*P-r^dJq)8@5qBQHR-1-S0#@C1F+l!M$030`4sH;$DNiJ0P~;Jgxu_ z%c~`9Is5`~wJNTvMY-Ua8*el%PFHgP7$M~89A{>q=CjMZQt#WL7Ll}n_@z#gVXbCfIGcL_%sLw!+m-B2gp#<0Km zOrDq^&yO}+@OhxZVBC)FuByk#>$0SqE3IY7obv|$sx^V}CEGr^4YXCTmwpC@wu`!r zw3aXXGwy8K$fV%>8>`Nt?F-61%6Sd)mvfESwx}|X`#_oJy+tR^GhlmS&S9V*!O(b#eJaco9<|18gyqGg}6 z+wz&ublTUnLBr3);2cZ)e5*sKv!5ZK?a!^Q(94%3&jld+LY$+c>Jscw%yt`gU|$RG zU5c0Uu{i&YJT(Zz`ENg>9;2RB={ggfD@T9M9c2A5{mgLae<(N7!SqZ`%;0C-lS+o;Bu4Aff#?qhW+%8caU@%+bMe;m+Cz(Kr#0XQrcFbKzgVyqe8jxjda8sGYF0ph(W zZUm5HW8Hx5fd;S(@EBh7@ZJ&E7KnH9xTAP!x(vb5J`gkcjhZyau1N0{dbiNYK!$UR zdq;8KibUWxt{o8X=4$MSh&rL<9nzS&U+8^8?*vlbYH?pF?xjGcXC5#XmVa_ho}%n?5+5R%j-$Xn zK%dZKfht`NH8z-kOk?IDAYPF3@yP%V?%MEmx2an^4tA3Ovxu=>?xIFMx=?LJp(ny;k|(K_v5+&kp-!4jh-0s4;Oy} zh%%UZ5@iPHISPcFI3JMV_XA<#)O{K~JAw4yCjON`m@ajzM$dZjUn%}8fGF3g{9pp~ zEE4x(AWWRPK%*xgNVyY%jQ18G>OkrQjhtpfXBmQp22RBpSR;2MW_2t+J$9lq%3A{3dP8E4~3O!N$ z?*%XU%a9qo7K=Z}E_reND*aO>{&$7nkM@FBSMl#?`U}lD1iT&*{+Wdo`^3^y-UJ({zVkM|$@FO212O$nJz%@BHrzpQL3&GUj z07neKS2(wzV79ji;~Y78Q!(~sS-}ZT8QHRmSAiRFFYwOJ&c#wIa};b!uGc%e!Lcoz zFRa#hnmQLwn}mm`8kDi>J;>$)HaukOJK{N9-x1H@`i}87CvRRs?#vuK*Tr21+pGgF zdZ0{=fN_Wht4^&d)>}tv8rMGlrSi&L2rK6+TaEe?17D_7wA! zF|H6*>Um+TY?fs}49t`;Ytqb6$Ivk`aOrU^tL1D%RWk!4Oj+5J^7ChBhuD$HFju)I zm^XvX8_T-aa~q689cpwuYH-8rE3NBYXXf+|3`p6>qu6ZmnQpl8!-c-xf7ZJyOXzO8M51rbMI&74Eo9Z*kY?6KQ&%E{xY4K z-3)`vq}g5JPr4Zx7C*Cf$NjoeieXS59_0r2^+=?{S&rA5a>7jox@&n9)zEdi@!Els zPEpSYhhEl;x>_$p7cyQ;|91Gr_EP<2ij%Rb%~ z7IlW_-j_7It_a<_whqYPw?6Yb=g&F@W{H=&`tZL0ljBYJE|J`HZTij!AMlR8=*9GR zo?PXvIPqF~uQ`u+H~KfF_nx@OOBp`si|_DN3d1!Gr8gg5{2>*=YxAM&<%V?%n}zT>BruA$h&OI zmh|{n7JCo;uswb4Lr-{1YMxI|diYUq&c;pYISGrsxesqo@7`>M_df4S>3=U;&xjKAN-y7uD`yXeo6lQ z-twfjl{@EeNRR#YQE#~u_rKekUYh*4x4gPdW%;)4>7|Zed&^63|KjHKqK1d%)kS(m$m#edqTG>ugmSJ9K^e&TY`G zI;L{k_uJB4cRcC!|I?_7ZTl*8Snc(HhxISXW$Du%xYz6d8tWk5ekHv;3in?bRXeYE zEj{_$m0tf5+`qRzJvL>r*Z;Xu<#JV~yQclt>puwh>ethgH!bpFoqAR26|h72JzoFE zkpJhc={x6?di{R||BKtxr}cl(>)(TWFYN&Ne+GZ==hJt7_n6oJ9^~A=qP72zaGUmg zy8qiJy#8wN_S>B9>ag7F-wyxs?dh>)4}1Nu!oBHB>C@hX?3bbMvGVlfx1r;U2>Tpt z@Gath4r_`A!v_ETsMo&{{EOD7PwRmAp8^w+r{f<-R%YCmFrU zOD?RWUu;a`5XIBh!r#uq-%-D^hpx_ zMByJ{;ZL^krwV_G@TUp?SPTCI3;!*`UoHF-g+Ir_Kh46QFZ|ASTK@v!FS78@v+yqv z{v_cq7XC#R{!$D765%fq{-wgd!ot7O!oOPhtA)Qz_}5$b%Pstygx}d->%T?#w_5ls zE&SVrKS}s^2>)9a{+$;7UBX`?{JVvJuZ4e~g@3>BR|~&S_zzk5{TBYC!tcCT>wir6 zzp?PwS@=&1e-ikeH`K+t@a;b70)5{c_fENw;Wz!Z+Py9AOWIbJmyE3}bB?QAQ$4oQ z|BwNHuu1Ok4o+!pqj(gHw7PQZZ?da;Y z2C`f@5Ks9*CjBVizZkMXQy#)b`WB1qYLShz5tVEmf0U`)8qi%9w9Sa^2icINWK(a* zq+c1_{J(~5&;i-M7TM16TJL8>HsV)$!v@raY3{P1Wk&1>$c8K>n|_cKX&xAHX{7N=#t#kw3WkF;{>;%Y$EG3(MkV)P$xcTqa_72FtTV$7r?B_%_ z;#acI#@_R7_MR`Yt3~#UA{+WB*-{qH$lkZx?0vh)c23atepzHAjY{^}*t^hX??REC zB(h%>+2>;K**1I67TF~td%MU!7kkgJ*?We_t`^zVBKutIJ=JD!H75e~(s`q{_a8;} zx!60~X76m#J4s}}C$i7Q-dQ$#XNl|*k^N_peJ=LC*=FyXMRv8w-XpTl#ops>_8u>? zoi}NF|5aq4i@h^!_RbL5Nh14Wk$tB2h7PJ71iycb%_d_+w%NvhDzY22cZZDFwzl>g zGF3YWe)PFQ+t_PGwpr&7itGmMeNjeiH(UD+nW`NGKj#O9w6UW^wpj*07ugNkyLCov zg020AO!eFWzds4GK?mB{B#~`C(~gL2q*b+5A?J+t{x} zHqxqOhqT|PvG-LrdtW88ol?HP7THLfk{!~1pT^#UZT224vduF1oybO7mF$rA`!x0* zV6*oCk!?QH{wcE0#om2w_Ur^zRdYcE&E*T-NR<@ z9wIwQKa0zfME1GZyQ|IKT}8G$)5=Oj_PN-*v(4U}O?&GySXM2v&&A#yZ1(P8+FNYm zOh0#fUu3iQMW(&=v$!ltWS@(@+t}>g#|3+{Y4*j1PGSEN?&!Nqnw=Snk9}GtOWF(4#)1nnTzw#m z@lclOr)l&vlzU2UW5;YLUe_&e>jO`O|TppS`s0U5-nlR2t6NR=RAt z937)nUYxU?OgSCSvrK7wyBrrsou7TQtzC}x=V>3)&h5_AKBkKMz~R@AW-VG$|#RNhOsCuZKaX~aesXSmwg+9k+gy?+rh3ze)k zT2_*2?`DnI>B0lPzquSu8nIVYhHI>?U4k6i>nX^5O37*>_A<*t_*vU)J!CFYvckn)WBqdps8C9Lm;qU>Ql3}Ot5#7iM@-Zf#N(nY={J*(xeMj%Vpp#%2umL2hkN=_emu%o zOjs+(ib>g``m-^R)iUZi#N&5BmOR@?f3@(!41Z5oujde!JjxIE^rQS3$ok3=16eIo zo^!ISwuG$csAmz+PRf#J8|n8Kw#wM)arJr@VacQXa8EzV|H=`O^1h=bWJRYutKLzg zA*)5yX2erYS@LWny?J3&M)^2bugwTc9_5F7`ceM-khR$n4OuNxHmiPh3&?67wF&W* zQkK|@^pb@aXOy;g_1c86SxX!(Agg)GCiQ%84p~uA8xhYmi@iwCfW4-{ zUK#Az*o$-u?3E0ARUj;ROncFf^79~T zv?BttB2qR~)AkWj8lsvH+=@i&388%~hC69iPv%z^oU9X75D)Prh=su@% zYawne;D#{Dt(Ca7(tSMTc7eEEU{qo3GO$LcyyT|3VGh@kE?5hLu`{ec8Hw?<5g1oX z!uZ|#D6H?A!ibwO5!|ijJG+lZ<_3rxE6Z|a*xtP%nu%~<{w|&pKA+xIdJCn z1xD+`=zkw(pW6|6Z7tSeV1Lj(wV1Qdz5TeR&*W8UbKs0+gpEbmSj#~*;o zYZc1D6VU|g0&y;LL=%j+Kz_LsdtHK$d%SWkd{?aN;F=Qhavxo+)u^Hj!x6by?d8b% z^q9X*{|fwugGaBo2<|yq;moRoUW?1IhKl?6RX{%I_sWrG?qP@_@V1Pzv%_&b8#d&A zk>(t9&R56GIJJMM-ow@LK^ek*gLNM|jBz{mz7Cl^+W`W$?Z?Y?sm^s@Gw>V+8!>bjmo4_kzQC7f9)3w61V=PEhv? zT^WjQW7092?rPHQG(7+`-cb~9lH8kNGfY~-W}CExE$o~S(8E$@vTF1i+c&vxG75Xo zs&W)@E#_QTaopSAGSm%Y;HrG1JTJq(pjEUx*6CE4YsC&Y7rw9tb-%DAptk&9&m4Bb;rAb$sb{LZx?iLA?~Q30p3;?H>>OmtnL=s?XB(>*`354^*kWE zi^a_oY_lS9pMv!y{8gZgb3Ip06xJAWP667NTC9msbq3)~*bya;-DkmbKZ2tgSTDZ!D{*e!Q|b_N~NoVwD^1 z*apytop-&^b7ABvu3d6C^cq~Pn}NM8jSn=>0>$G1&r$5>e8Abfg6U7BF3_o5O;Hc- z0l+=m{a8;^o^%PfFTncH26)hRsP<3NQjYY#&9&$GlBjhpt;1 ziM?HQJ4YRh@$X;in)GvPGih@6&nt2!rVUS;n(NjRkbef*&@d-=%G7Cj(`V$*#4bE@ zyoE(`Z@Yco9e19i@Znb{jTm{&sN~Tp*QQ=~{g||0re};Dcf{5eAFvcAPqMb_hYxKM& z?mK{}ld0P@ddkF|=d@yeU@FgP1*-E|+d~e|W5v>o)EteTi9pPWi%S6FnVdRMqo*Gb zb9qzyX!N*&)Pv`?I^o_WHzf$-gc+ynA%5Y~CYU&5Vq0g%^w_;KBhIq&jj(vWG+o18BG<(wFaYaf2( zFF-lsH6K6HZ;AhHj1S>Q%Dl^|LSH8|*SFAroX`cNE%8qhe>47TL35o-w=OC=qm9s8 zG-DUe^eXXPmlF_Lcv(E}F(#Hbwh1X`B*z8}fnID*PxK{qjHh=nA{r_&GF@0Zc3TBr1qv8#r-fk(G4{U-T|vSK zcorD_)V6HcHcW4IW;ztk#r9^_MF*DU8jWmN7F;_qD7boqk@Fa_SvdF08e9EM$^!e5 zS>>4PFRX6$7E&O(Mo#y#ECd;3E_pb!gS?O@jh-9T$UOSN1FuMMtBdotvu^iJDhSNo zhPVdLjXIn8+gy*z%bdS$(&svVdkX`KJXA-uj%@%P>d)Vnbv5*?e-4!?2WvdlRm=)z zxhUIu)j#Jc^xP=ClI(0mwMu+D9mRgm1X8AAJxOGm8I0;(Jjg&d$Cjcgyt zw9emVI{9N%SK`+Tzq7rp^S7b1n#T+ojqbU_?Uuhmi62vq4T?ca*nl? z7kiv={x@|n^(p4Me#?At&at-73IAcf19PVF&BKxg^3_X=H7@X;v0i7%+hE+)!FBZi zFYI{Ff9%-cK2t0sXPoaSkN@s=L|WCpTK`|lq@~OsgdXQq?wJQI{=M4-?(<}}P3GBo zA#Iq&PULOOP6uW0pC9Ho+}8eY$ZJQ3|Kv6IENdvQ8{TiE(Y;0j>*4SmR2TagiTd`u z{@c1oe7F2rM#4pc8Fw=R!*NF%YyL?urA{x!>U1 zNXV54syM{u+=wzLd<)*&bAXe93BXCf=Dh=?CAkq4@?IZ14je7 z|IA2WERb^Cz)`?Dyfh~ReL%|D2D}Ei6nHK07GMgH@883LJX62}^dVa)hu<;q{t&kX zmJ)5&8K-KP+^a(8UtpE}>tM z_?m-{7dBK>@>x!K^_B2BLcfe~jDM-n2gHA?(8WUgh30-z`54aTx{VnA~2lKnj81h@_ztA6XpwFzX2q68p3eEk*NWU)hpML{wY0={0rG`(0xJ}*Frk+U&3vc7UuZrzNGGCF^Qsn_ zXZ!H_Lg-^c4?_G%a^UJ~qo1|W-C=(#{|M+~r4QQtxzCc-|G165+eW`+lh+P*v4)>) zlfTHu-^r#g+c9f+?t5mXx7+-`waNRZP2Tmk_-EVrBW?V6W`@Lfi7oyLo4?N{?-854 zmbUogZ2a%r{Fzp3dOxz!(`@t;HhKGP@h8~iPq6WSYx9q_$+zz_wcO_aj!jl=Yb59$%k37^xY+-1RCXmFnxd9#PQBi36Cpla<|#8(G=iXmY!oX#|lLR3?Pc zGNKY1t*9JyWW4np1F5bTODHR&(Ysv*1u}7VH%4N2iw|`PCM1NBG00gf9Ie2XW!ijp zH^yLhiw|`P#t_2D7}R)8XcBBrly7s24{-=ex3RGphNvDOC^JAXuQg!~BuQ!FaW%pE zN^L`3#31z?DZQTKIqi&QQ%L7es7iJ>D8;B6a5l3&7(QsZ2H0smon65I!7>qalL+ms za5hUpkT)1%1MG}Y z@&a!53{pdlrX#fvJ$Oizujh!Y2?-gDO1o#9TenFHgtR0f=whZJ=%N!LbWk)?CXS}Y z5Qtnb2Scw2S{+F-T?04uP9_R8^*Whmfc|RlvG|}cc*mQb@v<>lAZ$QCywBm{II9et zs?pQ?;Sk#3Y#M8qz1-Z|FfSQIx1&zvCqZ# zl)#l=G_wFN&1bv6U;Gg4V5V|tV&v?+;DJ*Oe{nbM=4KdN zCe7Cn{?H9m*O~5L=EFw^UX(|Xn=aF1!VpwUck?>!c(uqW$HxkF;bRA0S&R|rNbVOW zE1YisvQm76;q|G!@08;sjrEe`2b}8bH+JL%e6TaGsbV()dOA+#aLTV-lVuS z_i{%!U!U#5edh7aAK$4OJ})L@d`O?o;K4rYt|oeK_MSklF}Mfw_vvn6E;9GOcSL9mgFh0!0(uW(9Fz&Gsxxj} zYcMz6qQmEyGs}I|$;0^pA>&k*G*I_5wM|5q#45%cfi)Dt{pl^^UlzG8H6K^6eX#2F zztuMC+=73{a&yoB{c`hfYn!vFQ%=s|cW(Hh8uR0wn45$313Vi^uh$8gLlbCo@cmiU zT~)8JmVot2)vxZTXQ=m~^(=T+65F;w{leZ1H9d@~1BmaSr5$pi?TBUj!ukq%hp}hF zFsyTOgrRMr8|w05?6p9*No;T6#xS+egKeLprClO@3j0goxv2Ct+nT>~UOw7SKm2^y zZvuMh^8qdGz<=5oTiaV=$vdovFz0aj`P|^M0C`Xvrk@KckFd@tkVoQgo@b``nMcy@ zaP64NBl5BALgo=OkKpISIw#CC`%fOhEMrvuZn#LAD-`AU+Pn5R$=`v&T+%|{PB01;EdQN`iwf9v2>ya zXG?8x-dfi)BJl*)<_?L1UrLMjE;ikI!>u{oX13UQartIf2dQ}fH`;iWL2YTTY`Yl*btIo|+`r%ndd0{T}N6`3sZ>s|7PC>e{Hhys|(&=h%v_1l!X;|OhC{K98V6K%mZAY0* zGuC@9yR-pYoT(i!hvBq#VEUCUpu0=X?|Y5UYveO+i?x^U9fmGE&s3k&6+8rFC%{AK{zfvYh-(`h(yMB$yv*rcU(-@!K-AFjRfJ5#c;^2_pJmHAVAUC%T!%FMaEdyc{1I80T~%ZZy*6qh}F=FHi%uIFKG zN$S?E@2>|>(*V!hSw-GEgh}0FKKZ!tX5ybe8)N)=MRypffgAX`#1}J+igJw%{eLVx zBE@62cj}~Bd3R1K$`b{~SR63Heq4A|1Duoc$6@Z6(gpl(62_QuMz8yl@B6NW1D~mL zXHLq?AD)wg!wL(Hk#VHlSg5VYahN)*(_NVB&6|{e{anl*@ERG4aL>|Ih}XFA7zt4@ z8z~70PE%AsaH!|F@Kzy#l4j@R8WJL#_nKWfj|&esRhsKn$;z1PoyGjfU>@`mI0 zs1#2x5cGCOQ$vrot+yuc~W6scGB!wSTT+`apvXKbZ}c;#&v2b z%rkQD7{~o-jB9i6aO=Bqow|!>?z|#6YuAzUigIV=z&2J!Rd^6(;oQm7bF+(v=j-C0 zp-DGrT}db2m+ZK&?rMjFf@kFx6=qK=$c3)nB6UXN_2S}Af(ufdje6)Fdq+X8(YvXm zNt0$y6>dgB918qxx!&P(i>4W4Q#0J-b0@n|BjDtw8_k8FsHA4NFvf>)+4*_!3<;N{ zoEizI+8l;M70Ae&I*WTJunxFQLiAD<0(`0_r+H@=!3d0ADzn8!0;r}20gCcw=AxmQ zSwP8SLAV2ya7KvgW0Eq`%vgCJP(j)eN4SA$L*w&`rln^LA2}=Adq;s%0hIf8xN^4| zv(0fdF)%AAF8(LDamsgmfIXV*nCbM>{Bht21c_2X23>KwAejGTCZIWkV3OErf`B6s zqy>Xu0^VtYfWzn=?F{S0fbV;7Ds^slPT{1u+hLbDmC}((BTPG)DF+|QTPPz_7|JSX zCUcmb8ELaI>(r9jX=7%pLYXCNndF`UviCjV4%Le0W{*flv~+Y&neBx?Xk}0*Ds*9P zc0v4*{@!?X2eaT#Jez5!L05<;QYLqU`p3&1g3bs8HSY#pfxF(_oX#+8R^H5*%yz6` z_U!yLOq)Zv0If-rF)HYhrlSflYSLtEVPS*;tr9iKGSke+$t_H}I>{I@G9!+t&Foa} zak)9U1LCqLXDi>4BSsFeu!N~6H|O%P>QUCktjj2|@dgT6T)e^NFxMH5RTZuZf%K07(!UHJ^$fjEU^4IxU;=OlkmU#KhN9iT*MTv>*MJ6a8?X+U`6`fW zvR(mlb4CmxMQ;IC0?UCf16Kln59C^|mw=_ft-xa7i@*Zl3&3f>=YbP}TYwXQ&jFKx z&jJ&Hn}G?yO~8J@jX*cB0@x0?0T=@;2fBdI09nqT1|9=G1;jixV?EFZTnF3@TnpR@ zTm#$zECW^op9Gczp8%Et9|x`kt_Cgzt^yVV9|O(2H{eTYxV}Z+nZs1a2JK#e=7w|!#0sIZHuBl-x0dg(iVxSNB0FZ0FOM$zA z_XBqd%}I~H2E7G%AFv$wD_|LL5pXH61Xv2Z7g!9u2RIK{44ekM8#obo7jOb_AutWN z0GJ4z4@>~w3G4^F0~iaO2W$tt9T)?=4d?>S1scF2;ISr#Q3&({y+F1rbAbDR1;Cxa z*}$d1nZQzDK9FnEX8@-GrvoPf^MGlz=@!_HZ%*k6L>3d2QU-31$YZ^9`I&h0q`c^MBt4;u6dsTOa_hzCID{$#sbFy z-N3QH7+?m_0Hy=$oEkCrfNSHUx#lqqxLa@sa17`z!0UnKf-8a7fi4B60*eK?rv6&c z6M-qf34+PM(V!E6$-sVsZr~`;F~DnpF2TAmwYEN*Yk5b&-6yykm;`zy@M<8}0uKik z0~3J-z+u2?z+V8l2G#>i1`Y)#0Z* za3HV@H~_d5*dNH}Lp*REupe+5urF`|@N!@pFb;vov>;~Kd>;gpHG~B>>z|KIFQMJZ?BCr$a zG+;+yB9QSS?JC|_V0+N*fcQnn051Xp^xFC;5YW-QW=3dwf;hYmKd#L!Z>t@~iGPuV zA<%y(gz|Dk>hR1@USCW2N-BWs_Y&S*n|-DD`;oY)APFcZ$hT=+E4w#|9hc3kRSAWLJx6idY{nakxu#_5PCk^ zJ<^=m!RtxbiF7l!B8_Ua2c%mG{WI#TF3(XXS>zZCs07kaMfH(2OLMZeKPzb5+KEOd?N$30$o-7WgvCiLT?U#ZaS zKQlecg#KRiStm4~)AWByXzr;(db`kkE|Gp$=tZI*_pIf`cAWkPgx)3k{axtkqTiQ7 zmx_Kr2>nOVulc1~-e;muYoYN5sN`QPbPv(5m(bUWeglN&TJLE5%rzj(ML&=DzZ|CJ zjS_mC=$9sRA@xJ}nccKLFNl6OiT`fu1OGzt|5Ehfp1{0XlZO8t;(vwcH%t6)f*<|w z7XQ0Mzj@-nHcb2fO8gT=zk9|1R2SEXN!Itgx(|iy(si? z(eG8E`$_xsw$Rs$zJC^arqE`4eU0!xEbVoUnSVmxE9rYi=%*!pFADvxr0@4ae<|sC zMd;Q-?-Ke7r%vBqq2H18{6*-`B|U!=`ZCe4R%pI=Gynb}^kmWR8=>zL{py6S5dFf@ z3E=g<=o2aQKSZAvLSHC!E1|cFez8J-DEbW&x|QfRSm?f@-&I0iC;CkgdXDHfN$5vJ zzZ{{fM88==|F`HfUub;9QR#m`=qE+L2Zer3^jjnJNzvyyp)VGCo6rfO-wvT~5&iZG zT`c+?6neercUaj6rC?#4~TxPg)SHUItl%`=+i~$CPMcWx~u3nSm;rr z-<3ko5dD53^h2WG^+LZW`rRn>Uq!!Lgq|z#F4@IAOLLU=-?h!g#=wAul zU-WxY=o>`8twP@^`t20@3DIwt&~J)<`-Gk-`h6nwU83J1p$`g||+3DM^w zbc%U#uM^gvu0jtN{dx$UEBXx<`hL-GxX_zLziWlQR`k0;=seLcPv~;d?@porAo?v7 z`jF^zkI;OdrG6`g?j!nD2+j9F`oAi4k?6NwXudzu|1UycA^Q1+9xM7C6?(bo_fMgp z7yX)CqV4r((I-OauSK5@LSH2GMZcax zUnT8df1z&_eUpX0UG%+4=vAU`w$R%}zuSa9DEciDy4n9>?p?sEuFib_z1bjvpd!W* z6-^MVfNW)R5ok>b4UPzDp@gYgjR6A+f)W9%Em)(mqYlgzI?hZl_B04>1H~EZ(dQ)3 z->GDM62Kim#510A!u)mkf4=MTyRj1p*7Ka-lbv^6-}SC{z3cX_ zo3sD9vtQ-t{hqUL5`Mz?@zqt1-oayR`Q7N~J=@uzaP*Zq`wtv_qnzE`y_8`N>g)wa z-(+WB?ZW?eXP3T5^496>y6aE&0b_0Y(tF5W?(BLyK=ujFE>Rj&Ge!cXD9 zNxt;4#$)WiB_H~J$4~wn$)~;>od09+UEgSDZ*<|Wclb5#()T^*@9$c>12>$4?~4h0 zs-6?<^$$*)G_#)dXm_K5b!6$O{;svUME{QE%hs=6XF}e!e7%8pe7SykLvioG-QB^@ zCHwa_u4S$K&iaNGt4>D8b_@1hG;mi9fpm+0BDsc@jVsLE2l$EDs6820{*czVimMWe zpz`ht=FPpJShw=7;y3~iAqgx=ERCxg)^UXi3po~xO)>74jKiJ!hH8cN=42ROQuStO z-xc2EN%c$DuV3rjl2MG;x)p2IuCF({MNA|LyPhS-`uolHgp+uVx7m--R~V5AukTrQ za*;W<)U(Lf5Zsb6bEY?jrW{Y)*!z#J4o$h~fg`5X^;aVqSLdz`979uXTHqL(xL(8K z3{ANyfn#XOO%5DGQ!W=chNj7rLdVb;y3L&7lMGF{8G&PH%1sX(LsRbBz%exCrUj0n zDK|B63{ANyfn#XOO%5DGQ!W=chNj7rLdVb;y3L#(7cxxg_rO`a4whQ_Jp z5}_#`M{Z_d3{ANifn#XOO%EI~1*I1_UK^Nl(*k2?%1sR%LsM=_;24^Cc+685nsT|o zF*Hq{6gq~+#Je=?P4VbLQ*K7!7@Bg^1IN&myEbqPO}S}-V`$1v4ID#LZc5-7nsSo^ z$Iz5x6Ob#|&@_2c=olJSWkY!WIQ)!1~*`ZrreCcF*N0-2acEm5e*!#4NSRd zfiX1YrUs6oDK{l>3{APofn#XOxEg8xi zS8VTI72G{0e8uj&8m`Gkg?!CAp!OD=^3$4T^wZQ!Kkt0H_g#4$Nqo3Bc|XA`_-S3z zpODbhPRoUgr!=ehr|FxfTnqW>le>QUJhZmc|F3w_wNEE({l0%}dQdQw%kq1IGAULb zOO$AZrBO?g1#2w&f1X>@Y;qa&c3&RilfKg}j~6VHQ^KdXua9sAF)&^pr@Al9B&AdIoGQH261gtB#N7-WAja!5hFsIs4txd@1j4 zU)u9b^QfNfnNdAEnlI`3e&&*%gV%5$4rjM_HP`hNxErFIH2;iczQWfZ9ig{vf0Ry@ zwPbE1Ze0&KdMaNIP32X`n-u0;8|E1wrujA-hI8_B4RMpJ#M^g7aqVV{Y=sY>;$~=U#@Uy1%;Ws{Y-?l_N%7%BaEv*lb zu4vL({uW1X!JJP|ZIYYJCJmpy{FHvw&!=C^kMs@Q3BR52P-oz~ud#O$ov77)0hTv% zFTW-A-rQ72 zI4BGArg%eYpKvKJ$j;QlESoNGSeBVGo^8t*J(ww((sJI3F4<+ur-brJlqdCQabbbY=WoCljT&I0^V@nUx9@|; z#DB!a=dKCr_cWj1?>hf8uCGomH#vHhmhQ#ycXSk-e>48HnQwNENpJ0PVI+TJkw3j1 z9<-e|ac9&`+`aK!D))+MA08dijh%ZvO4ZKY2cA4{f^}SJWi&q~W!t!GZ27IkUuopW z&>j;;Y5DRVNd1)z_sl@;7fZAi`v@a<=uAC*^#-V*RX-SkzV8sescAR`!^C0fGqzsd9r|WJp?u|iah90IbZQmxm zgR9y<+%SLViA=`a9j0>PE%nHo_4fW5-FvsK`Ldp8GMDw}u9|1KkHyQ<3HpM(?opzR z*Ih5=gN7V_bZCmV>+5@bo;H!kzz+*guNC%0v&M91 z^X_P-&oSMuX5EE)8Tms-8QX1VY`25_#`2dTf7Qz0?fBQ>@5X1!AMWw|)ses3$=~hd zkGq*pl|P63lVmo|&SNKVvSjX33)UOT3dyeCRu_ zyA|`)Da{EAx=(XZYMH;hu-@#> z4B%c*WCyu<2D#ae-0XnY->07Z0A6dn-;%kg=jG;+Jtt8{zZd^blfN(abP&eVZo=-p zxNQ$(&lcoF_SU^$!Kepc~*HNbH(#aJtR%Zkz`Ud zNUq??&sr!?>JazI+H!cAGHBU*d)tQ_7E*r}>^xCD(A1w3)oKfeA-A-J&FQU-0k({% z4b^XGWPYo*Q03AA|Ji?hoIO#;_q)7wyL{w{FPa5A7)N%JFK^fUq=WICw|7+Auo`QW zGlzK%nG~<&o@dOVv6I4ffXnhGZREWpv+?=7i+i<^!;NMh@8bn=49{#F(bGvhpJspP z%PT#~N@Jz+rqp|nN}e#6%uemoxWdz{aT13XwsyL56ECGp@Z}bzJKnZM+wvO9C2Y$% zMBR|pVen5@Or3cB=c*UovT*VBb2xZ8KYJrjhkUX^M;HAO%!vti4sJ%BW)n0LLRMBG zb#^lu3f+G(XHH{UXZF{lJGy|Q4_kn!ZB}o#u zUUg9WPUJrfNDy;AQ}NzsVj=hzP<+%rOVRtBg>}1u3jZ{axoUPZ@FL(cAiA&YLZFhE z0c7i8b{J6cODwEQIlK0?;9j>MsB~Vn_SJiw`%6Hj^Bj=zakd4BZXo+0@Dsq*K&7L7 zV~kz16M;%c=L&_l!r4bTyUrCVo&7W-3a5QI3in%}(s=_|0o(&*3sY9-3NHt41}dHP zz|p`OpyKNsq2gCL`*qH~8>J^>^6W;S($jf3g|D%&PW$M^U%kZzE6kgvf{!`7&YeMO zR_Dt=nbr9*h1WR~!B>Ho0(DMI<+{Y#wf~boBwGWV2&@89mus%GuyU+(9|?qnnlcM3 zweLycj{!-l=7@!r=;Mt03qX>ndCtPh^+5izI#;E56M>+r8E0Xo^rP~B4k&-UVai`k zi-naH&blM=ilb+|I69`&e;c@XT$%%*+)71cb$ETvtL6n z(W7&w`j9naA4VbTqYfH-!P(zXe8P{UJ{2F{E{`ZcZ&T}=Ef20ur%pFh$&$ZzwJx$;?L?SV%$Y( z#a;ByQ{2U1k2@(4mmjU=)*J2C%?G4qxY9&Udi zXjU)3msKUy zm-rNau}XZ3yC^qt7n5A9hB^t@GHtG>8%#SE7=5A=gW6DV}gvrQKeZw6IL`9qpp3vPbhX-4Wf_*r_MwVc| zN3aD#tZTeu)v`Oob@nq|@0>dI+DR4WW4$x71f5*(q<>2_s*+al<6}J2=X$5kBIw)V zDz>+)3(=1z!hEN@-uXlXpW=?CZDuT`j;sw4r`>x5tPwjsdnfbNF6iG6UGVL=^ueOR=!FyXF#atoWT4a0qcBN&q!(A1o%l(H ztbQ5(l4o-#IsBKq^xIy(3h>UDhu}^gjrr{8+gWp%1E;NSBFRhXONnFT5GWq5Kn}$R zm6zvh$=S%=xmBza&H8l& z%1(UnJS;iSloy8nav^850tUy4_}tz7)gvg!fIPzf@G4wLk@ zAwSQc2j5SXO# zYtCJ)u^eEX@NkB`0Ps|4=Vztb(V4dYnOR@2YS+4s){~_ZGBi@Z42_hlXk=`>xKM6o zf%dyhWu>~Vypi7*Jg?{-EU%#P8EEr5)dS!azEFA&esR6$#uc+{j?be$kRb&?rnIWwCzu@KF)Qj!K z>jiVkQ1&l~*9*z3$5Db`v|eZ(u!}O@PyILm9}gm{Z=X~@!ZoYt+M;jk`l7!{@=89E z@*1P}qCV)wFQ6B>{J(bK1p!{-Y=*>P2*t#EBf z63+_ooS=V>##b4#HqfrV*taz+@BI>Y+AgbDI6sw={*drB(jNjVmoX@1=$kEIq2J8D z1eAVnHBkDlIY8-Cdr*e)mwkZumiF-FmRWc64J>vV4qWAfD!B48adEq&nXffm*sOPPDKb_h~VHAkFX5PRiDAVIS? z^KUqm-V6~@ec2w|W#3FVebN`nu6ynDea-p%dv8AD;tzyB`nK_te$CHC7Rf(ipGSP@ zr(VEKA7yOp{@mlYoPQI7r0))XM!)6of6m!AYvRF|1CRVCS!?QE7k`|KKg#(_sj6?E z^PlVN2c7+O>#aM<3_fSoopr{(f^ho2#82rJoW0J)ALZziv;2oSeoc3F-4CemTKp8o zfBP{+?c#OR{-cCFO@5;OJ&E{|lc+!AznDGL1#mckD|%Pn`Q^}wOG)ebtphZ!Tj#vZ z`OZKW5yU#l8LfqGxec)qG|)qNB@=F_8SZaXG8|frhc-$ht22mUX;`rw^-kl`m1|LG zt*T$KblnORKlLk?uWsb}=_qLicj!ViG$8Tk=v~4IR}*sCiiE4e#$%fcXcKOb)Ufp4 z`ekdvgq2M$D2_QuM|X#Aygu1E>9%b79rs60p>p;@k=MmkQzz-FNK>Kg`OXNxl>vJQ zBkl#(-n<+td+IZSDz2>}6bv%T8UK=b_-?sVycq3E@NPNB0;WyM;WpWL=O#_McIwoM zis_T4O*R2}w;ZGotX`hlaN$P7)!_DK!IR&!o-=##>@WoTx6PM# z`D_E9@-~jOh>2maz;p#B`UF1PSSl~{DXAyeCx1QgEe4$}Fk5IB^3!*f`_bK*HkUrI z-(OVUlj7~S)Uk(t>HA>$(ML`;dvfTT%cVzQUsa37TCy`ID_r=!i{-{RgL!mnL>M>J zFZj7aa_+3L&ohj#KV#mU8xWhP(SI8~$`Iyby9l#`dGKMz_<8pI9Av!zHsiEB^Q}B{ zFYN`i^ROYi4rHK1^Dp)oHfip~9z)H&=wi$`PvhJ1j8`-kd@?fUg5PG&Wpx0NIdw!& zB3>}h?b%jc&fJT64|AUV%y|wl=Q+rj=xxSogV()d0-0NLkDS;r_z?+4~KLy-(IBh@N}8| zZjP=zJP~hHmc{9c&uKd}1}ASF@L6$UW9rygz3Tb&geDCoBqJtHo*|HE(U@Q9dU>*8 z665nIE*Ia26O5%x{qbYwZpr`|vlI3E zygur8a{pk4xjizv4c$+459IeVb|0kS5n-hN@q2e$_FmFP`qN0CJ&a4d z)b*{x(X#he_9n&m_MONKW?voq7&lzP`5X2!_Cd=J*jM*M_SJcr7v4Bc7q>O_LDLV| z8}~!@O!@dN>|+aQ`y#a6%D$;DvZr})QQb?w zhZmBM!oyFFATRCkroB8>vg(mY8&ChMKEU(`eYNwa)5dS3E!SRNwdebx;Q%xogod}N zpQ0n)mPgtu&NZYz&T`!w>R^-)^*>r)kUl&$jCne+BuzV~wu}0u@|7+?{r-m=BKi%r zBfgC2_fIOLz3QLNV()NTy5FEr+>Sm_y59rr`#XqU@NN1?Lj(P!)NfxGs*{uI6D z@jaPYzy5H;AF~J8uM=dJjVH+t4cc5`8VCWpwDG8{QeZ4eti* zsz|YZMLM&%BDTrMeb~2A&nFvR4{|ysc&@yeecjM}fc(UDOCg=Hz4d!Xu(!VV{gy-1 z@M;$Q$)~8B(=mUFGQKKxy!* zAK0GWiVpnE{o4m@Jv?T>)*9aQ)tHOB$7-byFQC`%cDy>|#y^MQlVo0LccAkYpSsAa zsTbtajMvOqfG~HtaoJs*y&-MsxRrJnX)Dc6(#%8if$8eYZT}CgQwxq(jnhsLFaJ2_ z@7%haUPPyzt{n!>NQmF7zqQ(LT;kdp@V4OS}y@1~?Ij9xht~oB}+? z;4=r@17v=@T6;QybuB=6YxZzTXDVIX9N-ZKrpQcIdot09X4`;@_kx9WyPdt&+4nGc zSNd9Dod(jVEs11(jR%{AFt1YZt282a5ODwFE zE?9KT0e%`d3P}5&?Lojr$FG2uz!u;7IJkGaQJ1z}zuk22|k+&s)%op5dG~fQt7Ta2&7=sCdr-6|WVj zcr8H1djg0mxoh zrzp=E2c)RZsQ|)ya|b;vHh0iN@;SuS9^-SqsX#dR?=}UF*atd0JT+fdk@<-peXlxu zg^TlLXIFXX`@HujaebTvH1V|uRo~}C6mI*SU2-7%B+}LQEtkIN()R_?OPK$Lu<5IJ z_J4MEbLTJd-*Dl7?eH;|G2g{5{Tam5_i1N;%IUgWoc&ej|4U~tfyw&b=O_A>z+`>n z9RAJDzTbs^-Pt!g`g@%HvyR?>arD0L;_D3#eZyV&_0E2~^IzuDztGutIQv`|UUzfr z6CXvN-c-@|V@J;nXK!%!BhG%7vpHDOM|31Q|?|(Y~IgZ{Po<3)P(&fkN{q_+@ z<>T%C4qC6rGk50V-{#^sx%mH&v)||JuQyGfKU27mw`(+9HTVRg*znHN9Dv{oc z2|I08EWYlLj^cYV;ZNHg^BP99p_QCSJYh>XMXZ*nn1k}Gm6HUHgj2-o*%m~xbeKK92_z@GaobWrJ+CUl z+0excj>Q*W+47|jcQqmVxh`h0`z0}t*V{ctZVX z)ZWW3al{tE<91m~wOe@;!o(unN$YKvSi5Ikge_fv|JumbaqDe1t{3$UD_VS2O-aXH zLUHJ8@3-4)9b8e_=cen`>+fj{E~4{Wul?m^e!F$=_e=G%jyG-c3|8~>X&q0u$=PMR zV(WJr8>TAw@iB(%^S&>CwngJiecrBaTtDB&p6-5YA7A+B;>`Z$c|Zn%O#=SA0>f}) zu^qm`j^uY6gHQSGW-yw(4@yH9{pbqJUTDVI{r)&V9zQ4F%zk0?NenZBJDup_x2!@3 zp1HUg z;H>aY)(G+o;LqQ{pBvy$HT*$;bpZX};U#S_rVJgw~Q40jWG z{L-c2-(UQa8R5%skIRL>HzPmT>Dkb!f4Jc`bZob>=hUuy7@24`I^;9fbDe0`eF@x^ zu;D!J;25~I6}@6qmZEh~cZ>w}4*BW2Db>E8x_5xOcMzVxjT~uT@QE?0_7l{-JbVrI z>LMeoXKSB5`>~NT>eru;_aBT&@7vMEItPA3hE%ny?v8&bQ`-#=@w(VZ`d?(wNK#np_j##_@aKq=3qlMg6GSIA_ z2~SKPUOjAI>-kmfeab<7>UhVkv;jBKzSPpb(B2%Fj~skG)&BM-%ITFZjPF|Lt~-QcybW4#N05 z$@0xk2AYup!XHq0{FOhy*Zx0f`~CyD`q$=^r9<~o(1*}}(dK>Gn7e>24FmQSHdVE! z)z;Bg2uJ6blC2$>yB1U({}1SwemSqT74{l*WiH#LF!?cOnJ}F<5sv&Cw|c_T_7>m= z>jLln;|1u=eLkSMin1oM$=f#4_30@;^4sqGI!Hh1_jKTQ)=7SU75HVWd^&tz$Gt#% zifkQ6ZjN_9-qaqnwPP~o&aY0@J=$=;Kfu${L|ni)9s|+Y3Lki%Y(EG zpD7#arOA`{Jf8DMg)sxSc0=oU?vGJFF_eCT`&RR?4<4gZiRNpc@^w`A z%DkMOSpcu+mGC~v{d@(=q8r?Yzzwc_L+O*|t50%v-QzM5`>OP?(jza=Ht_JnsrJJU zSGBKtsHFBVc#WC6qN4OMwwdX8YiQ`|lZLbYkJ0dX(SiJQP&e}AUHrD@vm)k!&ioa^ zIGJ;DUT}3X|I<_Vb0?~YoxGk@9og%owNTa;{r(`o_No0hDxZ~ADyiM(tl?sIauak4;B4#+;ty? z;=ktL4j`zrOMt8yWaj`!19dM&1yJuC!`EyplO55!!@|0!o&B56-UL*>7CU#nTTJ-6 zDj+)j>|2~&_g9FnVa~n8xfdV?60%P?_&!MS%1T!~7Wle@S_={WITqGk z=j>V&QU1mPO?jqlxMLR9<$zHfkE z_Khz7KRCPf<$X*1_zS*A685DDyY9<~hQE=RQTxLQ|8FJyCnxaLCHyrwjNDs0D za4UuLxO3&|)!{u8?mek6U-w5IwGvjHWC+tSgeBY@Uc<4a>sPKhsBny)k_rhz>)NyllraSymrcrNfqX^`ps$XltMB6=5wm_75w<Jx(d_H0E z^*1jLLo_+Me1;Z+&*v=+6`HQVSWN#qNdpH3V_=XcgF?Gdc0R^b<|n-9qzvx?{rX~a z|Gm0rHiN$HGPjqS`3>Vm(hT*lPo|Eu0fck&=eG^WGNvBSeYsa~UU78l_*s{7j=gz! z+soC%+qxe>4}`w4bQ*fwA>cR<^LdP~v1t_=Ff%+{{$1B|{TeYPE^x9lC>wnt;&fBo8soqHFy*)ecg+jodlK>s&B z-Sp-m^egij`_4+29!59VK3h6P+|tlA0C$+Rg`b(bFvhztKlpnWYaEO|vAu-z7W6rc zu`MlM6D`ot(Uso%Ojl;#_J7Ol+y6_e{}CYWlm3gxpicuJ5NpS zBHww##-lsAq3ZblYMr52*!F|!g>BI|jL*wj z_72$B0gX|2#)8IOI=xonNT;`bZ*43tV@?z1;P&*^ZO|)Pm2T#Ws^bGkR~;X8X^3-) zc>A*QJiLvj1-{4g?8~`j@8Y%+WJr2={m^?KpYWvSNZi96(dnPqTjc)ZjP7?B%$|Do z__{fx&Y)<&?2gQ(+#$-`k@=!@P2L=vJHpqK=8mS`l(*d}nj2DEHGkCp+UVS|W$&m+ zy}8ZRoAS0>TpZ~;PntX8M*Z5PwH4vhS$oU>;<)}8T*4#WretU-vZXm;It$S~4D}OSb+aozNbvmStv8dJ26v1iah`e?-qjM!aj}ttuZ3yvHh%V%^n|n~z zHq4@&$W!}h+J%lwkYC)0e{!2Z81j>76Uy79%PqiT-Dkl(gmczatUX!0P2{81l?P3C zWR83T=NH`F5!Hjx!Jm%~zKnI9L0b!5eZOsD)^_Hnj(6UG?zP&j?aYGxOEw3+Hnu>YDV-?&*}zm8zR1yOyF0J9s5}(=n-b z^8eIfbjpXz(=$70!w!t0jYthz^`y$>UFt;jAGJO0%VQlpIX^WuPr4oR;U9HZ@uT~Y z6&{9`nK0DrPS#_Jg?XGXqOU{rfv;GYuM$Rj(%$^Pgnt)$U4>DbR9G{6rq>ax+za)r z8z94ldfGSghHS2S^el9;r=Wj{NjGiMjp9t^Q|+wUmfq<59R4R7kfjFFhc=~u2-$0e z-krod)X>x}{oz&U54$nj^{uLzo6@E8jDC=KC3+VH9MZk2ZBky08+rRD+zOP5$Ni|v z3_E>mJL7~h(JpiT!Yb@d-w>bRi|*(DrF7x>D=D9=EblcAkp5Hm+8+i7Yj5)pA!l;y zAe_;UAwS*X>0rxKba3~rl?1nCMub)4}dd)oWmyoX^8%g9el^%vspEOk}7EdSoYE95gjSnC^$S>LE-oorCBzHwr&+S#F; zrJ$ef>b-uMd*-Wk7K-&t#vw-j;DLeEC%u8ec;H1NN7tmxvI*nVRdIxTbau$e$eh{43dY|AC5@}XWWM1KR%su zYva1BU*odWR@$H~n}G~5w>%3xdR0^VyY$Jwc<9{kY)hZB=^gAxY44tW=$!9tPM^K$ zQTTQQx3dQ|y}9|Jv%k}j9=7Q)_9KK@_0X{I%uAPUnnRdFxE-cG&U>izJCeyO7^ijP zb_loe4-Nf}Wb-WCe7+fTv{&&)jqMLPa|Z36W{Ycs!BqjSB%Wd5(VDVwnZ5uXwZg|3 zPZ*6CY0sgKV2R0dGy6fcM*wp`u~Ww_(L+n}@1)#uroANL~l{A;Gf z^yAwkU$p-pZkWe;7u$9#&V)am`=|f=?DU{vsfvn)pP4`Bk0)1*tDQSLH@;%b70W(Z zk==++SxUWg|{~-vexO4|7p;7xg-=Wp%&;B&K zX7kT4`^|)3Tsr&MTfcwuChsRWKlSDGe_1~F+dp~s#@~G6e~*4+`Ht~4rQuh3^^pbp zM?LnPrq|xO_KrRK=WQB)@n6^ck7JE9T#zsP``thMlet5_`}*|%er)O$`MqJx(=%O1 zBPN}88IURN>fsjFl>kTM-h-}oB2fE|Q61FioCUD*b>}YKF6~~8?$icWwmSD6K-$Hc z77Hu2_AmiFR6)(5YnE78c{7kQsL|cpz{)wm5roqn*%)iI1_7*m4ai^3s}@#jO#+#( zdC9^`o!_8J*JzCbSos`~WrG@>;{aB+0+r4V3oEs+TKU=nL^f(RTUc2G9EbZ@;3t5i zfL8(s0>vK@0jy)e$k^Yvur3c2AD?sXyPf+;Aaawv4Wh;XuLE8I)S3t~m@Pn@{9gjf z|7oE7A9QdrP~pmeR{`^6;&PzYKtxZAg>_m3k^L!W9|fF1xRF4{9W`YZR{o02(l(g8 zf{^2^?(7ykMxcv<4+52sxj^BYV`1G?AnO6<4sOYX_QPw-L$&AbGx0O}5Im7n&1 zj{`0SDu47#W^HE%Q2dm>=u)62cjJLufLe1|0{jGU4v?T(bO0tF1A+Y2=pTQTZHTwR zlZK%a9tqY#qp_>~ll}h%Np#KPE!?$ly$T`J_xJqd@7EkQD?Goo&VQe?&vW)m2zw5B zZ$;Skt>h>B7H8M`h3re5{XXa4NM+D>f%C6&cJW8yn;d@8E&Co9U;FAs&l2bVpPYS# zv;UQ|H#+;zoZaV7&BK^| zY{Fg(&S?0Z3IEE3|J4cnS|f|be;^TFeo_B_P1vgw_Zb&+KX z7dLTzdzLoD)XBd-o6fu6^l282q)IvxwC@ps1x95lzCUaf( zWK*iH%&snW({>;MKGyPecI)@4c7pf%{_~9D_c`%2yn6v!>m)|9PI;fx66#c{f*+s8 zas^{5{_oHj>)xa|eBMs?t#O9>DD$1}e()`q+wj7txT~*7rG77`#D4Hot(SN_UvzX0 zSHm6oJYC+2WQwkD+{PeC1Jc)XjE5Lws2f@6B2@tO!&!ZDiXi>|qIZ(grI`DuqqUG&F^2f_r%`9&_VmgJK5`tzQpW_g8=(Zl;-E?31rWsE8y;?A9rYuX!VCr zc^uNK-{A0QKefl>_mURQ*M1=06XZ??y~S0+yqkIJR%l^QPwIs{d-c3~8h529U2Y0} zK^|Iz^xWOl(9(Vt>2)Zc3CBDZyaT}N_n~@x+~09{3A!hb<0pjIyjObbyxY_0^TAlA z%!kt)`4w~)KLM|uCp)^+mu*7-GgIj*ANkUdM=k83R=Vhav>$IPx}V6M$C3Mx_J(&z zurHjm0Ni^M(T(eFUzL~VU(4Q0-MUL1>n`POjP2Otb$id;w7GZrO;f&lJGwj2v3H`|QXG|4K4bl)XVzU$UFWh^0na>6Q@&mo z853Q!6NZP#$3CNnvirV(}-jBT;#n;b>Qo^4&=<+)$oYC zE03%#wKs8pkM_|G8RYIdfma>q_~eh=8NT?iOQ20WHg@O|RGQ|#X1#~Zo2T8_XQka; zGHYzQ=B;GjiH-R^Z2g8Q9{KftP112XoP+SANeX@+Ki|rW@~z9u*2loN*TLNz-~K^< zz3}ZP^6Q0f{{_D@;TzM0qVlG8)61N_Gsd-*PUc=ihHTq=`ttG@ebE27qyKcv`%LLB zLBAQLdpm1b`y=(KFL}Sc5Bli?4gZB(dr`H%Rs{Dnt)bNr*4L>5^~KkNMl|a-?hg8kJpDmrJkj2ywwbjSwRe)asO*?B(OL{`W(R$VvAe#+$Fa0m zvtH=#SZY?BcWl`}yF=x$}rnsJ+HTXy2F zwtSDqLax2{{U16@BjcPWFn7Y~{FwSwy(_KrFS@HzJTQGBY5Dx@0_QIHXL%7BD>Q3e zX9&C)u(fq>YG2o2-uupk_fDO-fx9%pY4&zU`h94dD%lXNe%~~8r>v7TtFAF=-etCT z(rZmuYaGg_$0PcZV~(}NeTMXtVN5#p@pSGYY!bger_%(_T31_{ts`9i2Di4t`6~Q^ zKKTpynR~O!!*K`xte@L)hSnGh#4YFE_NA=FDLtjJ3qETvjP~@{dp%2cMc0Y7hGoY- z?A6ei$klu0cY?>sy>p_|;2*-<=>vto_BIS730-aT~qkYoFxU1WZ zyEN89miR#z^496-HjDD}>*$&v82XWI_B#ahPXWJ|?QY6Qbq9ae zXx(`MC)?;-Z99mc&Q=VVZO4VeoAToV@3$@VE0(6_B|(}+(qgTkEKeFK_$mDGi8H5` zAA|8z`YD&bF%OE)OCs%VHGKv$*nv#uk-^}eM(TaBcZSS)4({(At$igKo&T^jnDl4a z^wC?F4doa0XC2+r$Xd3_O!?EeOzo`7mi1rVxogaaG8#7zT?Nj?zONHL(Z@Kv-Q+oe zFD?U#`v^~wKixy<=R+n9(ivSfaO*S8+%e33gW}&#%;Twdne>pK`SkZ7j|wlk)7*9G z-F^6RX~R?2R-^Q&pR?~L6{r*4)$C=8wC|nt9hwWmFH;_Ne!_Vg@OQRMZ+19EgZu;8hK8!M-~;Ie zeqOfmTQVr&mv-k$@oO5G@LL-CwP@}Z#raC;w}&=1<~MqPZCjBO+BMs+gmR+(#LG!^Z1DFgQ*b}CoqdY5 zG343Gio+pZ^cMGT#gpc`Huc3#s;5p)S{=?#(d+i;^@T_Ktqeaq*#8L)osqtu@`{y7 zly);`BCOhBzkl!L>Py>9K9G5}%}a(cRwI9+B~!+^TGv)7Pfd~``888dT;BazWtZn^ z8qaB8Vw8Sge!g#A4gJzh$gVwp&>YA?axAu#aBA~BO=A)?nYtpHxYK1~0FYzF<4lgHUEZQ=6mfZ>H1_j1=a{2L-X|NNvGLu$Nh%9i>dS?;j%j z6f==}MtSd~-;1`#K|Pc1jB#U7&!~4NnBz!hqiu3;ao!4aiB zDK{F2tFAFWG3{}*9;|YBJ8P+L+i8POfveurp?s=-o+3Q!iqy}#9_qP$oBl^u7CtLH z%>P8U`YPlk7{~uHekzx!%;F!6<3EkR=7DNEX1j5GQJoundWN*4yh+x-tH7mkm%+!l zopdx_Y%ga#-{H>87Q-zatR1^b#~1Ry$&Im##Zg~;Dta{bV(H(F-OJ55Uh*HFBMoIQ zen#PP_QNq2&)om~q3r|Q9yoh94E2qDa8<|k+s&M<*k0Ka>|fN}$DHkFynYz@6yLh% z(?(87nRD!iZqR#H>`}W0`>ZP6kMd&S;m1c5ewb?C4UPF`_O@?luE=<#;~LA8`~#6O z#shXttne*9e1`DwQukVPPj~$X_)isoi;u7LB!{O+?=iyb&XV$U#e2}bSnt}2j;{(2 zG;~n6I{(s+shc!*fF{FFc*$KG?OkK4+O_xo0Qo)$t#5-%`iySIMdFk4xkO`7?x)cH z*{I%D=`2(FxXZj$X6=K7=Zl^BMxDvH((SvZT^OzL@m2I^xPhPSTG|*J+p`#ik(@H8 z8&MLW_n_#7&MxTO51rBbj74LU+5kt#ETz5uGc(KG`D*FRMBmH^eX1X#b$paQ)>2MM zA7Rj882ZNbgFef{uNCE?=6arX=}bHiRX_YsdwQAMO)Feu^THZgSqD7PzT-~H%#;;* z%>NMD;A;tWLO(wr)?DZnA z=hvnUZ_`jj%`MPCvYp_YVBL`aSUw8B#mCDbnu!xy-K5 zE)b?g={MN%qu3Ap{`*+C^2zi!JsMk?@dvs9=}kN>(Rgo&2EvtJntHE; zbX$nmiJkJ?GTO`AP+9To;Q1nl#_J$ zK^cJiq`cFw`1k?tj?=^47{xu9HYv&12<{futAxMFCt;Ff#VN;i3x~{^! zVr8nym7(NyB>6&?P5C8xC!Q$ofTeaGDcRUlr2I7|Fm$?b##|TG$3)gnGdedz+q8kR zGqfdzYPChSeR|onIkrtO^urU)K{Z#uaVTe12y5Jda!=zfyV|NM=+YcPc`^CDh5ow1 zmisGuA6Go6!|g8XHX1jjt#(!XPxBM5CCv2$_eXH&XVPGvAGmkm&QI=n=JAw-w)Un;$W<%#AN(x=FMJnqst`FD8~_Yk_L z`gCg5Y-COSig+PDm7Hhg>sj{G%Prue{J6hFI%)bE=Id^a0C(|xrRozhtu+VR2h`FB zEMiT=p3z`!gE_oiPf^<+)jOupD}j5a^k>3tA#FLjHQIp1(jh60S^n-6H;20%`pnpx zx}`9>H$^bx$~w?t(*8$vnCuk|^@)TZHw4)MN|&m+*97{|xwOU7S!q6{J~gJ}bm_o8^17n@%0t+ufN5Fvi{e9Zcat-z82H<)qO7s>R(ga=0_eo>iDyCW3oVWDvl zbKF!Jg+7%%xl2adyXq$atFRAu@coLExoiGc4!-2z4hJ_oxZc5Wz?sA!37ig00Y3@+ zfWheupf20_G;j+L-FNn8;A~)(gB8HfV1NHIduM$suoC-vpy-_F;E_vhxHo`u-{S1+ zo&7oo2LeBh|8Gax^jd+;JF`20psH!HuyQ?6c&>AhHJ%h}x!EUx%Ev|^sItp|1j*hE zRDPxcuLPC=$FVhRpoMik7qf>K_btE$z{NnNyAVi_ni>l$k6n~X(Z6M10LuS4AYL`Q zEv&2oG9S*41Ty!{{)$dRbnXC70xom*vB1UHkFh8$I*wRax8K>>8zuL;%|P1f>_%WI zun{;ExDbfmJbRt9e}F~djsWRnvUwowTDBEf1AGEFA6NqvJ)?kSz&9?ie0vHg_p!iF z0n32XfX4_VdmeZlaEr6g0g`m~{qyac5U&HLVs8N|{6+^?14$}-GZ201o(O2t5j0a(dwY? zL=Zk5qP-rt1vm+~9{34h1yJSo7KJN*?g6TNHv`4D2c5kNNRed60adPf0@VQb0OteO z19QNIz%t-4pwitlB$c`WsIwaA;Id85J{Nc+_DMjBq-LUpmGlKVTTr938NkY8bVzdv z_X04>pUzyc9+`a_I0pD2kR~JBgV4{S^=rvM&Hd=Tkt@xf!T%>w)}bSMX2y znG007aX^Ku04iJw5Z0RetYm+cz!Yt^33vlgXE@}(!nx~Ss~fRvpCv_EGtR=wu|SHl zrozI?Jxt;hzYVDPtw5!-8L0T{ffQX$qlJ~LffQBE3JWV=8))P20V=-kv!ZCSJAgxh zj{%jRWkBU;Ay9aA76jJT=nV#75!aEVW z@Qwru??51=)u?cQl^+bSXKs2dtb7$XmvHF1O*uXYBxrU8kgg*;7x*W@GH2Hwe3k2C zz%KxA2I5t-*uu(%zzMkPo-D})V+CU$4xEU6f6Ch50FKB0H1KNRdgs0bcn$W2&V3y4 zD(sXQL!ML(ycVp~JIv9uB|1x>vl@PH?)mb^{+E{%f$ukDO5xemYQBGm8S?+0^MBLX zUv~DJWGDPw3SVEAu(G!yEc#w{;eY4C?{@YNoPDl~KhA}}-o?)&r24kI@E47-_HR4; zG-rQX`BC~*Zhc#w{{rWKm$TpR?4=I>t27q+E_eC=mh&It>@PU`-5HDjIx&<_<)HM& zBHa4^)}_D1<$n!s@~?9F8Km^F&!7|3_gxo$$7pMR&C&PYTzW4$d*0cPAlHiD;^N=y z=zoiGgT7-f{LfwZjHBO|?_Ac^}%$MEI8z_%2Vx|NqEW6#wFczs_1k{jbIn zwU1AP|8c@j9~KM$w+Xx6I*Q_(lfXYZksqD4iiW>E5&s_(^eSvL{Id!FSqXaYP2k^@ zuvaAT{WKB(PZRjRobcb8uy0Awe_JBGUnK0$B*G`(D7h_>{y!wbtA7Dy@cm1|zBrM; z*An*soWQ5EYf*g733^{i_`jU+4^PeL?U2SboTRBYj~?8y^4_IuBX7&!)3~y@N92VQ zu9b_OmC{=X?okf!<(?)d(*1YD!s21iFs-})4)5mzgT}k~gENst6L=zNCVYYvil<8w zt5-I}4|^$@yVf?=a};Uy%IIOQ-~f_2))l4duC;6KCqnG;mB!`wBwWNz_qqiokhlg< zo~t>NrEBd>D98xzxvRgQtM5XGb?evichXTWrD%)s{yXnnzSdx}?A3v;M$WL!sK5VS z_teVrWjvNqJj|&=xx4gkQd%lnjcf?E?vJBFNacl0ewonNDp|9l);=5r@!#%(| z*EBBY?mdrC9J*uWdUG(1?8gqMsm$)VpJQo0a8OpnAn?k2{kgR}*Dvqm_!<=3mqqSe zw|qGdjGTlHB0^VD1f}&c#~@{Mc+C|iAa<6`XSsLx;Nr$uya0Lpo$pu3Z#WQ72}btPgq?}3b1<3QeA5pjiy3D^320T@mm4qV?`qFE(uP! ztV%eX{M3pBJIDFQJBnX1NVa@Zh~B!!`-^^$@Pip*XL-&fy3?HSB2VrtkeW1XQo8q0O#FOHL=p8yQ=pTs* zOv%?{azPMx%c75A?pvHZsUrMxQ)lL;Pt9?yVnxNYNjW^McW%<8Yp3#(%(c^IUTZ_^ z9HDt>=MQ?0@C{8K_?lb?=6js#eAoGj&M{2pW-fLLVT+*^z$5{$Mb?oow2K% z8#rq~m$zSm!6t17sY)B2LuwpzgbG2%{(9Su`DSpAP{Vos7(Qs;uDNW#zvw!pU!Q!2 zwa^o+K}zop!lyU`c;7bmQov%PLzeEn=$>oV3H|*-TF*ll&E6RHHnYB@H9_IhT0~Q- z=UTsi>T2QK``xx~)>6zqF49#x@B=-!OP@EwPb>Y?+*=(@AD$IWpCK0a3feVG_-oe+ zps|~^hMlYn**(?Kb(`Y4{u7ySpRx4q1Gc$!5wmBv=UUd3%s#*wO7Gkz?k046AfEW3 zUrgUWyLkL@rxCvs+$saD5r_vq?Th+|TQGZ5*~>%u4d70zV)2pKqO=!CFV3%Uy?}kj zz3e;Aux4@&Yx5bif1|58we|bMc~^Qt?{8V}YA)|#?s>d}^8}s9&k60-qO1<_o6R0G z?eFe(`(g6exIGk{t1B#EAB1Qh!#ar8JId|aS4QhE5jWPrf9CJqe-st&inE(WC@yu5 zsbtePI-t$0Jt60Zh&LZxinD_Cl(}ivS#V3?*6G$_bvEP(G#vp)9+}NANbY6Oo&Q4; z_cMKty#*Pww?JjkJO3ny?tOLEocvqm>{T;-(Hd>AhYeok_iCM4=d!|mj?wz@7v#~@ zPwKO&pWu;9>dr8=1InlNhW(l2i`GmZasESCht-?k?f&I#?s@Y_Rpn#trwTEh4TDS5CXL)VF)2XV%GB zFB?x;+I7XDyP(C?sRDH6GvtkO?O=V-*R>>VpY*gL1BRc-s`BN30dHt4%o$uKGf6zE z@5Rc+^T?bHg6GBBT-Eo!;;PQ~#b4F;V)0eR@%kQVAFC7l-ZSBTm`-?L-c~Yst!j^+ zgVw(3Ce+$~zjT@7mCDHE5ngv?T)Sq%(yqC^)uvr4r%i>IhS$_J@ki}&oX*I;>%GP6 zPqN;qJ_T|@|JdKW9IpbT5uhB9!@gFH3|I4Qv ze{}KqD^EB6D|W3uDU-LHZv3Ui|DsdGr;k`< zWR^CfSiKx_iufjOFLnCgd#RINc1~5N5A_ni1NT7AX%9zV(ubVW$EqHmpiT7h-rKnE z7e2jY-Rz@Zd4)LYcVhht@k_MtNByX)W1YAayM60*e_7Dt<;^xb}o^cDPDB4ze{;4mLJxzisFdzqL=!{zJxyG zo~phD^NvW_Dcz#;4#LFytFT{`c&RpSy=BHOi@=hBfImu6V^P}m^5pGJgUjwZQCqK=F)65UVgA#bb z7{lCMt2?Q6?wdJ$7?$?3udu$Xm4^7M@;}(%cuGFZ`CIsRhV?1O+I#WMKIy?#TjAeHJdSMWO6*t~8gAe!?qfGV72DhuiQ0#^ z+lqDa=C4TfBD=qarbbc#>}|+$u10$zR`0j4?o}XlHroh9hf=fJ!parEq1cyMSa~y$ zWy286M+gh9Ec7kyI&QW^zs(gz2)q`a`qR1qU#Cg{+M%L z1{7U0fat4grdn7z3COZ&%|r_;%YbApTOcu$FAM8_>+Eki`!XPVld@Xt)!vc(^Q#{=d zs&EeimEH`X($mIC!8QlAcSQCX4r&jH@pte+2bTb;57{c9($Sk{7XfvT=P01|bST|C z#4BCh+o`=Ww*i%(Is6lyx~Eg|KY)1c4Lb&uU3)kbzX_=L!+;cJ_5~uToHhf+XYI)V z)-?i|?`QQ^G|SrNUQYR&!{_)vrwWICw}o|+fWm)_ObGuAK;?72gGZ>eB$@pc5Y*Wg zpy*l+Bx-gsQ2DQL?q9`GYwG^{l(TD3hrZA8lRx?f^G$UAZ6Me8Nq+L*;=sPR}xor8p>$Q@?8luOeI!|&v$gKhmGXHy}LDB6{mt9 zA8mf>o5s}lze$P{`P8iF=bcY?{l}w7;={ek`w3pb&o*szbbK@iYTr|er!=ehM;8}c zuaUcc`aHC@)Bmq{(SE=cjov})*Sg%~+{`JH&BEN0p=(!CBbMc^ofIjUV&!5oSz&2a zxjfNFCUlvXz6vph&)a>u(D#||bjzi2o((U2LirXQUX`3qUYA>QFS|7SS6?50zs%#w zy8v4poj!aLp6b5Ph4XEUv5pswpN(U1*$*7+>z6HEzcjGYkj$CAcy?%i(9u)noW4mu z)#bgl(8^O7(wcgc!;wt3KS7WOS+Nn%7|sRjhKy4*R?)atV=AHC7vRrfCgW*6u|s+u z^a6@2J+9FO;r5#D10pVV&WEw)z&s_}?$O>b}2PySuP^(ZnT>t@Zg}{MIgf%n=P7 zR$^i4Fbjtcw{S?Ag(V|-OAh|+(RtD4@XoIl6JA{O+RpE-f z#>TB{&ts^U8&GvzKZ<{g?y=GDnaEmMp1EU2XOMsc2Ug8&s2DiGm`gBMIrA{gO9oEp znh(tiKiq{ci-aE;2|vn(*V>lCSGe$FBjLwI!cTPJYhCzBF8tI;_!*J#*SYYT+X{b` z3qL0ker_aujSGLP3%}5XUmOX4b0qw2E_}TUzr=-K774#15`MJ{-{8VGy722G;UA2I z-{`{M<-#|)@Q+2pKM@JP*@a)_!f$cmpNfS4W+eR6F8mr7zQu*#5eeTK3BTKgU+2O< z=fb}b3Evh8|B?&;fD6CJg?}{?{*IoDxF8muV{I4S6--?9)tqcFK3!iu4_ea7P zBH@p?@Xap#F&F;*Ncf&e_zzt8#|e-ABvYch0aEQ<)17@7_Hyh~oP9X}A+5 z#D0~tkHmgH_AB{K;f?{;l^aq6=k4d69s}naSjzn3y#45Anp2rlrPYO5_Qy6}P}@8) zGhsh>6cFC}fkSv6+xSPd&Eql?ly(~XoA6C@9_^WMIU7G zD?hsLfZt;qN7go1fSq>KjM3ig@k2ZG8T{fUX4xOxcwuexSn!i)L%aOM2Yvy5m6hm$ zenUHH8(8acLp$^t+>}`tX4xOxcwTMub>OynEme7jW#ag*auO}@5j|U+_PacOXoo(7 zUvhz2_JDTsY-pEXP$mw)%0l!&zoFUZ;U>JPF!uUQ3O9hzI-v zzNnl;3-li#-5B5Jd;HK2eFnc|0JD_~CzIsa&@MmmfnR`MWg&W?-_Y*!aI41+?a*g% zO9n8@{@BJ#YMaZT-R8Aa^(-tC#}}1_Xo3C%q#2`qjmHn|&}Z;V1~6N>IKQ@eD)`B> zpaI|0OXqR75Cazq2tE+c; z+|Ukv26wEkx^}>pSO4p3Ad}DzeFlH5t~!}S<_zEaQ&(3-Xoo(7J62a+U7F%>%a8Io z?YjD~#}Dn$XYj}Bsw-D`ZD{XLT@C6|Z*|qxC1l^=?r&WUWD?q;&(I#LtB&?FsjKTe zUwW&nu5UWiy85`s5A8+k>PP5TgSymPU3GQoOzUbOlh9tYt~!}Kle)UW^QE`CdU0*@ zNZOe*t*Z+>erPXRS6#WDNnH)<60{est4T0v+3$#O@sY|Ml zm~Fr6+Q>7lt2cT4&|b8zx-rL@)YYIaK|Ayr+W(OKs*}ma)bLV`u>_CNcOJtmd&954lKk^fg#2e2y%F)n8+9n{C3p&0%?9(AX&}{NUe|rqG>>dFDN^gj>=4Q zkq?s&{8sz_STsL3`E=4Qkq?uO=u>`7 zIl25S@ad2rXg29celS~^a(sgaCO`5MkHi~aJ}NWOMfxTk@@B?s(fr)y(;+|5Y|@eZ zV74;l5w02Ht9%yFk6|rptf-$e6wX- zdQ5)ek$B_tqcRg+q;1k6Z)R*C&Ch(F4*7v*lTNHXD64IpL^_ryXWkw(_;kn*G@Eo{ z?SZSO@W7PMnYITH`*g?;G@EoJKbWmdIk~nxDLp2?pzNHyolbl3xKD@tK(k3F)*d)H zuw`6&>`dE(dY=yYfo7AAY!l%s9S`_UfU_8^dJ@&nB#Ke6_}l@Dd| zk=lb=&o}Z@v^{Y3l)7coIn(ywR-X>}fo7ARSbN~cqaU?B2Mfo7A=$I%`Ha!r1U zwg*nGsau9`XF5K3!1Im#6m1XOc;}W7gOT z+J@pb;aIJWe>8ng>ATP@c$7MS6tnE_K6F9t(d;=B-lcB+B7Ls)qa5GW@1Z}cJv#oJ z2}dcjqtNs&e1A7RWFFy2+k~I@?oBq{FVbh1z6-4eKYjmE(XF4yPn|OOS@w4yI=}YlH1ON}mL8R#@aX69Q*MSH@zdiceS^Q=CFv4gLilKlDSR!7q8hY-QxU+M|`=xA`qKvLZbCdHPi* zqD6V|_@Tkzzt!W1erPoKB@dWo5BOvATY6M}!lR$ZuQCxm%7e#G`Ud|^9zXO$qroqE zz-(p2$-m8S=~4L!kA5D%%0#p%4<0}18~kfLe&~lrgJ1F>`Oxp75w%BW!XKO8(xdVd z9{oIim5Jz49z1^1H~8=J_@N&f4SvZ3X4&6;Xk_it(criF?SK7!+~bFSXf*g^_1D!e zo8Qu-{jI;v9zXO$qroqEz$|+ppEkdxN97lkjg!y5>hCI#ANrxu;QvF`-v*B#`k~R_ zkJVpSzbHG(tN-eZb>~erPoKWA(SJ_Gk|Ir!E-${jI-2 z{pzj$y83md^*4}D=!Zr_f2{tx{so>J`sJr~KtJC;^ws~)_x$Ot{yO~d+~DtT{oUa4 zLq9Yc`XvvTZT-EZ_UHxh|4i#|P``Sszpj2Ee}?}4_P>FALVwZv>*VuH>+i#!KfTpo z$Diqr{{GhAbsj(TL!;q;tp2+4J=6O8fX5I0&}i_->aVL`XIg&)`Go$W_1Do)-8iHA zTOXkx8V&ui{@0DK&b0pC>hVKAG#dP|`s?shAI_-$y888V#?Km;3BE%eeFwAbzj)}9 z+Mi!=_5`(=&oXv5ekvz^zo32i`S`OZyhC}tBif7%44Fqb#_T5iyramc;_XfkD}4tV z1-VJeyphcpQ@^d0dT^Dh{y zfO{xz6W&>1<8Mxvmc9e6CLQYP5zMkb%RFFrmUO1LbmRvf;R@2B+zegh#iS$pNJIGw z(plxx8CoiuO*-_)M=;C&>_g|(?ye*q@^A7ZKk$h^K{}M5p^LOlI^s3vSbo;{bjS}h zn{=qVM=;C&>_cU>yK|&tc~W{re&P|oARWrl&_zB>I-*bc5iOo?4L%+61I;EK>h}@M zvIpe@4@`dK2R>VNu6$IUqKmXmI`G@bPPBX;@ad2rXg28}H%Bnb{w(9v-80FLeC@V&}`C?{9v{+HL`a1XwrcPCO`56pDjC=j>=4Q zk-kZXyh;9J<+IMGLw=yyq$BykY-P&Hf#pf*5&4Nn{DSgPnTam)VbZ~D@?**=Dc9uZ ze3y>o2ea&fT*CvCANh$#;*GCADl^eV+9n(e1W&}`C)wFj=>{;2IiP)~bn z51brKcYK=y-zdj^j}HR5CO^<@@)K(hT={&|_MqAG?PG2a*7$VDPto?kmCr|Q4}yA1 zeu}mSu6#afdl1Mq`6=2SIJy3)?LmX*TW{@wOXs7G57zl~$WPJs!1dc7wLNh4bQALh zjWY!g(;ghgEc<50*PC*s6OK%&YG1{i#rRQ<8b@trT(xO@>4d|y;fJA7V;;f`)fi?o z;~m#G4#jQ45#(C&?@kXbJq*o)hiDJD|F2#4Rp?Le9zArzVd~aAXfS@@J1m@}bNBe6 z6AsaaAA+XC$cjmyG=!V*^A6u?~Sf9B23h+;N_~i#4;R^86 zt{Zxw-{2%|12=fwsq;ji!A;#igjx20cIuI#U4GyYPXgSu*M=7H)yR5;_W2$^v_qf4 zPd|SMv+S#wOWj=w?eN^-m!J5+FThWk8G7KQp_#M|eB9%PcIY#>>D##jv0e66%scPC z0NggOrHAAP4qGOU?hIaXZ$Cio1ud)z5 z@Y2xi^RUk2hIZ&PxFrLaWnYDC-kpPXo7Yk!A3>Qo+$syv0{xO<$z>ojYdn5vhdzT} zGJx62#Rau@XTcAj4ejz1ANU1)S6PT2=r^?cJlyJWLp$^t+>!yzvIp{L^ICdHenFWy z+Eo^!1^SPWW{mc`Jbq}0K7(H}fZ58$#kF@|1nuP6&@MmmfnPwo%0l!&zoFgdVS&dD z?a*g%$Lgx%yUlC=>*@xNAKIbM;E&Z+*A|dxLwkSfYQ4t|?a*g%$Lgw+cbnJJL;bC* zwH`mTL!ZGf8Nh7i;{4jXr@?plY-pEXP$sTid#kIfJZ@-*K7%_}S4Y&|Jrmrvy!u~P z*LnQV4t)lHtggCpMdl3c{i&;WdEC$reFk@|t~z-{-VAQ}Q9ic)JdL{A?D0c8^cnoI zy6VamUK{-VsjCehH?%{a!5yosP9D#+t_Jl9+M&i^H( zy8vcYocaInn-?@!E{au@OAswLqq&l#n3Cj8A_lBTY*8@{7!VQU?yXA2Vz(-|h1T8L z)ouf54N+Tb^|z$8-e|X4ZCB8C-L2aufHoKIb$7{DYAeM)nw6b^K}nM(=-#t={GFK9;SzHuG_9)wd^P zM?NEajIBC*`Z%`gx5s1I>L+}z-sTb=6hK9;Sz@y401PXAI{_3a7S z6WXe?r;lT+GXt_CUr$?g?eXK<>eoE}$ez$vUA=xBTV3MuM(+u2)z#@=V5|2ro>>r1 z8Gk9*fj!}aE)AcNY3;}-Y{MQo_q|!+ajZcZJ2ZKGdm;Yj!YMY5`f2BH9AoUU z(Qo3vvl(BHqN&EGw#8d*9{lMI#s|0M&9hT}d=(zYcZIQ8@WxgRZ>7OQe0<*YsoKw- z%>M0mbSpY{pR_jmJd?&=ZpmZP?7h=$9+%GE?sn|Kq`Q0Bd@h~6-d_16m*`Bo{5j~} z>?M~jOn%Dgr{m|L4Vf%Ws2N8a>+xRFrN519@bw)EcOJwa#ohQjJaWgS_{vBM`1$Vk zo7{l!hK>02-h>ZF`6HI!jG6e&Xp5Yky9GX+;o4k%M(8v%?lAJDPLu$r(qenZ1Ivg7gH7h)pyuoYHc0fBaoVsumay3GOZ{y~1{X>KCv0>__F@oQ0=se%( zqw$q3A0VPlUWOkIWDt)~ICZVgH{a=eK`On8zcOfy|8wULSH6v#phK>;jg-@b;ZOMW zM#_AYddJPm5Z!ZRIDD`kKa36V5pQ(*p!HK5Hs`EMKX}>MuCtRrzz>Mc6FP{G z$>hTaB=vFRj(}h2fd6Xz`uOM0<3k1ikJcyn7V1a$YjwId^|5MrjdVEy-Bo9#jn`OQ zVUxCOc#V0lpe%CdD}(U?-j@dB1H3N_6$jhC>~L~8)M@*$Zo5$%2>P~Z+wA#F zwKjtr$@SIPkN(U#4%kjBetve!&kt=#zI?=^g?t_c&l6F6tMj?+(FE;NeVfiwNZ7YV zlp_+_kQp{*q3^e4Y1lSw>n84J<<(j1-`U!M zy^LFx`fy4(Wo;(+494+1S({9p{P&9IPJGTvC-RBig5DHobmM#$dwd(Xhxpu2`NTU6 zpS4M=XY7om85=E?tjOGGj*r!|$?00pS^OtAMn-JKCno-m6VPDuwokTYZA2G8Rezg^ zmcH*rcyX?a+=2Ris8>gnp?RZx{?Z2?x#JSfQSW{Zu12U&@_S_PS0DR%`-fM~8JqmA zFSq^YlxNO=ASdnJ?_{07@U!jz{{8$r-v8j;HP=+#_0iuxll z{k4PFq%6n8s9urY%kS#ZHQU--$powL3(cHWPc zKJff$4K+p8kEGwbyMM!?G4Fox5C48$=Y*$srY+9-)ZC=M+54HVJ+>_S_Gd<3ao@u? zUsyS_WNPsTzk4h9;wQfHVtwwyKWApnxO95uWffVtVar@OZ^g>Y(dWxSud<6nsH{9%QCW4#luN6pPP^=LmruW9M$MI<|H90x zuD<5jcgxPn&C4&CSXfjX@~^t%KGD@DseV82qH61BwF1n6#p_^ReAi9;@KS>%EuiS%1#zJ|?H!9HuY#k9Zv=T>PJ7g1Ndt(_wXAzVe70px z2l0V7ZJNcBQc(OZ2J!bct;k|YGB}#}JyWc_Z5C@=T=-oVehHNS*ajE>h>L#+l>gcF zp#1XQ1ImByN>F}m7lHUK%$f#DA5$#Wmb&o8E<6?#|6~{6&&B6gS$^j^90cNTY+Aa- zlJrW;H`!us$b~0bJ`mtpUj(E@rtjXF(76 zAD9i`&-Wc&(EM9S_2~Z-gABeQxxupUq0vO?@P)L{nNBB{SGP&{SA)( z9T#5e!mqjTZ7$sE@_YB&;nKbPZBsaKzaP8wFS-0bbm2Q(xY31Ix$t*g_-+^edlz2s z!VkFc6E1u@Ws&^5UD%v;On9{CXOZ-QYFRAAd)9w8iv2+TjchqKYE^&>6T>t#co?>5*Xe(|A7IW#GxpO&~69>GU z&$;sYZlV0sD|>Rec`5ER14mPKmyClh7bi@x2TBITpMUe5<#^5Q&TABY(_HTq#A5HF zF9$N_8;`7kBN!L0ylH9QPg?9*!QRbtvS}*v^O|G*wq}~2fBs@|;`0}C^NO>x4JCeF zSIqG}ye9JRsy;Q8sk>OeyG6lRS@{ceUrYT5|lS#`<^l_>Adq39=_ULI>g<{Ndkq$?^Qfe$ADWXOsEObp2A0NAUW5 z0)tG1dirj^!0$}QhdSZLFN8vmo)YVimFKgb(Z+x9Mc{?}{iVO7+vJZmiF5O;Kh~7- z)*q{xGm4Jfx|6ZB-qC_*YiZoQFAi;gK6vDga?YA_eo1+ES6VCY|D2`L z+{*jDe4K`-gqvF1I+`p;Hy>d2P4Bt%hs5=C9X3<%kI~l z!@zq_(;0Hx-TOv6?;pJPq~5DDz+BodNoyG$w(o<;DVba99Y!qbEUwT-ow-%JRp|}U z;af}Lv4y-eEB{YtGU;5mOwOcgLZ<3f;hOeHYSSp@%r+zIqmeHj_U1A?9`yM=^K&Lv zU-MHIli$e5eT8B2OHO1gm=a7c3)yr>m*nU?S#FM_6^|{HL-TwiL&=@+yD}e|ME810 z=WufGP@D|XkMygvbBt`Hi?4UjtK2;e9s2j_;$-_=kdFFk6;J4cyciDpy2MwoIhW7e zle!DiO^Tz#cW`YJOY@h>{jkH{+IEz8ZQj|vbGh0s zy7#m##A!}mwnHB`>WD}&F*JpkWGhP3S5T**A0zlk4=KWOH)vH6J}ox=BpLWLeJ?;eIWHYZ4jjuP>T z=_Apf`abd71$|Jim_8EyZ$vLUp%2o;^pV>_8#W=kr@J6sOdnYf-DoF2Iu6q11m%yY ze?zb6%hbc1SlUlJTEA{xyKabt3Ut1j$xA;f{!CmH=s9fS=r0vFJBc{&9`uchdnrsD z`p~o2^An$`ILhz!>kT{yRR>;pHf_S%-|($!L;tthwC<_r>Ev+o!n?6?Gp~sqsvp<& zt4=P_*#38f>wlT&-1fz-NACE-mJgSFp7B(F>*sx2_c%@8z8F_^wYd4~)he_4VRXc` zEAPmygSnS{-K#&6k9)6gX@TCv(>_hSYp21yv3*WpT(?Hw75n4AKfIxBboW`TI{RDm z$daLjc%7YRo@4#3T%LV0&NcQa8uMIq?ZWhTw~okd#HN^MqOanaMqZtbru%5DbuMxW zN0Uc*URh*=nY(uP_3n}G?xFfNvd~VwZ-^cZ?-_nSAsWf;*URO$?h-#2EBVeE?%{hs zX3V-~IOD(J^u>&k@=LqWH+?MS@%vk@z5dpXO`9d_E-OdN8i!6U#WNm_)8{bL-+jlG zLo|u?Ic)2L(C9nn*nXjBtqs^Sa5teBm0RBvN@+KYqkWyU!O!S?PQN%ETiUx4(NZt5 z^2GA?&x&juSkY<^}Gfdh+wpPndkB{~=%4jyt@3`o67u znfr0CR_?iz{K4|Z^r58tyj_3e@#5932QS^*AEP<_eI`g3+Wa^gBUJHXecJw}}{SLv5YWs$8lMur_WZ7ovEx!%{tw2c^hL1xJs z-%cC1U2FTbI@!;)y^kv+>PsSgN3;Ei_x+BuV4IEYG?aFgo?^=`8AG&1Vc203Xyh0e zYA&VyE{ZEt4|;SFq@Nv6k6sObhe=?N{>t9yZ;^h{|RUDM|_vj$>tJLMZWF0||c zjs3oE$DT|#7#dSfcYoDMn6uD#a&E~k?^~rSYfii@bK+!=lf~|{ua6+o?XSzyZa|?wEa+od`j;}A0506FOA{!bhcTC^P^Fe*ZI9u(GscaHUB1U0jj@$AXCH1MU9@}{ zscD%RYHq}4T4t6uhi)5L^HC(!^!vL?-%1XTSeu*@+VBEtBf}#)>sd$AxaJzpgunK1 z2ej3zW;!{M&};*;`-Ic!4&! zC3=l-uNu!PuhsyuPPmJ8Tx;9mukvnG->~M|!}vinWtU9)*4t_5(_-kiAgAINQpOIx z8CRP!roK)Yw>MFK)`h(u)4B_R@}QT4%)Bvui`#SM?HzdtJ6Cx+I+q1nn+2 z&*kM;9>wbn+<1P<6VERKKhw6HOd9*OGZs@{w^8-VpGn8YlabTJQ=fWHZzk>0Kzgk0 zOxtoa8gXM1*-i%Ivxw12d*sW{bgT$(=!|^nnI}hwxARSE{Zp(3(BA;Ae+}yI`)gRE zfE{h5U2lq&_vS7^JdteCY& zr)#}N+g;&e@oYkFZ07YX=<;XKP?tT{EZj}`j@)q>V@X?YD&Ntl)|DjF?{m-YrF3pnKSUiXJdXJIzG(sZm7bizS`p=?+^RFJ!Q)xCLF)%~rk0uG zJcaj;$jDr+-!gVin(UnQn)W;{@~LgK_X}NlZ~E#P@L}$_^cnTln%B@8l~8!{Z(A;s zeXO2g_^7T}OL8OcfhJDtKKqBRpiQx6ly)b5u!a)8%i7NT?%9gdIi%OJgt>`C`u@X+(q^qX-yY9YLldfJ2@ z)gGiX^>ZDrk7%XtcJik*wdrK|1pA0xq~UYgPmk>*rqD;&buqlZ(9Y~TT>P_jH|2Z} z+kT(>ig#p68EbhWO`MC|ybB#kcJZZdmuVcc8rvBfCx@QFyD7_i154p!A9})MLYce5J~C8?#=i{d4Dec$lgY~*;&uK0{y#v-ppQeMZlxAPuo`g6T6 zv}#;Kod=)I?eJ6{y^AtGw3csy8(JM7jSohJl3s`R_H)&byZaiOa%EF~jdzaL(Vt($ zvkW@=9Qvx#;*Pqq;wfR)q?6{!)dEdQ$c~YY^4x6W`P2?yw+_1V+$8FT^0NlK`}v|g z>L1~&=L`E(sypG$b7p*pc#Br@!EXgmbh&z7H-&}#Su%Ou_1ul9s3t39!fXh@rMt+J38y}k~w*W07A8P}%o zvb35zH+^Oz`pYE)&&5kv%rgtudZ`w)=F|;gK_fv>K0@u^43;#~4C&QqJ?=wB6CP z3-aszLv2^%GcSAr;q-9&)OEC5?VVjnyIn|o+w;3p+rH6pC)Wxew|&zmnfDv&B{;VG zo!U2P8qb;bO*!Ms5-dlK^wXoPwEuu!5|uRxJ2mBZ_mM8^jzpGqoci6fv7gga2Gb`{ zo(`_-7{_!lj!{}0?~Tc;O265ToJPjDGQ9T}mOv?r%v0s z9*3??+m!v%CXD^kCfcbx)r)Vx^b0Ze3$1UziRdRg`=zgHg-;t{-+sw!zBxV~Yrk&n z$9+;eNw+q9DmJ|Bv>rBmbeqOIr|^x;?(qnYt9LWzeUIn+``Ft&2*n;RGlXpTC59K(4m@M6q!x*gBR<}`lMoJqoQ5A=V8US;VR7(4dqI5l*f@lO@s z1>9W8wtjpA9LzVs(&pNz0dKU92XKj6K z+nHP6r@#8+CGTovmDJ=`__($_8?F-#|1pNQb=|kUPR6gBD zd>P~BCNmCUKOEyt+5qzEdESCuhwjweQRsE#-rj;eP=>W_)QxOI^A0Usr||Biw07j$ z>E zPAh!ve2jhnZdE+blE!T_w>teW_6j$(^3E;&h@WUSQD$F<*j6GM$&9Rin#oIlvNNsp z8OCk*>v=s#Z2;Z1(N1^6w@vMKN%x*H>9QSNy1AX#8AomR(!F;*Y_}vTsZEHvvu!u`fSEjscFqtI{HdIpm%x69D1IYtZWC>87iqf#>21s*t6mzI&kEYQ_ClHQ zOrS43a>oqDGFQ-7^fPlqx(D+_^o4eA)%Hmvnez$EGprfD^|9#it>0sQ^>OA`Ut|uW zLGy2Fqq0GbL3qx1^Q;=TB$|6TqBhU_qxt}Eem0rsdn5C;Th`QWy_7wG4WKEv?1{c` zwP)M(nS06KT5sEoM@PCpxAC6%GtZJdj=738vkvq8W3S&ihs8%cO&>xz8l%jyQCCgS z*f|;9f7ap2Jm)q`cCIxyabk#oJu?DM21V@qj{$4 zQK1b_lCP6_I^H4H?xF8sOmte1b{e$7u%CA@?;p_fT#unwdXRpKcdy~4%=I$nh@)4! z%CG)JbJNm+)!T^NE%Y;zvy*hjF>5=JJ;*!$UW{*g+*^7H=F$BW4(g14f&PttlY48t zuWz|+{@kkORJ`w5Be$}Yl0J=jr3l}WXrCsJ8(W*_%aUPyhaS0=rRP2AX!{x`y-Hhc zVces*`)R!lk9h@;P*e#wvxURo<I>vR} zKbbP9{$%%(O?pc5^mHnE_R8aAW{#t|`#Vl>F8Vn0OcO%Q?~MsHzfZmWk@}JzG}pA7 z_xauQ@&33gFxRAU7wcVP^}CI^rU{()JEjy~jHlA99yRV_e!I`K5or4~#}svQOsAJN zA9s#vR*1Qd5OW>82Y#35)WekbTa@<_%KJ6ujMngu#q*&3yQSv)6#IGY9MdfO4jBAq z)%Iej`KaV0&5WrEX@iWF{W&IG2j2ss|C8w9-KII92y-vw)pOglv5~fp(Y1}AN&Bne zJur~Yy9{F|WMnL1+6E{&%-j|EG-lC!#yFm>-kf>e!6f^gP45TL?vM-*(>56UwSeZ{ zv^~vVuXcUC=w5|RaY{GyTr)tmwU41ZwC4`S8RWU2=ks%#-!S$4>ncFo7MaliIR zw77%&Bxmpqi+uWq)X8&Z+_=}zHt$H9>!WN8riOU?ONElRm9qN%JUV^}+w*9oZ{=G< zzTK97hx%5Pse>}GUmvA15#Omgpx^h>l1Y>O^ZjYN;&!<{k-h!7rVNZ>R8Gy) zYYbD(7-kP;xj&qm+7XEqOTKpMSN*HUyN>=w^XAM&Tq&KT(AV%BTh`8dXgl$mPjA#( zNzy!h?Nk2(AIWI+gnn2H)!E|l;5pWgUd{V1?^WpFN?!-A{gk5vkB6S`de0PU4AQa2 z%rWGYYF?K3_BE@U)h{OEqyE<8{Si7fd&_Ar!EZ>dioc|^tLGnjH_{+mlmR}iMQTS6{oPq{;JcR@L{F@TFte1?O`_ddX)M%{m~NJhFV_K zJ52X`oj=x#xc6Sx(;toYoV$vd=jZ#L=L2GMbOi5yBY5{4&fGiw5q+@M_(!IdHE*UZ z8lMe(2iLo<(OuHvQ{u9ji=I9sU_eJ=*x%@M+J^EtaZ<@XL z*duowW6qvAwP4xe-&uRir_pb|cNhKWB;>{x{dqK=OUIf+(^#_YauC9jJw z`P%3M^(8-A`?q>-)KGA&=4Jne@qL2A&0^^IkqgaY{Guo1?=Ub}{xf zeLMB8GHK3P&m7H7Xuin%-phBLX3ClG-D`>NtGH<}H0sMt9g^+d#_4 zH9B9bcA|Xn_sgU;X3{y&1NCp63b@{9}6?TU;zX1Pb|Ug*y&b9`Af z7SnS(zTSiKY7C|}p?5H~Co|VdxlEfyK7H#CmLUoHqqKvT$NSLdC7SD_Uq9xz&HqJX zPWDkz4!bW)d$C#>BWt~Ha;Vho$D$A7y9VvGpWcJmhs6F5_1l_bVveB8U+c?rs+9I4 zyHekwKSQ_C(SafLYmV-=c)Bq2E8+(R=@!S+&2e;KkZx`~-OG*+4ANZ_Psh4Yb6+q> zH$9$?b)be04AOaP?)>t$Iyx{&cX2$wGRC$>f3fSDg9qZ=|9T=2vNIc!kjt&gc@h)PY4ctrLkjyju(r~kQrtmDc&ve4PPu)O!(DUBr zm(Psu_1&@GyHdBeMUu>1A^eZ|J-uPu;H@vN8H|4u{D^4Ykw49KiGN$<_Gj97=V^@$ z%cae(PYToS;OWhUHju9rc}@*?>$eB3Yoi|RhXI}Rpbgu0<D-|P9a?Sl6T);yW( z)r>8?YsSm$2}(e}f@dr9T#b>_#EU%&322sBo~p+%^{Dwn%_Dc5y6TzljgD-8f<7yq zv~{FuzOaRHLM!8jR_3O5@*dL3*z0}Xv-Di!I|Dv_Z5#3Cj_M4#QO-xVMYjLZ$Q|DP7_xg~mSf&)O!vKJbFYn*wPCcr z4P0UD=$QFNcjwdCAfaAIhL}G|pl{x-T9I+nipcf`?k8QSEVPgHqp0U3^sln)<{7T{ zw#O;Q_n_7Knd9n>@w->oS;vyey#GjVwvKfVkH6guoZO`O^Y{2W?!9=fc=tN(Soh+6 zDPj3fwLXHpw%fP{9nn4;A~O=teFxu%wxw=}|CXQVnYxqr2K9y1>9Z|? zysW%9udJxJC?~IqTSW7#in1q8tjL8`c2!|Cuc)jjr>rtBr#L^iIHxc_JFluLzc_zl zd3IS*UIqVEW*1ae78FJ&RuxngOw68GRbEh$Uml$pt;mCWc2RatSwUrSetCIeVR?38 zL3UwoUS3&td9<*+ELv1WVG8l)lbxNN6UxmmubP-sRFFThh;mj{RODsnWpk6d#j!w+WuPQF)vZ4Y}q6N{)Y*Gqy zqlHyC8Oq7e%|SI2^YJ_sEu#>*Xs@uSyeOwIue`Xbs3^NCS~M{)H#a}Ku&gSls$%O@6+A*Y}!uM+*`6y)Z>H>V&cuPmpsr~n;Rm1XDUR1qC5t1Qkb%ge6_MX9dr z%JRahC^8r1=H^9FW?5NzSwVS48FiZ*&CZFIRpb;`mYH%Cf_a676Y~lysZXjaTArJo zT|gNMX+f3I{IX~^Oe)IYR#8~2_E8LFWe&>B&&@9?DlgBk%Beu6XkK<%L175xWz#@% z$_k@}sH>;~%qz@}=2TS`6qHXauFTEJiRP9UR~A&1=Tuf?tG+6-D~gMXiznu0(=Kwd zEAw+E7UdNcR_2K(h0V^6=H(Ta6&4p{7tzFXD=La7QUL{(Wd#+*6|~x-in57$wD;Vy zs!%kiEJ`aXEI{Ff`BgL+no4_qP%D^b)QR((vm57RYg%HjV`;gBEPIK zJGY{$D4*&oE2zqz7|o>;bMt8a`Ni4M;=HQt!YcAd3kr%+Z((^fw*qCNgrXeklDiZX z<`#tVi%F(fRYg^mRkW$H%F2nwg@w@^?1k1*SW#4l!69Kjm5^IBF*h%_Ft;+ls<0xv zpqLUsS(THQlNT*R(!!i_DkGQXSxF*#Ei6|v$tg$lC~XSEqi!lFd0tUoB~6qnD8^i? z%A>`_m_dFXB`VA*DxO#s#n%RgURGI^S5%QxRFPYrTa{gjGU+(V%8-yYSCyZilT%et zmRFvOZu8J-L0M&ac{EyHhB?q$F$D}IKNsaxa{uCrLM*PJtSDNLT`{pLzo@b-yC{US zu$r>Wh4XIDyk*X!1$aPNuw?OPdiV;<%$ztQ6^N*lbD~1W3Zm7 z+`?ss`<%=b3+6A*Oq7{~3o~z-w|v3%x5GL$)bx`#A`A_W>Noh@ywtSxH~vGv(Abht z=vw?RwJ}i70iOpMi!a)0v9=LBhxmuUS>S^pW9Dh=Etafy@ppoQiNDQa$+a&2Dv&YD zv@0!^RDe8Nvxd0zK_KflrlngfIWWoIXAh`+d@m7}yaQ&EZ!5?<@3dzvmOKg0lziYU z$p`WroVMO#$!ZsWCuroeSaPk4zX~++SuCjluY%8cE@86*Wti8a6$GY%`g|;0(4@RMX(BUG7 z6%L0v{9vM`d&A+Q4)1h$rNavx_H+1dfz7uPoWOmifXoMFy}{dq?5hEkoR3(noeo|_ zd@=}W7UOz@4dCYq-{8W79KK3s(LDsB+N|3^sy^!~P<*CwlXJlfz|r7?+4g?xE!N)a z!uPoFT<`+u-nq!i_aq3bMU56~*MZ`@6hxI-vq4mpH3j@EIM!i5hkGu>Sc!iJ6#aUK zyBP>G_ms5`RQ#PFCZBZ!h)HGfU#JxP0Aa2Hp9fXGM?jTtoeM8=;X$Cvc>pD=oYO$b zJ;h>esS981!m5n%(7nz7#)73FD$go%cmYTever>q;&%fm{-vPkE&!>5tbPvnz(jO! zg35QL!w31WtnhRY)n>i@X*V+lAkB;YUDjm31vhQL|d;wAJpP29@tgi?xq{x_>gADXg>FFk(c= zssKe-YO%J+h4Wo_7$|-RhFQ8j7Hi)H#c$9#w!Fz;65%(_ws;$eiDq2|N*_}|=_4PM zKGH$Sv1h22qXCp2R)e1b+s?B0+ikJ-T^D}Gg&zT_nyk4XRiE|tnU>$Ppvv_SDEaO^ z!^(dHsB+G=Si5J4t3Q9lO4tJksYUO$r6#sib<;Nwg$v+*eCYBMTslyu_&USc}!|4vEIAkBY$zS9! z+u>M;nGWCXZ}t5ksPf(hmV#F~tZ?{7KdZNw96sx?(cvQw*E_t&;cX5VIh^hAN{3S% zUhMF2#Ewgt!!h-bPZopkIDFHgHfc%DM?lrXB2e{E>W~FRCjNsYTfc9Es)r{*>G@tz z`k(D^3Rpup8!QKtLGj;%5s3b0pyC_AOTpO=<)?ER;dD^-)z9IFAsha{A@>elNIK6H z^IZ8R`VabNt)To0-#GvRek+k*;Wz1z^lL&M`Cpw)=cnKO%1?L>ouhvBE6gs4!j1F``u!V!3cpJ|=vT#`!VfXH)Nc~`6h6rz*T==@U@MV-YNdIPB_>#ErTJ9I5|504} zS#jyCt&O4I5|{pdT=*LF5#;~FxbU~)!f(ap-xpUt7UIV68xfcP2XX0Y7Qy@fLtOgJ zapk!*F8!>y^cUm8;kdB+!{Gg9$EANYF8$x)?)S5}FvHIneiP#KlNZM?5|{pZT)Jcn z%C{np{-HQ|m(w2v>9@u4Q#%c&uZm0G7{~t`as0cz0N=E9LEWv(7p$CDcin=;bC%y8 zo3eb~oVf`T>X$4Hkm3Rthp#5axmoso3X?)APW9`Su2@lL=d`--p^RSg!ul0Cb+_ac zBqUmDQ_YlEZ1(ya=G8BhbK_f>xl5RI^L0H^=FeMP*CWz#y7@Z8EtZuhq+f=*dA9}q zMpKSN9;0pX=B=n(GH2e>IyYn3gEQ%_e3U*RkxfpRgk&CnH|KbK{t1aJ{~k$d9Jr^( zOLm~Fid=z`dPF*}*w@XQyK>Qrx|`-gu^^C7b)DF8wm2@rsdcyDWL{x?XiuxV5YNQ1 zDf3p|jLU3!^p@*vuc;ZiZk-c|(H#R7r|H&i@?fIh^m>w5&BVs*PS-71xoBR1o#L)v zuxL@;@;Qs=F1ZO0$|?aZv;KyKbvkZ>JI}wq?xr~_7AnoUBUhpe_3-H}hI1F(QU`Vm ztw>c!kI0*DUX&nm$=sfixC8GQsrroNIhWE{SK>kan*P9fik51zlzB_%ET{8Wv|zDy zGwzWqRfY2Xk9!GA7R;@iPXcv3XAyqMz4$pR7U!6Rm2(n!D~DQ{RxJ2Z(EYfPV8Jah z&dQ;T_g_xbg2mS_sk?splAG#Q-o7-zLK;1=TASTYRsQ7a%ALqQefKT8x0iVZ?wv@dL43CD~4G-2Pvo6Q34~fsm8o;hrtutf|s_tXf zj%l9(aj(jE5P4IyKA5zTtbaJnng`@`ey6(cD_NDl71^w;b{$X5{i31mQ@*ryM)GGL zS$^p$n`XTBxA!lvKJ!O2e)-*pmp{?<(-{+%{oV2>+n$_p!R&jMdu1M}HIG`8(a&Of zvcZSwrs!Nn=#n`<@hIzSU&5C|(6`c*Y0WcU{metl7wr1sjQbw`*7EVcduqn` zmET!Db@~%CCggp6IrYaHrqV9`F-_aFD(7&{Jf61Vl zeRBqkH{q1h;$M#%Xs;8kgt3K%NI&o>?x>2AAjW;_`eu zkmoxtPo2xN(dBt8F3*-go~K-%dY9*iF3)pud71-xe(LhfcX?iRd43+3=e0ndU%5OB zU7qbO&u`-L{97Q;f4DrX?=$VK)#Z6FE>C+P&t8{@b%Q3)L6_%0}c(@%!0t za$sa>^Fj6@;e)O@Cn>3VP}1Pk{oz5?*k0PN!)a;zCzUqqdOv$u_Js$e89wCMufJ7E zHT!NKFkbiHN4jWy-tauYy$(XRlk0@MCp+HU+wex-ZW$eK%DInp$?Efl=K=0@5dJ&4 zPRKjzcyn*V8@+VP=y*#fr0>_CrxSP{;9dve&$`OQyf1OQxwql1^7}G6-YN^}R!>gf z@I1i14nm7x<;1+FI^Nvd@K*VK869txh4jC;E-!byxwql1^7}G6-XFIvYaDONW_X{- zx}52FqX)zLMAqdj$NOZ|Wu4=FGU~G4@je-K$-XON^CzP&@sDA6pNzW1mxbYdGU{@L z<9#yf@>a+DWYi@(IY1j%pMD_faFWIStj*p(hIIZ0eR*Wfz*7c}-#;mI^6DNP9>6Ay zEcBrUCm%V4GFKI%vHw13sentlCw-ZJi7sAn;4QTaQ0M(7NBJtuz6Gx_z~@l!`1*{Qb5->-SL zy?#a-&uMsw2EKZp3dLt3=gjX@Jy_eU-e2Qr?6WAb42)xq476Dz1J9C9>4raF2A(CI zYSaArG9ZthiADw|i!VczG;71v`)4{Dr;mhsU|eiupe#lPo;lrRc6yL*NZ0e(mjQY7 z>@+esS$rAL`~DR!ZI;6tiwR|@aWYUABZKq~e_LiJgLFf>tshqx$fNO+k-^F0%b@mn zt4phMIP*9%%ycqP79)f74u4x_CxdiDx~(5412TE-z>~$70ln{^kp%^Bp>UB&>@%Cj)vlGMtDuiQe}|-Mu~gaQa9nL%ov${TmrhM4LqK zUVq@*hto$w8F=q8c0v6b8BRo-MDP1uf8g7P(?>!Xc#kqN(B_N`C!$TFcfWtU)zyjX zFA~bYdzq2pM7Bxv?)Q(LeXOvuB$Q!=li@_RN%ZdbkDh%veI%6ORwu)WY?J7Hzv~Zt z`*8Y5D8nQt!-;H@=zYKI4}AM@`ba3lWGBOkY?J7Hzv~Zt`-mQ=Jw%-hC$deV_m4Gx zIFW4Eng;N)ELLeBv}Y+jw_)|HPB9Wve2&^+3GANl!@_$k%=~I zWa8Q0trMpw>5g=bzkHdHPvdYSlVl;Rxv_*YQBV7#P8Rz4puQ5y#CXHVL|KhYswenc zoj94KJJM}^y1GL?jZuwEl7+D5)Dp@>J?*1i8(HZ04LW@#l!@_&k%_VznN&~kw>oh$ zNq3~H4f%RPMztd&lVl;RxwwQf)j>-;H?pj7==7CPCdMO1Cdz7LIvH)e9+_z8My6XG zI(;RSiSdb%iLx4*PDUH2p7zx^StdDj`bsDh;}s(ldN(qij5ba^?VIUjne5Q%E1^uc zI+My8X|#;K=$vz#oR{W*OllxdQaiS}z`IvH)8dh+{k&;Fdg63R5$$#gQ?IQ6uT zc5d3ZXMav#31x~pnNDUKr=Iq?{>ZmKr>}%EF@JK>+c@>K&-F*X{W*Oll!^HiBh$%j zIQ6v8^+&$_)!6oxP^KCu)5&b()YHcrKb_1rPCb3B z@za?nu^*?NKGyi@WVUhI^~V}NouoF7->$TdS&VaN=h#wpC-!HM{z}-vcpN{NW=y`2 z@%WAX8EZ3s!j~rF@X}`GZ)dF1j?OfOt7bfY>Ft~?z%vkEU}pST&3OFMGg8Kz@swzE zAL?BwKI1s2-1xbqU7IxQ%^>}gFrf^Lmy8UwX(Iz;lXi5Zd-yW&%xfoI<4s=%WYU<< z@OQHKGSrhsJ2q*zI&}I-C^I9Yrd(0k`hmp0kqt;dmp z@sE*#vKSepclg^fI~k-K(rx`X8IZ|q2c9gx4CuXcmb-V<;iTipz<9^VKv|3oC!$TF z_s%+ZZ_hrQJ`&ai;~OIbdNnefh&GAdJL{bco_#odB$R>ijFAET8yQYSn?&!Ou0QbY z!|5ZT42)ll4AifY;Y74a^xo+;h&GAd{r+*Ls}t8>B$R>i ziIL$%wn_BfNxL+5>)A(*4JVYL#>sFZ+a!ALq+J>rJo|9^NGQWhC&P(sljyzE^#{Iv zIDI6PVV0BOM7Bxv-s$=S-#(l^63S5LWH^y+61{i2{=m17`s1{RdMCq)Y?J8yV~rn9 zWSd0qnpZS!a)m?JUnHyxZ~Sl~+a!AT`^Q_I41F0toX9pwKkfIAlVbIeP!Hbt;RLlw z{M)AKjGPYIC4FCY$7F}-Lt*@}H@A-=oxf_vlb7~qtjPEQzrTzl?b$l`5j4KXHD(#d zcyjFRoXf{E1Yf#l?ckOacLq-iamcOpgj+IPT!zhS;s(38!NgI|ChiOucLs5^KNC09 z#SINL2iFD5f82}VQ0E@jJm1ZB`y+RBpS8)lZ_ZqiPuhN*>&p34tReRNa5r#fi`Hh( zWNmg^s|g>h z$G4vJC*I<#b0FCHXU@Nsez@M=KtB1`vw1i>m^{amQ9jAVOY6pu+)=@~r{1~Z-Sv>n zy6$Awck7RJ`hjz@I0u>gwK`p!`dBr*M!KAU?y57=#&aGh`u?J=t7XG$IJ?1(Vb7{* zii|9>Rad6eDUyD zY$q8R)h=jL#ocj(Y+V0fT(XTz>5en`GF%v&^LY&p#yMVR1mhg9q1|zY*KilcR()Qh zf^m-5`N25HYg~7n;g#jW*tpLtCm82=6$IlPuj1}F!wU~mMmO{gKCiN1oa0p)jB~s$ z?T$0NE(;Y0+oJ4(a~3*npVHlq)wYkW(OJM{%Zf(kl5(z2%wYRru;0jSpwW z|K?td!L|Q|a{`)2ZXCF5JbjFKv_i9U>S{xyG~HL{nd=;9_5}?Qjn$1;2b}X&v$}c0 zsjGKXuS$D(6#Zs9;SSCyAGa#?Vfn333R`}L|6A5auP1*i;g6udH)-{bSMN%GSm(ao zm!vaJQkv|U65YOCrH{sVzrSaqGkn6fp-)^@3`s~sf2BUy(_KcX`R%o)Ty2by1|Pr@%b`)*F};eT~Ch5RJHIoH*HyzFG0%fEU2 zyPkjZ`F8{V7Vz&z{w?I+BL3aPzs3Ap!oQ{bTlVqpW^!r2ToHfNMQF>nKRfY~Q|`X; z$Dcia*=^HbS@g)8?|kQ;hdx^|Y|@U!KmLC8#;z;Iz4u<#(u4U;-@5qipZ)uz|23j> z!tb6MlQSzwIpCgvfszSo!@!~N`5@2v%d=Rr z2gFs1@eely+)9{d(X?kRmOKrzWq;a}7E9KHqFV%h3akK62a7<-nGd46Y1tM_2Hu)BSG%PX}j%;$I3%e-~S<&3EB! z7v>}i!~eq^OLy2}?QPkPpTjFb_6km$Zm~rE>BM)D#oDn4qoDXSSgc)#AuD{Z#oE;_e5VV)N!vJ^{Ifx#vd#mgZ{-`npZEK3E)-ts zB6cWD0lfW}bqZ4<-u}tOF8!qfo1w*phq&-+7k35M{AE%f`VDvCr)@CwQ&8zwqF4QLTzZiWhDL!(_kNeU@N^f4jhOVU zjz7)bgj+!Uk{!P{s0aNv@)uwi`axXy>v7=Ciw zw&9zAznQ+9KX(ji_xj?MptpVeOY@d5iP>ByPwV_lrkrar`O~51Q9Poj{NbNw-21_O%g259$roZ)@umLuExZ)l5p?-KUx?%=yqs@|8}9(2v6XdZxfpf1gCjT{wP_7&c9 z%sZExw_&YZ*TPYu4SRV1s9u%+Fl&6)UdlYtUXz~D)M?_=crQs^o5DPj_?UMbcz0@l zzwRO4Wuax~o)Wqe(-_jmy8!QyxgC*_xt+Xg>>+*K%_C~|a?Zz7t4iNu?OWHc!WnCy z46_%Qw1p`H)An)}NHFaQ(iXC3e&L+-@ycJFk`7I33{4X>H;%IFGsmT*k)9HhzJ+wY z*_iLe%Da!UJhf^7WyvsQF|xwjE6=av%9C^%x}q%DHS<5bxA8uux#5MYPN~@=T!3ug zx>ad4dxf9R7{4%_UTx!s+PL91j``%YPTotEwwL!rt(AF-b*k&a8LS^ouQut@ML0Bg zKf2hDo(>@I{#An>z9>9!ZKvk_#N!w=0|PW>epYj~%z2t`8`>vDc;TvynmxkH(zRZ- z+Qxm##*OQa+cQ~mq^ItQA}jP-`+%(Dovdc9YsYBjw8o$h-uKM9Fy1Fkn7LKS*)fwa zWmLM+mr(iwjlP7QzDykY5(f2!oI^+<-ETsDW%NN`321ugi@G)X z5=vj7(U;KEmx)7PLQh{@8~sUN=qb>5B(_I%YV_qzZ!#nMsq*)U+T{&qwNRK7j#BnpwXAm)0c@uU&5fi(37b%^yvD~p8fq9 zeb83|njZS1ZjHW#(idp-CG_-V;?S4S(-+r9f6^CiO?|NII}+;)of>_qzZw(Jm-;ix zYx@E81)b3sX!IrY^kw4EmoTU=^knJ`J-R-$r@n^vL0<`IdgzO~HTn`tU!c*K(9@TR zLtjEqUtAmgNnf-z^}(+1NUSe(YV@W4DyT2@XO!3W1L#XOzkvP=H2M;H`Z96oOBmD_ zdNOr}9$g>WQ(wb->T4Whg$cp&1T;FcbsS@k{fs%rtr}?Nq0=0V8Bb8RMqfhd3pDx? zdipYP=u7D7i)*7l>5I0dKG^jgiS>m}jlR@h1@%RLX2zbQm|thi`K=>5KYCcMuFd!} z9A1|6%m4q5*A}LPu84o`dTnyys=+m8jLg_?ouNyQ8UKlH4|TDyg!VC#HqZ;*x>cvw z?1kn;$k$yVE zA^Ut8W9{GA6#am)DbU!I(6cEMhfN7Ro8sEom~4vv=dWdq-X|MjEZ-*^>4na>5$O7C zBfatr*obI{_o1DL&a~CUw&dH0U+39KFLb_*K-Xs*>6K@kjX=MyFE#>QuQtLn z&e(`h&mGX%h|seU6NilmJsaWL*onmBJ^y;#9<>s&qla5HX|G18S>XM|I#NL zVVHqr~7ZzIt4*+zQh8L$!2_Qgg-*B2X+oPDv8Ug&%qfv(Rs(kst68-c!0HUeF* zHp08Nu@Rwc1T;1x^lZe$VIxA%Mz}UMBOBqF^4Buw)+ZZbZmv%@(hHq$BhdBPMtbEL zuo2Pr#YRNe7aNhBeX)^V=zJT2uFp2oE6+F^fxb^R0$r~*!W@>d5ut1ZG&UmiY{bN2 zBSOzcxc+OLXYG@XFdy3|8|j74w-M<2Y$Lt$4A_Wh`(h)a>x+#@&c4`4FLb_*K-Xs* z>6K@kjX>Wg8-cD@8(~h$*oaUz0va0;dNyL>uo0nWBV7MA&aKNv;^)^>Sm&)dcz^Df zIe6JfJ9DbRd3e!X5S;t%h0eDT=wu`9k&GVvvf}4{d*vCh5z%5J$CT5XClwuS|5$YX zyq4rNbjOg>o7d`v&bJZhWFzg70X@onVf@^0uRP;y1bW%XvC8Dn{X!Q{qjml4W$2#! zWlqZ2h)^~H8XFOMHe%wi5us-zTpOFwSc_-MUcx8hd&&>G0&96#C-h4EI-!_#K*%t% zlzjy0O&zQss%HI=)(IuEpF#V&($VvM?88f;yutNC?X0h{dm-$;s&>{nv44tvWvQJT zS&Dn)j+t9NT=Io2MnK;LfeRAD#jvxEvyg0*;eR4j( zGXnhBD`)6Toa4t{x$Zc}kG*nUoZ-h_IiDZ<<$V3IU(V2(ILD9ua@}!`AN%FJIKz+q zaz4M|0e)9FIuqykeLfiH_+8x{XZY0y_>Btio8#zAoZ~ky80Yvc=#De|ZgSxTrOmG; zg$jIG&kyik=4ecu<9%~5&hfszJI?T4Wn~Tax3T;3;`R$hBJ3ATV|^+61zBI(&c3|h zy3!td^4uEJo$MXlg-w~gdDw9WYfV}B{9p_DTd_0$n&$*(uXLwj7hak$C};4waJP9b zOy!vn>3$}x>BoB5L9B-z%>KrH8`{{f*BU8(#;()sxhA%W{kkpntfyrShS?K1(#bfQ zerI%P7kdVuYpYMNSFVufm-fod4>cplke1DM&*0HI;_F!RIyAKGml>=%V6AIA;SO*@ z#;a%F@L2LWZL=H=dlTCp|L)oB2RW^cHAcEmM;@qsijlK&+nG~LJ|ksn`z-35?_ts- zI^0m&-|m?%Wj!zYScK;&#?^vfJx}(U`LS3~% z@9$p}AIiV8#_l&%npq1At-pT}8e2Esnq$_%&WhW=NI2pCMe=Uk722-*w?)p;N_(C}nMj^pKJ|RrQl}XX!WXUPktnlNTN2C#)aZov9z{l|5Rl zJ5ErC=eWI$)Q>3}b+Gm=rx9;15Zj9{A0jmwP%!dbMNM_8UKke()K3DW= z_cijoIdaDpjA5p;=e3{TULU&X{_+hKh0Ffs&o4dq*zcZepY_TYiVqGxc=e-Snf#64 zd~w(l4>g_oPI%Uu(_Z*$&UxEbrGI{9?F-94`r+?aKYq%)53fA<@XIeRczE~UT=K&H zfBw$P1K-$~e%_J`+OwMOSy}z=mZz`%_j|i;nQ_HuAG+zEa~fYA6M6aW#Nt_}VLXfAxap z-`Lpp;-;zBpWV20?bKH`U$N*HL)*Tw{k&7Y{oAh=4ESJa!;OPJ_41=blNS|^n0D)w zG0#2!bpDUhhZR>hz4N)tfBDF)KP|cNhJ9c8`pPBskKH!pwpZ^-PWr{V|2g`?`p!ku zAN}vmT`wHEZP`DsMv0%~_rG;t=jfDG=jQi+=iI+3fArR$Zu#y|D^?w>aN=)ZR@ z`p)Ch$IV4+KXt{JTi&SsaqY$<_l2iF{m+%xKKq|*ht8OBzP6!+GH%~$%5Z~N4XUl0FFM_F0v?`yw*?&zl@b2k6|nO}P3 z*+EC=915NB)OiowIA_NxMO)u{>C@j#|LpAI%@^;!dhXFt^Z#ql-nWPT?v$5*^^3*V zetXEDzj61*U+lc+Uq3tl;Oc*v^60lR2lTtC_>Er-zTnOBo3Foq-ttUyu;!eV3zjU- z)G@B}=B9@1uG9199)H{EI~Uo#pihGAF0?>M)BXjqLF|jrjGT($|67%X+WH zlBJ;btX>I957RByPI2K17aj`^g|45A54rdcFR*(008}~JK*{$GD7oGMb^k{}@o%tL z`;ZGi=)!k`;(x7+zskkGI?nRj>hMuedutmkmOMY!^4)5&_GuS>(uLQ7+EZH!YOid_ zVcQrRKLpf$_k7y&X|q^6J;UySoo2D5ft#`)YuY0gOG*i-JQrK6&3EB!7k(2PV6S=B zY>=^&*}JOx`Z0k4{CPjd-!XevZ&er`-d?j72u(QK=8$n|FRHh9?1!Q!{C&5V>=sA= zYL2Bp;KIXP_UV(!Jm1EX*Ww(l4O>>8E@OwQ%p| z_zSQL{Uk2@a9sFWh=cS?;=*5u3onk#ue`zh;W+w)dtcc(d5qn!O6jrx)sXkx0juca z?15Es{4Q8O?vw3<6`R0LSR)80Sua@3QPFH!_3zT>-LT4$U_Y#)d+vx;?6LO5`bRHM z?cRQCCGrk4_K!oEVd>}XlU+|=c$p&p!hNzHpB5fO`Yp}umc>NG{jaxuva4M=OI^O{$QAs# zuECEw);`(8^f{SO9UlLGXP<1+IiGx=Y#1JG%tfB;bB`sf*#pZvatrrsjo9~#n0>iX z_T};(-FhnT8_+PGFtnU$OdR`UPtiWv&K+Yn|J$KgmuxyT_M&?ZEjX}i$AW_29U6DT zi-#6G^{qoqv;VZ?{=vUG^vn5=9qL%~z@gVib?oT8{FjGbfBv~c6Ruf*XwQ}pc1(Nx z_lKU`^~9kIe*ZUze)Yf~cU-pk_lF+X@#3MI`hWM(zD57Ni`j*l&A?{kDhhoAc)#TVDS8A@BjgrillE(4!kS!Obz%DV?JUM^;sC|I?8*cng8V7QhR8t<;Q3j`)AYGKYQxP+$T8O zdrxFU?q22=_OYLKKl2d>pdGY)c+J7cpr)KJ^R8T2+QssYwb@Cf#fnq<{)|CsEs=pu zA>O51NyjGF4h)qRo4AXozcsjJaMOP1ew{H8x&bkC0}S1OrkqWoCi$CxDq{dN88I{& zh9;va=PRM6z0j=7$bcq2h9=$6q&MYU7i!uA&BBayXwqV6(hN;nQ%-rPsS}#&j5KIc zV`x$hO=?rlxuK>GXvSrvLc`oZplm6ICZ#DSDb&<5e|2+fWYsgFJHzZ_39TI*X5NE* z=KUXiKgRn%Lxv%W8(9`!cK<-9bMfYznf%#RuPXg!Cp_e%DV4p?)x7UlAE|k(-O+SH zvk;m+&@5!%bXquV?LyH!m)6u9&B7zAd_H^NvkpFc;j?a4#>461^tJ2YgRYv`hxW_f zc~!mT)A3#Im~tVX;l;PHW6>-;QfB3X=9qFFNw?)Y4$ZnFQ+z&dPxd$WQ9kXx&S3BL zQe=c*s!&E=F9Mv zhJWg=g-1U3)*j(&=}p3QM`paWSJ-TIVdECqxLO-$%7ouFrR`Juaf$=kN@`emGajh9_`8rK2bHKl`-@0GsTfT%t8P z5=uv)(UH*8k%>b`!k~`Ojp(J%eO#Xq9Z_#aM?&ccG&&M`Ix=zSNa*Q^YokZ$2;J-@ zybnDcQ%C60=!kY_bT+~1h;|jDBg)18f2$**bOah52|XQ|ICLZo>ImJKIzvzUxIQ5| zqTY;-gwhdcbR_h2Wa7|~(9;puMrYCyy4g#3A9^~bj?kmg5q27*BkV9nN0f^_yjDj- z=?FAB5_&o^ap*`G)DgNdb%yRZ$MnSLhb`LQh9r8=Xl<=q6zQ ziERx%8XeKE#psBBD@I3@%i1>m5qXS`K%*m}ry~=Gj)XxSp&L_Y=#Kq%Cq_rqo6(U_ zIs%Q3gr1H}96AzuI^x>sOgf?s1?)euj?kmg5&ch$j_99abVRwVy`v-Y7#)E|M?z0W zCJr45gE~Strq0lv>mNUPpH00P9SNl)(CA3$>Bz*PBcZ1wu8q#5BifYuPG|p#b%Y*` zj_7}4bVUCYqa(`L39ad~g|ao!=t$`4$i$%|VNgft#?%?QbN%Bd*Aew*bR?9HK%*m} zry~=Gj)b0$xHdYIj%ZWrJDvR}))9I%I->uH(GmSqjE*RywRhT)Y+E`4jgEw#j!Yan z5(agIZcLq_JJ&xRQ%B=?u8s@yuEkoT4#q*=_*K4p^u1~##OB*-e#?9-F>p(B~-@ae#e$>wz9fr-=;C|wjcWoQb{c|_1FZ@48uWUnK?UPs+l%nsl$!o`^Sb0rchKtJ}4mnI5<26G! zm^frIag5tc+!@3ngNbAOX5xkthmK7g<2VyHoH+Dr;zqf+QN*Ep6UVsD(48OZ3ck~M z-~Tr9jrwRLy@x;3-qtSF=p7_7)cEyQy^R}M`VGB%9M8A+6ZqC$1TE{U)-DLk-*??% z<$Z#0k(0w|otu!w`SI==*Pm~;{V50E;TwW@!1jiBD~l1*JDH&s(tjcaNT^FCPIohH2m z(zGVa&nNu^(zG_qPm`VkX{^)gPLsX@X%LrCOxa3Y zJbikPvS|&N@|d)^vS}@tpB7g(tqJqf;>yPQugLgEv{@@Pv)n^l}&5Q{Is~TX-%1*7FRZ{E%Vdj%BD4D zE-j{Pt6V(K*dArOJD3(%wyy@$;>vbkFfFcZ4+PWV%C;ex7FV{v3#P@D?c3dHF=hLX zi)XCRqih?4X>nzHESMHowk^T5xUxMJOp7bq4})oOWqU4|7FV|B?zEV){nW;%Zs*yb z5h^fsJIa>RoGIe^%#@d1ev`KJt(df*2h(ndO?xevHaj-$SHZNaV$-$<)27F!{U(^k zJR^PPI8V-h>rRV_{|^_>I8JpKlhztci!0lE!L+!twFlGU%Calwt{Io_=Z zo#14*mT-w%>xtfs&h&kTdCHizo`hr8da}0E&;-|dvd&QV>6iqXwVr31HKNJGS?kH# zL&oO4uk|dX49L;S+C|CIO1@*R^`vZCb82Kpo)+p$YaIQxp5g<|&RK4)Cu!z;2(Eioo^!nYfR57j2Jxse7%b)?yAm&RWkz z^+Vfh(^_2W)vWbQL^Im0^`w5hZ#`zMXCm5>ZmlPBOXe1IV`OI?Y8!2!WeGe2-|xJ4 zJ$&ohwVvl_t>-ng*Q>Fy?)@s~et+!0YQ5*L=ItM?HJ=wvx@?cueLnxY`|j4-&!Xq1 z{7LIShrZeW|7Z>9!ETr}dEmF^y}{{^iredX(oC0bv4{^P0N)Ed(zUx~D6o$1oW15<^uvpGRB65G zr(gT@wOVt!cl^(;(Yn(={OIq#qqV2Mum8bXtv_vi=GKd~2KD{#@4ZCpP$w09Wr)_I z&W#+LruC@d?DFTeCUwKN4!@~&so5`Fd5YGio;73tZ?!&k(3W|h*BaIFnagHso$A)@ zKgrcv)mPu#u~q9;Yn~{(LTgsP-TAkF(7M&eDG#@5?P~osul-!>S6{!sY?s!suGm$7 ztJbk@{{Py$`tT^Kdp#i_8;}JwUW4+n7%BmYWb++mC7azP3E3pu-3<+D+{7e&NPv(8 z1uc>a*P>E|%C(4G8`Ro>UzDm%d=ODkqtF(tQm(gZP^>}FqSeP>E!_8=`OWO?CIQqx z?$hV#c`|u_@A>@AIcLtyp81_QZQBmemi3!$f2*K9Yvtq%U9@R!cFS>Z; zvi^x*-t@mo_l|ot_m;n(TV>*-FLRt{jN%L?-uUYA~08Db8k>Rv2hE-xPObl ze2vXtpn75>7lr}q1r}*+QG@EasG*TzfF^;(-&N1=k&ZS-^*Av8DSMQ~Q#}t~ch@s5 zj=39N@eLe5DfKbyyZfszx~uYP*QskhX}*2nWt%?Qn^^wbu}$e6KlpWYv2khVrhPR$ zzsoUV@~gM~{^I<=@QW|J^2z~kOm1nu{e!Jvo%hYFuU=GkYjXRnT}QrN+fRn)X;0tSGS$nm+QA_y;#CpBMO-HvHk`dhf(*2Dbh7FWJX-AARx{?;Kq2xZ^*g z)4%gn#-@9#ZhmgBv$60=o6~;YU%xK7WAm*K4SMj?zZRAKX~Wo`-#>AD>5HwI&rL~u z_~g;&J;mFT@3tpClGHh0pD)YjOiHa8x9cj)KtpWgcDAn#V!qz`Y}b@5SUaB zj|b8wdYFceFJSo0_{V{mBk>;7(D4@_{*oWZKito}tr|L7fWzRw4oF+#Iw0)XymK^k z)Bw)`uhh`t1~Q%vm;mgCva~(!02D1DbAk$T9SWzxKC_Ed; z{1e1KUi`;l^B?9HFW4W5%g@VAfq;%&WX^o2XjqXhJVp30AZ?;|LrL01uN15U(!Ui- zv)q+H=F_ZU#a2{0Z0)>{Yv|Yx!f@_~0j$_6{Bhy?aDkx-+sYE1WjXEN_Q!-3D6M z58phE(C6piLvc(&d(rh}13eDyKzFt_&>K+)bhw7p{Etiiec3=ij&`H_m#~3`Rcs$N z&shXSS)%o}OdRO1EdG<=AW)DR%g2 z!S|=5g6@ELMh5u;GBiSfs31 zrPKdQVH%U84Kxqk`)uu?^(>_COq(W8f5`t{iUE9^ocw=?Jrb6pQSBNz_Dy5XWv33llV z=g(irB_67a&TprjmwrBsB&V##? zSUETNG5l$F3%i0nNy{t`z}}^u=_Wx(*dG?1i#=NB4cU8Uof}P9y4I1=}bFYtXee zia{Rcc3^&Nix%XgrjO-*(@v}nmO3=)qwf3d8qemRai+1#dMMnny z@*?yNf1#peo`CHz)3dJhdKz7WH61RbccC7TAJ?;wQR0rqVt-)Eedx#V$G#XREZp1o zH~rU6jj^(-rkm2l-07Wkj>Ts}cD& z($@W)MRTmsi+-5n?7|!;{gU_%1B4#|?}zX9w5*6h9ckkV{VB&Siw)rVDpJ?T{5bbd zhg{lRGvl%@D{);@-(K~b8a}UAc}~ca`B<<&mHI9N`%Yjz1pKtIVl(p8WvqKyguK;# z#d^&fbL4uRZDrm#ha<>8Zb;!gt&G?J#;_vwy%)<#V>wt~0G+p}LyL0||Z0vBh(|!7S1)P`ahxS|zKlVetuGmKUe(lPL z<~MkLdKhJ#pZ&BtB!pe!2FSO30HY0qWd@w&t{ zL%mvJM|AVrq0FNzcKNm)u`|2zt9B2=S|FcfxaHjqEh`ebnXU_b%y8wij{XYo>^<`6 zEB%fY<=w3~HsfApiF<8BN33Pf7{zk5n);#~UaR!qj5u3xVC~Ht)8qDR!2Rbgj%%Aa z_Te1WcMCY*-Fmw)9j{U7_CI}HqZrrwygr8F-iNkt*)_9G8-I{rjOqIlxc|P0vO5R! zor4eW97;Eza`iX8BMaL*wLYwkZ{{&{5bkfhkMdCWd&m2{Q+Pkb{!5!C)*@HLc;0xAr=BCy@qH1wx&{LGT60-jaPOKLGw3L7cz%L(|GXvg9i+_`EG#Z8 z$ydJ|&}dt*u&MS6+f8%p>TFF_^J;C43+LC`@SI#bc90Sg)s|?tB{kMIg{tbR8s^(3 z+h#*%#D)o1^xX0~Dru^kbTX6F)Yerk<%2sNlSV~Nvn9=`YN)}lzv_9tmtsqrJA1*x zhT575gD?a4CK`jy2-H8i=gDt2A`fiT@lR{=79BI=nzUA}8kpS#CBEQ)tOu zm@H(uhk@|&c53M805bk|AmgtFGTtgJ+`CdkM;(yyDuIkQ4#;>mE!;a&Lq~rg<8|W) z1mj`MP~+_evfP~-Ivxiy-XlQ9TM49|xj^PS1&Ai{W^3q368~{P)`Lw$$8r4FVf$w>B> zZ}6Z6toTC1y5qus3}m^J1ovSO!aQQ~P9XKzuA$>;AhPmq)zGm9$a%_UAmi5q8NW_L z#~dKz*J$Y2i$Mgx`I5_lD9X!$8R+nde>M zGye{s1%J*{>c2B9gl|Qo(ftAk<3ECf?nWF|RG9v|Pu*7>JXYeX`-+2KF1&>0foBT$ z2)|1B!^{tUlh7IHrbzf)2~QKgPB?z=sQEoAyi&NX&sOBYc}zaw(47Yyii+JS@j3m- z@LZfT-7*~HEhKR7;2_tXOL(WmXAr{=OPpQcrs&G4D84<4XGHO@qWD`;Jp2g&ZMFmR zjWX!=2r-6ZB?OUU`NCN>RZDxsYpkuCrOqfSp{5&UmeLrbHLlIM^+;*lBk+lYxwGd~ zEvTuhZBVd9dE?U1{KmT4TI^h|Zy0XeTQFr1YHX^io)@Z~GcUw1-l(Y;Q~~wKa&Cqe z;r++WX=g9Souo%1^#)d3qfhu{=|ZM1Waxrv3Q;B%`77VV{Jnt zzV2h1EmV}==BLxN{*Mj)>U`5^HV>T_{@)Kzd;i88H>F6A8LJJn-1Th%sm$W%d z>p`Jei|cUBheGpf=U3M+<#2Gi=zY)Q>ofCwm( z`5)OwxW2CUZVVXgr+ojOG$8VNZ-ze)R`*W?0pH5?Hs8zNWc(e~#W_3tc3Y*ucJUT% z?hVgo@tjAcpGD^JP(|9@fgV3bd75bzq&z`PanPl412o@eFYwW zsJPVa3AyrIM)U~(X?eZ-2mR6hKBwD_`J#}o$Q8)yE3mW#%9gl8S9|=WfxaTCfoe3b zr{uJej6lDqxRmwaccq6k{R3r%K~J~{kINTw`$7SrJtx&~4|z(Qd0vm($iWmLH8uSV z5i&AQA0aLK3^`<^+E1SYlq@=vl4ppJk=b{IJRd$3*S7|FzSEvTo)2~reW!Mn`Db`i zGcxQsz1DI`VIUYP^`VQJD&HM&hTNW@$B#KjgcpXpW07ZO$W!hraF*nILcTyzk31tH zxC_oAlE-yc(frWqj0G}MbYJSB(HSFY8l7b{L_SlY%rA7d@p>!PR}}I&{Q(a$LG1@U zC2sSz;`f*OLxG^*qYCb_;^LV`TjqO8e17xrGc6D*EH#3WG0Ss$gP}l~&sXXXnu1&b zduWC|Bibj`ZukT|-f6HD2!vAw0$$|C!{ZNziamjVGv9RKGuTt&^3U`IL%{-1NvPNv z?ptc0oE-uJ=zkm{{GQ0{ry>75r>iIwa0Oe1;Te4 zBZEAr8`U53;>|*24F}L{sGtxo{31^NPi&;ciS^lOwl;Z zh7$z}oc2h{PsK)r({9q_!Qst`iy_*tw6v%&+Ecr3qhor_9i4+fz&|4@4j*B|WooY+ zO&}TY*b}Ex?w$P@VqF8o{G4?aunE`;#5@ z2Z69(uP;|fs=vdz{`O?U^1`( zI0={wybPEPoCr(-P5>qWlYlnhcwhqXQs6Kk=Hjdt;5eWHOaykL-(Lbe4jc>Y0@{F` zz%jssKupnD_W?%%JAfmBJArtYW^DuFeWrCQa0IXwm;h`6UI<(d{14z7Ag27RtAO#q zX5jh2B|yxxS?htrfpdVvfR(_Zz;Yno=URQhA;1D4u1#w$a4;|%I0%>mi~}YCEkGL( zb8^-MAf_m-$dm7Xtq9}01Z1hsgIa%0g1XQhMb4SGh{q^~n>fl;*G=g2pbs)UR#EN; z(!~pZO!%D$WB5zL&k_E%@Sh=XhJP-c?_tOXL0P&7pb+_Z;g<;a3g3)43|}Ptd?5MV z!tX%71GOlPk5*3^NsM?!bhO<(tV19`b`v$ zdxpxhg}*2I1ca9fuNA&W^tnm6Q}`XiJ47G-eSfL&mnHmw=+h;Y9u=V!vRgg+{Lhv@UXaF6gm2;VFE92FiA9>)t4?rj{@Z<6pT z;rI@;>h_2}vxGZ^-zxlfqR%Gb$-=h_e_Hf;OZb(-KNtRz=#zj!iVn7^TKfs#2S4gp zARPBdmCq3VqUcjAJWKe^!k-X*?h&3SyhZpH(dRe9@%?5s|J}mdM4vwkhfS^;{-N+! zM4vB(CdaEs_S2sdB4TScES!oLuG?80vl?h^i2DZfnkeBrb7^iuv3 z;kO9COL#xwj|jg5I#A!|h5udjIUszl@MFT?6MY8oh7VUJe6;X;h3ofkJiA1^6UVa% zAC1D!cv~!1BrslSYN(!XvUJhkbXU)*g^`QAT-I$)a&mMj+mNyhDbtWL3@P1^(hMop zknHxb7?x5DF)U;o1shV9A!Qm;h9RXJQko&98j{@}7Q<4CAsRxCVS$rvNLhxIX-FA{ zlx|3AhLmbZc6(S1ODTqE2swtuPqrat8B(SpWf)SrA*C5osv+6!VKFSF7@{HM7#2p^ zhLmMUnTC{MNa==@W=N@qWXII17$}*f6vNXHatw>6Y(vU2q)bD~Fr;)tN;9NXL$ce$ zVpvKsL_^3)(-q7%q%1?qG^7keN;jl5L$aqDVpy`<4NsGlVt7Vvd6Q!-{LD6_EJMmP zqzpq!H>5N}vZoqiSh9x~m71iKaLh;xl^kQuX|^F{8B(SpWf)SrA*C6T9h2y~ahf67 z?IuwVwx@(WWi_QF%t_JXWE)bJA!Qm;h9RXJQko&zQw=dJ+3kj>SxV`19cN#5IcYiB z#yZX=O|@0JEzb9~!_nvrI!E;_RJ$l&ToZe1O z&u1Ld!ZpkDtHyfT&2Sy(g2pC2xW~Fn+R4-HRR6<1H!45zHsA-4v|FI|V9#^mZ{xjq z&cp9?WeV>9Zk!_@V|_U2DD&V?GyFE!>;r+{#zorNHT(HpQL~+$zAmaWHfk-O$<|J{ z$;*Xp4jxb94I&R1MnMJP;z`73ZU5oX6_#K;i z6#nxTj}9Ee9xdvgB+%n=>_>7}Ol}VLooJsPXB~VDYp2X%cOq=MV_0B%751=4oC$G* z5l8kkk@R;UPT|T&OLG+A=ZkGNBv=~+xz%d-3M6P!f$zXa(&Aftexb(FhEQH+#Cz^v{c1R zRQ)aBV?{m}a!kxbe3!aijXO+B6BD1CGj__bKvJbeOOs$qGg8uU-BiA|?rGCN)aNU| z^(STB({KuFqVSE{_ET6h)rD^>kNJtR=r*iB>`KJ?G#nF_4G1I+w@jyub#;UB?b~*) zg`GY?IqxXy7<V&l{T8Y98+G0ocGUHUGEyz_E7Ao?uS>5>^_{RocIve%jVdM?#{uv+a|;)ck-Lc`2F&9SAVVx9^Ez< z=h?ceq77?-w7tm@7vs-oap=eIV?Uo37uK33YIcSE?(!zYeINV-TyGrbPG#YGV*kuS z{~wFJt@@$=XEnFuTjM9tUf7!_H-~)lifg;c2Xicm89Y5Qj)FMS?~vao=yxoeWAY}H z--5I(i+YT;Vb5`#7r#NN$~eDG&>8anO*n6kvwuW-%wMZ^lC5$+n=uYj*B*Kz&+ntB zQ76zxuM=JO9nhP4Vw}R5JX*akoYgtt9`FXvfqn1=uC>RydfZw~ds1uP|HOTyeG^_? zz&0Ff1`DuWuwQt+pex*GT6Zb?afikFcWu2jZp#sC1zS+Y3$D>^>~ot}j8yCTg%zXQ zT31}x#&2RykHgwY=um+5zx3nyz_>?Zm9@4Qh5cX+jCKzEi-u(8^ZU zZb4feyJ@e5$$>%q@oCkHiT5<;5(cSj9Uwx98b@go*txnecA4emizLQr1 z@h+yWS;LAYKumKbb8Z{&Y?5n$`14k3=$In@*+4u?d($;^B#1u-aXuq@hiT||6Or(| z=G~{Ey2cWZo5@du<5@I$JrM7NlAC~-#_`r`=$HeVTM;JYRLw*jtQb*`&F1-KL(ocnqc z^-1?b9ON|;uFj1j{Yw&lDa!+YUAQ{e2mXfe$r7%Yhw&sL|BsMA*MDrqdC{H1p>p`q zy@-Q6TV?8d(TKUT1PSL_Sh`s_)buJ-l+{4VO7+ zKL7b-XYI$@Yp=ET+RwAk*}orq=@m(m3~*MsL^!8pIMfTM=W)phe=Qk~bW)s7!IPwf z>$XS+AK@ADme;h^x-Ls9D7kn+u|51NS#)X1C5uXyEV|TgUtC;*1SPqoxOmB;MTlEk zvOvMEPO7S!f87mNIV)D!ue)aLx(X-gN&`mvFG+!HNt(*x0uHa_u#UsKIo!wLbAam? zO45IF_%VlHaVS9$O3&c1ki*M3T*Kil9B$+AVZhdMNqUCEH#q!^!~f+l8`>khbC98T ziC#)GDX@sc#YjJRg(O|i;g2{xz@d}l{gA_d;qXxoU*zxvha(*3n3Zxa<*<&!yE)v$ z;jQqa0?V zwUT}ob9gm}EgY@{9s7?Z={_Ew&Fk|C9)5+x&o~_Bu!xs$O;PC2;cyj)E)E~!@Cb+h z$>BdZOiNYr=W)1T6qLCp5J-#7Sts zC3Zqv{kSsP>pQACTy6F3u9n8SaIR)V*VNY5w+b03ZbL(J6jp6Zb8~%d6xznN`ua#> z4b2TvIBoT{w@2boOjSoiQ+>a%UG-Iw%!cD{5w#VLj+7)EkD|l8L_}9L)oiJ%Z|-PosBe#lGEQtpp`q1P-`2jl zp@X<=X{u@vlphnJ9fdRtwI7YNxxK!(AqAjl}JDpRkZ?EG#}CF%{5Iz z{l}uv-hdXdsj8+iirL17_K2dQ6y~aFu4{MIY^txSZES!_tJ*upRccGirUsP6#V zicnHw)VGolqh^%^)<~l5QlNXo<-W=`zixa?rfz|s=gULX>{L3%Ejo=+JezF2AB0)SnJqSe`kAD?S_~L9mrl^2h!+E(A?^4 zBZf(hkBv2rjT>sl_bDhp+$+WI#)-$q`deyh?}RFv>u-St*L1|LJ{l@Ew$dCrH-4bjG<7~1BhpcMFzDL)=#h)H`4}>*=}H$CtHnfN#MXt{RmE&`?ajgzP1BFoX~*EIqiu6@ zZA}O4(G}a)QNJ;}KlGS&^&4w8H+IAj1&QMa0;*#qj2{TyaV}YSA&wA)GdTP8CkOqphYjdagqwH3(vU+Eh1wMmOHR z6f7mj_))&46`g3qU3>=DzBy`WV$%~=3k@3^sHH?o$dkb^^rF-?#^vZ4uY$D^thKwM zdmd$0s&I$K9Yr42U(;4E^!Q56M`5AkeA~C239UlWDpov7>ger`p^=&bd zV|Mx=b~~C@!!0gM7h9TI8|%@nL}ykNcW*Zf=VzS;3r;Yqeh<-=(Q3<84k&VM0XnM(f&^@sYJPjkPqMqQ8Y@ zk56~Cw0DeO>5!6K=ze0(CV67)`6N$_Jx=q)aU(Uw$Lw1ufuWkn z+#0p=V`CKt=q4nKYkD#WrH>aXw7sLIV{_D)5o2k{d-_+h_W-N0ts*xG(KcC};ecVDug7`xu|t4?BDJM&u@o%e?SF^26ow)u|jV+mVH zl7~EYiMFYwO8OV$_ZIfFXy5q_Ky14*M|tU2Rn<|yr9<&6;dK@3*M-C6GxPjJ{vh_9 z#wgM#brPUoRn>;}cE!uX&eCnubVm@qXYrk3WDMes|7(c?B0=E|r7P0`h z=SY$a#<9IBt%0K-$wrQJOYurhcw+oy&=KWUQMUCu27hy#$0zCTbV{=1wp8nSTUW|2 z=zjIgH)(hOF<_A$KFR7BeCQtFq>efN6p*~+9D`ds5M$ixEOZsR9@?8CTf35XC+&GR zP$;Lkw^zIynBvXslk6$oiLM=Gsoa;?u%pb<=NNRhBCoW?Y3-I=+sdSq4lhcvOZlmX zEl($$vnKv~K#~*ppA6V#lWbXG>OL9B@)-Bjt~eR6dEZ6p?*@!=$p3iAayUUwa7#so zuGCK*zK|`Uds|uJCz3t&a8iE4{$yuPYeJ81LAuk@ntCXu+uD;1nnki6G}Bk)thf^N zEHdcH(m-0kF?gg};YxBzu7|pJlCtH=fV$@-xP5D7LT~5Gy)WpY*L3LBDub2>Ql~lw7u2C#u1UvW zVLd{oyPfk~^IY=7X>w{;%5E!4o9lTOyr-eW){4Zvq|r2#o7k|8Y1Fqy;XRdWbeT8F zZTsf^Yoz|gif;29gSNH6(ck5?J$*7T7kn0hvm)=~e@{)d$WvBW_9t{rU6F9WygPq| z`4Q=1(lKO2sa9{u|MxN5;k2GqNVo_&i#;aUw!#SfD^{>tVOk_TIR@)EC!|H0Ycc)q zUTE>{v4Iy1kiQV}+aSNy108s!LdRh7_rfwe2J^2+$b64;iED}L7yG8mxn0wC=RgB> zsP}5{bCW!2?{w(lU|H6~q=)H(9?m)xJ>+sd)Si;^ptfnfjVg8CU2%(39DGm_2=M~ajKIFChbXvy(V`n+zyTs7c)5*6KQO{Cy8mRNYhrx|Hsiu-4^F0 znP{B0E0Ro1<7A*3aveZBNo3Rt1!}#VTDE%%s7hOA7A2ol{r^&A`b70xWW9I3-6Dt1 zSlpzy>>m92R zEE!Qf%STz@P3u{HKM5h;vvfUdlhe9Vcc-9T6@!zxvW@jDNvvnF2`$Ra;EJ7=r>rH@+W=%## zBf$1b1CD@$jRcOt=XD}=6R4Z^Q;&l&K%o9u4C<-ptf>Z+pw~)JdU>S;>ghcaXk+{# zO?GijX0Sf$j-b*<o zDw6t4-q0DOoC_7(j#(fesDc%$l<-_?A0@}4m{;dJ*P`eVQpZM)-IJk@$|^F!#O=uQLojg*PA?6 zXgpcd_*`zcwLy$ivaMTJlHQdir-NUI@5#;#z{I|Ew{B^Kg#BG!gFREuM5@R4Q-+lq zg_YU;wnP$!NW%VhuVhDGoR{Se`FlpBqJ{mWk&91~tUs?lpR8i<74qK|B~K#cA!}Af zI6IeTWQ61iF>UJ4Tf)hJ({uEkj`iJt!boz>*{>>g|5h{Ly@Q>J#dpSQDI)?@wqu+n3_-Lws}Dq%L{D_jRj z)IQ6XEzAs72CO%w%eJnx-Kl74i_p?&G@I*%J}@Ur+Dq*$U1(=krJeacbSS#9@pg6x z+L2_Z)V4l{(%bl2N`ZsEEajV>waOf4uE&a+qj^_E&*oL@VR^Jx#|9Kem(-MczR)%sg2g^8Q-5>HhhBFR}d1KA0q=6Fji60j$GNgBh`_f`? zc-(5x=9)D7q}eRlk2J6&V0HHe7U`_=jx!G5dptkY#PRq()H5JEI35- z+h@K>L9a(M{)5X=nl;EQm8{j_d+0L62=jmF{&cdO)Rnl~g1X4XEZhudLfKZ2$t@3I zeNl8tpW;g@n%7UWb5pmuXJ?MC#Moto?)4v2oDro-1=d66Zevf#|GOdUVJY9pX70&7 zNziGbmsSCKv_&1-VjG*Y)4Wu|$g+6YgtlQuYb0orUx%E3wJUleId^f3OS!ufGCnXw zJ^NJw$Lp&QHo!!xA^ zN3t;Y_(}r57`wxI9p3^%{tJgf=qb}+7isbuvVWe7?4kg6VdyXHy*Xg~Db1el4$NvV znr+9^vCVDG^>y}Hb@rlp#am_-FWNFYNvhk7^C-=?*e{&bexbc+)@D1~g-3$jKC3-R zBCKV0$v&%i!4^c>CD2+woBrQ0Te`ibadW-BWuuz8&W?wQ?X&F-?aPuRP$(`2qP<{N z9fA@L%FMe=YG_8LhC2J2EA4oWL7OBfqkUGpgo7-b8|&DaFkfwNVIDNOk&d=DJazX^CmKH@GA@F_fnryoRmF2Y$tI)#mJRPNbiu6N*l1;T$# z4wp;ekKm}>Bf$G9{gM(p!L^ia0ayDNOhj{%ex-BJGKNi1f3tp3_OvVG2_^g`Yq=={?&d z9eWDlN0F}91BLhU^g^V&5tfB?3f~S#`l#l3>w#B?xSIq#3a^JFITrvD-)7+d2<0{b zKM8Sq;8U3RqVOO#wg~U{iPDRABmQaNy@$9r6Q#oxCOiteIo@T!t3{MsC*L*W59;`Ih`SMZs$Eg|YL1r!yi(+!nJgWf zfw*koQJCma810$$dxJR3O8oW#68*gfh2O`J&y6_Q5ayS{8{nwFyaJH&6#`PeFZ9xj z`JlhRDjoY08^@pPrNb1a@+ka1(y2bqBK<>z-$S}uKNQ}Fbh5kr6zNzG!n={K+98E^ z@bqG&??QOHkWS%S;i!JralAU=(qRe{ z-xU5m(uq$W(%(b)O{A-QQ+O}ZiO<4R=nG*P=_=n8zK^FbK>7m+-z%h3n9kG_->DoA z)fsq47oGb3pN5 z!cPLE!QZUZ0rS%t^Y0Kn#J>eQKhFIb=vU5gKVEH+^0~hmG``R2AWC`=4ng+&2|TL* zs1UzN@H+*Z{X+bI3x0Y8q|(7756vHbNGTpVR?ZgJH{rowY=nptPh!r9!^c||7hhTh zS~$Y75syo&a5NF;q3}d_Qx!eRl_Cy0(}Tn+JPdBCZM~CFD0F*!Gdl&119eJ7WH{D& z>4-zlcr?$Li!DS`ykpPo%(W<0V?%R2PKn^iSu>tKD=F-`vl1Z+cFX1(@qxUG8*yk_ zi4;yzL++Nk_J)OMBlyLApC-=p#YM$S`0F>-Np$AA9jBb@JKFhEM)XTDo--~bW3VfB z;DI;RuNC9*I^Yq6=`sg1XTNXrobgtkpNe_|bApwWGvYbp#LxE{ksn<;Hn5fFc9fld zXvf-b7JRXu@6p8KLZqEQhxj!Zz%)&JzDF{Uqc|i>)E?sff?d_)>`vb!4Q#`c7^z6#hdo634zJ}L>Rtt9c4Fe$qJw-F`zG6klUmCKwt@5NO{g|14Qo5q!6PSKdyCy?+ zUBAwrEGHjHdU~=u8+!`5nx>}8Elg9HauRee*%N_X)0YTMB|=k)OjD*1o|aTk5j2%4 zU+KMOFm#*Io^?c5khN#Z{%J10qrN+51wFS^_x8?=(atR84f#)vLCetHYOg`Q$V+i3 zqal%L`U3&)UEozPJiR>GI|)0m>HSH03XN9}E8X{P))NUbZf_D??II5Y!0i#Aw>4fU~ZY&tYNRi5M3+4TjJ4?B*e zoclg&G4HKN!_E-3mQ=JB+FMWAy#XzzSWbooEghq>=}9!&$BH!mJeqd1!q4w67$Xf} z|Nj%<4jd1Fv%Xb6srA1GL#;FAgQ$Jt>;U8J=03+EU0zlf@iw_95!@w$I}@a#c13tQ zypxaE4|V3zj{nKP7WrdVR)^;u2Div>2c+W3UGxOig4`D5{_CiOJ!L(fV?GktCWZWe z8l3@IrJ~GFRSTK{>q)@#n1uaiSdSUjqdp&d3wf#JQj~n9*Uoe{xkq`1AM(G*Q!9|V zoYj9WtaowWBLSUGUo@rPXm=dW?8-rD)7POgnet4x!*@jqECu_$c!KV#?&&Ji%f^1ayQcT$ zFQgRO6RI7h)_-rW0lk5QI>Y|nD82A$L|-Y{b#jt7;PC(FeF~c7H?vOuW)P%4B^{5{;%SN{m`>NEwEo>JslV z8Mp>CY)JDU#)y`s+OJ7Ap;s?Mv!Zn4R2=DZy1y;z>#HE;LaJr{!;*dofLUfwAc z%eO+ao%xA}&9G22e@eY4m4a zlMy}IB%N#t`A>|{tb(lSy#S^)vH@}^Gmmwc3t`RBR0&uBXa>aGrHS@K2%hEeLqN<| z>fZvy`lo3h54Z93b%1$@&jO@1ZxSHwiG7Gk)eOL`fJEzy=4mT;_ya5qEGt-6u$(J)_ytIE1>xv*5JoxAP#$F zhbfHT;}o{Q(V7x_Yz#gCI0@lKK&+#h9DuU`ivgzr`mlzd4EPEl@!bn(M|c+?$+->? z=f9e0t)B}xfHgLi*MU8-uQ55q`d%xa!gx=YrQe72(+Gbeq*M4P9FBrDJpf4cbPwQk zzzsZnJs|PBjECm~<|FI_bHq2jPmXzL(_MhX-xYxPtDld5g$QQ@68$kKgy??>Nbb*zN%)U*{3l>ni@E=Hlr@d}X)oz6N3NGg8y0p|2IN>o#4M;z#&~CiTz#|{4WUpEkfQ)h4@bd|0cmt`zR{S z(?Yx~_~!}!KEZDi^0o`{Hw*FM6)mm!=;ZeJnD84nSjW?%5GUm&dLKgbs|)COZ}0MB z(R?F7Syx7ugJ&tq+q~`djqI)7s;c_7wie;cInh?%rA65_b#-{-l(qxtd~i6_?%Lc@ zhm*__7TI{80FZ>DBgVk2ZSKHsfw;_8_789hxw(d=i2DYjRCK60_WQk*!e9F(7Vn^^ zKxza#^(*0>NxVNORZ%jI<f91D#(Z5t zf^6&+cy$^B+`C;V^2Z-Uou+v#osVEtH2!yjSM3kgdbN6dFZD^8> zZ1rK1B|wu~oew|Av}Bc&yONleu0*L=Q*|YDS#i3-&_$u&Y2? zO2!)8#I$5)S~8rZu%&vYHyK(mF)f&w7VM;j{!A~;aE&-2f!QveM;kw3KFo*{;EZro z2PXL~tXQbDIsFDV?SZ6-LXzC*rBfGEygK_{>|XfBurfeiMMp{U&0fh) zXDtlgBP@+16c~4QTXd*b%EI8WXy}-r~F+1dO4+!xY#9y{BI&&u{M)?dvVDB z%9sv&56Rt$&D+Xmqn60G3UkC?0}p!%sHa_$l2_$q3TB&l9sgWwjos)MKUWU@6o>)Ojp% zs)G(P`ml~cTOqw74iaNcHzsijzXxB)zjo}4Gs;|cJ^Bo^&8D>+Rsv$Xyy+b@a}PV)?!M{We9d0{ai;n5riTYpVfK=cny1Ly^aULPRk z{|zAJa{y94%zaroK|q@4BmBgp(;fwx2OQ<#2K zmg>)fNA=^mh~_^n;MfKK8-o9!;QvhUheu+qcgLGO%1b;EU&Ijh;m5r(&AwLjL7;T?Nn*o?WKj=cm)vMcqvORZ=`iNEc| zKmpz=7?wJ2Vkl$3Z!>N#MPABJ+5}bHL~-EqztT`ez%S0!+r}h+U_sOy$+w5pVQ=H0vma0e@@5F`blm*_E;o$QL!Zd6C)?>WEe0~D3VHf4&R## zPy)_hV$QQ$@1{|dc6_E{9zZ*FI8EJ0qs1zhzK5Oyq+_mxd4w|BVzy+$u2oU7PW}S4 zY3@W^DPxT?3wt(1($W~!T4C-l9jvyYG-wulfGY=PTEtIeo?}8D;zq%xS($?SV;cV& zN@p0L`P2`vgXuOFrSuU@z-~3cgXa=;`q}0WEMDwJ%L!g1{u{k|{MUKII#B4mHbW0O zW=7}WIScX`KBE20NZfmSAwz>{si8;}qGSav^*CR>AaF0p&&KyCwLbxKhO%ldQ zz$`dgfBp*a7jXB({S@wQxOTWZ;NFmMwgB!T_%DWg6#kWN1h5OR3vfT&&*7eiJ0juy z2;e1fzlMJ?pbRJj?t|-rI|8=|?q`xDg#aG`d<5{jfQ#W4z&{5r4Q@W%1#l*~$Kiei zhd*gM+=KAk3AYn&Gu#0Q4sbc(#c(C?&xT8dn+G=w&Ior9?k>2OBuOfT+Xep?xE*jE za7hyS3qS+hGw}Zw?qRq+2zSFBh5t8jd*OB??1tL||6#aa!v8D42jPAO|HE*H;SM4E zB;d1vyWk#ze=po2xSt}N0GJN95bhy_O>jmyE5drX-S9sEHwi8g&g{XO3GO>^%iu1B zdqKikB)EBS-+|M^>EMz*fN(Fu|2w$(aL3?!;pW28FVTZ%r|4tVa;a&QM+gc9+j(>Ez(ly%>~{*;MvZD z_YCk}0UqgUqH=!)yg#1@kMw*Lc=}wl!Sm327I+2c!6SNYz*_;ltSEZX_0bNzcHmJP z74;I0cOUQ$0&hC-CX)Al;JpjHnZOh2iMmFTWC7kV@Mgh3ksTxe&yGUpOn^uEGl5qM zJk|cx@}lL)0$v^PqIrwPyAXKyb9yANN>7A{X8q+ez*Fr{OjrGcSLBhT4|us$wwfkF z!Yc;e5b#v{6Vp{c;oT0rnKQ!mtENTEaR>0O0G?XE@$eo1-e%yTXjZ=}o(Pe|#*Tx) zQ|nhuSN(*S;gO_208g!7H7%My>a+d{Jhgsf;ZglQ2A7ILRlSgntGFse6dSu108g!t zczCw}_j=%wy-@we!`p&z*Fs6#Y1#N{XT;5 zt-w?5RJ3=s?kLXzxCelz+G#wz<-j`vJk?I);e8i)zXzUbr}6ME2HsgtkMyVF!5bmR zVuTa&!~JADyhl8ka{^DbQx#8@RkhQ{f%o0>;E_%b0B=3;)NwE#y@SBJ?L2ry?NL6kNRB$Tr51oA-mhp@#4ur@u?on9f3#q6s9?*NSFNdOY=Z~ zz#}`I2yZs<0-PT88!A1bqdIum9DRCWxE;mAo8ytBGT>3UJmye+`n z1w7TRR6JFW#3TLg^kA+JJhCgX+-SUA!1Dr6?XOgNs;nx#2Z5J_%2n+k9$pIY76A`` z6YALtyzc{v?7#@8(i8ckcq8yO1JA_qk^qS(5f4GhmNfr`B&g zydA(h20XQXRXkNzg7n+zk))HrQ|mV#o&k7?7l!Ls#f#=o54`!nn*-WZkFoG5{t(>N zz*F^XLRjQY4`EEy~DuEI}e^7cuxXvIq=kRD;~W=!28~L@Q5C* z?OTDT+Mh}CUX4%kcfozh=}m<9uO93XK`H9INu?*sO!S@x-kkH`k-a?;yMRYR zsP-2R?`J@p4ZK-^6Y2ROq+ba<6df0j@?YYSBp2{hd$Aync#D>IDexWwo@y`g@D>B_ zc}|b$$HQ9!ygzb!6XEp$Zy0!LeZ-@;A9%CohU+69-Xh?w0iLSAcz6qe*8x0Lf3fh0 z@1t;gfTy-!(vMiT=aK8nf+J58V{RViS0#B_E6)(Czeha)1@YMQ;<0M zKH}m5H*tQrepS3^{p|+cMZi<*Hx?f0fqs?1JKt|}^QLAxm9=j5b@M99os|{z|GLt7 z-(R(^a$af0b@NIVES*ojNRL)qM52&+d`_0gZD4#Z z&2}P^SZT5H@C0r%TAqj+i6^FpB(OV9Rt+hxz#4`?CQ@n*gJ?wA$9R^BOq6YCNE6$I z+8JHtTpY=Onjj82k=<0ZbTk8s#E6z|Jcd9+Rby4xH63P-soAC@q=_!&@gxaHw zAP(kv3yz>Up&S|}(VURan3WpIV9W{x%K0V@(Q{ZqK4u}Tl=yUjJ|S8x1w>I3N{pz= z7-+GSB%o;ujb~@EaKATZk%mij&%WmzYuIkHaBBqKY4f6GJ28aAGKA9F9PTsdXHJKx6_0 zUa7HjYsN4xnb&)4!aPx!ENYt6YD!=qjE<+HAqrxs#u34dhDa1Asvr%KC{9#MF%2c6 z%xGglrxD9sVvK81MioQ2iD@xK#Xu1V#X`|!kD>M`Y8t9QQdN8uYD`5%;Y6#7rc0VN z#A#RKaAMThIGh-gjl+o{(l{J}4%6f~1cAtS1WkJa8Dy9MQ6Q(PIiko2ic$6*8<8kR z*>?nD%xa6k5G#%L=C)&l4}bM|clAX&^IknwI_5$|HNK@qVf-Ga@EVS%zW*{v-@3v^ z-1(h*_{2Qv*b#)EKstr-dz`}9 ze|?eOC+J1G8(}<8IZR>v9;fgIIO6*E%j&rz|!$uCB9OiQPH4KW?KZj3pxRt|o9M0v?$l+&+O1|eg+{IxXhs!z4;_yp6 zc%gFM;P3#49UQLau#iK#U!CwzaCnr%?Hu03;UW&L9MU^Bl-Pgwlt=!6K5-WMdem%~O5ogC8p#FYLu`V4~a zaQGyLTRB|E;am{Md!8rqe*Hfj~l>z#wons6QnX#~+NXwOP1`P;mA z_@^Hz`C*3A_7=Q9ggyxmQ#NFWyZn`d$~VU>@>lo;NJ_;xAy)JGPCdIncWuoExfNTx%vX{NILdz;ad*6 ztwdLp)}P?^Y?1>5I$cpB{2_m@kn0(|pGO>8i!2PUFR;TxUoA`rx0ThDl3rw#CEw;w zWA~rG&Vb@g@4ZB8A-yq`)RcpzYw?`6Jvd?V{__(J|WQQ8*x zbOSdat{p!8z#oUqax?RdjhN*IhF1@~Iu`dr&@5NMXBe0Pyc=2S^+^35^IZ$y8kU-c zyjQZgm55uxd}Z*JGOey*-}=AHiQ8bVs~Ei5uDmZuS~ajQ`K$N;%nqe72`*sy^F#Sw z9qJ@Q%e@l0FBWpEb)sifwEJ&7`1XG&T(dfSLxH}vm56r|>CU%b_EJqB$5$li9Z84p z-GYk2vr`dD970I47U26=TRa7B<^F{~;|{3;yc4<;caTl*Cw}hLa`q$VoBZv^lYw3G zWX8u${QFt2kAVjVeK)I6mIfX>UVt}4@ePIk0@#Ke_`OunZK+ZGe}KP|``^OrEJ`^! zS~*^n(=3#e&B|HN%Xx^(VPD9iayFryzQA#5x;!24oaV|(32&iZ!MjvUeQlst%^+_7_U7)nXlf|T3!=zGLR^C{? zn`F`*x3e!erj%L8`Y4;4kRj zxoIc91~Ib_ahp8NQc+HyJ)bn(*+BYzyP;tJ{!O-p8F;I9>WYm0?v?p+KECOo?;|-L z`3r^l#N(kN~%qx1z1 zszEvMxlS!Zu^ZyFpy&Nfy91x&D60pNY^^5X`ju)jD&J9ZT>*LTT`}t~tD*ryv*`?9x#LYVi zR-{>H4_k+DvmxDggnq2iyNi7rv{Sz3>?-sX(eX-q67SAZH1!c~#!3jxv#K&hj_-Q3 z2}+$jG|ws(UD-#Rt!A|SKPflXs5i;|>j>qVq2+o8xyBrdUK~Ch z`~E7m0}JbO?NNR14)CYL7khK}8_wwx(O=6st zoPoYJ9Pfz}fBA51eB(&$cyFBeYl5-y--r`Gdo(uw-Z=50IPtHuk!yK|s{ar)Syimm z@X5edjILYcb56`b(5I6fZt+IVIngWc9maQaizazPbnqh_{wcXJ-b;VFFbek*d z?Ad5R)AzrhQ-E&}ySM{l9*gM)c`4 zqWf;wt5QrVukgKYSEW!!bR+9&Y+4_UZ^I7LNH~RNg}!B4-l@p@n2S2Lo+t>Gxh&;WOTV5TC=XM43U@VZgJJ&*MghR=TB@GI=E=_-1GY zpOZKTpVw&Y01fpPHOwr#V9Bpt$|U$)kl>F)E8LZslRWq8N_S^Vc2P?opi5VDRsTx& zYtZ0p)hGw!<@4yjXMMU7-wIoanL&TxdG!0!PwK#RnO5S@QKH)NsKlkLG%qVHq(`=h*yBL{9n~y=9ab?a2p}jM6*WwFlbK^XfI~8PjK2xhX~uDVIKjuMZjLf zu=_Z69_q|6@IRv@|Hv!QCFW&bUC2LaNMc_)TZs|;wSe~&!EG4tLuXcE?t4I5*}V`m zFvGyS&;`W{>C0dr5U+Y>v(CZS*Q$DW38i1BwY=P}1+4V9c7Q!wzZg`BGpdzLK`GJF8@6j5&B2=HQ2c zAvKV_bOnA7dzlRTaquwB8`2O~)89fk;j?f$%`?_8`#N2w%J&ht`_PUMn`+Q*_7mqk%toR~{&ASoug(!^%gOxb_9!sz%y2x)IJDc)PQN>EsQj6B+|) zR%qC3eAt8=;ihzk{MQ8Z_7!<6dy4Vx=VE-NIApjO-)X*hKfV&L$K8Jce7!dvI=rp2 zYd&gm$}6NlhsNRmfWuCWLrYh8K#vhQv4OOAAYkxZbJn_g)mbY>7YZ9GJU1LRdC326 zU;w=&NjKn`$GCl7<95s+3Mp#`vL4Bo<**l*VdNR}|1Yb_-z-pd^(8pTo{bReLF||j zTTVS1$oIY*u$>}Zl^xJ8nu{@)<|Ax1;Tgl-08XqNrhiN=vr(fo07|1$SnC%to{ln} z#{9nxiB=`QtXeF-&zSyf$ zzmQSiK6(M8ej)o>kYq2Hr(=zd_OH=5*E-Q-g{8lM(RXwDOC#u~zZ^Q_bQcIR7HTq9 z$WHexo{|tKu}+4Qit?B=l2%$?ZH4bgf;7N-XBI1QuV4eCSRpH4gr=V4!{Zfh)c=?R zYen=NjTZFSo<_P|GY{)~=in0=s;=gO`sD(3eD&|OLPlK{sK2MJzlr+49$)Dus)?>K z|7#fOor7yNdJ8}=GfWS5W$P+n^SE8GGiB{O=6{Oi%GGi$jM6AsX6m_uROEgwpK-H8 zR3rpz=J^0=HxNo0N- zv|mu->>2aljPGz?fL*hd-B-AD3$CbE`rR#-G5;Feb|4v6V$Eu)u7KP-H&s?sO_6U$ zwUfoX1^sqz3R7D$mM356wSrnDQpWuA$7nQG?DPV?s{3mpb-rLnG#cBPw4JK7kkmFt zqw$x2!56mjoW3vG)ZE`k?qD@S==q$3sdvJMc8&3KD}1=~lUnr31D|g?5!g~G&2`{z z$tkbu3bXJ{ueudeUR}LnCaaaLtR&suG5=?y4xd5i^xdbGa05#CH(r9$`((W~gYmaT z;LpSJU9IK25&4cpkIJvWQ>H_8p+(;1ZxfyyJJO0A9g-JmDwzAJwh>&!INsWLK) zYeTB*@3OUFE?Kkh#0E&r_POd%a=il~J{sh*a#~qAWByH};eN^a7t&^rmeYlt*%3T{ z&Gtg4F$#?Wrq+_&!>z%HD~R8ibOjvXbg}N&g6jWqFoPm3XcQqm%8mQ<$+EX@rHdzBYx?uNE}(Z$av_rGYoL zm0~U;=}Ws;p(p>2Tt}<1Z-QeYV!Hy;|S=Vu0t_oE*$8>ZH+@1u4)<#hHbq7@$h zp8~BSftI)jIOfj_hUt7I(E0k54{KPbFR(!6={e9b3Uo3VPpdgkqa$HDg94qtQ|~c4 zy&4@4=zJ>JNd}`+$?1G7(D_=RbM({^M#rVmc^7n^7wCvPb7TG&1Ue!=J5Jrl=-4$n zpMcIDfsVLGH|FmW=nM(`)ScSE=zNr~>gNm4xmBPe?#GS!n*=%mfsW(UWsHuj(J{0; z2d@z5h`VrO{#62Nwb)9T++dP2It^^@>zR@?{qHWg&V!G^F0GG5jT3j zb83;ih|TvF0Mcy!-GCc2iN6mmz}iYzGz06|^1(;j)DrfignKpl`($x;Ip*)fN^}vQ z6)nc>Z{~5Ll8F0(2qqPk_AkP!v3YnQpW&1bIyK5iK=}%R^2xwEp7FEG$A%WV7t6lC z5LXs0@3YAJr42kXOYf5lSgq{hweph)u1@@A5$fbeLt!2~8&v6DG&p^ywRYHt5$zpM z)SME!xta0M3p%vpL1SzA;8u;stKj9Jz)K$EWjp8Pa&0$ZvHUYokXocI)}q-=KPIlH zgd$_V4tjho@T7FpUx@k)jd~xbmkHFxIUweL0`+P}eNp#JtW@*^7h`=_KKS8URniYZ zCx=@DcG=`gX9?lXx%zwL3)|;oVW|R$F8VfJMD3owQ zD`AILf+^GKJK7qSCUP!WA(Zg&>0GQ3%Li9$d8Z-olR{o`7CGj>5IY9SQ`5!r9ngfL z3q8KjPm&w(^q!!x$T6_;UdcXBp37=+QFjij^+jX2S<88mT;jf{+mSN|X%6IBhnku9 z^xQ*>dQi9WRP0n-fqiOa_GcJ)MU(H)0#$=cz~ejBVfn=Q+^GM*v5Hk|Yu4$x?gibG zQTnL=?GW8-r_}sS8m;A^)hW;tpWcr8ed1wx;Psf^>>EC+Uz?OI#a^to+WJVc`>x4FD{`Qnz}E>&H`qg z%x0g^X#W7T-&_;cf;c-H^{*8;e**Km@6})e6@#1 z{Yflm0{%Pl7xCxBqyEs?5{@?vU+rOA$*BLEF)GQ2@TmWvW4C*$^zZduh|m{!+CN{O z2i^Z=EalvRR4G3LE5VHJQU9l7;r_ETL)HEhkaN%x))4id;#`kp9QD6EMt!*L6qWE> zMmNl%4fIF-N5?Kad=aekkT(sMl#YA*M*UA9uJ%YO3y=EuBb36dY~Pq-1H*cii(YWC zR^URM_l)}Q84KIMd*0BQ+Cz)F=l4i+lI5f>ecycCu$TZ1jQVdK8}+-!=*dB%oam4KBipjBZWHWn<}DjmnFl z^0(r!w#4y%)IW#zQP_U>V)-t#gU(G-^Ksl+hWf|;1Fap)2hAF-*FkHJK+DWVohfY8 z8TA`U=3?5rT`aHj)*ex*&Fh|z8_uYYKkiY+eyX2;jB0i3d$LW{>f0z`jZgyBZPb$( zEM9h z+SiU-`*2rVzro#sryrwO|I;k!5zK7JL zNuI`LJEQ*FM{#>4#<8?Mf(aPU2%0eh5Tp@+U^2TOvD~*;E5%sg^vRl)HOiu$kNU3! z|I_$PC|5plY8vLhPhxgm**^`owR|*3odNl@_5WZ>LHS^vrlCgEipwLeaFo_FV>HK| zD?bg2+U&zOwpNur6I|sAT!|~2QNJ{*+ElLmz$qO#q&Wt0`dXk*n#P}bO=Gi?6x?)2 zT=&^@B_8}o3-ImJ%E?1HCpfR=gU7kH%Lkud4NlmOQlod;ffIo~N38v%RJNbAlv$^4 z@2LOzAS;QU@%PUo$sqMq~veZy1PzVBptvU>_*=&8oEZfgJff!Bxi#kl*_ znL=X?RzT&xfihJamEbZ}&}d{&a3}2(u%|*ec?Esa*ytG8(@7=%d{|d}68FZmqJ7ul zKkZTAxwtnOoa+a6pv=frw0y7QY^s!ndprp*iQ#n&!~Rl}z@35dm}kw< zpET;!cwG-(AF+dTHixC!uSC08?NxTc5W<-wU25imr<{*sZ&X~vghvirFau*)hWzfC zEI`sqSX*@0r+(lft}TnEt=AW*+NuTzUR#)h$o}Z`NLX8qXy2qIV;n7+ne^Wbjn~o? zrlo8-8(Jdms{E18Of1(YLk3N^S>F39*eLAF)wpZ|m&*h$Bm0e?30%?_{;6m1=BpC6 zA#a_KSA4QM>c0(7=X2#;_jG;Xrb4q6Li#Lj{2`3vGBHC(QiT9 zzIr4o_^cR zZpC-)ZFZuu$x=+XmJ(yhbT*@C8n$zcB0cJgCv0BgNTE)Fvg-*(_A+K!kY@1s8e}F=6Tna^2aW=0|_;Lud&9bm= zbiQ?^`TIZJWccRZT4;jZDEx6?3gjSOBsg|92E7~2AKo3x<1L_UFg*Uh3oah522ZSi zQ*}h|-#?$6H$YCcw#x?Z+Mw$DZ{RjO+gBtN z*C7gr%b28tr%BSww7ma7-eYS-Evb@jM{V!0ifayqPB!XFDp&X?JJx-3Zw>5wlis(k z?EEtL1L3;*-C9+GZ@|UE2rjmJqSq>;{*MDxR}V7@wrY8Ykk=NGSCpX7D()dG61)(| zXLV)bb(O&D%FOG^g1Yi@)Y;d?tl@+`U_|8H=WneGl#OlCpD^*Ks9_yWQQ!y%trm! z(K?--jwq0=r|Bu+OzkX^9Vb`qyLs>9w6xB|>DI`YeDu-BB|A!1rOIb#A`aR|{TBq3 zxPvx3R;6~j_q)L~JB{62JX4-~imW*S_m$5)qA$n?W&OalL8?=IAJxvAr*asE89LnA zNmkP7iY4dq1*-Ngg`AHUhqWi}X$Sp(rWG`o(|zjyCZpKX(%dcR|6S;OJ?$cy&)Gc5 z=xLLAPaE{_4~cCry#8MS?!)`DO4}26lgZ+O{;eU>&C*jp^^*21MGgHk4`UxyqIR== zfgNiir5Csoy+EgY@b8IIyq1)R-IJUZiTl;nQ_z2P1ZQ>ms$Rbj&R(&F^-5!axO=Q{ zb}{4Z?|43d{!h#M1LWNwkymU}JFMbNO`($b@h ziVNhUZ1om8laEt~i48&j|KJI=GNzRcYWx3#w}7YTB6!+9ZaoIgryzc zIJXJn{69|2<3wj6KetEkU6c(vwcPI`x1P@~9aux9oU2a7IgJkVR2}7m*|R{`bhmS! zYn}@`-xnZczQ?)5wZv7pFI%3pH=E6cvM>U##wxcG&gp$O;P7O#xl!uFLBD=18&Zcx zC#iMmd#epp=vnyShmiUWZG2siaedvm=TAZZDXf$y%X?2{q0P{GnINr~30kmTCP@3g z1eNu2nXvx%LcYs1?W|YZHCqD){m)^&oXywEljRMkve6^%f>om$p|!(+FCIk zJ1Av7o5uGU*vHvcNWtb5>t*p7RM5XOg62}t3{zrbhVRV{ss_FSrPl;XVxJN8*U`F} zjTw{WtW#4CL)$oeXEbK_Q2S5pkymE3)ngXMrNX?lE*sW2`T=Rgm>2Y~7?q$KqdmRb zR+8S8)@{3#(pPwu9EJT#&3RndLGL%&6Y^|b*^0H^X7(EGW+6;8KO7GFr{mOvK2^%g zX7kxKx21K_s*<%G-`8tZiN0H2?pv+3&-Jp{*983|LAAY4mY+u3A=-zAQ_ihUwRNZW zq@f2~&*nji=gfGXU+Fo8o^U;%>rL@wA1HKv-oX1j*qOy+*c#ePv~?e&Z|*4ll0wY=*g*XwJ-wkNK}g8nO6p2_ZV z-%T~Z;rmyG*uOGjaxuD#sXCrx1-cKnmmM~Pa0t&QxG~(^847R$==uX0Tt{VsrnTwP7&O(__d;ULoKWM+_P<2%)i@O&= zJpYF+veuO;TNv$(ZrZKT4V)OVU`~`Gr_esVIR*RliAGC#O83q!iF$%`O2kH~cS?Gs z-f1aMlhfSh;*9PDmjC&o1mw>^dpdygptO@v=6gS1m3S|>S}JfQ)_l-^tH9OEG#>lh zT241|P8V{X#2Yzc{VV!jHDbkEAQ_lbydKywB?ITX(y%t9w<0p-z1Rin+|=2efxY3k zoAm=}LrOU4pFg5QF52(;Q(!4>)pgmz{zh9`H`@P*l$R<)9-8<1^cq*sfUEA}u$Ci7 zOFec*l>OvPyst=+}&Okn$#$9zAjb-rkh#LH{-;<@rpR3hsqe7E&&JFmXuSw^d%`1Hi(K=`5 zAf!v^(X+R8a^>_^N*f<%m;m1}4qq!rTanRIop7ueN^mEkw>V)lp;a^tk(8F6^lH7F z%q?&ybZ(Ioy3D)j4sP08J1&vV$r=sS*tf%J7pbp}X|u$eUN=5J8yZ3n1)C8_mhmm^zB=Fn2EU0q%X&jz!&^=6Uv+D%-e zSxlo>Cxidp6I+@-frV%W@C7Sjm zqCYlpi=;Pw-R;*QI`!!@+qsdkjCEG6pNoX667Ncwgl!_A38uZ0<=Q;g1 zx{bv~`5bPZkF-y-ra^C+Qi`Xbbns}as=*>z$DWZH`3$rz;6nQ{p&f~3&FP~ugZ|n8 zPQ0cndNN=gZfP~)1g5FWfbpdh?O4HD6VTxNP<64=;uE zm{s5{z}(WojC&BmX&|YPo_!|nPI6o1WX+;6f`W!wHtkJx8>^GuQ*lb5mc2bZ;{Pm^ z46SswP_IcfQq)Iq#NWs6wWWG$t(c6_sdTVzfuehdFEg`r@Z)M#`*S1ec*Or)sLQL= zr*b#&`*`=?!ulJ6)Zb8jPG$CL48`# znk;BxB#&5AVmwg|hht+!;+TsQQJ+?<9;rU>XZ2~G4cS?Ju0VZ0`a^_ReWKR7jJr*4 z19~O3hr<29s7G@|JqE^b-!Qan{D7b%$6Tan_}L6lVyC39fQGj?R1HswXfq@JkH$*8 zW=O8f*B3Z^$r#P8{Ebp8y-{k53S+FX@_xxm{Su{%;bH@SPt%I`G!4+E0opV|>ID8o zW(Rs-`f`P7x7lsPNT|w&Tbj}PCcp;i&FloNb>NF4sGVwM{L{w$-$ACsnoPM-me@Ro zx@9^c2+QL->Cy5ZNB;10TD(ap^dlqwtH+AGCc7?A$~SUpY>+1GpDOqf4=IhT51_rx zcWepyr1^e_ZXiLYrkS7tbE8c5SLfNy|618YbFzK`0}TK$CD4WEVKNmP^u{xKS< z0i&V;pIgiSC*$+n);~jX>18gdv=2=Z4lh% z#Fh5;IMN=`@=NGBJ8bc!y`D>({r{u1$>)_exK@>R2DrURs2g#fFyapdW7q9*Eq^}p z-zUYB_Rm43ZYTdgNxKW}H}+U##yr7*QHEOZlWf-d9JAR%jju-V^^#T#b0f}+jQIBi z)x4N5+c9r*Z7Z|&p?Aip^phaPD_`LbNuNU3udT}92yG}LBqUM96NB*;5H?eq)qCsWFcb| z&W={XF)meb-fFe-SzP?uNyb{$(`=@5P`r-bk!%q*DfRDT_0_RJ)!OB#ulbrC&6UOV z@reK5@T6ND-_3YGf{*XMVvR;QG(Ws1ta)*bGUD$Zxe4RDF|QzBD!_>=K9bmJWGS}r zzSoYv*R1U);eAYfWJ+{QBIdQpSd-ItP4s7P`ihhLaUow_~-* zR-7K}*vTXQq2bI!8HXpuc>6XB_IGxe&X8nb_5J^`_AY=`R(HDhyLUneA%uX4hygbN zX`m4UA|g#Ogn)=t5viq=N`NFJkej(6TH1-0TJ)ow4N@lo%0cTehOrK5ISx3CMvk9F z$2x&>9JI&;^iygbCuW@N5OVo`&wJZz2W-!Gi7wXrto2{d`mg)tefL^%8L5BZyON9{ zf4HjtYFgIzPW{?8;mmLs>9@9-{ML3(`-b6O>CZ)zxvnPcCWpFZS6$w(WJhiv9M*4A=CntD|F;O{Zohw9?3ViC<_5mT7}$CB z9>u0KU()!mU?e9V^MgH^R)%BMmZPdM-j)PTR9+VLC`BbMqN!K{L z9wpoL=u+f8zN^=lJlD{FJa&*{R_RqPKN%-@A~_Ub?;>9R)&~z(-k}wvc5*aFO<=`r zWh`!quTQYoy?0sx`hjsL=pQ$FE?aW11qZScScxXsD^aU$0$(YoxUO0+C*~zIbo#zm z<9h?UeK{Q;t@hG#)7&{7)BUuJ>Nn@9zL-GzD=)^`yDf3`1H-rZztk8QzM1z|@%)}6 z&eqH0-r{p-!_8+9?w(5jS@JxaJJ;YIY;X@~4X|JJ8o!Q-?(S?p7z_utTRVboj>gVt zQ(G)_8FC^(9tG`p;<59_Ex7|)sDJib+BkdHNb9tCa=t%r>^zaZGWt6+>;U>#&QIC3 zWBvBEU&RqS6H90b@+L$(R$t9^;w!mg=Q&@^mEh{7oz<6I^$9k z=OV?>rKaladX) zXZ6|NeJAlHU~rtnax|+eGLDpK&p)Rl#pl`x*B=cob6n_(B z%*@j4JxGn?ls|cx9R5YC`09$At-;je6P>R!$C|?KS5C)ppKmpM2V?j$?Ox&x?_=-z z^lg4apXq+H_|GtcBs0uVhF~HfQq=!$F%N%V#Kt;Zl~FV@?Vk9i}JupLKUd{#%c7FS&k*yQX=< zFDGZ;DE_H|c1=&9WV<38d*Z#i-v07xua5jJvHr}DRcD>1UZJip?}=x>bbKp24{g_7 zbbjHM(_Z7V{0f$QgC(}Ef5XrDM9qz0a!%yb=<~CK|H}M4hi^cAcbyI_5_{)9%d*E-nB7fkrH>O>Y zg9iUvS^z8H;;zWwbbGlw(&zmyygxN~&AQYT*=q32r4P+%Ka=aF`1^$1WQ26ye<{U* zE0pruZiU|Khkk(2`Bw~WHJc^u)aM19)0fncR2-a^l<(C_&6ES%V`sv8r`giE+3Jei z)J?gk=-o!;JiD)NPxs<(|3P(*@fGo?nE6ImWVruD$H4F+JIxoSxoK|yE9&BPmRHL9 zZg&Kw%vT$B?_E_g~$c0Oqr?8H-2J)L8weFoh=M!l2Zl%dN z%IGUf5j!bwwW48-06x86F;V zZWyg5+80=o0%Q*c6JbNXNUOx$0OI+90jPrvL-zpluvOGE01hyPDTnXGZc>~928M+`H5DVEb7{r)cym(vkF z4Kgomjv8H&tNm{?hBIyi#tn0SE5`Uw`8l=d%y3t`j=|L6=-zE!zuCusu=aLl48y|@ zwd$KlN2jAx2k#ojy7Bj&snhwo#QrvjH~;o`L0R^{+0EeAeSb>fTgfcf&U43~QLV%5 zFNSzy%CGrG&%aCWk&xH-YI^^sGqf20yP~<7>Fawn`nIH^z5Tx0$xXAhJN5RdF6HLf z*5rDfRKRx@#ooSHYJ)YE{MDELytk20YC|B#C1B4QtdPF7xr#RpKW6r(8ENzSExF0` zu|c~%yw16<1DJiPrM?~rgyUMZI;$&p=BDfxG3T_x!B$pf%ucQPIOc-?Uzu_YCanmG zku@|k`>CuBS*Z~t@0u*$HT~x&iqAgVo|DX=_KBX%oAYvqImypd)nw6%rhg;gYIWfh63DC-x@aSW|~xTdhW zpBG2`I|>$rN(;-U*coCbGcy#GP?Cwgr08MNP_e$GFjP~4cR6Wy^3>JR@$Bcgs-Pfb z9Jx}s;Is&Gw3Re_cL%_~)# ze(}~;akoKDsHUV$m9ez8U%YPqR2No}@gd!g5LE*CYHM|E5!WM75R^pOs?yRchbN9g z^08!DIP?1-X85LCg;`LbJZf32nDqL0IRqEK9 zR8{z3Z6S#%$PBHntqGOWREsOhE7S+Be%K|X*C@Zy?_)z{=(=icVW^=p|_-MHL|`yxm*c`CBA~`zhcR zFN2ofiO0qhm9Wf`WfUTFSFSI7xZ1j*nnXK;LGh~U(CWg%a!RMVwv4fD6@}O@&Namq z)Go7IMtODVu@QTT3;7*uKmRMyRQDtKGrg~!9d0eUynl0i|9ns2$b4nfcf9{hTXzNi zQsZ{S+#FtcSxa@j|6*6?$o1tF&DOHr!O!x?MB0W>w{? z)un|#m7QSS59K7%E z#nktQ7;sctbV1zpRS=`al?hEfV+qmC?>@}ZH0BIOySS2sJt+69ip+AnBDL%lNp-5Gm9BATv5wqbA>ZGwh9;3}84V^@z+`X)95wFdUQ3Jp@Nd?HLI#(7BwYCTe>_tw)QRS-Q|`w-LlFK zFSm|_OD(HqnALO?w?oUVMq&P*5k7#w?!C(lSWPd2_v0@tf8kx2MevNpz8O0a`6|M% z9&R-y;}(y+u;hiizU%Ovfv@+wmeujyD4+0Wn7iOPi7mdP$p3h)WxYDYYHG&qF!I9U z6MoU<%i!MKUxN=Ae8O8WO6NM{*bA__(5oD`BIJa{BfP@pc?6z(@G^r(I15t=PuDU> zuaA~lNA4v2_ph>=F5uR>%xV-CpYXf*+xf)3#qWbp;_u~~@FSS1@GVAeN-^?7t)`{8 zEkaIMJi@sy&rW#egJ&B&!kL(*@QlS)eszDxI&wYXuS>O>EZjQ3V>JqkPxy2ErN;&M z+P`C2pW^T7C43qqo@2=6kD;?~7<|y+5#Ec*hNl!;eDjfi zvBa|S$^V78gqvNSkprxz*TF{(9^qeOz75YFZ1HVC{wBgV z!S@JmRmcmAPq^6SD~GQXTww4CFTt#WCmUOQBau%a`~~<%<2D?5Vettkx_s}zmkf?K z_=MY0ZUsD#V~ely+t!iO)PsELYYlFt-?kcs#V5QPf7OGU1gohC`~d!5y%1iC30PL) z0&KOX$;iJ-_@BWy1-FUF3yV)U&EYw!psW0dbF@3W3PNw|aXynCNzy>p+{ zC@db~*YQ_6h9_E0$HC3`d+8G1hnWt~W5`tz?gBiIsp6#Us4I<;fpJy8u@iJi^5o)vFcQO6P3kKP3Dw;LF8r7V^U46V7t^_QN+FoN4e0 zhcLInlZq|g&+c{feD_}K$Zz5KBfRh9cJf}UQCPgf$MILbrzBZTZ-ZaQ-zx{~z=nMF^;r2N4!r~L&9Yj6AJQ?6rysf>x4V%O7LRbA%d-QX1>hWmM|k76?E9a~s<6ek z;#<~{73k49ig6aVW#6(Ig~ca)H~z}^Eh$#h67WL&y>bvv!_Wq8g?u*Qr(bI| z#pBk!$Z8Z8pK$vkhwmf!Iu^bK!ga&*_CnglLaR|&Ji;&IFTK*3KfVHf34c#d;b$?@Ycsa=Do6eZ z;pbjwHC5rZ4tZhm3Fo_f8{jJduQ2$8GcX14Bw2(;nt%Q3Uo};)OLQYsb!UtTQOn6=d?>Bga_hD3z9>M-P ze8t$}T}Zf7`IhzAHCEHzxXmY=Fn`YoXS=++;LQQgG;T3{V{=>gh1{mo(A z4lb}7g~cPhAAhAQi}CXS_*wkDbP7L?kv^5k?a!y~(Ee(0D@9J2zh{J3yF4}U6oDTw zc!Zz7!%5#ZZ1r1y@VV-ql5%I5}9ejq{NAs*kVg8;Gejk6u-wn@M@VoeX`Uo$^ z*!hH<;;$iHvvHe&oTra)rpt4Heme`CVekm2V#L#xXB|l+{?XJ|ewAx=Q5 z8UBj@Q+V3I7x4G=5nhcE&m!a$|7y~;7`Fw;dHM*?c6sV4*Ie){gGV?WBc5dBK3_>b zpie4piO2~{AK~7)jy|X134*)kM)eWSpX=}}L{9M+z;icl^O5uP5zcmbc2S-=;F$)G za0nxPl92mH;%`i|no@8}Ku%ct2zTc?`n(U11@6p^>La`;*WsCgoZ{aI&n(=gA?N8M zoZ<4kNO@+0Cm1}!$r$N#c8+yqGx6^oV>O+hLq5&18il2ga0~t_p9IR`6!>lYz48)H z#ArSBX^z8pD#y|5efUn}){+y|OZW}^6+V@Gd<%RGe~(Z2X^ix$Lv9s%yf@Zr+Kk&K za7#j7n7?O)Etl_I_~OCcw@397 zUU9o+p?28}*B*r}-r(&{dS8Gy0k_`S(ew&)T$G*OR?4YsHvI|yUV4RpjS z_8797_Tg5KoG^dS2!~ys`Q+{oQXme9hl<^!gmW*Ks@g&8S|&hwzsk z>E!QW@Im}Ny@bOU>GcS5zkR^6=8dzOeuUcwG;;(c)K)!AQ*WmA^Q@9)>o=oKans962 z$-*rIIbrb#k9Bzt!;=mkZSV+>z$pJaS$v4^{B5ic2;TtT$GDxnjrD=cCwvNj=@BG9 zPlH?V_w*7zhSB_PAGYRqPh$s|U#!Cx|02Ra2;Z3L^xL>CAiS{j6`t+#*TbI+o@MY0 zXJEuL9JwWgn+eZI+)|Je7LRbe%X1Q*L@79WszL3i|`4+2b0&ZyrpYU*(?{(EHaEiev+{NNo z>&r8@T1Qe=(OxE5O|7_{zSU|JR(gfs!C!hLPGDaM{1*P6Uc#?n*1&TZTY4Qpeg^rq z8NFV_Z9nqD;uGHE^38&8AGqG&6W)r+gr^3%(}Y_wgY`RZmBOeO!{0w2TQ(_8ouMto0Wi?7b*n>~|p8n;abpKz7SR{-AzaJj)J zJPX7BWogJ=Sj{?a3j1<6j6zOWdI_hvJjdY~4o)(7gnLouJMeU3ORwWMJM}hk7VASC zUcWh7Z-rlW{YT>e3iu_%Uw9w>2gsM;ZC2BB;63;YOCRAK_$y!XGOVVj!Q1fn@=16j zhX2b}BbQ0IW8_Z}4i6wFEFR&dF3)4|ECVk#c!cvXB(H2Da%u-jUuRv9TRL)HyAU4b z^1K318hC`kBb3L3(E;$Y_< zD94t5i;*8px_(1`EyZmS^1@1|aIVX@6TbQ2*#@8RGz`UEHWC|E%h>F+_xZEwPvUXw zo*LCpxP7Xl-$(FuOlAKBe@{Q*k1_mTb`-glG_>95)r`YoJm1T znO4&b@D%(#eT6ky5YMMmtRq_p_cT18Gm-dsiq$AA9^o_iD_j>mt>Dx6dpyEBFcg1T zF>?Ge(MtU$?=5gEKu%aZ!pmKrO*dLi4}kACc!U>XR1TTQttH&e@MPhZft;{-gvYu( zhv7*Fk2ZLOQ!otUWi2;4^=`Gh~iUwV8BUmN%W{+?dK=P}|rjNHielrua>aXW;Z zu=El>;PTK0nqCC&H+Y11VU)g2$f+GZ0#6-o8GNH2VoaZ5*DSbV~xT)tP}O9PKE z_=I~WIsL_HZ1EkN3(HQZ>BUeed0(cT}vyc-Ok8nqZlfG7Xx-uB2GNL@fXEEYAj$9JqX2J6|Zm%OJ zEFR&PT^`2nCdPE@C4)zJA4dK3I@ez0+B31mpYHOv!aotWu?D~J2$%mD{G-6!A?&AD zxc6%g{~2uY?faT_WFGqcBA59PZhO9FH3~~#;T`y^9P^k@JPqE4zgMopr5Nd(=h_op zI|*C-Uru!LgFUdO&WV=QHZhtX!XM)=zBc$j1)s;?;}>qhi2sml@5C1GYQl}BA{=78 zDZ=dm!U;=n;br)zfsf+90=yJ|VfhQ+jsIlQc?!LjfEVH~EPvq~SFfj;r{saN4ZVcB zZ*cVZ_y#9^X?f_6+xZ)!=@UMUztYnS&l&J3{Jr!EH)GT;o<&aWpn&mxKW=-G^V)^* zPM0T_^-euFZ14zg#*n+=1HVU#8tj|A5;;qz~x4K!Vh4SpE=0Y6K*j)dAMaGCoCS} zX)e!m@XP>DF?fX2F?YlB<#l-+A2LA8$1Zi%+-(f2BKt^}s3c+xUC= zAbbpS7ktlSE1f%#*ZbQ)!uK?8+mQF(=L&Cj`If-91zczF372D-)|D+nt{R@}DWAo- zEkI6KdI`^VdFtWG16CkVbe=AJ27kNU;cW$< z#@|b?a0_NGd~aaqVjsr76Z<*W-iEyZ{1~>%s{p>$=*@eDrefUk;S*LmgztCbt7D$N z9K6JcPk27&4tQo@D;=3~!yb#h7<&}26P#u62zQ4Zo{vLL`Q1OCehIhpp=kLD zpT=MD_rh}qdL=VW#^F1I zE&bjYaC!3J zc^bUU;1PZdqjFqh&0W{QBC;HS`jm>GJJ`FB?4F;1iyR5s!tO#^;uMDR11m zuZxb?!k=H~_@Bq0;~T6`4S(T}@c#|z_$_)|0Jq{VtaJ(UKF-b`I@KoL;aVs0_wq;h zFh+Vji`*f~Es1_&KW=-G6Bdu~PM0Sao_cWD;1RCEFkLBIfo*3jlTRn2Zk`vzM@+@G!zXSZF!6RIR5zk`e&KKYh&r;kLAtx*z;arzz zCp`1Pvke~MM2vXauXVn^`Z4`p$F-F6wbAddgg?Sx>1c=N0=N}_FI~cXKjEYcxql@7 zYwjXlxYZ*kEPaHxxjYM4ckBQ^Y48Ydz^GoY!5}Fh43xIZ87q~;uD_l@`d4B z2+lS5gr{J{myRvIWaNKD_;v85;+BZKu=s>~M>**{4POx4H7c4;;g3f-e7w)M`CdnU zCE=ff?>KJF$P0^4_$8N*?**D(2LIaN6W)uFemk(G-zMZ|68;c;b+~OrURZp>dWyrro`1|2of!k8#g~cbl(B<0--`(K(2A}Zxkq*z> zBc1lpNV{sm?fA%Odk}sFf2C^_^R;8(m+|+~Df~D_`pie}XT*Q|x2T`E4e8g=&a>7cNaJI{{OY=PNOoK;wB1Sx^ zu0Dm7*9hE_4Sj@zF3%}=62QG9qUjQTdjw?-&oONAJw3uYvH(2}pw}+kb|5b-y@a>m zuX4JZer_vxv%x342_v2dkQ+z1e}rc>Zp)Dq7LV{^m*;VKmVy@VxJAKG$eM7x^a$e>;5hahr|2u=s?hyL`{W zHxry?@ClE^sGbF}rQb)xc+WuiAHa8E7~|nE-ZQv-!tdg5r;GmMeeg;Ay>tq1#fXRR zPwn=o{CWhpD&)NOC|vCF@I7l&DY(Gk5nhB*|Cfm^zL759O7t3y+i-(VIML;M2fk!* zyul~@d8)(rf@^QX7VpMXN6#L3H{n*38r4&H9sWvRDg8=0xCnnQy~4{eS@29jZV~x3 zatZ4@-1zReQCQ_59CCU1PPu6UIL+V@9*I%?>mBOo_1sY2#}d8{zUOh$_6c?7pA5W-c+TVYezMglEPaGq@K-w2PoDz6 zjlY*J;lmi|^DJ@`3AYKJ{kZK#PFOs`J6)b!c!j!6UpCqx6*{r|%h#!Bd6X zI^?|X8-(*+o(=F6fL9ni!izB#@GQh;d%o;clB3`ANvxaTT}l0a0k`LpSU0))3Gc#R z>B?q(x)=O3{$4tT!Rt&T{Qhu5G#Yg+WfZ7S}%P+WTC46Sng2fkD=h z|6t&Gf^uDr+wwtHqpe7o_@mfG2+QU?ghfBo@L@T0Xbpu2#0n*JksD1{w&eqc_WeERS>Qhp0{v2mdNiaTpr=W_$&UgOG5xH8zy$a8-aXWyVu<}QEpUX3YbUz2)WAF&4V{CmAsPBa1@Uy0_ z1oTOuzI*zBFW_(M1J7sRkMQ^P0T*F3FBpmab?nauIQ{-h1NglVJU{vl>pt9mJ%HZ} zxxB*9<1d~m#QOsHIs83d;T;(1w+XrNg!}LC)Zw-fIbo$!xZLF_hNlX=&fpQAjmd&% z1ae7)<9E4Dqi{<_PFOs`2`*0yJW1f7!6V!q@91+jo_XX7{Fl*>;P!qz^GL9Ggj?`e zIueNI6!>lYy>tmDW2DdLan_OF5$<2%X^&&x8fP^Mi$}N>e}(IS=OgeL{5>AwcQMNE zm$B8~>_Pqr;jjKK{St2V$P0^4c$>?&fcSQRpEUS{e}u971#IQ}Y~-IN{9^cWahrv_ zu=s?tT)zGAO$TQhe8LkkmGHC%9lp1M){z{-^BeG{cW`?nXf+CpPxvVQO5bSwo56?i z_tGo85hJ};BbPFGFo&(t8+ll-|>aX6F`uQUKK4!QTv~I+HlJ=JpNVHPO_h;SbcQiiI z&&&O->n!V6`01JNXssJvcMh@Ccw@UCm`vXdmt-C%qkm2P)N}Y&`eOPnJ->{S|3;$p zeEb`XJ??Y%H!bUg8+Hi^`?~A?_nEb@RqV>lSj^s!8+P@*aJu<(XbF3J^jXT2y!$Mx)_wkLDHYPy zZQr*o>ju|-3zgt)muCXyJ@h@@(VzZe)hy zuD?GK7pmHS&BpUJ&iur755VKeoTc2o=XfZ*=Lg~Ro-Z0aTNn>L_Xg7LJr^0zgAD$^ zM^8`YuMC;lhI_gpf821NZRmW15$~&p&T|aTZsYk;BQ3*?urC^6$CxsPJAJmVbG(rc ze>B|7jj+><=hKFKz>p6ad8qvG^5ix{w-bgA_ZeYRjXe3e5!bhk=Td`bwUKWv22VBh z&5QRLL!L7weD^mE_q&bfGDH72jd)iZW%qv>@qS{2)p+m4+iRpT!QlL{5q7fie6Jz1 z%?NwJ&|$wJf6|aYV8~<}dcJAMe`Ij}$;gNK#`9EzbD<$`t@Mr|ik^J7Qb)Eqhs>^t zp2g#xi{=NA6z2izTt~|Y5_|aIN{;h$d^vWkx{!mM?8AH9qY0zFPIUfBU@Kz|VU3Ep zB;NT~UnSZq3!%N4!)>)G!h+9-!3s3R1kZVqp(n*Cte;OboO5zCSzKs{nB`iy29IbayYhA$xI$)K z<{sO7=oHncj#TS4tIAgv7*5fMypv30QeOV z>%`TXm3BSgh~HSh3eN8?t4+NWq@?jfI>x6LpVTgK~adW<4)B_epZJ%B1 zD@11XbJ5|mI^Nb7i6+!O_%rGOVQpmrCoh^#w_N6C=WTyMkvhYVF$hF?!Wd<#nK3R-y^MA8bI!dyAf}+~cJFzZ&1!8eXCX%8 zRtDQgDI0EdV9rteMwYFus^m!8*l=d$Evl+0yG(%iH!vwESzAm^=f;In4({#8;gsH= z6>$o{X_WngJ9Q)K$Dqq$%uzM_pH1rL(Pf8?`aVXDv`+4?%#DLH`m`Wz`kX5K>eWbgw_F}#D?JZKJIc1qz4-UNCq1EBHR0P2bS&; zmDI4-P19$6QbLT!K`-bPR)t11` zO7Z?3iq3so|Js=xCiRrp-BYA(Z=P3PIqlgKaEafPH=%e!@$j8a*$p6XQn@ubnX=&S zYH}bgL$@_Wb74^UMs8~CiyY~-GOjuipPpDhkkb1#DES08pf|+r>WlmxXut`l{QgGI zE#zU2@^(--r8O;G_hctECU9?3U*zY#*0==jTui(9s{BFRdag2kcG#86G)$TPu=n8q z2>$(F`#0td`64?dr@eASG%Y#ptFHzP_+j3S#Wxm@{P~b@^7g?yl1SMEZk`H}y0q3I z^}6Mi(%-4_Pl_r3l<@bsi7w>cgO(Cr+B)z+0ymHi+?{qacgJzN*915$-DK6=7rBc& zI)nC&X}Zx*&x!RZ;aQ||Xk#)rkXmi?JH0#AQo>X08gyOn0B$VgF3SYnoVB+z(0b3O zDR<|5>fEHYw=*a_C5q!(^&F4J&D@=wL<@=M7He*8E8dbD_nvNRO9=;HP6?-wdj)}L z?v12HP+Ly~xwH8oxp%hb|L@yR)j#FXVX{3`mcjce^`8Y6?>(?5@P0~|zh{KspaW!| zyzCG*-D9EN4auI&`yR=y4sZ@BZWDRm-s{*r*+JeTDtUcO79eG={J)1E7E5}9N!P&Hk|h>o_@lK82&G8C&Pv!ulE#JVZV*d=R;-N zc&{P(Uc&Fd?MdEic;SUNx&G{ZHr0VQ8veq(UaxtTK&L=wk1a&*%9! z?z7%i?FZZY^TgZAv-Zpr$nOov=s6R&ajrX-_-*$z>_^<^Qta`ryxs+!1WQhT%^2@_ z9}nL1e>0xD44J!(=hepZHx2o38_&FU@i})I&(tN~JvtYQ&Scm|;0`2a*lZPD(ZBy@ zOuvm6CiA*&$)30x1fH|E(P7TNohg(eHrM=w=;tCOV|M|}$+NR2z4Fr2NS?hMj3&&} ztN*(4$}24U0upCUbU8);8E)I;OD4+iy&tGr3C2Ph^ zdjjjsU#qJ&L?^G*lm7Epri0d2>Wmd~>P@_!ukcqxqkA4d+1~t>=3@W-@62C6D{#Wo z^sF=*5Z|iwo4>AMLxc-i97^V|v2$RB-%O{mv&a>2E%AAOe`yX}iS9IaYZURD;SxLo z?EZ7$Nw{fFyyAb-k6|m^C`>WzUr?4o-1X!W_Uk2 z7#9w15A29zM$ytqZ`l^G0=n1UozcaIZ(ttP(s{<}i+s`-2x-3gVV^bbgU)2;&u1*| z(dAxq=ML`p@X%JxPaJvXr_5)5hiqV1-0uI`*&2%9ZZXRm!2EKv8>{t{?lNCc5a8b} z1$-RQaJ(R%yBV!lrP~wSEvcJ`2iE5lr)I=6+Zf30lIDCfG5k5Vx6W@L<=y+*adyr8 z_7ORZ;`R-gx{o-GS$BMM{~MV5B6WQOnT!3fFTtK)CvdCqapta0E(FGD9&kLz$&H~W zbPsa4vn>$F7{qg5WVI3MSKOB_4TopMhpqO<>f#&z?Lwd}DdpO+<1=oYc5C*W`FDLU z{|A5dS65j9^k0zwlwxUnx-%iXt@Y0KI{OCg#PE~22HLv16T&~{sV_2>7=FZ4u3{2OU*x4;uiojVXO)R_)3fHSk%KDfDIRNk&fNL!D<)A+gD&Rf zu)?ZkR=M@H-*s+zt+rls%)ZEf>#eP?W7aqE#DHiq9)k83;H z7Y}RLXI%;FXJgThb;Adp`P=V@5jNHxE6y?d#a@Q4iOhntd*cXszaMfvA)Ea>T%}L_ zYr0|j+qOa{bS#r7T7_k5b12|jnWv)G<_FZwhk`97O_k)hQo?j@h!{p z`(CcCuWeX_?s09|y=4u7yhX%*s@rR2^E&E$-Xrk7o*(5^E4$0)&a}Cm72!+WPAjX1 z`AR+U;1gxUxX_L#U@osHasqE$f5M zL+9?a^_bx6;ncv&?pnLIwBl$}zd18%Jx;WM0t zVc+6tUgy~%Q{C9(V`6{Bj{S75r}>A39er8sfo9tNBCo}2g{`*l;J8*j&$Z)7HneNG zR8+4vGu$q-TsyaJ?h!_Z2j?U`YLsm=U*Rcn78R)kmBI=t3- zIwxApC&=4)Jx;|}yXzZL(}VU1{UZ4Y*w-7^iRuM6bU$(j>jku&3vg{D{_C?q%QE`BqNtFK#UUdFMYb&bHIsW~W*G zmuf-W&iJ4AMV530L-WVg?)nC^gKz8#w)Mr$+J5c)S-a!f`htCtx!fCHH%$AH8@AsT zw%WR1jp}(Ey^=ow7l%8K)2k=0a-QGhdBLg_>X1^W6ugP#09VrS?fXReob0FP`=sZ3 zH$6G+AwQo}z6hqwwDY>PUtV`y47p=e^LmSUbWwvws6SmSYS`YHp1OYf`i9V?Tf+lR zudh$f3TBlxY{_-TkNTjOhb6>0AvIbrX4rXj+N~FFT#VKWtF7);>AS)YTSnL?L(#C* ziPw_97*9X*!ns>)o>MV--51$=(HiGyyq>+@Q`_I`oEd(TU42^p`qZqx$hM1Gk1z_Z zPn}w{Yy31%<~??4r`!GcLdM-6TvU#p=zKdhVAs(TIRU2nfk`)qbK3s1Zhigutm1Gn zvpvpq-?)~iK-OBGjr6zIS9$5LQ~IrF8m8HLA9vF~KPLT_(%-(q5Bn3s{?f=hrT>G@ zedoT+Oa3B2F6=os)nhiYZO(E>wYxMsrKUHBkKbWsq_qUm?AU5ARXfmZtfARWwjM{_RQ;hd zK>V!CIzI|r$I4+|`xZasUlX#=$d4&@$ir^PS30G+6Y|#9we@aK*1o_G|IB^!+E3+2 z^YcbK{2@2|-cGYVEqg_AC;MUlhPd|{acA0L54vINI=zyt3R zM(dt`QZ0y%|Nn&6@rKq;EoioDL6BN-@Z4mZ?RlHc>v#GhqdF_mt`zMm!WC|9T^C+g z&zkl3>*`Z85>BtHukdxZ+iiPmu2;fup>gTrXg*J}<9N=Fqc`$tpPA3k*&09Rhy54A zR#ryCIvOAK>+SRBGHkYeF&g(qUgb@c+UAyg)m802#IC#JPI&$mw7GTYUd~ulPOtO5 z_hbjB(*J1Y6Og>B#w~a-+Pu(wJ*x|G}g@Y z@N4Jt27M76^t;ZmJ5LSM4?K772Ag|lzg$e~lde`<{$mAtFA^+hxRVLN&osHfE zEe|i}eM*VfU$@`_l?5DO*u;U23`hRY$6|J`CkA9Ds#)qf1^nEg(dS$is z)#)jor|TcpQxZ?VwA}{t^gr#VAsH36JSYFP?X#su@|0;mUBlBN`)NE+r99o!5vUx` zeDKDW7tbl5X8W3sK+|lahNjz^ZgDkj=ym$QH`hIyYn}MJbG7va4e?W#?}}@?uCpdw zgWhp1T3c9c^N#MZnLirt<-zqZ_ZVe3&Su{1GMDxSLTi{4d3@*l@r^lJWAp9w`7+`A zXM-?ZBCA7z9UJmm@ zgL#b2T;nnyhuPEdp%|tgeE55tX^GEN0Mi76Da~fm%FPP*Mt*59{WON@{tsWYnG$`b za+od}_4_)Tsnliqk-_wf7^bNoJ^@o+$17D{zHNl5#b6q3GZni`-!+*2A%-dW!vdSB z#%FpAre7IM*V;@4F4J^_>0}JkC+BasnI`*8TVZ<4U>apJ<-1Hn4W>v+;< z-Mc0)X7xSNW?bg#_o}fHefa$D|H}$hg^TJZWvz#`FkDq%N`JNDWFfuU{TYi-6xyrF zMJIy9km1Mh0(u_}kqURm=W08KrEUz{Si_t157^nBY+kCkz!ou0moc_&oMmiZdJjz-rS8l~DA<+vJ6Bt2Ts-f%+cNcTe>CsdLV zYN#D5+YL3CP`!~vdtb)sUyhxNj^{_uY4-M7=SNom6#NbA!WP_#k6EQNLdW|%<8f9n z<62vfUAbO<{sBFHlNv3J6kCs(t{%U=6bP*jZ(l`0>aeGsSVRBpaNX^5eF)c1 zgKLP*HQnWU#^(CA%Qe~MvdEb$Y3i}JP4hJU6!rpxJ=tc@a@nhF_8VOGkk5V{ng%jP z*{Occ=lTM!+YGM3Hdm(0waDh``$Ye(CUgpHy^%SzM}6_2G3iokv^4&U8A5fqw&Bha zt#+TVn12?p+MXY-qW-LEsMEbt%g%{#EhAg=4+IovJ$}2Nu&yP>xV9pC9#6l&L#KSkWDZ}Wjz384e$cJs z$4FBZbF-@O-+xj~8HSi0(f;jtAIZyUPp_s|v7+@M$L5`2a!FkELae9&3P$|t@# z!Dbp|GdaE6LtW84*1U8o{5& zO}qI9it_KWLL0&x>L23U5`Ay<-+8-{*Rj|O-O&^`uYJmGgm&L9`f|53CH%77cWY>#g{&e^e2XNY|nW9 z;u!Xb7Iu#fFaD6D3$^wvc{Df8ZWmj9j%GNH7#vsGIljm(yXK3$>#@IV8XLax!!h&) zN3CnZ*Dy~V876flV`u|ouCV_#k+#H7z3Jzhb!4-TEOm-^Ys_IHjHc!vxe@CY!GkzTUB13oq_j8_Z?GOI89%! zCF7Tz)0N!D8=Pj=<#s$=OIMlKkuR+1 zOGfS<#>)NL`NPJao8($E|E2|GX6 zwT42zuaT$HH+9;m-Gkjdk-;%}`-gLVpM1SFnb@CL|7P*1?PGYCJBI#iMW^y#>%zSD z@DeX?$6qy%>%>9!yrhQOSK4g$eom>*?o_G02($L7oE#n5urO`pj>O85^^WG!>SS?m zB%@QgH^q-(Ix!5fzlqcv#+tD9zO=8UnshFY+Ru~X&2Jt=yK`$hH7VZa`8e0p^p>mg zIzI9HDTP=;z5W_I4f%YPx`4Lg^tRHN`q0|L`+sTTum3x4h2a&Kfj;D6nCZ3hI*xDR zi7#K(3dijEX#J_qjSH;I9KM_!^=e?kh_=Acg88FfT{M57-6GTMej%{4C-R#<%plxJB;EO;|`QrG+;<{oJE8p%cPM{QfB0uZPX^#u!wRcSO(mNY%r@A`w zB`9A8*tMN>k5F3+_e84QFvt8bIfO}%$)g&+Dwv5$Y>v0{DAm?pdDIiRuW$5$G4;|Y z7`S%#wRv%EUv!N=FuML)W`ft!x0ybbm%hrU=_`Fc`AVPLyT6LQN&+=+Her+Zi zNgj<12SX#rjofw3?vta(@a4$sp)tFTbvCDtX*kh&G*vaAC-O`$<5hde*X&6&yY+4~ z<9+*eko$QQMOZ~Z2PCfz4ZLm_`Hr^x^*Fkx;n3Y$pa3@S;EWA zYtLDVi~FtbLpwE>J>5LBzPZ#Yz9l@<9<}1LriZ83-;B?3e4IXe53%3Vdkf=OAY)*Q z>;ddR$R3z6R%@8{0$+pGt z$g&eMa@ukqm1f#G-<AMvF6D8!IT^G*s_45avTf*-C zP;+Ses`;Tk7NcZ5rM=A7MdQHSjxAMQy3e4?{>31>#kA5!&NQ2QH%=RwW$W_qAI1@O zkstPB!anAQZ9(_939sG%o-rE&O4&h z;eCG^WT_s##|-qn&QWfCl1^#O*RUTldj2*1KE;`x_C(&l6xCsCu9qXD(BX!DI+!~^ zjt)m{9V*VNF8S~OJJJao^uzwYt^1p)`&*LDm5vkVW0#!1%&9eTZmo%@)_g#%nG(J+ zoJq~epwl!?7mU<$0UGjdzaa;J( zxk0UpJ3b?LB0iL9|Mnm=-1muCZ#!}C^F5L2muB(r)JuAv!oNA`PXCkLn$kXEPETY4 zZZ|hf+tm}fo~N~qJ(26|5Tp1vCtbZ*z?Mq|J92}0THBaPf0;mt3FB_u-V+JfVS2kZ zwkqcDv}7`-M!JT4@mxvAZ{-o8Zf5YAS z=Z(bT9(=JUGOo*WamHr3_jL~W;&95^1DOps(uP~YdWYnU18TRUnrHI;!bc@;tChCR zam=>6FGkBXy8b^(j=owM)l}nF|J6WGvr~%=XUH2dU^FaVW0BD9u6~)w^zQC zx{@zy%yL%EEv>AY$+yFp{%)sj-I-~r-?9CXYaM9kma|S!y>jw<&&4VAGnh5b2q!aZ zoUto@+Dv=SIMbdp&UELDGu<7WnUwR7qbY7bTjgne3a!7$icN9@m%4 zf7TCsny@b#GY)gFhxX6j!foN(>KPyG8L;z_VVwyXgbQzgT-Mp?|LF{@}~dl@UnAOC}&(CeZ=nHcOK0e^3;&s z@i!+wH8ebQcia~N-gjn)1N=@bD|}bp=*pqH?n@i`RA5>%UoH%*9LkJz=#J!Fdg9-_ zRz38$Pbe)p74~n)7~`|~6`57s6A5?b(0>i=oRfSF=J9z6q@SlW%D{vO8@s~Ax}=~_%8uYv>5^E@dj;;(U%8xkv1 z_~qLI{tag7*JZfmB{SDHUb4Cy2Il+I{Tk>moFEh8j zJ=ZI%o5tt0Z}aC_i^Jv`wmb5lee>+^_=g#(S(uj0dSDp*&Qo%IQo|Fa!*+E?&afLW zxBY3KdnVlXx+^jCr3cDuPTunzI}%yVA9OC}dDt%+|1@CGGkL@I#JM|7>Oq4$yCX04 z4I{Tw$*I(E67_mIdGdo#hS08)cMV}RIKpn(BkYzv!fn~9zLrCIY-&OTjhp(<5$sVnKkML8w zZNA`#I!CMDej6OLO_hk+UUy_^Ukduhrw_1o9boG^z}0nt+ba3B?iIdw2%Z>#Zqxhp z@6UW(3`E`cUy5CM~vmg4@+`RTbxI3W}!V~PiCmq{K^ZUIM(D`3`$D^}W zV{_Xd_d}j0VRYVl*$Swe-^7luzk$`*kB?5^>&FQVV;SiKZC~pgOI;X8JaRkH zxhFL-F9fQqaK3t<+dkHh=N$2r8}XRymF~zB`jWw(e=C;7b}ZJ$R5yoD5BGBE6Ie0~ z7IV$g9Vv=ox$$T^{bG<=6{6>|FAypzaCrj zL1);Q)rZ}cMjE53Gn=RV+iB3doVo3<1ihTG?#pXmWyG#>?7uqcj{Glu^PZ(S%nji^ zTFX6&+)$ot>aDV>|M z#x;a?jiZm~jy&b-pWD$}<>^0y*k7|^%b@=o?(Rq}`q#PoXQO{^$5EeQ6b$t-44(d4 zXS|Tye{Itpxtkp{Yp$c8T@L^C*s2MvvV!ePbN_NV++?IgS4U#|9YV#0lMJN~oM%n36cEy?EUMf0rg$fwNTKm@X(R!ZSvDD|70mr}PNA(+S&-)hGv*hl`b9(RY zw&eBaC)B4m3@Yi4G#J_>`Apx0X=*=hhS_X+Hk*^WAK2Q=JO6*P_BQZQR(Ia_mC59l z009Dqh;#^uQBea%iU>Ff5d$J3rWBEq1Of(3LQH~1>)L3!U1Y60AY~_!TC|oWthL0o zu2^cL>$=pU8!YRhRU26sUDw+u&TW$+iRAhIu9umUfZe^H&l5eI`JMAWzw&%eCVZjlA&2njO$x)6%NtNTnjl|i8j|8A8xhNtDU@EvHt6D zU%XUbDe_WW4)5=l#!EygHlN2ky#LmxQhnk>uZFzW8|S(!#Q652lrqzY)$RC_@ zL)T>eJz1pQ>%soO%B-lnH`hz;HW=bNO{!~V%YQm!=nAX9=YRKlHSQCmG~?_4AHw)A zLv%7{{!Thy?^Vs%)w$5lzl6Mtj#;r*vCqiAr7=yz@E#n(Yp$vs-p6g;s!r_(6m^e| zh5qF&^CPck#&c@${PqX2{eTNYi`eap|EF0@qmj<|`u|rj{^gMJ9Qv%Izh}9vPk_~7 zQTNu-Uar4PTGEWPyhER=H@bg|tx;g`Oss%611=0*7@o>ZOe?}xW@1I%Gh=L@!#3NU zbq@ccE~BKo=|0BW`{sA=E+$6zNd+{msgI4VUko#oF><{~UUS|cI z<37VUKQ#5^z{fe{^lwg&kBuP9V@wHa=Xd{&!K9~3XZMFsoE{%OKa_A%JdeS%u)8T! zvySo1n>x@_w%yZ4`s+O%hrxW?5azRc$3~m^_=h>}Ts_C0ZTgSp=nJAPBY8KTx)#|N zV;u|Yg$AqHFZTD`$Q%Dn_MXo9p#yMQUBB+l4&~S@*RdV`NmBw=?wFlpacR24sy&>~ z{QtDY6C;0MTyy61aXZE~XI?#a$C%K+b~<4+-^pf;lw;3^nIrQ3UQr}Frp?vLy;#k! z3Yk4?e^0WZ&DsyM!#R9Kq^}y7|3}A!#;~eS>&OXbH|MmB-lR9*Y5%O1ofJQ}#>>a+ zh+~-%$Kc-gIB&OmDW3kJKQM-p@Ese+H$3B5(T)vehZFL%`8OW-uXyt6?5P$-mc(LN zNi3gP@fv0J%Kbf07_pooZ=BrAYVPmZC5_peFN*kLTx;Qa*WfaH;{KlR8C)ki9sTSc zCDOjkOLO(wqV6qAnV-r4Z-bxiZPma*(9R`DFHj%Q%yp)c44T}6LluNgY~dfpj`wdKh6 zA}`k-B>wx2_|=xpzF56@U(c@w)Rxbu6#II9$;!MaQW9f$7>1kU44sMgy8;=CnOGlp zLWbu@TJ9uH_bjWt*vUN?vvTk2`78S@s~@T#jeI`C)9rDX$GFdawco3>^!02WNZX&< z>dzfF`TgiLz9nkUA7<}W<aiO6>3s`qa^x`Y8>NrnH>;V$?HPY+ zTAUKfUXZ+F;ew={^$XUr!|Uu>>TLt1m^TeNyRK)C$8A|FV>&&DPLGv)bz>U*dFRNl z$@U3e7H5HF=PEV&UTGj+Hb!}P5akc)qazD)Q&{^oUc)#OF2g@k<_K;WawE;emcEedgz{yl@m^GPH{DO z2o0XK;^`e+Q+_CJ`&-vh_OrH8p;6({?jF~+gUO+!9sZrk_8V>UI@mR1RQ)6~fgRIP z?8RAI9ISU|lNhy$g|1eLWLw z=J5veFoQX%Gl4Vu^maF=r-V40&rSOy2g%nR={tw9kDFSYLLO5Se8cQ|tJ49gb<`~X zF?Ra9^o5)9ys-P=8Yiv4n_SpEFIMXLA#-Nl*Yo?>d;P;hYdR@0cIUOXs3-7~I)=fm zz4{dR$G#<3&I{b4QxE%kp6~bbj6I3d@T@Hv^e?I9xs0Z%c8LFAo}SD;dvfR2G&)m)03~oTtgLj9BfMHbl$Wu^h|b z4QMN%zV%r21)dIQ?p4@5%Vh~htTBb%ug2=av>~-@oWXN5XAOGa(@)Hb-pQaA z_$Q@M7p;D4l0Rgg-;)vgCbiJ%*I!6TCq{-FL;&mS)6 zp!}#e$#yO@J=@pwuYJ}e?S*eEO1010OTWOsGqpS=Y<)3+4&>6TRBD2lkMTx@*N3aG z-G0zJ1Cz_7U{HH=_CQI0kyCQP$fZhutn30q@^N?U3;Z>6@gpM9ccCoz%A zB+fWeyswZxwWM^n-aL5FA4=Te+v&60Ip-~HNy?k>2bFGY{EuuTb*J*I=6d<}J!07UwJ~(ZzS~dY98vPheo8Si_KZ+x zLnR(d2>4kAZoA#GpF@3ptPjLu{cBXEt+&0%n|ZSnrQw!XMxV|G=6gyYhZM!*Y3GyjrPj# zx75^S7Kn9rFp^+DT~pt6G`fv9#*3+??5Eq~gYzwm(}$(^GB4qc6EPm^9A%Gp<2%$R ze&F+%kHMVoGKhB1dCe$h!#is-Srg0&rQ7cVX_k=3*W)7? z;co31v%jzBUrvt*Xa4EmZ#s|nz6-k>V=?`a@`%4%P&{P*^W5ogb}HN-+;DSZ;XWkX zPwJesOT)o4oABuzc7f<+WAguwe0=qxyqVQ*uC|=Kx%af*?HV1ruCs3PnEj*dx4Xyf z$jsL-R^TmtJ$IbeZ@o|4$MgRt`-B8XG6}b&=Dwblr<*2?Ip8NBtgeDyQX6@&-pkiN zp+#0)>me(cx#VlYq)|K*cqO_edz3q;9vvDTF6w^Gu7l3o0$0Y?GzGNszMe^^)n`6( z(3}NPPS6$azr)q8+9Du&aVoiZBw?R*+Dw@`G7Wp!~HAu~?N{wgM$ zJg9fO0NJLhOL(J0@gFVnYVN-i{~N)0UYN7I-kwfYp~HFiCoSCD^DZa(<`IYHY|gwT z#Xzbz4tHIQTl1m6GPuoMf!>~HZSJ);_tS7+ZL{&+3#b2GNgc_cjvR~b;yvThu8*D# z-(NJW!^w@kq&dm`9p<+adt`=}vg9iZyXP3On{&oq-v3w1rjT1{%~n?#_0sMuBhSXd zk0X5i`{evVv#?&?|5tcFBQ&e!mQm$eH>no>C9O5c_~5NNe46Eiei-F6?MJEEw1-h| zC5C;}c56!_rzdI$t|a*5XkupSe59;I<`s#d|NIyiD}~kU|NJ!aod>O4tyeR4j-<2_ zIg@c%DAV5UIm(xTNgdwr;k<#OwO~{2aIFaJ5o1(nie1y6%k^?^6J=ML@70UJ>(}0% zwCklUo@#k&W>^11IJi{ zLp{1??L*sGZ_kc1oabCMthu-6VODDP2o#Bo_EK;kJl%nK3e1*8`JbunOvp|DyAkBX zNEq%AgGS59!5G6MF#O(N7~D3Now<>o)Xz7r(jwDs6};U*U2>S#$C!4*6n{S=IOtuR z-k!_Ok3a#gU(VkEU_Z8=e{KBWA8_GpvQ;Umqs&^9!CNeU%*`WORz zyqhgPZ`P}QorE3E9*@SwzhIdnF*~?-x~V!hw)3he!V^Se8tYj zhT-(c!_V=>;jqVgdp7X4e6agqy_+xHe*xq7+?wc|VO7As=ro@3>FdHN_Wq>i7rdhg z|042W81H=z+cBJUE##aY?NA51%VT^$fNyrJW^*=?G4AyCT=JE-zdR!J&z-|shlPtK za4tLgGZ(A2b*>)HKIQ)W;>eBmZq*I!&la#psgr&RD6vl3h~C=v&iR?ZOpUkE>^-|+ z{QSS}N6@1qR^A1K&Od8Er?=;1ziP|_%uR#F`~SNL`_ouhXZKRixmy1#gL!IRyYs%M zIP>i1U)Y=@X?2=y$IY|O-kyW~qXUVP#^nxUj;WL!4*m4M(h~Lix6xPghx2w-dtkV; z=UF$LZ}EoHv+eGWr^&y@E33!R>%5p=PMXZ|MsfD`Y_Zd%x2A&KN0xbEpCs&;nIQYQ zR>7e4W^d1G_6GEB-$-}mwe6tJt4(4@$+!mT$3htJY(V{9{95_X{!R z!Dp)W_Dt_j2nEF^SiL<1ed0;6_q_a!HvS#{=9HGtI3;TWyV{?0`e>7S6T7$P(>_xwAvBz^ zEy2|;vu>!C+D8lKD9zq((}M?D74Jyg=?`nnYvK##Mn+|w?~{ns)ppL57P)yI`HY>Y#tnqd0VBMNF z#WlOa*6hU@o@R^D>^onp*|+=rys_ywG&{F8=h9*ubAx!@Nqp4zC}n*|yL9Q`bYZQ0 z)&HUQBK9@(b!0E^{|DKL=84F48O+L?a2aR2_;5+2=L}Z)2*Bw2;wA3Z&#y0QJyBw_nf6 zm_9?x{D7^`dHK*@w9Dft%$6HXm)tIeBb60QP+7Ug$I#XKvDaqBg*1LV4);FQ`r7^9uhxC~LWS_{F ziRMYX%bmpg(aH3aCoJEiy*>YMIwfC>+IRBLGQSp0YTj1oxT-fxYCdA4|c`M)mtnCxpB=UbX+Iz1vk$-=yB2J9!FkkI|9% z`+v7iE{yy~EMIDV{oLj-pj!X;%PSG(RtZJcO83s0;f~B?MEkydAp21IA~4M{W|S;@Gdy* z-e=D{U$x&cmupA#)r16Q_?lBS)oPZN!0b=+DsKMiOrXE8LY%?Q%0hFfhYyx?H#P81 zMMHWhZAa?Plt)>qRrNlK5FkCi!;xjD?8s{7G#`VhV!B+e0{`Q`|kW9L@OH+8qPXx*rS^5x8D&ino0SL zAT9Cru7jNQuCpd^*1OJct#_T8>x=37D7wZ^U!FB+$L(}a-$04`-Ol=WQE zDdodOUMcT^C1WYbo(s(yG)Fz%b3$j`*`+)(^n%TzQnu&2l(OckPAR9e|2^#YH}S5H z?hZ;mq4@L+DjwsaSd2d-#+G0_MsuBay5}cGjNhjnC||TgkkjGhop4(92)-ORzlyS; zy*ej2Yo{{XKIhWU?Mhzxo=3fLa&|8#tERKE(rRmur4*!dlL7lJymcIxANY6}yOi(T zbPem=U}X0UFPDCW&b3A^IrDFwt(kYuneOSHYX*FQhDjq@w14Qg_p=h&&q}oSvrhL+ z8yH6Y_3_+nWGF*72H5p+WGI;wr#BDh{-^Q9qssY)CY(tv(pfTX2MZ(H-EW4xo#?{I zmTEK{v=iOlJ}xwNN7l|UkB(y<#8-&iab$I^JUuEjjuvD^N`qr4mrT$=&#|u(CY|m% z#Y)(zTl;do^cIlbM`LBQg56+!)8?G zS}%epXz-ZptAttk7g?EO<(&x`&Q z-&}Fd)Rs{}{eGZpV8)2Yvf1^@45rQ>(VS_2Q#B%-z;{!BWRF6p0u@GHFm9{Mk9|8g zop0w(_q2Sa5$k^YO_0;P|DTf2$rbk5D7s@Vfp%eE{KGvpYc1y%;{dk^HLjZ-xUkZS z-TgZ|U|$Zpq4utd>J62Sgaqc!3)mM?2AsQo1J0ek<`q2a*EO!K;;J59jP2aYiBJVs zI$LItz+G2P3%J*V26RcO9sQb$%0a}Q#McMq>fX!kpl6ZS)o*Itw02Wn4|m0xq`Z+jp>*a7+89!20@%+iOs!qH)8f+Cc55#z5@4`9bPU z^HS=$ZmO-m+mmewQ0jq(8ZHf8S08936@ePAo~qeg<7G==j`zz8Z z=Xwpgqxvjgt|6|iXyp1`-DSL~enVqbO~ctjo9pT})vIVJ&kbB3y*6N9EBxmq>o#$3 zdSLyg`kIQyv*l_kw#2GMfI4=2W7S!)Hr8*hCCiCb7h9d>?OupZRai$=IG2DjsgmF| z6%6oAtL$V;-Y_V$a_3fFD8 zi?|mQE?!(zIRA#STjt-g+}coEL96CUd6E@aPgP#S4cc+x(#5xwU3cTs(p$@xUAN@A z>u)MuSXjF7rX^(ymn^s`5EmQd84z)xaxS=;@TT?a z1F_Bk_S$u~Z)!v{s+E0FnUTht4OBvcHA%(`JbgzrKUd!Y6DzCT(hYbeK$A4T)Pf^Rn|3u%?%Z6s@K_JYBzmNFb0Ndr!z8I7=_ee z&6#_y{@)oA&e@9W!KQYDeFuFVg8;f*Mx9<;bykL>H5b6kU$@11)p}4)cp`yww7Yns z2RC*NH0Khh6R-ykv!zkVopjqiZk2Z0m+4Z!Zlj$$v(3uE;Nb??(BPEiX0JTh25Q&QyHXM9 z9c!(|`n#2_LkrEo^!f|}WdH2=XtANLYF&N9<_$EexNrU10_)u2RBPi0$-{7b{h2SGSwP$GHOy9sve1Yh)*<)~~B4qh<%l zu*+ryzRQpz*URYK0@E*_5pV`Tqk$T#pCe_=*X&EhsoC{*MbVUEa0B_SopFtU3a`Fu z&`?7^M?f-o*^=u~XwzLA7#mO{&PtY6ZK7lHDpq{LHAHGN38eed?Txgm>diw~2F*AA z2kl{P1(#3`YEeu!89j7^eZvrLkB%vAY-%=GySRjPA(JMzIjVB4Sx4Hae4A@Xcm*BR z5NY<)w2ay)!M2SBgIuy*q7m z#yYcyWTF_Gd3n0J!c1tmqtlt^mO1JDTG@(9&C~;5JHHuRp04ztneLoh{=b|3oHLYH zUEG1->rxw=zn9sAPubbiymPV-nM=j$f-9^}Xx$e2fZE&FsiZVz9^8fpNzjywOEj1> z>t%kYx*jk2nz{{CkGi{KRiUz~rmUvoj&&NQDry?6;*uL@2UY|ed#P(*@7XJ89n2fu zQQn^HYAzeNZhmpeb(a0FGX=I=h&LFnTU%Fld;O-(b!F9?D&k}0y0w*6gW^{B*@2q_ zG38=++Zw5%#a4Nf9A=DnX%ry+u`qRalxbFA)v!eJCh_t5eXcAu+|*S|i@@57I(s%1 zPXfB$&XvDzHpR-w91XnYI=GC^C1J06RN3bjHq2%!x1PZv(70(6g98f+%Ozr1EnX7W z{ai#bJNc;bW}fslL1Sg6N=OH`mPNDHB2MMIAzlycnquqX61p{|ZitA<;fUN52v}z+ zR@ZPx8KWFixW;(Bv8C{E#~3OsC%L1z>CDmHiMW}5cP?)an(-ESjzAWF zZ&zAYDVNF}!M+0fV5N0PcP76u#%g;Gx2G$uR$>005T1dVh1>+>p5-$1M^de}0B+gH z2}@3R1pc34zinArwBaT;1SNpEQ99~Y^68LwKHA2tHR0m zE#s`VFDoqTvx<1W3xDAHZ^!>6_+7(a_$ds@ta%W-0DBekZ=ql9SgWlZw-v|>OJCt7 z_$$A5Ct7XGz>Dzr@=tggCILNPDtFSqzud{k7SjJTZcmlR%R{&Ye}!MD@5bNb z6JCr_KF)M`GSF)_ZZixX;XIe;Fg(-1Qw$#AWQ=&a%B(|&NzbdwuQKwh%xV?p?+M|P z_$z*2lGSz!`~m)+KEh3yZ^BcI+;fDhI?rk=!7YfKuy}-Lx;)RoGaEd^;1LdBu7<~l z+#bU1geMudGpnsuVetrmx!SF-@I+TrU-9?!5&j4>2c9F?O5d}{tKNo4-}AUVgS=P& zg`aZyg2`6fe(+v{Pk22>JWE}k2t1{@EjDA8x|WxO zn&Ej8x0df%t-?y5a0q{;r!>WC+Xa3Ye=mK)O_+J;Q;)5B#TK}2FUGd(1>q;d_aE@j z#%%`Sg~czN=kgzhe;Rm-!7rSHQTxim7QcnfJ?u4)tg@^hC|+#Evuc%f=&$Q7>r&z= z$8E(bt5sO>2rt23dhe!RTLxZ)zn2c-!?!s+`);!il@YEDo&&f&d7ITLEFR%7{tCA^ z&1%~N-i5!%Bb<+sJ~_xuC)`Nt%|zVBAtx*z;S87O1U#AGRD(x&|4N5v=Su5P-<_6K z0ncvS9$9I%3X4a0EB=bVJl$&B25!RN(?>WPBYk|x{f=-is~+Qa=2oj!SUkdC-sqQ;!BY)h z;pbL3Jddxi4&6z(-@)@FZY?XUR$=i7hwzs^r5V&i@Wc3f`U&S@R4>ka+p$})XMwkV z+d5PX&kN(pAKaS0ZM6!ESNJac#Zx=nYP$zqkH5z&9K?v{66B^5?n`(s$89Qd!r~F0 z;PM=SCjibic!V=BSHtu9a_i7=!kw36wMCX&)~Cy@R$=i7cjB-3{UfZlkHGKY@987l zfoXzg4|W0ea^w>T|5Nx@;969^nF)=O8?@!1)G`@Fkf0;Yr0-`E`|AhyIrEzku({QpS~1 zt5sNh!YA>U9==S*74Qf6dwL1)#Mu2C_Eqp*g8ac+%es&Jx*WHu$P0^4c!JA!1ik<` z+u#$9FiDbL@7-b@`Yz!fg{Kp@6Sr8c!r~Er6MyM3Zj{yb7Wj4iJ-vjV#E9o%*Nd7T`7yd13Jh7r1-};hP1{ zH~567V(3t0I!0zqoMrF{AHK=q*>{t5=zYRnaRK8u zZcpB1wF-+zIE=s2wU~M89`G*wy>trSg^@m`$h}6mjqt3%Z7FiX;t^ip@;naDB5;wx zBb<*BPY!ZgKZW3#h}$^iy!DiDhRbsTo=kA6!6O`9;*7V)u{Xo_F!lr3v#~Y*dGSVP zefQ*z&N}0@ORTnixIKPje4Qcu07m*$BexBGvc6%p)!|l!oUqa*yc&Py$Aioh)__;y z@8yqhDMt0G1p6}hW?*l@p6X&hw#JiFi>*VO;Ju%CK3z=zy4Y$JRy@Kd@E30eiTElzXH6}@E7)Dl&;SgS%)56M}4KAjx1t+vdC%`mOjFr_$z)t{vUzg z!{5_K_(6<#>Rg@?^oNbORU16QYh0cO;8_n|ZSV+ZV#L$C(9vfrJZBctPcDq>Bm5cu zia!cZ7x)wWJ$;0q!H6g9@|=Qa4{o~*9^vgS&r19s0Y7N)2rs~hClk5eJE+gOR$CTs z8ORAMe}sK5&q;Wa!DmY1`UrQFI6Nn&?Kb_cffd+~agm;UA@+@8PQ-~~U8zs-yPLGXV3z5Ej1h7nJ_%abwDYP$=! zT7yS;y~}eSJR8Al3?AVr81bB0U>$mc{Q2i8R+|sE-UU{xu<}bdg1_RAz|*~eaR+}- zAK{Z2@f=0&X~La=rvtYm$O(%_xZUNMg1)bU4;wtfAlpuCoq3gg(E&&}w@Yw*%K%t-{hz_(}Ygt|H>w z2YwuXFP*}581Zey7GEjy8wfvqD(w}wrN|45Pnbs?Hs2oj7K4ioKH=FI_0uPd-TW(d z()%p^Ob2d9isR`OZpUBxOu_$E@L~Kt{e&OHX#AT`CHK^m}TQzx2q$|2X(4{+?dKyD-YH`&=H2 zcKHBq_ZU3F^)636Ja>U>4Ibg881c+PZXW44L%QbRR)Cza(j|O}%kv^UmxHGoJi;#& zIXq7mS%*ruP!F!6ym5QH$Z8c9kMJ)1m5!z88wQ8)_tGW26{CD!kDS(rKe?QChT9tC zy!E2+3YX_$cvgW+4IbeVOcOlM(^-fwTxcD-20b2|Nk53&u0pF-Sb7O>$6tD^oJ>Cm zeh`08FX7RcS@8Ig`v&30eA8-6#f{FWRaiX2-9d-vb9j1#ly@-BBYX;T1w3yer*WzU zp0{v&9XW5@5^l%LLhb-^iOAiI+%vfCLr$2#CxrL7@s-d&>;;F7_=I<2?uF+;Y~@20 z@?U(H`3Zd0xK$!A%-<8jD_y?r@T~?fH~54X$qk+}*E;%ra;00N6wpf3Quu)+TqCq2MiwJWQ=&a=CR*QI^Lbdx|xl>&*rh;?50cjB>qZ= zkACVD_yhdCbO|5Fu)L{x5nFsuAs;6EXYlREZ7=e|$|vF7F5eRPTEIIEKHweXZ; zi*KIGx9n>A8Qf+Ye8TxI-*fO4fTtOJ!nv4x;7P~U_|P@i;eB_mQ=WeV?+3WOJvUyS z!bkB}I1Np_tGuA3!`*5VkgiKufdkSi(TFeXY;%Pw-SR_c%I9<58fj1Y=c)g z3#0nmJ%|36e7g;v-Z`|dIrP77J_>(=zx3&c=QHp}_&J z4jO#I$r$l;UgPu++vYIeyoUMaHSzvI_$}9eH~w#f-!%M%595D^fpzvZR$Dvx1^k7j zhwwA_D_>?_%(x9cfWMbd!n-iiqZYaE6D|#&dfYZ5CoCS}a+hZ-JeA;829NMkjPiK~ zaxZVPtiLRvUE+2*a>C*fp5pSf!;=RN7(BvRm~wc!XS?|`+iB;oPbYtHdvA8UoeRH( zztS_Bb>Z9KH}Ut21@c#ne65JLbFDyRcIWFIR_=4bB2A}XW4B1kXi#-!NdbM@vZ6+X;X0wM!ms16`jEqT_$K%@ z{Jr`i{31s6?Etp)dl>m5^m_)r5N_L$7glb#NA!CVw-)5RdLkTh`AXs21%BAz6W)T6UMrDPx}HF< z)wnH3&P%88VwWcj&r)!S!6Q5eqjctBlhm3sS6PQnqu2j|&xc#@RaUF8%0ajbf2He7 z_`bY~`j5YtPT_Yk((5pCorIeZWE{Zl1>}UqBm9iZGxG|@0WkCS7?1Gd7>3@Oa%`fl znTfpmpD=v0ahrj>*B=SzxqOG=n+Bd@@ClE`NUtvooc`!#c%lWQry$-R37^7W={W<> zr{I(Ld+8H?8xw?QFShdQF64i?ncsyx&%&)9d10kfxXR_bH=lVgxYFPgUWSog1<3uF za24>(!Yv;;Vetr0b$MQb=Mr$P!6Q5lL)Tq%^h&3GJ%6QBzy2A%7jb*`%6R<}-jBc1 zHHUHRY4B6{d+8K@1S7rbkW;@Cfu|9-YUI3rNO+CQ^8h^S!K)1(;bj=ruY7FP`yAvK z!IxLW{w!|ekQY`ug)>~f6Yyn%Qw=`hPiHth$7eV^weXz4tz$-cPk1jzdTqy6I;)YNfgUfxSBF~_^1{+fc(u#-Abe}UD-Ay3C73#RO0bpA8OV<% z{2$<(iQDDK3yV*9ip$pyUmiGM@Cm15#Pj8J_P-jbkMKmVpTQ&Cf@y+h7xs6tOR=Tj z0>b?feRj-eUmmw2!U;=1;aM&(b*hcJW)&E`!V@I}PbPA&5bgjxS-52&CoCRepUZO+ zo@DTu{CGNrqxp`0A?yP9R^`(!34e1j?)gHIF#aBo@WU9?tZ789ZVUbUBAz4RR)?Ihc!U{$?f8}=mkj?i#8-;jV&sG+ zCtT#l_ayNx0M9ex6P|%lz05*R_3#VIJsY=7MOL!^%O7||-!=>QG_3n#Zwk!rt!Mjo3@TRoKe^MezL+z1J>eJ%if<_=J@X;W=)6`-v|Io@K-*JPmUr zJUQ5lu}5GlJr?!~?B0uMHk(kGjZe6&9cHar~u6ChLw9 z;12vfy@X%I6v6i#w({)}gg0WuQ;OVD!hH$P z3fz_=CoCS}1uoCy@GJrs89c(TOm*gW;i=Z462kG^vuzJ349; zL{3;d!pSZV`+{xhVD<@P`Uv-5=Mzo(yYJ7y_-`(1k*w(3Pa;Ue{{pWwX< zw_3spi&wbPv^qkj7-Y`fmOe6w$&-s862;1h0g`6}Vt3clCi6JCuGPabj_uY=!W9faEyhc7b*B$}48$7}TzfgT^vIvYz8&%Al0OBwO`F8NovVj% zF8(U#SLpYrf+yndmAmjbjClG3)}gBiHys`ew`jm>6;^tLKgVC;y5WfgSoh%X@d%&9 ztb=Daw)oZ{KZEc`;9HN|YUG9adqQ{x{`uez{8xcX@fYUr3E?I9XMtbBe;IfY{=)n{ zAslq|d5ZaOF?f!lkMK;4<{ufz^-<0r!;^_yDssa7Jt2JN8&0}T!Q%t>ej}bP;V-}8 zq~}%S-XYxZrPL4H+L06H?+M}OU7pLYV|@#L*5DC-8pHIkrU_g9)EeZq@B3}|*5kGs zd2b(BxYXqf!M6gu)Zh~?#+1VonaG?9yB&Kg_8x5I|AP~G&H{h>%~soX+#Z<7a~4-$ z;Vt;9{HmER-wSTU-z!hysTk#7GID=GxJ~e+6M54cL;ykGWrADrXVjYKH(gf?{((66T#yQKH*G^(wUAezK#jjp>Gnt48G$N z=yxYrt-|6Heg%J}E0_7_Yv7mg_tGi+0_J{r?!^}0dgL!6{2}-@;6V8}HOu%M2dj#h3` zY6({fPcm+2vaMEO=_mYUw!_l}Pc)nQgTKck{31p?Pazj1+%9c6pXC zj<$ez8a%?am|5_wKyD1-{vMuHxRoL&EFR%SE>8m}TY5zp($ zJwiC%U2c05x7Uyp7LV{@mnV<;MmzWggGcy2jCiV$(|b(3XWCYcTP1SddriVCU7qdm ztOhSPc!cvY;u($H?Zkg0{lqxjMj$6FeT4lkPbWO7V9VeU{&cKU-#@?>-;uF&sf6cU z^R}b7y*ifn(_KE{7x7nlU4q^(fuG0UD?j1A7`2~W*y6hn`6~(kbNC*>?H=TXrJrz} z%hw2BBe>e&6JCxH-y&@B6(FBM_zw7H;g*lQu=s?hx_p|CTmsHD_=Gbs;D_i2`O z=)bBg>ok0yXVE`rS*^n26MheWr7xBKq!WAse=ohluVBRYJhu4uB7cPU7N77w{FPsPXV7*4{G`Dr9KeVt9XYl4M(W)N+>(*=+P`rBD2L}0cr0*q zR9r9NS4TPXzK4u(A=?8J!hMchU5x&pmS+Dj7zQ^DZF2_ipMaU`s0`h4IZVQm} z^bwxp^6ZBvs4xbPa95_o^KPcY^AtQE;P!TAoJaU5{>mS|vuW!9^W9CXehJ@)DL|hk z$h}57>b}i*i`ydPgq1Ggpv$9piotUX9^pKU(ly%Er<(E_hua84A7Q`C(+N*1*fMy8 zkB)To*)x)MNc{d4%tLSskE9*C`UpRQztXjwcy@xfryM!uE8l9hRpPb^ zIWM1um$^KApVhV;yu{!U?jPasoEl*rdYJehN1sn|J2}E?6;}QT^Zl2tPX_V42R@F! zr;l(uM*18;PVpZ{?it+nA?N8MyvOC?`?R*b;IP3X+=LO&M&#}!{sHu<#ce%u!qP{0 zmCLgYo^tRCgGYD)Mm+h*EhpT>TUjULHVrvp@d)R-Jg>kr6+F@45q@pBQ(n7=TZak> z_fvRUaN9ZDY84ib@HYIFAFHTe4}-Vj@8yqh9Y*@BL{9lJg>sY{s=F2dBX54 z1(z5+!pWG+;OWe8*MHcm-@7xIm!r@2mFS1t&J5<|o_^qM_}lss@5A7&_{a1E*I{h^ zkhAq8ovU$Mj$BMX@M4!I49`+s#V1^czw~J&UmL;I_2MM<*q&x;i<%Jm7$ODGM8s3Jj=mL3?AVkjPhv$ zw(9Gr$=0D%^cYvh{4$yOWwO;OEWL!^!(Zu1CB9DZ3H-hE2_MFYFNA$HeD%oBqu#!X z{9U-!A}=gH;YydU3I8f^xxpt~idhTKB5d*IW839PIMx43^qh#>IKp}DK{&(ZJppef zIMv`4emjXh7LLI;?{CKya%Y0c>07p@K<`W@IMYd ziocgW;g>MdXAg3f#NUqGUfjaS2}>X0M_iue`0oU7H+Y1%V$=@SAh(=woU78d9=FxV z35!R#)a41`zXH6};1OPgQGLAxTkRkNdDVN)b7{-OEfsmM9SEQCIq5qEpAX#Yi>FWc zbDz@=KEPHwUqwC-zE$uY!L1#6Vd*FQyvuhv{x5=`HTZ->81d91cOK!MK&~FQjmQa$ zN4VVO*@}N9c$L8;T#BiJX92eO@{vy={J$VyfZH_Wg~cbF>+-#V|5WfqgHJdM^L=>I zvG2pSu$7OW@=p!_cVbs#zl|;Tqptl5_8qvt;NoXo`zhCM!Tt;ULoU9@wP#^B;_kzy zde!u!sM7H+TeaP)ZO78FVE9ej0-@aSvV_f-d{2p-mm#t(k!u@@c-_NA!pOik#4^*%0-;b1`gPZo_70fx@@~XR;d`@*_+WGyl%Xy059j^O5 zq~(_3j?C-)KIrE2(Mrk@o{_|L5AkSh(eFL{{%hus`mMit&bVyOGJYR5bw`%5`+J8gEQMmujWaf{2z_5njd=ZM-2J724|&_ zC+8ddNrrrYGVpkQZg9>r%4np)xx;X8GJey9V?2ipoqa~0lp8!nhCb5_eg4u&BkP_R z=M3thr)Q$U|GvSw(s2I|BQ14CJy~x2zQ~Acf+7F!hCX*0d01@7ylKQ$ZpddCdfsN# zfi*_hB7^e^BaM>{_w`2Jo;GA|Gk*Wf(Es~}4ik)c|H+VP{2eBH3#^#X%WlPw!c;+=A8TvZU4aj5JA zYdP1stfnFE%?(v$n>IJX|H4QHG^s8LA zX7lZ390yw4ShiMjo(Gk?l7m+7t~1=EvR56sKg96i5Z<898*O-r~uTFtAa)pC7W7@f=bH;*6bMs*EK^~jybWFT`Kq*Rc%(1S-+1wD%3mq}s zSW(Z7FtKnol~?IfS;bljLk?5yUPi^9Y% z(y;G|*jzVQpN0y~J?7Zhnzc1UeB$ApmQR7KGepd)!s*gxe!CsL-OkJ^V5EE0lBh5}xb0xh0lPvz!=Y;~vzO_4FzYRi@KbXSvzUZm6K*Bs|9h zJG$B@g4>P3OrU*Ad7OQaCJnd8J;bKWHp40#C?aAQET@>9IGy+h`#K>Ue;DGPX55_h z9ru7mQ8#S3XPx255$%IrbZv?)B3(I=>ia&JzY$SDN-njI$}?W3e))rlmifu74tDxB*W zYGV*FdjQ&WE%EBAig@he7+MuHx__O%TNcJ(jXD1Aq{qlm8pBcdn}uk55`!awjb|SZr{v}YJ;`n z-U~{1u$$deXq0!R(KOg|_}iz?mo;)RNP{lY;!yUukS-0d$1tP>6UQJdl? z<;Tik=$Y^_4|^J5o)#bTQA*rKN=vwXotrgf4ctE$&sRygZS}vAGIQ1*E=(FaJD_Dv zo_@uQ{6PF~dcoDxzgaMSW?vJRI-o`T4fnm9u8fa-_@CrHV6~yL=N=_TQVm z|N9KfKZ~WIy}n}^Z)yM03OKl(pXd5}n)PofadL{a04js5MjUudJ-}x)tm< znSXj-rtpf&VhwqjY`@hcOMhi$wbYZlYu0Qc`x@)P#f7DXj-USBPk8CtkK$gua%X88 z`@4`|yneu+Qs>BJV^_1rZWYu-vtjFHU&JZ|J{O##-6*)4h=o zaBuS7+)Z6pVnQf^TRHzU!1lI#Bk%Tu{}$z5=upaz6z7fp~rG!(PUyg>YWZT|j z`E7fbl|;xB1I`W1+lrEoaqnpzwBbANPdzK{E&e=(5A?XRiFQo|+rj>|sV#m9~BX`u<7Rv@)GfqQKensr~Q)pcG} z^23fL;LbzM1(xeR%yxG|B@oKHGg|5Y(LpOW7}?dpou7%{D?Y#K{HkE&!Mj0er;EM& zW8a7_44lH2(yEvYjS ziNVKh+UxofCMVh{_BAJPEAKZ30+TWhq~dFJ759mGSU4CtQi1jfcNcU2Z&em|g;Ji! ztngUMbf71BpzD{3zqm2#|KX1*+l&z9+a8QqBhC-y>=?f@n=)S2{zh~~==^Y2Xnc4y z#-BebG%B2tpBc&w`|?L}8)-ZDv1Wzqu1o5$0$HRooXMT4u@avUI?$ON9?$Knxp_(N zE{s^^ss|H7KOv0O^<;D`xnOnd?)2MrE-M_0hODe+FGsDuw64_RF`+E-aF;c%IkkLr zc#LiiKa-K`#Fb^|m+p%lMxLebShygad~;au=p6ocIpLAb+1w{PC-mfhrTMI`eRhog zW4d#BICm~v@2u#|$Q>QXXw96=?ZlyABsGKl%DA{U<8)fr0C&j;+aI>?ur3J2aRRr~ z&cPJ4e^~rRbQZrBbAx;;(#70uT+%sm&+s3QeEj|Btfn+>08ZUeu^{Eq25thL!i}|7 zC}EfHM~S=Nj|RxwOiWf2H*R;n5zX!#=$U)Q(S3MlMtC@P^(Jx4vU8L4*ia&Fx%uaj z3uD6*LKDIl9Q;ny|5shVR=wSNP`8~cm#n@x|tC_mqirgoN0QY|Q%UsoLD zX7hxw1$X*8vV%E3N^KYSJp10V0*RqfoeA8Qz9SmSl+XQy_k|ri&{KORF{Bog7)lKL zW4(gcBcz1=q2#dqn(~s~^2$0bbX#YWUApQW26~QuWli$8G|lkuOl)bIowzf#WpwTK zB6K~*E$yU{d*^F|Rs15>#OdUK!8DV&ea)Hft-5OE{+3%N_#Yir=Noi;a@^IFNo`K6 zy}u}}L%o}HNvnOR%168T!BVnk?6xWsM^W6o*~<3o>ijt$ci-tzjl@u8iaW9Tg} z7|60)!b6=S!#sTPjcnF^@EP0~oWZTl!$V`SM^DdGe#CmrtWZ5+M>ShrcSWs9qeJRx z7e<=w8>X{Dm3F-zX4mTyw{`}poyDCa_GJ8c1huo^|GIX5-Y+fFI*VJ4LG?8&G`aIUZV?~WVs)*EI;qQ{{04e{*Pk9r55FH>)%gK^N8NR)f1n@b zX7ON-a!fTb>795wEbgw(3XiAn$#LuZR{CgPC}GDBqltkZM-weyUhZ27VSZ)$T1qBU z&l7K*KZ^d2hpD;Tv;3QcTvk%@xdVL>vVkgoLQkqlO2a%*!7Y~gsNc-d#@KFOj7xi0{ z)N{NUEw@r=H7fs-h?S`xHZ?S@Q*Hx2S^cv8&8q1m`V%O>ksXdtitRJdlh|(sJf4Jb zYG@?mu%DRy(#kGVuePSzt)DqSIL&SS_uKbOr{)jzboN>HxIEDFhrYd&EP8ieGy$m} z&@(0MAZ6-xz8ILEu)|{1w*pr4q6yZ{)VlxkapJ+c>oxD76>=Z9-}XzZqCX-h66g`& zs%omze8h*OGhEkx&_!-JPV%V+TBcqMu9)aX3kX8iJgP3_l3q|KZDKOsHPa3 zc~Xs@Z=8?40$Y3m?9t#CoaYAX?s4sICT)_hbnO7Peg?~;P~dqVhi4F9itiGO%Szs7s^z8EY$c^+(s ze=vo2L?mN`7tV0~cj2E2PBr|6PZ1H;x;I_>AU2;s)I9Fmi?Mk`b3WY;}|yiX*5^n5m-u#8!; zXSF{^M()|<`-iT(=Dd%(?q6cB$MC=X*J%8X&CBtb?v#TqQ*8Xc)c9SFug5dr_&vdp z`DcS)vYvdO@%uAFhW8?3GXG@!K4r+n7g_E;28-a>^C0&LkaH1j{4tU1d^-;yY*BBo zz-7?gon`J8@>%q@=UF@XTdvB#TKoM&Hss@rE!V?vaCga3z}OLv@i?nRw%Fqe7-31H zxvd*dxm+dJP{Ea*?xO|AMYjOPU52Ds8!*~F@%Bc|y$5GY^MA508QU`R*bR;CHS#&r zVy86jH)iZHMf{xTKD>nK*Z2#oZ+Mzg<^fT`+TIzP+$^*VWYx z@kKTDb?Ca9W@x`hWCfgh{jk>na5w*s|10mw(r#qayltbf`um@(tM?po!b4&CPw>4b zo#o(l^;&knx&KXs{0&{3EBwFFK_2~;nn7Imi~rvG@v_Omi5zr zv%O>g(51!x%F1|9R1t%43|`-FfkSKZ{cxCZ$3y)0djv<|VC=A>LpbO{V}BR&%UR<) zdjuD|ID>&AkKc-0eQyw~4k@@I!K!8eH1`bV;V+|274_e@V7~6J03I_RJh_9v^!?)J zf13IizDYN9KRBAXm+zk9VB}9@Zs>ksJcv~@bLNa2BfD3FMw}_uj8Epq$ktL^{Pz}5 zshU#tvt8G-GRl7W`f$@7^Fr5$+pFj5-#g~;uU1TNL_c9|^xJ{C_Do=)=T-I=f}vn| zThWEb5{Nk?7IPmlpO*=d%_P4oj+kb*B^Zf@6-3 zDS6q)3L}r@J9-pG{?cCG-CbN5xzL{B-cx)w$2Bg8LbjHBA%Ao;zt|rrj9j_w>tes4 zlU$DMt9Sf^kr|V3i2Ofw4uf*}n|8Y2v(wF<(HU>es$9MK*8?99d_0G>>6TP0FW5Ey z{zSM|#<=Fg^$!Nu`_ZoUj7aHXY-&p8M>B2i6R|vfgVpRn&p)0~{pg53oSFbR+r=53`6ED9X{jBrKP&xJNC@Xsl<0n>Wyz$Hpk#twX{J_G$ zo5NZsBa2jq(juh`mFoARnXfARygm5^GthWC`v!1yChU4YdPFSjGrZc~dHsUW0@eu= zJ5(m4W7<@q&C717IyFE0<$OEc?XkRL&2VNxSf%pd;Y&Jii2TS49mtKqZtS|XjUfbDX0y3F3oIBc^@w--odDl5z9I=cqxcGog5r#7S8g+p|kX6ts)(CwYC z9NlIe4o0RF&IwzQ(qKZ@pL)l2D&O;BZ1=+UpG)Jl?^2uTX`5-F=lQP!_HM(E_6J!V zDR;9LUJ|;PouT)mPlfV!E?RIAyK_JNO8i;DOPT}I^I9%?Y@nyb3)kv}O8X*^HWluH zo`=5*PWsV-3#lmyT|e*5N1JV)Hmt?0F~k3KfYMie&G_j3XtX`!i~Ni^d;F2C;wjXH z$&XGZ?og~gydQlST~k9|Ze3uPWJ!^iTf0eLPcWXo_vsmP?KEyPa;wPBttbBd`tZEw zg;kT-R~+b>^_6n!%nXm|F_=DE0;1=AKe{y(fJHUx{b*AsHIrKT4LiiqScpA@_`Vx= zFp|%X)`Sne6n!I9M>_5$q@~cLCp9$CbEe-|E2!mB&RGBy8d`N$PRL%-4`AS&Sm#C zXzw;BcF0c6n|v%a;GdL{Yq8h&W$3rjto*r;y<0xFWmLu7=HFJ$Z5h4cp&b6L+8Lb^ z@OAlo)+IrDeeEEO?n)S$`kTx^YVq9WZRJmPCgjcy&&t1+_5OYR3s_U99+OM4?XuZ+ zaZ0s5*DH%(k*aO^pxDTi{qh96RO^gV{dT|F!1E`sWl!kleyeN1LQ_`wS=PL8)20Oa zr1SvkstAUy4Rf21*y&5j^D`<0!Q0A9JLiSlkxQ{%g3S+Ya5Ns(DG3iR+z@Qpx#4{3 z%qVKj1^wqYr{*ZM`apIdI%Fs0S;wZ?BZkj)Nz6-zwY_R?^Y*ID;%(&<>`@^!+Dl;% zDSRh0p28eEbyaS={IoAVDl9muF=60i)z+o4@B@VZZXh1s8N2=TEML;HQak7F`KW5{ zk83uJw|OgLxkfGOOx)%F(Lm1&eb+OBcSMi!Q7V(3yuxGO+CR5>;f94)Lh*GwykB!$ zmQ{@^F5WReB$w3Uq7Y-Moo?CLAs>0wUX>ln4r`~d5Z~a#TI*oO88p}SQ zr&C`3b%svYxH@G|zwVqmWyN%w+Bb%0B?*%jb-!KjmE2`l-VphQ70>z6b`F=gB{$qC zxeXre?GWXTCC%Op-|mBqSkBLV!UL!-on=but-30?0?S*0$D0Kn;QrQG2mhZBT22 zReOSHXF_akYZa{bHf?QRdW&_i++I*@6SOTTcqd|uRof0na`u_YWaj@{`+Uqvz}x%& z--m~sIUjrNwbx#2?X}lhdvBA|vg{ivlFz?@LnIFCYZh1!o3QRe``)p%k6;yWShFp# zZsM?Fad8@9wj>Ifgzb5q1>yn|;=O?QopBKJImCbk;zADb+i?L9CGe~U@gfVv_u7m; ze+Up)jDtwg3L{EE8a~U4ImFFz(x0}#ia|#$;R>Ij1?J->%*O$<0UTx3uB+)RB!>YExdWFNPfhRX83nic3BP32{Z0Ofi$Y|%w zfYY0UGvwlFvWIu%8)+yNsosmM!ZTb-@`(~1&0DnM~ z%!eqMH-<=Ay!yoz%CDU$<-9L^QO89cE0lg0?p*hWFYUOr5s4y~9{tM@K=p={nsH4@Khn}6`9j(HP!ZCQ32k&61B zQmH;N6Q1R3k5=zN|Eq;(I*S(UbpSixyb|fJ2ybI}^R=l^n-s!WUgE6hMdi`~_0>bU{R@t&^tpOpDY3 zhr**5@0kYr3)||W(?Fd7{<}M;MZ|__(%&#f)kk~{_0n^v3Da)X;fMZLgRrPz4K1N~ zi$R~q;|6{1R&(@u5KsM_KDTikHTvXpJZXgZGJopP@xGo@$E{Q6dQP2{I(26Bmd(rK zv{`~O7r)@r%Up>&iYjN>BK#`jv~l2`=+eNU+x0JJfhuL3DmKY^ysUO6Y>cTYB5(0B z_}LK)8AF#c&?QF^&$em3KG3Kon0sbW=`Wm0WuVgcL8T0G2D)m&xrvI=vf7JrEgKd5 zbEG+u6|$tyH7OQ-tr?5{Y=7eA40}5({apOgRKRN7Hg8?Z+K#ILuMVwuN<45qEIAmSVX% zyEen_$dV@NG)p^C`cHakl$7jTn|Zl5%djtSEI-Gwyf(W+ULVxzK@_Xw67Z=wcxk@` zIyG}T9qJdR1!b>ig}iu$Mjg$|A;eb57w8uMyReh#{~NHKeNu5x(atvz;r7ADLYV=P z&>LzXW*hWHg185!@^AI=xl#Vrv=#EhKCOO4z$NRrkYUd3Tu{=Mt;FAKX6_!JNl!IX zsoxPj&tx2c+G#?49Z;Kfs6pB1DLiwqh~n!-XWT_@PC@@T3J!1xb4&;WfKXvVCX73Xj_5@l|vR6Fg6Ep0w3}!+i`dcXZk+1jY#-s4foK$Bcrb_dp25`XQcwwIl zz3JS!7C2NG<5S#**>M?W>_OQsE|YIri<-eljq*vf;~}omlfZ+bvIK#+2-u^v10^$T z4RFt}mB1v!mIH@+u>{g|`$$l>0a}F#?R`L7F64S^EMLvZfMz<^5ic#}ywt*Z$)6#a zdvwgGmRDaO<@b1Yx-o9?tOWE)nN$$X@Ad3TdM*Xmx1g3&5k}{7w`qnZhYsB zyA$%L7qBUQ`bxj&g%xt2F3XflvqFAc_X_56X;hw3L^(4Vc5IaR@JiDLxUgxt{F-S` z_$4Qom@-{r4vc#CxH<1F2e^xIDYvy z$6$X*>#3kT7p13JFc?eQF4UP}_l>TQf1%T#D10TS@KuO?X4sZdqVQ2uS|8`xCFyWZ zTJJ4FT^7&i8)|r{SSso%gtRswqo8XeMaxNA>mjYhkk)*Ov}}lDTB>8(D9@U|TI^C@1swZo-0>Ou;&J-_*$U-9Exy*Uq0VMR~wC!yKsH&!uPvY+;+& zsyt%CnFKg5`!pH=&NwMLom#FuqEnapcs}pr1zd`br~Y@jA~d$_LJm-=RMJz5C;<71 zDIZag>x0EoDfhPQ5{mR+5up&jC|0mvl#u;p{HFKxG$s}zqtO|-1iIBn*>K2HG@?Qi zq!)$?BW~TF=tIVe4;d?k_)hypC6IOVrdE>Y>zSEd6QoCngj$++`67kA8FpK$FzUnH z!q?-Lt{f_f5Ul3}2$YAp!gUx{Hi!>mgY&O1dA+qscSHX`6Pj`baYMWb(nH#LJ zGd2%pGa}Ovz7GNaE1*4F^f(vS)MP`%GOQux)jb`p$_H&)PY30Dnp%}_cN#s^g0c;< z@iS}4f69vtw+n{swXMpFX4x*3z0)i^drZD0Su)-;V$mD0$h4eE((31bMtPG#!dl0C zF-p3<-ZMcj@vOy$LMz@#J{vEIxH&aEdx;tkHTZgM^NM#H)cCi;QTPhEE`7wKFtIelwX5YWx6^h*sr0X4$7u_F;WYAiqh_l0ABE%j?fW4eieWCGr3N zoL(N+_`E1eoIZ?MY+)D5T zUa-_t&g;2BuVweL2{^uE{tn; z#V7DuR+zPrWjMU^!9P{Hl()YNG_8hb z82xWEX!sA57JWHfN_hQYUjHb&Kbxar8DI#Bi7Co(Y*nyx56^YKFHT&hxBvDXmBGp? z2^8t@;j0=x27N46N{+b3J9~sm#F<-_g=YQs39U+*1^bg~N6g1@2%0n)WtXEBnmm*O zYVbDj*lonuRnU?h5_!)wzX*-Vhn7}Lg;byAEApk$7e&aQuZBOMRsO|Rg8~J>V2_21 zPO6=;LXN=#3kJzdHR95g``@*iT0RvcVD@x1a)k$01rtB$BA9DUm=gf=HVaIvuYHug znGtGv2Yj5vvbiw0{b0vVWvtC0AOrLGRMuGy&T z>2Y;gJuIZ>M_C)M>!WzCu0M0_O*FQ>O?aG)SA*k8PG5-=ZCz#!SE7dh5ON%Am7ekb zcujh$GMcPUfj!fe_;!~eOB$~Vi65zBd3s*l;I_&!+*X4ug06#U8CbUc_wIW(7l$^oomT3QU4~4s8q|tW-aSb%Qco-th1d_b~F5; zQ>Cd9zdizf9l6hZ)x_;u&a*?B9>*Gr+wD=$?KV)(7VTbY3rrq_R*>uTI@+hfU)OF> z!Yhfq4djOrq*1nD6k1ns@N8|$;&$paJq)YaDLHzak>Kr8NEn<&_Kf_yc^Y-v0JF=4 zNij8F%!;|jm#$GN?F4R)UK^jQyd8AxCOk=d*wAk-vo@-mZ0wIk2O@TZYCm+d{Y}En zDN%mA_AV&!tb6Ve__(Ay({ZpAK3nRb&djr?Fr2OkEkCb z>&wTnr~4D?#|LbjI&O=u`axRoJ0)j?aHW~$H~Xmv57rrcGId(3{GdL^rgb11UAxmB z;4G;LQ4GwWF;U)WmY9YTx0=+em#lW|DBH+O4yb2E588P^RYec`BW<3UwL)g_&BP*h}B2L!=voU5s|OO$Wsfw;Jtu%K=hZZh1FQw$DbIsokRM^ zX=mg>hdB2@JKlS@hbEsS4DYuYw0OV{uWy6Fqh;fy^d?~F!nmIW6jx$cbz${Xo-R8( zIX^BiA$3BdJg^9m;NzmXuEvi+K!EpsgKkU84)goF@x9$|)Etz?j;{41h7DXIjl_N6 zp+lg_&}-kSr+JQFF1k>Q}!5M6q9<4yHYgE8vlK_?M5e_3m^YzMHpdlv3M z&0>@ze+N-i({N9wum&q&J5h|)U7N5T%Lj}25VwdA3EijN{yeqBTaN#}D2-M^;x5&N z*lqc7;*yeTaS`G6BCOo}Z9YU2DTfCsxdVALdh;)ck4n5JPirtJb|)m-R3~82jG#ri z(!?_YJaZW}LCHE&jj~4MNpuCt(khWEU;(r!4zpw*O0M;xh1{1J95W{zW%ViQyOKyL zxD6|BuYQ3)!f2aGl(9VJ%j0gDv2DhgN+Js{4HO<|y)$=vum=3!I$?8*jhhj8h%^pzG;wnG)7p zNnW&k?nNs=Z;rA{d8Wd*p+8!bv-1o(J_cQRksfgh!gD$iyuKnf5fBdwCCDn$^hrf> z;(0lt0CVk$G){$F0~5^=P#Am-s~O=z6DDDXd$5as?+3$`lIJZ@i+QeAM&s%Z6PNE! zYf*k;>XmCH>s)4({n4D0PLlosFPLMYPoGOq1bz1VS~}^O;gi#zb@ON1??avEZ$tYa zjh7mZ-UjVk$J~-$$K|7}Po?{Ve)qfs_*)Wn&xL0(D$FXDrtpPwIN~GLU*r@Sw{xap=tI>wk$G9D#rY80&or{ ze#f~Z#wpkDb9Vy%hKb0&o5;uBBYsi0By9=NHWAvpzd@WYBrYXAWv=X{*1qH~=`7*x ze#yV46A(6S4_yMhg+x;-hi%#%2i@~ql+TUBcKp09&H6aD`#3j~Jiyy%;klQ9Z%KrD z@g;EIL}X3ej2L5!@|0Q2B-A46Ru=ls9Nn%(j_Dy`BE}bb)-Odd#^5(BuzuKGVr(L; ztN!4#+a^B!2lb`Z7j3)9Ht{=uR9|ZU%C<|IAdxfzi6N0|?KH014iA*6B_dOHQXqd2`7B$= zUUtH^r0>Yec0eAD-^RWc6m_sgurd~JwufNtA^VfBR_#c$Z)LusjB%b zwN*YZuJgZCLlJVM1$Tsof9ugO}uG`pEr_X{}1J z9)%&SXk30#zzTl!B%j-eHq@xy(agrMTGH(DjDg*bezDe9r&&K~HV2**7jn7$WLwDZ zwHZCz4pI*HjRjZ(n0KdfYsROgEQF%o0Rq2qqaqjl|nD=HXtqvRtnLUPA6vS zLe$-fuW;vpjb!W=@H&ma^45?}Z~4QfR{5oSa0kf@Vgz0$KQJ!xk6alC-s@|kmhEbU zoTg)q`UF1tWLe|w3T|t_7lw{vuxcpc-sz0+~#(` z3qiEnk9jq!SI=#Pm02;b zarYNDz0-j*WBOQwu|Gb8Q!kfOM;X--;Oz!KWk;@rjX-OWApfNX6&C}mE6q`tD51ut z^Y-pC+nZ)XBUeU<3m5EfSkSI?nHdVj>s%yfd|+y94C zK}1bywFgBD|FHe}Gqr-dmfBeQ>1#S_^VH8*Yh0PXEl;hTy$pZ-vme3Vsk2|h-e-LrZ`JI>_*=1MKs_58cUN`1sUB%CGIpn>JfGMTqFp%S z5vJ*MoQ90t!=pjjA-2eEHiKqg1kI-EavPKjJ-{8=ahkLRWjEIhvr~?=H<9(`sgsTv z@3i}g{JxI&cK5j6zG#GaD%L?g?%D9nN21{7F^;9mTU(9V*MZJc1l;MoTg&PEkWOc> zh0Zse(&kVEvjWmgFx_E8s#!{Z3;x~b(>UnGxF0Pi$^Ibas9mbuXx6$3ZEn31wQ{e3 zAu;=6jeYAkz2DLJ^zEB2+OWQADsa*DP0Y3{&HgiG2b2mE$~HiG(y!qjgbZku*$*nb zPqL@$tB>{HVT?pxT_#BqeeoARDnb?^m(k#};oot;SWbe@w`M8L9!wSbFW-wkvJ-c$ zM%FXQP8hNI3cY@#p7-Nd^euXN5%yd8xT`r_u73W}DX`tDu^x?b1@AKC0U3YxCn@Sc zdjdJ1!fM#AG+UiotXtqqmB3oGkY}NO9qp~s+e`Igbycj2_tz!^S}e`xr4~cFzW(0j zkt-lq6w_L&yx(TP_~tcBm5bUnnh^}^TAeg2Ggn}Qr1kGnpS@s~+=<$MsY@hU(}&VT z;rN;G5%_dYs%g+bgdR$h9s+LE2OmTC;oFa`k=UHhJDF66w2|Xa+Xer8j5Zp#LIe6l zuAz=%H4e>i((J#I63CQ1%IgTZN8!n%$nH`u6)S?a}bM1XseHa68yAIs7VcodnFF8zL(kvdy41ROZ`RIdn>jD`&WSuLgKs00?ZAu&lKwXjxlB{uBN5Rqh_77 z58OhGF87`jIUZpfX&(T-S5~of_fQf16<@)so2805{wpPb)o%I_7Q$c934ehot@_Z@ zs=@6957}a?KJ?CR{g5I#R2Mz7$LOBC=?md+=o5-ytyB4Xb$sX>9Qp`fLtoHpx7&A( zV9!9{!sFLteZRp(x=ZjEMLkV_7u_VH6$dy-sQ#KUKFi5fr#CG z1IAstL|oJzS}_QynEl!VOA#eoDsS4V_pdSot?UmPy+jnF{P~6Y3_3kz?Qdg*7-2^; zMG@pMrwR?NWQqS@0Emmt(U2f6h*|rdprHRVg^^-uU%ZaEMm}MTrOJGizU@=-IWaUo zFOKx<2z!WjIN%uo#nR((jZbKQ$L`RyH>u^WhE{nM_aNO9w%3iYO&K9DiPOZ>Kr|KS z($kyplsu~%O+%Q`X%zhc@xLoL-OTlWN+a-eSn#y^U`E(t&__tDgNIP_*DaM(Z3e}c zprqVjrTBuF)f1!9r;5`j0J*Fm(;mtvS}L3Qf66LAd({HX8j%=b>L_wQbh_98OYqa4 zcs@kn{--E|mq!j9X5@h4vEN5b+%Netn)V6ag;n?!+lbKwbKRwKjoG%l;bA)HGuqaL zHEk53(z2UI*iTGsYNhCVg5S^im8cs`{Je|!;4NdkRkj1tvld7v)lKJQGmWtBQ4J&P zQM!t<#FolCO$c8Hgl}3PlyO{WL=_~+zXg|T-V^;*QSaQUUc2t~ED2Zj+7fw|_2%RU zEeTilR7OYG)tD;?q8~nvSJe+hqQn5Mnn!1;>@zX=7BHA@!GQ9F#*fb=Av`>KM+xlRr=!~nV6l)4bm~&KnYtWPY)z2fj?C zeYCr&jxj+WyDJ~J4&;^d3|{>%TJWzzu0O5of=Aflw4p<5rJumFY{2z4P&NhDu!n2F zC&HGldjtp7br_n<-NbACs=KM0zYBgHn(Pbjj+2dcz$VU3U*5crM4K5+fB&7n%^Q1bXpyddLW=>~o-xogJgt%6oJO6NCaY>{q#CUz3VG*F=^bGe z>6&PD@08s%=21MsnV3CV1IjuR{iBq5MKwNCYEb5N)YxvRaqM_6)0~m(f?DZqu61uQ zOa2}uLza?Otv|y4Fp{I0rhjIeC6A$Gy``j8(~n^NzoCC>rDwo*lo{!V?M<1H*Bz%U zJU_A!AxS(7adHo}obLJ%t*yWva(aB)+Z~nVJrz+u^5=F``mqmBH%bzma?B~{9^dI- zw{7;1$sAp3iU0o{*!H#Ode}OeK>rhkxJ^)teUYg@Xs6tA^ux6yE{X1mn+++`@El>y zBgPYo9FMRoM_@9Gr&n zass0JwNh=QPS2juyz`W^ScY+md(cD0{`sf054x! z87IH52fg`d!%KnkGwyxg1-8(AVKe7wRhLVDd zI?o6KcBYgZZ)Q(}@xH$l`6^z7w&oGFU_8m zO{QN$oq)r)#Sd*_kPcWxG|hk{BIZDuD2u25uvvPUVh7^3(6$G+Nvd56eJIvex-$-fZ1hTgZ-L$`SjQ_3p1Dd~l@M%OKhpYUD)4hfP_HP~*;3*s1~$U1J+DN0{q#%l z=P)KbgCE*}i-r&Oq2hf&ahGoR=bM$IAwzDYb!i#j5Pz0CAyN= zvsr02AwL7iKN|;meC%X|HFC&P0h!`mHpD%$Y!-5)nw7LUqV5Hx9TrH|Ot=x|$LGkhi)y0cEY~BTgr6}iYu%K1#|0W z<*OzJF9U-~X6DZgpwbO|-csK8{uc6HfX>i44tVxPF#i|)71A;6`B9E6hd!Yk`vTKm z0;BB3Oj(rn5SS26v-h);%-$$9>v;q9yyi1{gX+0HX7w&;cJA})q)3JI{19+Y+>#=1ZGq~qn)V{t3cifX1=DAHb zK<9R&4b;LBb{p2qQJLKMe;Q@3(=iTmzvT_cUhL)+I>I&e4P$a6Mp%n__i4g^Dey0k zQcm|Mo0_2>62rxaqkYao8Pyy!8S3d5#!_ay?J~kDIb|w|GUw6RUcL3?B^YIY9xa63 zKz-CL*rDC%R~K3;B)*U)nhJ@XUFV0hnN#)sRd!C*Q>)eiZm^>OK6|4E#C+5Vmg+=Wf5rc!qqc zH;LkZw;8=ud*@O)&q4{S-I2oje^?KEJg$(Q;(hg!S#rjm&B{ln-EjlfTGC8|BI$yZ zV)thE{)O=Q*Z5fM=`4Uej=c-myL9ZomUeRN*X!6H5ysBFufuqTKE*tH4X27Pa5bnz zGQI>?Evg(uu3ocJX5x1Z@Y`s?&pIzlvDw-3$SC_J=Xb7a`v3zN_!$aC^Ydod@Z zcN5{U`#xr1&2pQG$34K~NV~zMe&FHP{Tl+TVn3|n&iHp!5$l7A@)cvO?iBk~2K&at z<6uMX3i@15tu@-W9dIM(g)5#j4^FXfXTSpj>1U7BMtji%rWmM2ON1@KZLoof?sA_A zy&KSPus|P6_fAC5wfV3I^B@CSjSg)+&$w)sSDMfyKnqx)S^FWyT9Gl~k@Dik2;$-S z-Nr8Uv=isk{Z%-tp$ax`RqrJ5-o&0!R*c=%n&l7M40?PU9@teYamO{)^%BifNkdW2 z5p*Q3t7BvXrdUa4@}7#lRj`3ew^i-#y|t=$Cw`UMs&?<*{KajRO;x+!#ya_$L2|c_Gy}LeM(O32K-?ogOt!gtW$CD}c z`e+sBsn1~78RDNs{8|>cgkQ@8b7=&X9cEp7P}e?7UDlBx#hx9t`SWY5dP_i~5-y)U z$fr-2&mX5MImcE;s-?dV8FS8R>4TxkpsiaMfn&sU1 z|DS*;`*Sq6&MQ;M9?D^M4@O;JhJ30SgH?PFImerHHGCb-@^kZy_WmAF`z%ncbIcSQ zHfO2T(#oOLae_jScOY6r^SNgE1``s+1KKQ*teIpfHei7?Yp9B663l!j2TvUCYQ+CL z02i}%^uG!BW57-Ma_zRxP0{}rxTDZXRp%Y^f{DL(;mu|N=P>~P&8^s}zZ~+_wWSPN z2H14u2mIi_V279cv76I@3m)-6>Yv(!I!q*&%%NI07xdCOI(g8aTau(dU$7aJYegNBp1DKW z@Z@JF-@Bi$_|P;dW!8}T z&bso#nHduh(`Zg?kFJ`WVde++x?Bsx%hw7=$ zQ}bu%VSf|KXrgs2*3*OB*ger!yF{67VidcxS)SZ!U^F%#JjM29)^-!!Qi%UMBW|AY zxI}r}Ec*t^_L%g-DoSpvXzPwrYy+}cja)M$^KXf=S})xwubjVBN$NS;l>4XImMc>> zcv z@;L_O4z7TlyOF!sLRZW=R)EWJwg<;nTSJz@`hUBbp=hfO)KPXOou&g@+(zfsVATMu zIw6A7Jum|xeCd1gTRef8^%7;9i9>-MRQWtG!ps`h)xEH;?k$1+7L1kfy_Uf}dRvbr z;eXiR3=|-qBy4a6^7z$_*#X@b1g60HTA~>K|319sE0xZ&8h)a3Fe@V9XlQ#19cYs&{nu2Mh4s` zYO%YFP}I4EA{I-OO(yI`fc=sM_SkXZ`XuP%C+o9RN<*SbaJrAS?j@;Gzt)>@t^%BI zm{y!0D=ZBwPSZUpHZPfn=nLWU4#kE1blTNz15L^(&b?~wC_*H!xR+MD2QYGi|K}O4 zzXp&$qhlE691{kYEJiN6y{M?~Irv6scWcsYxs0+D8==+d4I1X(<-W|Kh>^En94&!| z0D0=j!YDE`tBVmuwmvV${ua6W;)uP0u&11iV$3xQqdPi^dQ({cPk5Jvi+c*;ms(I# z2=ASAy1+lFwzxO%a-R`TfhTf*L**Ux%suAW7x=Rh{=OH#OR&>AGXA;7C;`O%JlDGs zYq}cSOE9DUeAWj(r#aIS<+(b8MqBJll>YV{hhQDkIi8;syF>Ni%ruHqFHvqY%ian4 z=H^@BaXR&LybMk`!))q7j7TI`6#4Q(JKA{s>LB7*PDnj@UJr_NJ`QCGcWpNEm&qH7 zGv4CldxeZbDm8E79xj#dl^SjM8t~YmuYoe8at5SwS8N8C$~tL=E-%>Oh3{JBPk9qU z!Y4vBVnXpP_0qMU9J zVT;vbyq?an@3$Egdm8m@((4JzU5LO(pi37*f3AoAj7ZiTtR&kyrrz(M-VFQA=ya2t zt~cTS5OC*M@W-B>F>5{+jW|iREIU0iQ~E04Xxup#<7)Ds*wJYU)*ZY z;0@r~E8vd%JR_2IkBTHyGePv=j*Tt1)FQWoIB}*_dkWmeHN#A)>Qwf$h6hFdmdMwd za8Cg4S_@ojBsYopKeP+CmuE`J_ly>J(E_clv}-B$iBathcC74y-v_gdC9<;C!1@%R zJ1o$xvDqYhnsVH^9WzsU4bU@e5B74YN1hn%WlDaBPV9UsV80y+TF_QB13u3?!XC^9 zrr|5PbJP1kv5wC)ocuMTcLMCk(w+=^KrIDjClFS=&Fv;uXP`wkcjjnm-B%)s_5V4n zzJ};E(N#OY4iwxdY)-PqjPYx6M#Mh!3rmvhGM<-DSTDr*-j3XS%KKkp&i@;+Tm2Hn zr`L)ylZlIcT&D*Ooh~KW1T*h{rW6ECv>M%+dgx`M%?#*D%6Fi>0<1L9+IVl9L3uA~ zd&Ja~5y?6;PO><~qIJp_zDE={scEancrXKVTb$&kQ<`d?hO-6p-mH(%j;#g`H1}H~ zyUjW$q0UK`I<2$lBzw+M=bJ-X%c$0Rj4IQ5lk6!(zo$#naS~bmz}3o8&UMpuAN>;f z`yr!cHK^skSLb?trhci;%R!;r9a!zF{8I_W9jC$jwBO#Oqgi@s9D<;sIAIUo7HwovJcX^+9tws zA}uQB~FFci&`GrOwTZ`ZJ7#-#!oWEx!Y^j|5?<3 zFqrEVt9_M3{(p-eeVHl!0T79+{n4q|`?#v(i2O}OEt zMqSRPW1nBGzB=p;t@-XK*Ccn+!2^lxJbE%?_wJ4MGwba_;!d;HXG@LNZAYzrmRhYd z?Ib%pa&E0OB2ca_VE~IrzTSlO2w>f5fn}YgCfV-*Yo;_a5`abYP``HaqYXUJwM7cq zX-y~gg(%l-pe@0bhFZ70VMh&Vm%7 zotBP+($z*#91)K`SNjI6ys(nqYV=btXggcC@@W49;@%{y9})dxZCRZY)^E)3g!OyS z=hUrVr*2<3Vg0_Hbm;aKglVa3S*Yn1l@pM5@q zTg%4Gkdy2f=C;;d5FX{NnPb-c6O?{xGD>46NfC9eH7}>~F=kIpB3FQ0>S+I3qy0Yz zu17nK`T~&c`twL(U&@2ilHW!AoP2vUhJ}@VCX8R9*2N~y0Y2BFRoz{BGE3Mb3Ag6r(S0H^GE8D}$JhS9sl>CFG-Y;Tv>^|6P4Z==v$eHmKdPHiLG5LXEpD zHI9`_o4NZyfz%ksI_Fw#YJeGyi+=SL53&hI_S*R|7CTh|V3Z?zM} zHq$TS+pt+TL)~*MbsvYu#omJ6!?*(TaeT8Mb8_0#+6yVzj{FMBVUT<=5s-GDnidxFO8ZEh#@n4Md= zJyba0f|U{5;)0EP=vMlT2r^0pH$wlzb4br!y=&IFqTTrK>7ZTz=4fT0?Pp;{C(Tq` z;P~Ke^nS-}E?6nF3w}wn17~|7`~Q#Y?n%zCg+o%I^gf( zw#r%9DpdnQtt&FZ)*uHftUPQ&j{y4q9Q3%2@5StngBI~5yIHj%XCuQ#5g!XH#{Pee z@-ry)qg*N2B37QS7~`KyvXE-*6@$LyXXkcfN2fB3I|4uFI*-OcNa7r zL+wJ3QZ&ivONndQL!}07o(CS6>Ha#(g4cR5UoGPDOgmK+VXWBaE7B#Ju9`#_!RJal zRTN=fwolORkR1(Pa65{k_zqqm$GjqajU26u(@sLDdyJ`jqq9`|FwCSQ$s#vyupRkk1J^_5{a+(|a?Zu=Pr_5!8Z57s>J@lC6@ zq*KeT-c}*Z@<@{g0Eg>G%^QfFwNZ0RyY;Dd+7dmrqea@Rn|jR1|HnS=pwv`T#utvs z3Q)2CzX5G*eE+6FO;duNn+PXp9UD(1YP8#3Y3?2F*15w>^K$XO4|%_b(k zCdfrY4in1hAMb-#*#VxjPX4v9d9q%kT-LNie%aCrs}Ejf&m)Ge<)mw?@1G>zmyejE z>~xgw(e0&XIX)XWSaz9imVc*bGUd)zSRE&LZ}3?`Lri5~$&~CZ)_K0Tx7fn#4}#wd zV9!?~k0r9S7!inHrHc%kMQ$;1xDc(c=`>ou7&gnom~|dSGY6H0GVriUZ()BT^6PLr zLpJvR!ReA{$2-0p4C_2dW%Z^%#V7qN?)4X<1>_Yf3wW^$GWk^CbLE*n(^SgzaqHfT zu>Actz~pBb1X061mKv;4LzR7kd8L-;=93eE3@n@YA9c8khBKl%+s#ex_^U6QlMfph1vn*sKnz}fVY{R!F=uRBz7 z)Xq$3%V zhjqxMqjZ_9w7MS=8O`!^v7IbHGR9>K(YbJ5(?r`teN(Y5VY!|PNLvvIEzog1N@ETFPuX%}L~Dtn9k1l;pN z^$gyeCp{8(f-lEsN?ndIe*pElFf#ND+HZRU-My&a74W;4^t(cSw{Ohde%!@wcST!n zp(~Yk^Iuf5oByIxhs1)H$PBE<(b+3-C@4R*l7q9M~hv@AkQ)-^1L_jrjXrm?6>IKGb+XeTM&i7JmoTJ-))Z1RaqtyovEQ z2l?MaC@CdzmLlRgRC+s|t4Pw$^@SUAO*h7R4TiQ)smfT2un{HCpaA*TzvMFgVG8py zK%uC$cK}&{o5TcV?RBA#Phj3pZAL^IHMselfW8T$S07K&75#61gX6pL%>nh80FMlI z(RV`!oPY)LOY@5pf(9+l+uoURaj9`31CgZ0$e4QoI}Qmw*x3hEIO3guLQhLhe;HtT8#N0d{JoGivr^6xb_Pa zy&I3GUFZS^pPU2L3ZrEmLFisb<*m=VZ=&aiZW{mG&7ZgM=U?wf&I5MZv-j9`iZ}&G zkoefM)`k)2&`l!#y4S*+7HwJU9E05fXku!Mrj2MEGxpO#Za~z1vxvVfHzOh$?Y`L_ zX@yk$JWcc8+`c>XUH4l0j%vWyYiUOvUAxuM4A~ZuLOyV#wo{X#VJHj2I>I{#;FIa3 zXtW)fDWn}RpHBGD5-n%JF1f%5Vy%s@soPdzmFI{1spSsH%$lS&ZaRR8${xYI*xp;Z znRe~F45J>!TU7QnJjHIaJl2A}LO0_y2=cY^u?xBWae9XFKS|eM$&oI+Ct)jUVy6#Wd-;*qnv8|~^ zZ*hC4oxGrH+Tq!4ryYVZieZ;8@MC)sQJUi2nEmeHyF6jGi+hDmwZqrBb{iOxq#e42 zqyb(ioy&}OG=2!ff8kz}EZdtUjE#3xjz*0Ek;>Aqx5TkhO3x071_iotx|SO!LkKw8 zf~-0_B+3oDu6+qL_Hi6 zjq)}~0qs8)t7Yt80Kq})$Rf^hJOdkvcx}DGYhUm8>20t_?rpI3PDV?w=UG+mL0_#s z(%m5TGPa68$seF^7;DMWbH>71=wCjTk?)^s(sZPzA@7BxIp#7pSBGXJSUAs+v49TE z#-Y__=?$Y?u85sOGxT6ik|~FdI63#E<<_zH-TYqfl{)Gb($P7dc1Tx&gBklULvk%P zXeR_{{O*wEqL;E3es@TLIQ4}HYzKKP+l!uf3o{$U0l|UR{+Ph~LwiGdfw6rkA=HW3 zd!97yTk$)?m7Sl`8yH{E8+?2u+#iO;MtVrxiT&KT79s62mB*17_W!dgZ^lFx6&oCmJBN_pix zwh5od`eN0 zeUqDBRgd_nXU6JZ!apJ{RPXao@8j(W+XqM)C#<<4uac6aEEc zBH5)yxT`Yn=HYIVd3Pc74@G+f$*)IlZ605FlVUf&sKoc9?FOs~xMSv>7k6jOJ16cw zGVfp)>y|?|+Dehj;3m?@Xfa006kC(ZlR_BLS2qZWkos`5EkI{vde8=YWcyUxEZ;Fi zfMBOMq4gZV(Gguemu6BzBB-K=!cM-&PLn*_h%6`@>`n6BehpKMlw)E7j4d?xC&Wp( z@KU6hF9lm3TFdYh7=5D6&k-p=j)&GKSjPtoD%fH4;6MAaYlHR6u(DqF-_cXe7SH3E zm&bxaA`debA0!+rpRqG!H{vE?Wx;B#6(aVt>{0L1bpUL&koRaH;JHYz}X!KQ<$*|B#&uAkp zWoEW0U0b1vwgU1_vRBF9fwqjvU$;q}C)gd@fgr9|E*t{-jW86;bqT9*mM<)|F5aCO*JF_lC9#A^*Wz{8p9=|B} zX%60vFTb3B^<&k@UI-~48s2r~stHZX@&=<_=g(eX>)@Fh2YIGO z%#x{*VjeR?Bc!-YSaE0xpQ$B2t&O#2hDJzv&G5eCtgNu|Hz7wKYl|4m13u@r;!(3S zL+RgoP#SUITq{1tO7#qTag?Y?-b@)OFz4Rn6e1YE6LLS9Jh-wV6@81`^B zexDFA8o=A-#GFv$mn>Fh=lbew2$*ngE<#`3?#s0b^Xr(^N3Zo&1oLz)XCv7=oMGHQ(myk6lSEHAZtc=u1!l@}-0xv?1S*)$Blq#`?`;V(^=(EXE zZM+g1MuWfJgx@!zNj}+W^v7L@adn)t-x6a3D#0Ikk8q`SwQixko4Rq9-V}ajwzGKLbCUVI_U~wrF;L|ETt)Aa!&aLNmUe8*yo&%_7;kbIN zt5h`#uj2Kr;`LCRFPQl3cEZ=p|5FYF&g<)an!BYlM3 zkgQTYU&n^DIJGKl)_W55UTUe=n!~HGgE;H&eA>fW@6Rpu{@ARyi09NDf=xnWy$}2| zpuUe^Um#4lK602}z}gS2#CaqklA2+nVvKux-GLcDtVVj_6-sJLSB) z7o^$OEONMZh)(kiDaQK0M#VENqfJZt1vVN1;&5No9HP&jU2J(m8|w>dgP=VAwZ zob1+4@>&1s@+lwOYP7RvT9Z6Im}@7=r!|I5+^H}j%jF-LyxG$vWmftR$L9k((&ck> zZ0OvjneR-|PfXGWRTW`)7t!y zESPXE2b@j|9BYJHVc$3R@T-x&OPE4>DH0u$f4$bALJ$zHu|Tk9>nUuz1(W-!C$>z9 zw%n@eLPTR~NjHa0%}pFfD@!z*)Z?0DKjSOSxo*tG|CP^z1Mc&UrM)!L+cJx zrq{l?^u4p!w!61dVf#jre@lFLf~;EG34&Wm@+E&5GFvktEQbVxx?^Wh3i~$BBgnF+ zFmKCw8+Y{EriJ7^ttbPlrcwF*>?V1wo(F%AcO%-L2VF`t zf^%22-V)D44Y%biN^|{xqw*(E`p+hA)fg4ewNezeWYiIHqvvsQ5U5*^oi(!TuQ@wV z&df8~8V9_883)hWdm1NA;qWTKNqO+lI^mBP6VZ!+caPHA}w{d_nT02Ev&TZx% zf4yJx$%6J=lNOqqlyq$&=2>DO|2Sn{iUAjTD2S5>vg{YCE#QKGlRS8~L>e~xOq{8p z#T|q=AXQJbN-!Si*=^3j2irYQV3*^IyyH>#z9bZcx~taeWBa zAzYCsC@Sm(vJz-TGR{02dU%Oo=B|6lN2c*HXJ) z;Jje2|5GCKL&|@(8=8Y6q_o%Cx&LPdk`zxrE0$v*1^9y zjI*CT`WKY#@(|v~ZdWM&4+z?-Zp?xb6Id(yyQ0*QC5#s+BD5Xi^@ZfZudhyKKiA*oxSr>T84< zuCMD?I?<8t59=6v8#K(_`qiOdg$A7Ea|<%NZ$+-vt(U>;BO>4H0rfTP&-j4)x)0|n zLc7x6!-4~&2cn;_5w@$Zga2MlHYovpOlndt*D>{UATO=m)hpruYW(-LyCRL0S%n>2 z6`cPUl!ZpTMUHt4YhK7cpmAQ?`&-Lbr5>%%l0Vf^1j(;U)e7iv8>o1V~!M$JoO-S&AaFbpH(Q@8|cs(7ra5r#A|_8W02? zL8ZUX2$aVyBwQ-#WX5jJj*(C}YA&@Xb`udt~&QQMAKZ=Nc8z1U4e zfcBiopV|2{8%9!kSC0QAn-BIsreX)RpNh?5KNX{=j@1xT?fSWJdDMZ-RW+J zCwm)xK`{o3jZpRr#WDEV@_dz$UAheZWumMDl$~YJ!!vWr1Oa>9=-*6_FO_!-&@7$X z!dk|H!!a4pt_hBPR*Yxg;8`=d@0_#;j}C|WRf`aJnx|a-5!nr8(w|_b{z>)5_jgSA zw!2T8_lGa-xU{25?z!qXEU2mBE7PQ;A1wYAdA4J(D99sK4;&^gWY76=7RtbTUd! z!GCw>WLVLYrN6{GIA^!X-HCTNr_G5IUOpFx7Z+IKY-QLD?n=ZXP_BrV!|4QL zO5qJkIe6Ou0XS$8k*UCd=9mT+&^kISnpqMKZe)WI4x$AIyaO~laDZ2$mUs>`s$Lo= zAp^8?uI$5H)q0Qq&tS)7XjVf52|Fp~Wan1>U=Zio9Ocnk^hg$Z7BGR~OpMp~3hP-v zfM1kiM#z{ze7rkUaTL0|Ry22(w}F33w+Xus15;m+@`p4CE)znWaum=y(lTUueXAe4 zzK8`c6iS8AOuA z0wk6M2w67LA*`(<|4oUs4fEdWfb%HybvunKCDNAoWNvR` zZ7np;hiS*&Y+VK!e|GFiUN7xX3t{=vb#jAeckfp`z18y^JAJ)HsI4Bg`EjBYaTwKW zlPa1;aMYdTVFBMcc)b`0^|7G@@qhIFYN{6zQphFrLOc0hsuy{B2fsqUCNI)v%7Z~q zZ_nNMf2a1;txFod!_z_isi(ID7?s>b-xMyge6v-1f_HanCunQ7qrnAd5!Gvy@8vMT z)pB56NZF&WCqfpw7aUO(Qo7fJ=k#+PL&{fg#+~!N@I@ULb=>)68#sRP&>QMP{9kaO zjjt?PxC{Cpy0tBO7%Lyiuhho(k)yL88|5Oiw%O|%<7l8@W=K^7@YP`bc(YkAz|NH`o~cWVm^7`5vKmdC$roYKb(r zt+#YjU|!qqs!enbVGGVu>jV#2Yv_z$qD%U6&IN!E-gpajxus$DtC1CuZ#svtQO?*v z0n#b*(sl4+net6IHyl{NaU3vl9A;0CtcVb16F`yJmgN|0$Rpb*|H6cGHRzfZa&(=~ zVI0xvdY^eZ9zjX`T1fnL|7v~?;c9*k;lFKn^Zue;KkI#B!X|3#8!OE9jXv1ehrQGv zu@0h#c1mBE_ewZgt{$FU67CLNzBSj)<}w+Hg7| z`uDu2BYGO<>U}$Rx5}=-nZ`k7q3&4-%3nb*I(7eZ?qo!bH^!fuMdu=FZ*u1%wj5~S zD~)0_p5VWB3g$5TUJ7HOov0pY(5UVXgASXC7mw;(7{rL@lfM6v$2QD%;Pk?vV#NQ0 z@_oSTo4RaMt@zL7r|3+esI9LaCm3Fgdi603=lcz_4i4eQwFZCQ4+y8*b9@DVAE49^ z(P?>yKc2(;Z{L{y8^->Bh5i}wHjWFV50Ov!GD!>CFF&69B{s)Nzzpq;jZE`bQL(5 z`jn)|^Cn5T_M~k?Nm!iQ9l98j6;ys3GWum7+Ig1+3yrQ;UFVHc53k=ai{q!A4{K;V zlCe8!CqGl?{bfJZ83ZoEmJt8jNO;{A+adz{Ios{1y~V8kFlygtk?R1jLpv!J{g3@f zgG#0O^_%$md-~U!bliyX)!>7&Sg`NekGx)RA@Qfq9c8h$zCUmIA)X)9G&r8O>nGIR zsGm^xB|4!ln5W)=s~y)b;z}poeF0ZG>F)Em(n)vMZP>^0^aO=jEp{rOI=9cKTsUJv?tZ_ZWxyO1=>o8l0T^J3n`_U;)&WQ7fMu$6wSwMwF%w_s* zb6h_Ih=2E6b&#e%b9j5>e$Ihiri^QNi`3%gXx#k*Zhc(iNm_c2+hrS(e8@Mrw6E8c4rk=+hxR+=u zon=4EHtF_$Ft`7|?76d1c`j&etM@<+Z`(GrZD-k&*(PYJf>XiBmC#TW6Amgb*bF`? zzB8zNVv$bk9)@R;|DV%PAHJv2L_5JUH_k{n!BW#lXW5st)uaiwhzrqHzK@*Pu#!Ka zwzqCriTN$8_oJ&YmmxcQrF1pk(oTPOVb#A-`YmS6vQkp z01HD*h~m|~bS}-+Jy&o#w{5TucZIYs7LNPk>gW}{wh{5n6+P5f$jJWM%wuaJD?taq z6C$sm&V(o|jtV&AX0fywXUnbuhG-4nr)?$9$q{WDWZJ#q|Ksd^;G@dQ`~M5eB8!NK zEFvOKkzE6u#bok7vNV4t5iyHdmLeh&Cdq^ZCdoK6fhSizmo zMv}eg{ocjyd;9ddeu16@UTqt9Wh!IL`Lz}O-xU)5pyP1*nb5Cw&3u~x;aZ9VllFLu}rQ7a%wGY*g1-Jj?3uzzx_J6Hr*QGvY z*7F_G9sF96c3J<}=ss;sD}FZ_60b7Ww6XF_tgS z9y#wwn@W50nPPK-A_hL=ncm-iKkhFI3P$G9(toh6lZ*4dF`z*Cw4PEzL-)OBA3ilk zk+G`sP5%15+xM1s-y8U_Z$kUchT%s0hu<4dMu65|eG{Xe#=Gy`dBid@p!aCK3(K$g z^mzVP-`$qKE|1T7@EP(miP9Up@16VoP%M4Y^7*bVN8f$#&>C3m0DeQ)mX%_!*AufMzZJHC0d4^Me7w>fM0%ZwVm=ht1^ zf57Pt7W@4w1$PD~YW54-0E{6L#PGy}nh?>~$iSc?UL6J9?dh-h0A3JguLUaIWv%3G_R2 z_wJp2px;(~_b>YRUin6!JjQl|eWu5~K&QNVck6j_c+87zakqq=bPR4Vm*()!pZ#a>BBqx^$Tg;_bPjMKYCjC zy*bES*r>#L^}ozr&Tn@s*b|NYcw9fm@3=+*Y_dlT)er?|>V==}Co z8oC$xW(Ilc`a`z%<6MpDVSPrc>rp*@`8?}$eVjV=S%2idHLMS>JoMr9`tE!0AkPZq zGd;XMN6+fBjqdy4^{PbgZ>{RS_ust2uFp@tmrq7n>$`dWcd+v80S#5VMmhy!(X@@_KZl z@AS?2WAzkt`Oy1)c0Jquc0x{Wm7}7RbLsZCRas$ z^&fGF)iyST$q`xzM{O_?2{l-eXsA9Ii=&8zs-mH|)fB61nCA;M$3qR(p=w`mV=NSl z)ipMdIaX`^5uZr3#_FA`q0yHtCdK85hGI?iq3UrKHKV*putC(Oim|4;c*ysX@41*2 z4K`Fa*83`7i-%&iZ)Lc#YJsP=6|qpfDI!xi)R0e`r26XX8WPua3lo?1!76i|$nLbL zp>SI;sf6?it`(7Bbv4aYQQue{vL?RNtB+ig>e~8>s$jSZZo6RvlV8sFecYFz3sqIu z_HrmG4ouGXEmoh`gyL1T^kSqbZWRTqeND08ypXT4#^;i2gi!5@%DTpsaXv=E6Ae~0 z^x39REUq4{Z;Xa~)xmhs7q1OA_-g9nG3!%}O}_f3SRDS)V+`@S`cSl@suF$;wZQbU zSFHy6+!qa1HAXeYe6e7?!#OV+tWPDr8e&opSal5*;ZTizo$70-tXLFma11n-w{kTV zuq~`mS&dEdAfT8CHk)h~8?S0vlNSCEfaKHk{qW9f=I1L!fk z9i|&as?QT}ZOm2EvQ;5gQPwllQ8iK4lrSqFy{{IbE{=t1^;x?@slHe|7>!pn))25< zoN87_8zT{QIq|>PSo0$8O*A3%$H`APj}fuDg{tC|Za0*@TKj6E!FlyG5?W2I$2;8& z;b1Hls;>-(D(tmAQG2U*9+xc`*Yd1;LaZqgq0K_o8h}y8k2?x_50qfF8ABD};A@Wz zF%?F^Zhh3U8fjiK-8~q}G)GkH z6lbW9vpimP4GWnmZUvGq8W{D#hSyAiG2f!Pc&)FJs=i!U{J#-!9~fsPh6Hy#?lH0Y zy0}(Y&zP|0(T=Q@!Eh)Vce~XYVfpSHuLnF#v${5!R z(|uLpI%g$}Jrc5|?)8+AXv-jrd{qh&+8YJ#S;4w6gFmq@HfN>fRa7yb?NBPToJK;d z)E+KwZ;NP;sJ2H^`>LCw8l}-tLx{$!vnQA3b*N&B%wq;W(b2SbaiI^lI)02y5x~s| zaQgbus-%<@Yn$h*Y9fSjkJU8A*#+3!E-l2daq5W2TQ)f??C5-E(->o-d3x?~Te1Tm zx7ndSrcN||jG0$etG2S2{6#){MzL+E_o-NW15wvdscovg2eIrWFBEBHm*crrCad#U zQ5s$-&5d6-R< zt7Q!R|EV2!15fqfbtXuHBhk1CjhfU2iH1zHfNQZ^YGL|>H21=9H8m_~(1cAw1rL?-WfmlXx^=?OZf})q;wuc$C@e&XG`ZWldyC z)Gw(?EWau0yUE(4O>?$ri;h({4~-Za8XI18R(4%!1#e=2IlSsUHc??Mx?;9>*5*#B z*0r0+9ZHF5r^YiYr{{jqYhS1EE9^4d8*d^v0VZ!EqSEk|)s}^U^t7Ck^pd=Ee@04l~WS17E zXQl^A^Rf!FvI9khrFn%J#hGb2MTIESvr39G0@=B_g&Api#p$_eCFy~Z?4sPP!gPO5 zW?@=kc6K16G&eoVUl_wATPZnx3r`*E2}6cBQLWk zr!c@(Agw67INk40!?!dqH;|rQ63EC56qRNdXBQQw75R&Ei;9ZtCoL~MH#Z|YH{G9`ot}|aRGgcan-wTZ&rb7~X~pT3n^|gs(=z-erJ1FEs!@`W z7bvAQvWjy{>4D;`wCv(QNl{5oQEpxybto*&p_VjiZgFWzCOjF1*}4AA!pst)%qz?; zO$!9_Xq>e4!ko0?%tD5e`Yn)?la^NO&nwOH7iZ@0s#NmfZ-8veNq zy~03Fae7X6c3yf~I_0IoT$&l66Z|<@g~jO^nRIJzVNSL`kVZQd73bv^miRMs(z9qR ze@P*uATup5kMgoI1BE%6*)(=hmOUu^S!p?xT2xZ1QCO6bnVz0oVvn4>EPq~MW>z4( zG&dtND?7V{PS2vZvkU3|lG380oE!ozrNIgr`9*12>9kTH)1ONdA4vtfdCcA&Ir&PC4M?2lNQLz%_}L*E-dt?m*kXYmC{EUxlE`GdcP!tzys+S z#Q`EHq|i*7qnJiW&rL6(qNOE_eFDp7YLu4b_`yXmWflc;iWrBb>BZ{m($dW0bOt(A zOE1kXA%9LDB^0OS=9K#BknF4?Mgm=#7RZ3Q)L&FuXuZ(C&(lx8?WsQQMPIEEI)c!n zoA#ZY4sp*6S2cy%DOS5$o)(+J_Jgp;_tC68aQm~epP(fS`^h}2Gn_hBQZ`6&`=LFm z&A@X!a>cBs2%w{pu8LXgO~Z|Br=l#L?vC6(y09PM-L>1fvBwq# zBR+foz-fW!+TI1KPpc!fjEhSxZ4eY}dUx!Q7`M9ndQ zoi)h(2+s`DbY;!$YRLX@U-J~e5_cShcRzBP22U-{a+pixqDP6 zNc&KRL*e-h0rwOs(J`FWK1r<&mRldEHLb+ai|5#&n5xVR72D_Huj&csNlt~yjaooM z*FK1a=$Lc;Q;Y=*mm+109 zWU(ST;gcn~ zusBcC`6`cP-F;H|U+vBj4lifa_!#q?U{=0ppDH%9+L_}Vig2EvdhZEn@h7SAPCoyc zvrG4J(0)wS>lkhahU;_!$STQ0ZFPRHjEQ@OeGbOHhHBU|J|)4%WMQn=)i>2AZV8^3 z5S&|vW&aiMzb~mDX#i=6Wxa6NvQkO<>rZ-{eZ}WRkaE+XT&0)&X_BkwGV#~aWm#`o zR()-k)wTBrmKEq{b%xPZcUc|6{B0JVg?$4u-?BRAAZK6~mR)!XsgGra3XpHWHykNm zej28$@sMRTK5cdO?6<7${Z@yt@(JI-E}k9m-U464?(zy>Ac=QB@(6ru@K61jWvv-y zb*@FX8h>H&39m4GL;6^qE5XY=e8MwH;wwV(@tS%+@&DZk;!-N*;~tghqK|JZ1&^Wi?ry1UQn5LR5mH%V%@ zbNGGwrL#kDXX&$ywbxXyo6-8zma{B;=TE%)%8DT7^m;II&Z&8o4sju2#Z(v5_ZM258f-_ z3)tQGgm;j{(~jS7@%tp>cpbVn{Dj3L++uhJV_yYc?%@%hPEvdmkw1jb!hhtCEo~-SW0^eP}^yU_JH!k7pB=H=;Z!PsXOZ^U^+lQa9c!YNvp6l@J z25bqK3I!nd)j9k%wjI=lBU4zauK zB7Bad`W(hj@xSmktMe$jgZR1i5#D2XuE4VoyvxHQ+(r`5V#D)Uc$T7D=;09#8=e&G z5pb=CM|e`FQ@_DT@$q&1c3i(5z`Dgm>)xG=OZWzM)n^CxTi|Qh-TDciA!+^Fi(e(< zWgGKlKf2xc39Friw;7&W@azC@@$d+*C9x#cKVZ@;uH)aex(=OToQ+|gqC5Ist3z0P z!UwP`jtkE)&cOSyyKxEcB+)(ftw`}L#Q$65f9``;=VEkG{Ds9QTx=L&o_CbVKlW=ZkQE!?zl~f#AL#KH;8S4$tXb&U`sUTxZdp+?AX! z!bh;HUT5Gr20nz{t*7vQlE(QC4}7w^bHj4SX$>~1;25t7<*7Jehiw;!H4=w{$2EFR%9!!sG4a`0pikMMAkcrNa= zx@OY;@#n10%ltIN`JGmWuy}+|VOROb;5h?6f!&QqI7|}H4E!{YUVn$xISbu1{M>mZ zJlXJ+VJ`y*JUqffNgBW1-?6$TQhvenR_FciFt5L3bqFgS;cM7c{w{cKfUjV8;}Jeb zVu`PhAl2Rh{4>b^YxpLkE5Kh^e8Sm=Z_Z$=Gau~t@Cm1q#M2kQ*MDqTUuGWkNB3}t z)gde%;qDzyT$|vz&*tJbb~i5J8zh>%{s2;Z^YLFq{-+sl4d`m{7Z#uJY{QrPPOEb+ zc&3L>cp6FbU{8nB{>wY8uD;Z(ImPO1LASKS>JS#6a2&hh@eQ#$o52z6ZhXRhN$SU& z+ns*=1Ae!+b3fUh>__2C*p+V|_AB5E*j*msBP8|XR{XT?>>F!!Zb!EXKX)AxUTb(B z!m}Q{#=|4rLee@k2C2Aif7|N%)lV$zKgO}Xf1CCF+g69L>L+{!yW-gMF01nz_!4$E zF5x32wbu?^!`F_##^)!8a^FVRhQB*rgufzyW38}+em7s8l?KM9RGUqKl`H9 zIUQXY{=(uDE;4-6p0zql!IM0E!nq{z6@1ItM`mwv_K_pEIPJDA!|EK3ZupjDy9o~> zDPKP$dp27Z#n$gb>VC2bsdaV@QtRw8q}JbsMqg|6(~Z8s=>0}N0!g>k_eEYnUf<-j z<8dSRA^(7Wm5~u7)2V(2^5@8Mr1s5YH#zm#kY#nIp!01?)vG2e>5Xa(%=fs}c?5g_yRhuSJFu4xv8?qGt8*84 z8+KvYh0pvoeNCK)jNFQR6TA%BhxTnYveM{h8adVICmHEOUL@ZLBX{z(GAF>RHdtLJ zX~_IMt8+EFmJL>iFn^ncmto%xPQktcyac-(;WrO{+s# ze!@4fp9WvTehYjJyRhuSm$9z{@5X)=d=a~_?84`;Zv`L2egS+2yRhuS`$=k#-T0mP zNAADO*S+X=;wLOW;ceJ|@(-5vLFU&E@D}XCvJ0;zv8||IY~;!Hv=4Q>&-3Bw^*r~i zr+vWk7e0dhCU^|bLC3&{unWsB93?5P`9@Abia*WZ=aEOiL*V&G;^<_a4nsEx9%1na z_rG{ckwq;+BzDkt+8*@(=LuH~QU1ztP~eMy@up#n_h`xzNaJ zW1nsC6oZQlPBnOp!2^)0*PV4%*N>>jKhPg{*Rc;>XLSgxUcy(gt6sa=2VDnW#_q0X z!beG}#{naEBj1E~o008ChK;O5%0FOmKJqyJe&pXH$0Pp(=|lb+IUMTWJ)_mRS`VRGZR~qLF=vIH->JV1_gjZl!eTJ~_SP5Q+ z-L0Q+l%#cfI)1I>OM_=7x^n!4#Uos5c&5TL1zhCe5zZ#5-h+(nS?k1iZLQU{5T2Fr z-avO{t<@ncUg7iD70*F z`-~|^_!4&U?qk1n1$+U!TaNHqlFB)PwD%wQe~^QeMZ~=w-6s5n6}RwO!}k!r_24xg zKH(OU_@YR=eeo|O|F6`(=*saI7N2mb;hV~SX9~E;!zY|g65mjy`u#z>)m2UXD*c?J zv~!NqZgmKYPxvNw)o(j|x53x3yY&@5OA_BHr1(xxw19X?ySRKOR6+VYuaUFv90{9GeH%{UGB-M8dej~{jfoB`Kjra+RN4VYa zSRZ2l2yXN62uDcbnT6l487F@U&m43!@Dmn~aGBwm3{N?DvWG{w=c`V8UHYok^>*?- z2hSCB7rttB2#ZJfG^x*G&Ai-~AfT3$xKp$KT!m3QsY7 zQ?O43mwNbw{Uq@XLW=Kh8|yUjyv07}K^yn)Hr8nqpYV0;if1Q$H^Eo2yYUIfN#dC! zKk{W~Tb-5YX35X+2$vh40OMvlxXi;N-1Aos&$Yi|-6G#gcy6G(@>i@|hDZ23c9nk+ zo{QkK*xh)9kCRltjY!3{68}$=|DWJ%MYjTfVYR>TV#7C*ef(1JLJyzt9FoR;0e;IM z%w--0&`rcoSUkdh!&3=QHh6-EM|c=Xaot_*@SR`n@NI(cBD%AylYGJ_u&Z7t;5!9A zhTW~F@J^EWHW@h^sW>N*PwV9`bF9uHbou0S*H7Uz!(07=)tL!S_3#Q0A&Ix=D-PeK zuQ==Hr*j#<=q`LExqb?t#;&-I!gm&Y61y9x@L`hpb{M(b$ZDkeXDa#gi1**&pN4J< z`GwW4!UcwZI{UT&c%p}2*dmGNMl18;EM-k*ooi*CYh_-5#Up$XyW-jp&t>p=>~5UG zCrN6*UHGZJ>e+AZLAL`xxBY}S8J=!Q|2cKH`}3G3GbA zGW>-VmvE8cn+9Jgc#?-t*hf-aeeqL!zxN~TchNmum27|E?p03xHos>Uziq zbNED_U(j9rlGP!sdJCVyuK138nCC?BDeP{%!Usv>--T2=uEYPo$o~p_8_>1mFDyRc zRfcaM`MPc-&S>;>Rl zk6n0>u~%as0v_P83vc|QQ%);V^;q~t=RVcM_*#rE`o-jZO1Kug+94Ht7+j6rZ5QDg zB(+P5k)w>f+hTS7hW7YBlek~CP{$UlLs<0?zK;Fh!2gB)Cip6LVcCT*VE+a99`;M% zbJ&Gt7e0yoC*a>>KMg*PU08PEL)iZj{M4WFTn|2gU08PE4cHHWhhyIaUWZ*+cH!07 zJHhY6z6QJsyRhuS%dl?;`>?M7FTpM>yYM8^f6=}({?gf(OhK3qD}vPUOFU*Bco(`mm96kiW!UX5?U`cuy{Kc#k6A z1Xm)ZFEY|H`n#WZ?3a*=!gf6?;>Ja8{vv4YQ z&7ayrt1}Ipg58}@!u-06-CoxhIr5B=hmmTRT}Ey&GHm4Zg-%>$NX0Q>A?G<KqFmh24!qcmPTL*4^aDQ%JSjZX>54cZ2;+&iUNxx$LLV zO=wD<&k2tuDW1Xjtz~{JE4Mm_q8o^xu;LN6u&ey`0I$n}d*aD>gzv_k`nMxBP9jM0 z&Wc-IUx4QW%&R%*W{^)&( za*Z5-)VRO?StrgjpS8M{9_4j#;yj1$)Mu>@VZ|wY6uato8vf(p!`R*W3P(xen}O6g z9*I=_`;qSj>idD|R_6e87Wst5D||QN@NQ&3`5?mhizIo4SCGVaz0u*j&}enNm;5<@ z#{CoBxkjr)SbV}Ku`90Q>;q4Ok7IY^6y8r#JM2cj3Ga3zHzDtVn~{op8az+K`yI-e zfo>{1!YW5NV9F_;f z!u?3%JKNy!9cr+;j*|Z&d`Hk7Xs|kj#V5QQyXt)vzP;d`*xhyzo=Z~wXClS>JW_EE zCf{y&*3TdgbOXsJEM8&D@U}A!`+z(%(T|)i_zSGEmM;=A~Gjb>L2C@}- z8yQAkMb1W^MrI=whp*n*zx@;I{8)6OD91f#5FUzM^;wR6IC!up4&k1#)zyw{<7k^z z&$=JBI)qgZ;mg?LNFHrEuZEfb*o9>mK8ig6=C;*&9DEqNu*@7KjEV! zt%uw2TL$5oPx5*Sx-Iw#D<0u>hNlOf4d8YUkMK&8+G#mbamDc;N`2N6S2MZ@{=(uD zt}%QQxIfJYS95K z1GwG8C)_~#Z+Pb5ck!P%r{ca@iEb8t!r~Dw!~Rq7=dqWACu0|uT{wkw7oNGbPFz!J zt**Z(j@YL;FGN>bYjp_AUw9&R)oZ4nFTlCj-FgZSBdLB5=UH7_$hQHWzUUszvpR&u zBYYdX@@<8udminF-Q^L!LQ;EeM2c@E{(nLK-@@05ZUz3r;uBtM_(pQSTnb+3;S&y% z#8+)(Ia05uPC`Oc?<0Sdiz)1<$D$iWeqr$o4>kPD;U5kj?BN%-NImfEta0L9Tf_S% z$bS^R_2|~r@V*JdC%h87>N|+>)CyjK-L1cHDoOPoj$a=6-uD^KiO>zjPgrpY4=_Bf z@C*X?^Y92i2sy6@972k3d&ueuY*xh)9Pm}%!p4~{*Z$19|xfni&_|dJ!Us!y?t%h#^_vtq9N)Mm#M3Q)( zH$1E08INv^hevpX;aLLDDDW^3kMPYZ=ehG7QhfWXoadw=6`VVv+gp`aMUG=&F z-!AYr>~1}US1S)ZE0EeJEJkX7G!rTQBJ!)A4e*zun?!!M-olxNe=hroTyUC)U)V>| z{5V_b$RkMc?yPip`|;eh8{PKGB(LyB?27X)yj#HQvAb~#uOiv=4tWH=sfMo-zG>*D zc=&`14BvF_BLVP451;TL(h+#>26>+V7wh495M-PLd7l7S{VaSPyW-dh&rR@E>~37b z7f8Q{=L~+apYhW=G4|Q$PT?mk9^qr8K3a#2tVO;>zA5BeMtKv0tdr~6h;r;-#;E`Afa=z(V?(g7Ja^_WAF;df2wx(p z-x`o_z}FwC_|AXE>UuvHFI966{~7j$pRqcG6`$}4?BY4W{p%F?7yU@x zTZ;cX$p1z7mZMvYzp(g(BZhA*_m?<0?BNrxA&IXHNw)fI{O|mTH3YtVbbkDW#V4F% z_`>j|g2#IJgol&FcYC(OcVV{Gb)NjJ!JU`TottfS2#ZhnBzD#BIDDtU$V7dG*OL_2 z3d2(t;(Zb5mU(!D7aE??+#eQ$qaGgNGLm@4^O6lfea^a)if|#4`-PH&p)`-an0Q z2!6ui5$Lz8+}Fb+e0P>JKhDo`<_GtI&Wq^I&PvV?;S<ziK?#3s4g!Dt=YRB)uPuPdh?(5LC;U_E};TFR)nET5r z@Ny52@IsQ-lbQJKAm0>tW}};qpRjm@rx+gA)y}ElQV)-CK1uZ(i&R|qXIfotepQ^qf?Kh>{U|(}qG?A! zo(=F==49ehxE;G& zFX8zl#WNkhFVU_q{yFc%LRXHTu-aL;)bLE@{xStzLlVy*{G#NW1J4k2?CU#( z#UuQ1x>GNn13LSHA52fiBYbAMGrspC#kUdvIpp6DAI}`tdi;gOC){TEcsA*52e*3o zglkCR@#FVF^8E&$Y;+Uw6Bdu~Si{5j+;ygaeI6d+ktEH#3$Hrs!v0sSu6L6E6H9o0 zK)3f*t3z0P!aK05oo~Rm3%m`x+wQ`fNaCB1wA&y56+dELHqid)%JCN#pKz(+o67xU z3b@F_Cp?NIp8ojFC*N#%2BPbWpRjm@?@x2$+5k__G}g0e$+(11k;JndzsclV2hUD) zoO^c&i${39;dubhM(|n>k8le~JmvU}CErPSrlTvvPgp#{MTTb@_oGtqBoB|UkJN{D zdiaVXuOYS0AAg1S{~qLiKcCkZ&>ek+_y2;$D|`UE+WP{$hrs)=yX`N$gCt(gJM1`D z*%iHA?vPZD20r0RXEoY%Pz^Exc)g>u6x}593G=sEIMeXXrT=olX&zqT6q4#c7{A5jtA=MNx`Fr!^S4>p zGCZ7LcJ>2vo|%YG`0i9Ez5_r{}}Jv0gG376?Vlnka@5g+=AVWQ+OHaP2!6n-#|`Bs-NF=_#jdzg8Mk3@ zHFh^n;b|nrGZDWQ@)f~TfG!t5VZ|dn!SK|;;|GuT@Cc6}iKj1q^T{_Cp8n__ew6!( z;SuissOevL?thg2#qP!URL1OW;$Kr@b^Q>&=f1?}8_=yTu{wmsFT4V~;u;d?IUc+WyBnu)C221_ z&m+Y*1pjZ5|I6?VLpKP2Vetv~HGFH}>kobyNb(8a3^+We0<72M+X~MabSLl=7LV{@ z?26+oJV(I?Jv_qeNs4C$e&ysl3eQS(%kUExkMKgnGrEa+0*-okga?ttbGO*)I?VcU zgni$GV$LOttqx)F2w%spcy_{b6MPlB+fKsANN>Tj9ltH)y93WobX)Ng7LV|H!}9>1 zjo`H&9^q9a&4U$4#npiSV)FN6{}@F#AAe!-3C}frnLJllgJ*mAg!4(ihi9yjqwv=` z=_l53o`P-!{_eS{aCebY?y(}PE0=QSQ|<}rimVP{l`Fg-yXt?Dau0&{Vt3m^cpK?0 z%3X<{_FKH~sD*t!u)L(o@{u^u$O@Y9v*Tg?e-@A`RM%kyX`2P zV)(+?Q^8|Be8NLWnm2b|V&C~=?&HLD_a&b5UrK&{Tlgw=)n_+6*TI*uyY&-3OWF_5 zTBPEdga1kRYT9_c8Qm=Wg;h`Ca>Ey3UQGv=dH96KkW|lxiO%PLi;(IEeu%iM3!bj8 z@|^e)){l=^9m3)jzJXnF@qW+FTi|Qh-8hBMk`&(|{M1e_E~UTF9l+0RH{soe=PEpV z!8<)X!s|$Cx5fDVHRZpL^=&D-h4=|89^tUzNuitwxYolXJe%}=c<$yqajnX?x;{ky z*Wp`@t|i~<5Eh^C66~tah|lx747eG)TR-6_N$nKCPv2MYv9EC+jIIDb_xlTkvklK2 zc=Ex1507vv=?!=W8+kR)iSJaN({Ary#(fmsiM(XH2_MF;c+SFm6nqf78=vqNlHx1J zPv3v=fp+>IT^WAv_aO)u8J=mBQwpBs;StUzY5iJ~>%>))>%{e!U*LTn=qhuQaS6}F zt~e%QpADXl-Hl5)pQQdAg`eiZB-TM6x)JyZtNn!s8=e+;hJpurc!VG3IP+jHQsb;8 z$LY^+z_$wB@|Y0b#n1kpleMgK=mz8Ge(#BJKf}`o z&j7IH;Ss)>?Zk5~+i9m~|AKRGbZ4@Y?Ie60yUITa&q?r6>~1{52S{2kcOtc3wj$3V z!$wXsGS|p{NX36C%j){wNxoO$>wF$4i~VYr)gi2Q6+Vq!bnW=N^H+G4;Twp3HMqsYCmbe;ryM`s=OUXJhv>@ibMJe?lZ<^i z_9Ae;$1a?P{U-I;OT99|sn~^8FX1sJjwo?F4<7A_L%256nP&myo5V8-sklaE@;wpo z>{-V+L^mRn?};$H!h^A^eOmsKaR?rW-EA-7yBW?t`Vvxnhcg_$!QWtBqC1$8xUIA&y3u~CLs;bs55umwm+`zc0z3q}TMyxW zB+c_{>CX4YeF2^u>C`(t`Mq(%=dml_L3l2L&ti9ZgpZRH{}H6d_geg4A&&3Cw;tUZ z{Dl>l@JhqS=V3Zq!7Ds`!b?fwn~zjI2jTxL`TMZX8iH;B{=(uDewgOOw-&y>;0I~R z_=LOD9KNGS)pr~IPm}+X@a;gi1%F}j39mDJJ@9P+w|n@6`8>EC-)tj?BgK3F!_31U z@O~?Jdp=CLA7&nc#VdRRyV`9B&r7$!*RZ?oD13pWde3}i#$5PImakRsy*^2 zIP<;p%e;<+E_*_9z6+;f7jG^0G;j)bw;bVJWKG?IuY2;eHdLce(t&<>?gf}-*6*$raI-XO|`mCFi%oh zPu8PblWKJct9;>=*j3&j+OrkB0=rwj@Dh^RqXxgOlYBl6p84o1@e>x0@Jz$Q=N>y} zgZUg}f=AeoUGc8&;B^P^1nh47!efnn1NIcK&tn(f`+^h4#uu!v0kmHw`>`$P*1uqN z2rCZZHtdSO-)i==;8yHzeS{a2RG(`6O33#Mcxutj#ZOo~!ZQpHpHuCe1)k>N5iTWZ z9Q8Hw%y?&f9vsj6;^1jwKXn-0{_(so&hQHF!mfC(!Mg{%1G^iaa05xabC8O20{$b& ze+522y7Bl6D^6jb;nV(pEO?ZMPk1;Equ_j!I^PCQX` z^YIfFkMLZ>lL-%B*lW%9@CZ*PsebuL@r}iQ%}JgEzQs5~=fhuEe8R&G-%|KSf`@we zgwLdKZ-QqXQhdu(_#7+kUCe%}1>MpVKF4a>UpS6k?c-w{@!eQf1iRZ_!t+UrFB_@# zYXtuKJVrZwqtFe*-~D`s@Ib@23ckVM{vJNz2Oo0yx{`4I0b zH}MIt!>)LG;M)Lh$L_`_yqctSqZz3iit8vmXTc{uJi_}(if0*qy6^w$ zZ+ZO*-4guVeSmP>@c0-{&ESZKNBH)04$qnAtgcz`EZfHW>(HHg&gu|WJi^DYE1pyE zoKPO@Zo3J$OGi9Q@hcgV_BRtsfw7@eIJkY}3 zl_R{7q&U79H^F1_)xP*6;#J3T7g!oqCe}MSL zujhV>ZUz3rYB%Ac;>?!KsS+m!r~S78{SHI zv%wQQyut%XZ^3i(Pn_|w9iH2N!nyCCB*%yFCE2O(K6tKxFUW4jhww_$5qRd~*FyQj zzRCMm(AD54tayZH8=hSHdoFmUhevoQsSowEkm9@HbM{+(=!aWA#*Z(#-x9uvU2*J( z?=tv2b~i5JBTDe>#830)E#lgZZaaSNJQCh$c<#cp1-#zFBfOF%o;mnwyx)hX65TBP z-0?45Zg>L3I~`o+;Srul+6B*Or1*M1V0C4|m%f4bxuCoM0joopzss|66!&ji%p5^Sy~?A0T`YyWMZ_Tn3-V?$%3q zH%UC}@zeg{ZGX+{2I$t}=k6zjTMf?u`lAiJ(!(R%KoZYP{MN&h56^6L)A18ly@aP2 zo+)eRk5GH^Eo2yY&-3 zPf}b5@cY!?S=QI#IfQN>e!}7r-f4KQ!?PQ_-NPfifpip}6r`TVri^r+d$LD5&kd{o zj&nnF{*lS&2H^=L_4^3?e)&^AKikE=3f(aLgjK%qKHhN!Q_N#ZS+3 znLl8DqFafd`+O(7*w{<4F9k33*oA9Idd{6@{2K6^fo`hDPk0JR{S!bc{t5WMi~ZKW ze2?cNbmQ?CR{X*~?20$Ondc+$DC}@JV+d6N41G*az*1gZFTlFvsxVR(0=+fF`V@d|G=ym#T<0$%Uo6>cY~ zeHY`W_AEU_`=MKipWD8|VPl_;Jp!)v*o9}3`f$JPhg3V?9`5j+#=mDL z*P`;xxD#Gtct`LYw+!6u;T4`hx(Ux9{4|fY!ZQTj0Q}r}CEORg=Fvv%{lO2PP0lOf zyU#lDoP5^mdWm^dM|+$`cN{-q^^@=+?5fu};yD67fZeU9@LtmYA)akWwObqhKJs%` z*x8P*6@Ovz2`@K%L$~r=30~^q6K*Emf+v8V`gzG=?!)K`@N@fJ*l+Bsv1fxPcqe!BQB-uDG>3*}r!cm7?x@5_`UdHQ3$pCA`AeCt_a-Ugoh2M@X8#vyERhesj^y^!N!+Cutl^MQR*OMk;VpqHo&XrTZKJ0G%!Xrs)@9rVaJnn(#{t)&bLz44Y_!@TQ+Xc@J z@D=PXkMKp(Wq8gYHJ(l&)&2*OYX4nGwf}ac+J6gD@h^v0?KSD|Strpgh1YFA;fS%9 zV~>Nw9=mW2_FqxJBK9})!IjvBHBN+Qnz$!&?mQbj-4nO)WYTWpNHgWMQBEehR8Kj= zV@R5hBaIx2{0aFEz0-L=!44$DrhWtR9C8)%EOMFAM~!~2(U%$hB%@D3(hT)Okr$A6 z20PyqeiNy3+L7X4ffRoOQvB6MKf~yYjDCXAk2d-NNb%o!hr@ps`E&3QRny+8Qjprl>++90Q$PY!Z;y74=W?zqQK z_z+3sVmp3Q{*L>{F4kFeTk#WCzY4F%uJQL^C-)WbTI}w46mBD_zm_8P{4y8+@#H@O zUp2bf_zR0qc$(oWdV_r_c&dj_xQKKR9zRli!wlcx@3K!vH^jpy+~4r6hHoIauZK_g z?%N%{OGxn@emkF!C!R9+j>`6SJ|A!56W)Ve^}7P!KJYH=ZheKfkbVG9D^h$7hHoQ$ zQFQY?e8O`LU#8jvJln%3Tuu^SK2m(6@c+XB_TljP(2c-fSnVe~*zmQ$HxxY3!zcW3 zAbktZEu{EP4|MoGw43KHbSDQU`Gk*PSN+bwcT9P)yY&^`BON@`Hz8dU)@OTfOu#cqq(cj1`&p5m%pK*9UK%A%19e*atD|`sM;yMTK5%2-* zZk)oqNpHa0V&o_z?+kGCtw_Z`Z2;f*M|&>X!}votbpYS@XWCadfL*-ho$M3A1=!tk zgi}c38H%6k{R{ktqZ^E$+YZA03{M;O0bqV~Ex{vvUh0CyuZ!+bVgC}Em`Gt!};u(Qo2l>7P&nR@m@DtWJ6&`4KR>3nE+~30^ zY>~us?rA>1NWRa*bKz;);%Pp=Xn2H=V^{en;W-IDirtMz_z+3`u@%2{yZ`%)&kiobBNe9!fd_ zPfs6befdxPEOh)XMPhvszJ*=&*oOTM9ee}3TQA{L*avV%!E}22X4bIEW7Y3>?3%lYZ=OO z8Mpkhs>?{E1Vi%TOcr;1veBa`CL}#%_*;h2}#=406*`s3y;FSjq;aMo)1hHb_nyg*~h=ZCY~1TJi=Mr zmJ{_8?x|%D%7EL~!aWU{zfntfUu%Vt?SG@+5bet#Wz8e~j`SS&p22+vSZePf=30Go zfIYYL>c{^i5M8U!e`>BZKE}P*(Q7Py$>=ri>dm#r=v(Gm38Wz&``_~`+8f7WqroPIWm>JMxXsVm8;exc)F_ zUedQ^aPKlP49#M1L)_9I_S5!;XA(XirJmC7{v!Qqcv1qK=hMj2Pv?38_YGa=Z?UYu zWiPMmDc_=_OlUlZo@9;W>R^_KMxbFJ^``?hKGcCM$hw-V3PCVmHmdxEa{T_o#S zb3O9=Jd2vxW^!F%uK8?%MU&Y6rCOds|ATgI@7`2qE+$LF2IbCNcEhS+r7!1cGNi>{9|M?OOgy532g z6DdpAN0$>bJi6}r3+`>tI@i^I&V7)vA^jfO{O98Htl?kD^#sO)c&<~{O%uaT`tG_Z_X_RsSEe0SQI|!g4O`*=f#ICK zp4V(x*Tgf3v84T&u5-~3F+OCoS`7cRDO{VeG?V%MlqqY{X#4v;?Yz^+@jfcUd2${1 zX49U2+U;lN`Y`e9EJbCFXklG8ecf**ZDrbaA=iKE>c7ZW#hNzUgg*9^llL+_+l{^q zp6|1!i*xWa=C~P?v%kdelbCqAzs?!H>FYc2WSi^mdfL;B$;d{_`iNbI!K2IB(IQLSoFPpKHIg9rl znV2tsntB=kJMjF@_$+JW+O+LP>Yn$s6X(NbUi&d^b(Zl{Wb)P$&kLrV2Qc>DY3ewT zxezol-(ZfsYWnm9*E%OsA4QjOE@%3#nsJ_Q#`Z9--(|`=PYgxIe-CZ=tm#MIw_=Sm zG3F1O=j>NsRJePr6Uwa(rv+T|Xmjw?-^?JwGA6t@0kre%GavKZ3#-y+X- zo#*-vZR`5{8$9lH9`_^nI^el}A2GQ4XFUFQXcJfeGtc!qX@6ILjec>jKS#aX>uVmL zc^=L-B6od$$M|utH!}_s*PgO|>Z#Wc8RxFgdHUVG{#(y=I_>Z3$1z9TYdz<>*Yi9+ zFME78;Nbe)^3A2i(><|G_3&)-@NDqJ z^A%6IJs$tDj7hg#x+QV_XPy|I^~CTikN1>k?c<5(Qy!jQdwBld!}C=S&u=_DB_5szPkq1Yxqg%Tz8hze zXFU5n*M~gUdp%?OUp-@ZjYt1e&z#~JF2P^pDfc-~A01#Va$~S6VzF>VEEJ2?H8xaK zHAY^uD(Wjk)$wqwqCQgRYC`o@vdFipv2j6NsG_PiRJEX@x~aatw|-HyE*^6AE|Z-v z+!za0G&IKRYCL5)j14sv3q#RfhN`+qZ751)@dcqL`P&f&8{%~p(NH8De4l-;o0GLti8bM-SZzgPQ#{fXf5Z}sSJhV3HP{BZMniUCb2iG<0n! z9B!oi&o+fzgCcIIu6V@qSW$L`B8|~U8lXy{2BTG(6|ts>V^%W+BN36(7Zp{ZNAt|1 zg(4w(>v5ABuQpcExQM~^SiUD~?Fb$>Rfj5@=2b+Zbq(=~Dn+2Mnj+OfhMPSYV@>rH zv3SrMoEb#Hrg&{dsG%zQTEtUZudzDxWaA@R6={b@TSOX(r1$i3#!5mRVPpoQ8XZ-Q z(Q0Lkhm^(J6>2(X=;Ib^3VY1WS!sEyDRpkFsbiE?hiZaP_NZ&9God60nLYGl3}uwpveNyJE7KoUx&3IbB9+1F`d}4Pi|Orjs57@>k+7?<{hWnH{S@*v zskikWF;R_LF&ni!E9>I*!Po+=Ysp@5+omGa%m}FtRaf8>w^zR^R-UAz+P*3nt|EJH zgWcdyw0NhD&E>W`11i$UvhS>449&fbddV-QMG#VQJv|_C#cgO_ci^=;4+iMTc$B4#(2E0YC$OO@gQ2}SQR%xr~B=O zG_#T$p+{N6IE~fPLAKhRRf+x!h9eE4iZ@m@y7^*@f{}_)q_L{jQ(_`VRa10f$dtf( zq2)5x#2vJhkI zM5WeGVvf<|uF;dv)WNlQTug1RUN*BR()LY}-oZSgVw^mpQ6R}#uqYagJVp_$VItSFfvSIm zJejX5T*r-pQ62iDF0l~fgzeD(=JJ?Lqp7m4Fs@G`0 zhR{4VX~8%fLeucNsXl7(cBwta9?9snD-LsmNyegrb@zLs!Dg%vHtXJ~o$2G*o@jV% zuvc&cdoqVpLS4g?t{3;`prXdss8O6Ar*rY}wy5bcmZjc$JD|t3S`KTXjrA4$whRSn+DF(i*Sbh- zNmSp+-PMNP61{s3yG@-Ib9W9#<;`KoQWFe^E2&p9Oz*9qXSt*yG3R6abV)^hjW)H_ zJeD-7=jX+1lb-H<+_~>1_2xeQs9N{&M|I{t{seXUJYw*Ue`lka zEXEy=kLt~Md{nLR_^8f|$0w-MANM6rXJOF8Yh6uU6;GSVXjBbn*YQWq_M>=BFdp>o z6SV3yMLk5OkLns~8l4dpe=XuMQ|muwQV3d0+0ECpe+|xK8u!X;TBa)8*wBkHtKt!r zX_v>f>5q9*roAjS#^MdZdJpXrhDgQZ9`@*0i)pK@C);F;CbntZU^xz|SX9T8d&0{Z zHo;gdRIjHNd!Qt4BuNstO{mcVxCNc@XlG!vRm+iybBxtHlO34*BwQ6FQ_`M@%%Rdj zNRyiTk9s7Y<(}Z049RYWM~Gy#$4xM-Ml${CRKz`ivG12pC|kEt$Fn9}H?KDSh@Tl~ zj@SQ3+q-~ASzUYM?_4uUCduSV2mvM+aJVNB5G~qCGK8R55UEnDC34Y32t+`ORz1Pe z8ZFv40d*#zqUCr1(Z(Ka)em*>czUD-PlD8X0Ua!-c&N2usxy=8{C{h|`+aB6E%E!F z=RZ$&*52=4d+oK?zOQ{#n++vCMFSY`qjktJq-Z!2j~)Gm+Rx}OY@!4>z& zqy=t4-P;rsF%9uH;v2EYOO~P%jEu+-$nKgH*;n!?xZrQMI>$(^erNvYV zZxR$mKFWw9Hn`FrC-zH_)^%udH?N5$LIRXX(}E6DqPafxv*`RbLNfTE6(%jOFr43r zrdQ3~mUS^$yq6dO3*&{@K#bk3oA2C6y^f+vijJEhsH2Cijq5gI2ropeHCem?<(h>= zG`5kZmnnKyty!G_L2VSd>Ld<{@|{h^<9ry8G^r=Ltf~vegCwhTP=cSDcTDc0uhL~J zZ8=l+vML|R9}zc3g+sB-nO`+REShhESeTz$3RFs~R^7R_>8>qJbEt~liAv0@l)_jF zXoV1{QcAe!+FqOj5LEEarajo(qa+$=Wtlg;guX>{~zduBPrK1Sv~&EY>eEWjEp z;ax-;-n~>WWnqnypo7D?@RzT`zFrQ0!Xfs7vhOaAM|*uK+`n-66o;>Ic#6XT4vVmk zNBEa%Hd)T8#(+Lhi~%y z{**%r^r>9XIS-=ax{++`ttT_|?5)Lotkk+E<`xXu#=kV7Y z{s)JjaTw-s3fA2z9PPIucq@l=?uy)dIPBtZ2~Te~cVFNz1#8=cU(R7Qhdx<*2$7&}n zda!lFL>^dSO-w3EZz7Uv7L^R5NA!XXTeM`oV?%l=20=sD&qjmq)4FBF84I+S0w6 zNJcoa_5m)Tx@!`IpAaFDGDsQuv1Jd;3)gLlAIu5SFoZbWVT^7ij*nRX_=$Ba2C2yu zJyf*NMp-h7OfHfxOo*F6qG@xV=)%dwsO%d_kh6*h^fukMYZ>30CFBJRD_FYjkZU30A>UwRzDp8gX^>+bOxJ;f&uX zB&I^q;>LdA#VDE|L1Vru!KNhUov@Iw=@eIpC(%|%8rYa61XZUV%^@3j(zp&P&S)kR ztqF-?70vl*YmJmO-$KW(w#)GYdDSPr%&9(F4@3PXLAA%uFhG?==iw#EuDI*Tp5S*1IxW&Wla32& zS7s->OxvYI<`_ z{ZYJXd{AF%Kat&4tJZMUg5teuRWu*O!|&jQd#Iv*BE40sHlljp-Mo4e8sM$i85zUJ zan1+n&ctv~X=}epuqjbML5v^a;W(PK4+{%85+lhtrzeAP%7bMv^rN(qA=%P*B_u2f zetU)UV50Z-E@$BFJG_2LcehKDCAXzP*VVE}ent1|7rx25@6REN?DR`kXQ1nd+7Z+vujhHPz5??~HqB2+GCxOXf(5i0cMc1!jQPikXZO(wUc zHnr7Qx}AY#EeI=Zb6Gu7{4mwLCfm#f{4@+A}|K`op#q&-R+sk0pEN!L-tpJ?XBZ zmXuE2>};2%CG$Xr$J&_=nhseHn%Q+lbytI)MFu@t>dgu{1HWxhxRM&B#z#GEHTs?m z$UuH09NZ9YePvVKgIy#KvutWNb{LRS*xkTwG9!(Pn@pWXP`ApU>D6g5fV%e#xP5m~ zN>}R}U9adN*KEkuDub36sm^o;u3U?Fxg?!|igj?A?sLs(oY5#hmL+GlXLMK*+jQ>< z@ScSjTNbA7CW&St-qfb;Orpcf6yEU;4wLBRzBIS(o0ChWp1F!_OPqlT%Ymc6$7Or| zOlUgzbbvF5@0q`4W?JOJI?JAv_OW#-d(9oCb>=6f$4JIVBVx7s!oj}{+YV-RW+H`E z2wCAZ$+kKp@UN<4xx%DKa&iV*I42}UnM*PIzAi}d*l_PF2Bg0n>9-;MRxf1Wlggce z1>cXP*%_F5JzVDdUGo~}HU8@H@p5tdxQ-%7U@h{!0sPz~=kFd5Iqa*+dyM2TUXVk; zsmP(2%VEt~sni*8@~@kEC4SiJ%UW*hfz46#5%Ky$g^~hL(Q$sKfL|*( z^?gnJ`VRgrGc`+YsLO0$3|<$o*w2LKgIA+B94v_8H3Pg_HC`(?uTOwi#;Hy!%ioob z@|x~ZxD5;u7c)2)BS~zfH;qZlp-C$o{PR%0$KuMDiAJwoNy*4G&V(9}uDz%ysf=2= zK&^{YD{vQrs^wgP z^1b<^@Of3@CEdi~icvXCVLTOcsWoc+5Y-RQ6OAF;x5+Ov^2@~XtB}#67EQ^oD~F=X zmJ#`7(DKX5V}5JM87Sb~QqB4muUX~y^`d4K4=F86PE5;kE)TqEEz1Y_aPgL<{V|)I z)t=drfqGQ|PNvH?*0Q9rmc=I2sQo;BcoB=WEUS21?FgY_um8aw^Ju>K+R? zN4pJ*5~UBV^m~KZ2W_2Ms5|pfcdAg!ru$NmMzfYiMIylVNxjaHll27Xm2@I?6R4Z^ zP>X{;K%o9~0_vF;t(gYIpx0thT6rY~YUz(lppE{AB-zd-nZw$s9}g;RRB@Cfb!em9 zCWPVAa|RwZ!^PXEJ&za3W7`Wm#z2-U!P^QsXZMNF0$&l6Xy#)%Xrqd_M6IyrqnDyy z@G8#5ST5P-v-xgkqi(*9^1_kzkwwT26LYq%2mdWSd7< zncbczXM<;_|3GUFU|M&!TQ@%@ojtpK279iY3xBWwQHGZthnMSFdf})}Nokl;+Ox%n z>sMu4NuE0#+%+IM=Jb$sW}TrlKhZE+n#Hy(9NZF#3oT$4@>_>| zgk+GPxpMRQ@OelR_H6mO^EqyvV|)*#_W5O_rPj=HQ>l63;9$Q(ox(Pc8rH9hsoVX!mEpDqZV61zrS=UA5v~T)owEMz08E6A({QuMf z#AY32C6!96)4%gdd=X{?kp1WBa$0+8hXr|2j4`0owAGPz>gp7~u*GgQ* z#l}pjynK?=e|R#&@zx#bM=K;*Laq-(QY)Dgp`ESya$b9GM-Ec!LdkQ=Ep>@)l^yTvLK~KaQNF>^+WUNK z(SaU8AH;=0sbG~aQkB^KD_;G9bBP^buUek638J*(4NhVX_PYqMRcjk+loxumD)K*7QM z&OGqE1SPsYCYBagYh$7^ekN25>NFm`VX)d4n-0C>+t5u^{v+e2pAY0=B=VI6e$kUh zEhTqu-nee9 zebQRHV@AccNflMwrld)@e4zy!i0zk5+H#5AG3ib_)5*ibZlAOzO(Lwz?UH>`#q4eP zWS2l|%|~$0 z^1lP`A3D50h!42e>L9r(9JzPG5dGVM_cXrGz!i8K@$FXNk(=`nABKN1+_=j}^Cx!ziYl zKiuC;x|3$ySH$pf59dn@@U2R~C--FT{}lYE!d)u(lRF27;tk>cVT$)S@CHHnYurDq z@=xx+!jN2E1)c|Z9|7+OzP$`Qa+6%h-No@92FwB7R^YqgZ!_XPNPN2&_~a&ha&P7M zO8_B;=0f2A68@WjUyN^gz$Z81llyDjLrnUyQ}7R=?DXOuVseu|xx3&`eCL_)PB`4y zPpGAX+|P1<+>Q6rb8tT;_>+4F49R07$HV=wFKx!R+XXyw-wH$WZ~_wFdBA@N@iqg$ z5Z`RTCpYm$ZX?J05ceJb0^gqp-f1Ylu)p#kxe1Tl&%qGACBVBL-}PqPLyK?qz#})| zk$V9Q#b3bjFW_Ecith>Fe}%oCf5pATYW(E>00vpzycUqcT?t6>1aR;0286>Mb1(Hn zA?L@v!{nxT$bCQjNxoNE@O~fM_rPD3H@Po|Kgs)H_+JV4JouBF!jl{K95a76{BZ}e z0ANM~8|8sDk7W~Qm4h*I9MUGdHhWAbJ?T~;+?&n}AovnbBPV85HZ872<0$toi zEIENsZsMEV(>b05yqoZS1?U>_Z4meSlAG|zy%!2sqW2@*15D)z_2#A3_;w@k)N)1c z?{T~$;4KB-4BXR-yMv_y;E|i?ksI}ywR-{VYbAcW0g3)@+}lh1y?}6T+VhJ0eN}$R zy&8tv%c}q>Tsa_x`vUjpRv?_yig&c2L`M5}klYj>xlh8M@&oPUOCP}f9{kn(A@}3( zr~H_if%{qE?ts6VKjd!X{tMv06Yd>?Ke=y*q5N6F@mhel65o~yc;sFJLwrvLB)-4G zeYB)&p8$M6JTBlqT5=QLhrh}RQuY)n@>zi>c9ph_R7T&qXH!Nvr ze35$r{E3e?_&edA4}X;}a!=*{o$#Lt_hiAJ+^8~){@d_J(?{z98hvt;h_-^EOn8ty z=8zqC+c^Noay#wCrt=5%o%T^v0_gs`jY=LcdmD&-hv?z^yC~;JxSj4xKhNzr<{*`F z`$o{Xfz!b!=@A$>+3#ntsP@Cc_w|C^CE)B4zW+(E({hkX2g@ItJ+ks8?g3Wz8Lw-` zB4A>K1e=7Fn~kD2B5MbD==3KYGl@O8F2Lu$UuiDlV2;BO9odkHQC>v{%mG z&^lw{b2UlU8LKMh%wr3Z_J%aJ2^uG)aW@QKZA6=tV7+lZ6$HCd2E4E)`rV7ZnC`wN zh+@kOia7gyoAt(RJUm53cTFy&kWuT6Bd_yOcr@n{-fEzFs{K%hwcjMz60P$MVoZj* zFTI1t@JlcNr?$>Vw8+pmc(b!c011B>e@5zwfU&&`+CCkv@aeP_zQ?NHrdL2!ohzDZ|beh#7x~MVb#vtWS0N?dY{03<~ws&RN zbtU28ZDFZI!VF!9RXh6L*;OcyX)ox=M|%Gj&SkR7b&r(~`=Dilq@*&)C^h5abgKoL zenW5AK&xryj;rdz!RoNZZI$z52ms^wCBgT3!qIX z)+9An-ozx8E2lyBl06mJw{)jMQmK$sDwC8cj8&6{LP1iw^3}ejf$$whd)^^kS>CR~ zJ>wd=X1$}Rj@B<#t={=z$&uPkVZ*_*!;ms$x5Q_Vr}^j`;%G``l73&nI|00f3{NkQ z@#RDJn%$FDqR@Ctz1Xq)^Ii)*X* zID^~dV*?!{BZC!?z<4a3t0Xaqx8=0eln!f=^ceVM!WN1 zZhH}88|S8V6X<77ZtAT8_9UcQG8DUWJ;utS&K#7@T|-8cH5)?YBn)BYA#ywx9^#%M z18MB-6Xl6+=%g!AQlRO@N_t~MXM2raHumV*O?FIC$+4v`7v^Px!nJUvy{@@ZYWHEeC}qx74Tu#}agx$p0Z@$rTBG|2|H!DHw&AfJ@=uyF9}L7hzd5-5#7?=s4Uc72BtoU*jC*3~7Mz6 zA@$J6o(4Wr;<)5vBly^i)+kaYP4WcD;*Wz;qupWb4hMe^+dN2RQ}0sHu)*&Qd@-Va zsioK?n~*zK!&m3iL0fEcn>jCCT{Gnw?bAD^?V1U0_#O|m^)6|ayb59cHZjPSorA^%u>ZCZ@|Q?Kk+BUU)!nbLktaFX(l;2B-gv%4x{^FJ>d} z^<4x0UWYsl>1iG$A1V*^wNuao=_;mqq$x(3dJ+Rxm>mbGplR)IH`F*ceir?)qr+*l7%`#sfY8Na0&Jq&tVny&RC}xd11?jW?KB_+iX% zFjZ>)10b&PZKk`U3GU-?Cx>|Bh|wYa0Qt`Yq&Z&^bObckyB@l`3HVk3T>`oBdxqQ= z7@A9dfWaWahXJvNt9b)p37`|O9Iyfq^O|Nq=I)qVHNVN{@?C%v;f5}frEdiw&Gl)H zKMt@Lb8CtZx{a6cevgECy%s;YaaNc4cfkL1xIY&B$$c0Gd&`>fMi0xE`vHsLUd`Qf z=9~DvoV#ZN65oCZllZ1H<=9Tvd=DVW|0+QIt(%E|WpEb&5`EgQNBRCGAf@kJKnmXp zNa1e;r0~ca79M(FX+6TyJeB6-OSt`V$a5k5Xm0vCcsYdcWM2UI6aJmX)HLs8-yxeH z@b3Ubn|+^v{D&Nw{SfR&IDQw((_C)93vrF(_5-j#!|_kT?&h=rqzvHTkNrLq?El0U z_4^aT_fvxXS^)>|25IvXg=wuVB+MT zLSfZJImNqW-3E5o>Z(=iHgDb}T!2Yf>KR(ZjSFIM?HEn{X%}|HwWaaSt!uG^Sz^~g z(_MeG4V|_Y19Q#Bt%)zWYr1VCU2YeBE1j4s+RU8zTrc_XO}{lIqn;<6Mv zHz=(lZ@zzD6JPW}Rl-m$1vCD?G6I!Ktfe&i zr4bm`=)<#17W!LryndZtx97$NU1xiPB&#FHwl1kuSC%51+fBP@y!k0+vqp?)3>X7S zje1$vF4^@MbN{$o@7AGT?+(e59)3>DsV&_`w+?-}v&i6CjIp|WSuSFhClCt%qsbQqc2DlyWN;eQ4@h~En}NVE@EXE({EKJ2#L7!Ga= z6U3fc>_gsZQ(&8&_MS?Pbm$5Q=hiS$k}}Pnqu5<&l8tPZVUi_4liR|_SC23$S>^Qh zG$y615i90S?J4b6>|Zdn)9zk`g{(}F)$DEqMuY~8sYy!dm}{Gul*~*@hBM^0G)(lR zLkcD)1rw8koutr{>$6}SXv7`}snLQJXXD4rhB0pnj1h+Nz$CwmnF+-L-$&_BE3f(&P<3+E-EN)7f`JOW_}uN@(1y$S6&|*(cd)H-(`GV`*?>@PRgDAWPx% z3V*FEFYvV@9do>s6rRgpFK2WU7ds`4-SJ&1Z6^1Qig57FVI6b~>7LY$+iRvEm&mpl zqrcw(4>|+n(@seVt8!9^ainBWz7h6Ajp>~^8s2W-6#FBv*VxiZOQ^ zmUs%k4_i36eE5s=$|!Xu+6<`enwN7}4+xcb^Kn#i)Z1n^Achsqt$=7-np*$~pVl(S zzmWUWn1aThw*u1GuL6+pXgmYed$Sb~?L%`fsyWf?2Bh%61*C9JKnjQPEsJLmkj6Bn z;OACup9y#=w*yE^xt(;M_i?)g_;9kYUxBv+u#=m96qjnxgGIGt?L)JFF5uV&`#XYt zpI|>N*du+v*19LY3PRAe$6Z^`E|7>n?xfso5vAjgM1t-+S=`Y#Rq&gkqq}A1qFy)Z zc36!^etiI)Jc^D)J%JT}YD>I^181)2Vl%priuC34?UA2$E+<)kSyfem>!|SK{iSfG zUg$Ox>dm1skR-d3uRGO@#wYQ&qXH~dyhMY395B1cF3#y}+KAUS)L-m59SXk_W+nP9>}U_Tz3B^gw7u4d~ybDH8gHnn0Qw<{N7Z zjU3RsO7q{+vG&;pZT}ebj?f$RPQva)OyFdkQ9=9L+Bg;Z2sY;Mq>a~iSQHj^`@!aFWn5RSUre2hEIb$&nAdQ^lpk1Om^x*nV()MR# ztb}od(%WLRWP)DGQK6H+0BssO5m!oIqm05{3{z^Uk7`+H?x_wm*pMDb7JPs!Cq`Pt zPjr}p1ERGof``F)EIT4y=M zXT*P_PmljPUql89oud=?&Nias3 zeK7aHye>&nHOx-fx52c*Y=uda&|UxHNQQoCUP+X6hQqoQ15@qP}xeZU(JyphuTAn;BAZzAwSdZMi1C0T&i54=gR zk5mp)fM-XfQ%As~@VUUN2A*2})c9i4kq5lBz>DQA7Vi?^J;>=%dR2NN#AnuCz5qP6 z{E7amo$wr9ycf;mrMOi;5fWYn@cMwKmOs&7wG-Z5z?(QBlE127Y&w1nysLnx=5I2* zhkQp#pw~hDm_>= zKFLmf@mrkUNO(_sCCLXowS7_Psc9uhzh8N=cXAXw3QK)?u|3khB%}8%@Gct#kHWqQ zvl4h}`;v^_JHXoxJSu-9$!{V24*`$pjU<;g_;&-3=#7MTuNQkMfv1+|Wc=L+yon`| z@|+Bh;;RRqTAo!re2&WBC*i&wcxpKn%e$I)6lO2X!@yI^X)?S8z&ivywVWoyy8?KB z0G?V-li|$*-UUvNiPkJ%t1fE(>RXjDVYB_xdcvp;qM>5?D zyp_OH`@v-N_5tsXQSgY~>o7Zkrzuybn0Nk>s}ncp*-2B)oeN zaZy>MoF5dekJO`NcvHQ2 zFB*6hFPUU`vw?RT@YMR73~w9ob^=c=S1O(=N8*uwcY86`2OgCxG2U3boxt+}Pi?PM zdTLr#dXE4v4VkN!gJgIaz^eit{zjCu6?iuQiOPWyMx`h6N8gRWyAyaOj+X{VJc)R4 zN+vJnIKWf$HyPd};Jv}=QU0oUL{l}evU%4z;Hm9oGQ7!N%u^;u@;4dYOyJE1o|?bO z@Ms?Q1K_FotK!9`m*$N>1D=|{$?)2M_Y&~b{8jPPv=XG>LtaTb13Wcy(`5y38Ih)`Xc~kj2i0>PLr^+uG-iyF{6nNxshEefi z`TI5eUIbnWAem%%JK^^pr$_v%c(7`GlKl~wzj1ma;r*)@a}Y%!s^^oqo^5 ztOA}|{*vMS26#UO9>qsEDqgJo{vCe*20XR=CBu_}_eV~T_*L;>)%YZPJIt4y-bi@= z=7o+3LQ%&}Dm^jHMDKavO&tY~%FA=WTMRt4{3WAz2za-Sf=Bco2j0(srqwgZn6p_ad7c)tYN6yQw)97)cP!vAXEA?l=f6#i1L zBsBt0EiV>)Bi>@uJ0EzD0#7Y3$?)a^?`2Mp=qJOQ2fROXdL!X=05kbS^Y>qk;N;HJ)u=-gh=U;qogSyJWg*^yxQ7pMkWM=8S|5)ur!WDgCiuPQCoe@ z!X--PVD+M-Ma&cG*3t1GF5M6Z9iNi`*z%(pPo})9Tp^hH6hMF`>;~5~TBl9{!c538e zGn3j4&68S<1kuFdB;YzB4sU%xl4W@ujv%O{ID*_qB{Bj6ui1%N&{~E#Zx(y9u-uck z2vK39GI%60Xo#c9LPH!;AR3lHE?z1c7SW2SONo;~wB!S(yv}#C6 z6RcqfWTI28VGxa&@)6H6k%=iA8q&z+LT!w$am|fpK=ly2oakmMHgz-tipGddT|9;Eg6eaeULXZS=)QF>Kj+hP&lW2~}XTnU4W-ws}0%f#8 zL+ltYMge0J80!>!V65)P}=%eV4k|GV4=#Ii~ z@@y3tjm_9)*IgYw%0B@UQT_=873H5mI8pvWcvcLeJcYnXJb8N^A4+TEqr6yb ziNbIX-o|TTw7d}51XIz>Xh;IPYB@|yDVe~dD8*#GMk!&QYre6WOj>X|5NLd_Cf+WS^2y~bv;}8TQ z@d%pq1TqLP0-``p6?0USQ50j!cVa}M7*oEZ5EEuw6o!~-q?_9T1t0#_;mqo5wCBBH ztn^YNJ~YsMS#aa`47rzaJoWrb0NXohpZ)J~cDf%(ek^^FoAAjEeJt}g<6gqo;l}!k z=1=bD;J*y|!DnYkFCBvWS@@G1zh}q|{p)LVo}dfNcO!#@*ltS@MM zko#Od(-9kwaJZYp4IH{SEavcQD1f0;HXi42KZo~nxPrs!92z-1ovVavlaYP9MU^2#ODqUZ{o0uLwaYJ{Leu#Pw)tbyE)vz zp^L*}4!_P)@agU}3b&ubdpTUe;dBm-9G-@-3IAmdcXGIv!v!4XarkA1g8vSOdpX?7 z;SvtZIUKYq_@_8L%;63WZ{iU5i84N{9G**8+($Uv&EW| z!yNA5@FotcIJ9y|XKX0k5e|2AxPe2uvw{4JIs6(9av$e#KZo~nxPn8v#}R)Qphif@pz+oPTUt%GI@ZaHZFNa$>T*4vU#Xxw2Xd?)o;*joEAUEzsWbh^q zt2jh^!oHtFBSd&~UXb8!4mWV<;*ic0lmFLfGYB5%a6gCla=3!S=^P?C3?ISS-GI~v zF6MS>FZ;=kG*Fv{Dk)_m0JXz82telzyYTH7Fl4^~cpd-#6<`zpUWBl8-yq@8T@WAg z?{%4Yv>{GcNK)MA6pOoLKEqAuGY}&ka-CF)wqwpLoJ^Dz;|C(^@EBd@$f|ryd zbOZ_rhND_*nuS-!*-^pB={e=q=(v~11RBcQVTm4}rY8(V#ANS2$Kojm^Tm)jx_|3B zJXp6T=3JqOlkk!3Skg@+Jff|>kFB0RtYGH}m4Bn1Kdib;J+RNuA8u$8j~&LHJ488^ z*jYonlGjEp!+E}Quwf(i1Hq3VngwmGl)S&qxxGe{pEH^Q{wcu(k`*sT7 zR>5ZIbpr23=KFp4exKQv!M2R~UOHgLt!ETR9lq5uTQzLeOs=1@`~2^5;oYz676$%i zkI2=)ZtGWH{BeY{SPCYy@Fn3=pANaQPYb;Wq2CZftGS|QRJ0dwyy2iB9LZaqk8;K0 zPQ|H2dgbk3yC|=(QmOh+lr0Qw!wq6mYM;xAn;*+?SKc;nnOk{d;ZwXCRfbcc58>6Z z@jb+kO$*tBkm`F%XF@yWF^rF!`0ETuhrxrB?!+pWrQR2gl;LbBZc*qdL+Ox1e~`*N zmRl72A7QWO_IGihMTzGCZn}{0Qijv-Lp+20oF&Cmz~WiS<9USQVYgpVJa;3W?$8lw zygVMKPK#wFhIbJ|YGZron5_&qvYiYax9hZd$D@cY;!zH;<)j8B3Q^yCx2ox+zteN9^nthhldb>aNb8R~-&!Gkzb?C=P<+ znhBtfS32lsO7Q6|-kXcNDTyl`?mNV5S;4?ivD?n%(z@Q;XqWA7o5T9P-EDWIeyHS- z2|46l-yOnzQw|+YtJ)z$%DKs~mw6sq{}673nAnYP>%AK#M^U%Elw{o6L=ryMRJLc& zdfS{FoU9#Nm$S#cs8lY+y$9;TY#9R2r*?b>dM<~;o$5c$*!ia)<+><)k4-Hq(ulxIe8lQNuCb* zj#BCS6t8|f6*_k|lTn->!>?(G?%|+3ltbrqY8*<*Ax_IWPpox@!sy@OPm+C%5E zi#xMj#qAmFmc%m8;wGvkOD}BK(VHM++wF3(XIy)+M_*aoPB}Fe?=ZEhFI4rmwTfTD z!T%hTN($vd+)yI*+=;s?m6AbqudOEKH0}nyU8#$Igj@P}tuL8$Q*bM%94eRS?nMc= z$}H6|%`yFo5twxDTCPU>l7Nx|j8?>Xm z*`v~FVKF-K#+E8iG0l;0R8BXZSL%zkCyciN)e^4aD74iyXUC+ZjFq7mYgGPsg8xee z{?*rAl(yM6DA})15(AZ}TQxe5gN{+7(~38DQmlx>I;G#*hZhd%r6aU$8+<$2-Jq@V z(hG~xe#CxP>X`UymLjp^coQonG{dTp}T^*zSdV5yp#-yu|33nj5o^b#QM zHWEV3Vf@5$F!4~Cn`+sFJ!4&l-kE(94^4FA23FSuw7`+?pC$SJqyEJBlLiuhHw-5J zzB$SF|4s6J=}=-i|0l`!ONJBUe@XqB|2H|RB*T#8pDGmjp9$TIK6jgZ(S@-IT6!vp z+k7#jQMA<$_T%PUN5MxE+)9mA--=UfAKj}PmLjfVNVizl*$YsM#_u^$!{a@5ief@aq>-}Ho)s*DdF7#JvDN*`* zBWrhTTH75CPU)vUvXDlM{=-_>u?U+jgpD3CX7x+ z!kD2a^fG#a@n>`;uE5KiRhd137{B86h+>@2V)L=sa0hT7#(Xv!TT*;&xOLnW*rtWu zgRuW2guRr7J~YTVK` z1KuOlgR@UptEoB&>TLq`xs3WLPTkQ**j*a-Az*J4u&Wq$H^h7FmZJ?W zDraXxmZN;EjFL#>(nFy|xJ7M|C$Dl*!V!86M(A$fNKI5`+CzUpnHhsJkkAc9dSb+Z*}=MhV4d>DB9}LVxrv+FRbV=*i}$ zMNiFZd_44S1N^qrt8nhnvDQi^m3Np_s5hiBqhYu4F%w>eD{RFbz#+Z8u4GYX1#W?^ zz)i(r!z|p-JZlf`i`R#PvqHGJHycvCqrQD6^0Dkql3=9&{~vJpl^ybAV_ZwSC!|N; zoZ3Y4+Z!@?mtL?gS$x5YUWVL8a!-%AOtv%_*Gb$Sy1_r z{CQ4$MGbnO;o#>iFUxDxy!;ZJ?9gV3c8r%TXP*j{`c8ywXGvByd-YY*(f88Ggv~X) z!$EJ@g?YvJkEnKjJX@vI3rg#4YMP4Mr!k%mGoFTn&xOTuwdW1B%uZ!xc4+953K!b! zsVKKKAGzF_^1{)>14gH(wM?%d@|%f!e84(BiN(2FCIQSxZeOKT}jw+qmpm$${9?F)j zy^M|NcA~5)v+LpDE*9$NTBtb))f5SZvTiw>d9f@Lp^ug_ZrW6CK*fTxxp`P=F=>`t z*6l)Rv9sPvaulPtYF+PaT!{H-0kgL@LS}d|GmE*rjV}14GP@1ZFROHQ4hOHoJ=~L_ zTU+G0s!=!lss^R?-DVjMUV*m{B*P-iYAp>5k?x1q*Edj3k*%%4#lE}?`L?c)P%9fQ zkuULCL9HG>!@+UG)GI3`Ro1Jrx^|5#u(Jg&);cJ?vYn;2RZT5YIy6MR@;86MJzS9V zaxL@?2z@ILjo$Na(7_176==B^HoW~wwR+LsbL&rqw$)41op@ui@GV_=9&Y|xTUYqj zlDdg3SMFso>2?nXj}1Bf2A#{_yBXn`-sT60VNw)-c}FKO{4VE*M@^X13gK1g?t5Opf=>G(nCkj87a4~U~|S|D$o8% z|GyS-i~WBwi>ZahG#tEPDAGDD`3vOf*K1riBINxINV}FBUo)NQI7VTEz-txe{tIO) z3yYhmw^L`@ky*9E)pM&=Np1q|OPvwgMT}-6=gKN@rTfc5cXjc?_GGlF)GekvUV9|p z8|Rf4qnKI@|9maBR>XF!A`;tJ7Ta1L+n)v_GWf&i7_s<=m#cg}h>%Y&Q$m9FUX&s9 zsPpmWgav(&r9Jhc1AUe4=vj>8ji{wmX01mH8T|%9LcbcM_FL-x{q|~%O{jIR_AExb z{vEm6-OAm^;J#eG99q6w)W>4#W&B$;PCCGeNl1gJn;Z^q5z^53`FHTrM}d45Zdxlq ze{nm5>4-hhN?&ZSij0c@@8+ZfoMX0|fe-h^#wK-W@$Hs9G>23#r`U(~2l@qm}# z2)UQf(z}AobH<>~{#}fTs&Rwt<(-D!XZxwH>$|De7JXiDmT2wOXgvp7I|N#y&Tu%G zG8mzgJrJQ2IP1sk*5zNJ(fN1KX%Oh-GM<)jp8hfrp)*dPbMowajE+^K;{_eDWacnB z^_{r(R@ErzuMCpjF_yKaU*)K& zw}Wf-MP{Ne>aT`_UHv-yl~|imW{D-BO7wN;fxnB|uh4o{qvZgt|FlPV74=ZV!G{^G z>p87yoK|vPRr)m={aK*DOQ4_1N^&_b$u~0klQ@05Mt>Z5)!_vjl50S(rh6V}H43yW zjFz3#s$#V0ed6%>D-k*q)P^ztkJQ%*zKG;WBjECPYP4&SXR8|`au8pR9}b$K5vZ5z z-HZ9_#@GtfjwO7RQ^z!Iv>Zt>WXPxfl=H zj}VnqydOj`%~9P`h1ule{d4%3r#7%xqkIUIpA{&d2_5&wk2inXH^)6!{^wtas|GFX ziwNry!j`dI*~xRIDT=E<{iOR>u@39}|~Tio@8WgB*{B z_DeVag{a@9QSS!zPJy~ODjW`e9jfQrlezLOjCz%4B4#i8-fJ-Hs}0Q5=zIV=oB5g& zbZ~OLs}lJyZ8{U`#(PqG;jV!DOz0iR!0WBtd-!igt2#qafE8ZEAG5ZA3jT;dpWIC!HF*MEKfJx1BUQ)A&V7=;*ywHSOg zYHCcmu7FX9A$n{%MTp_?&x@(!)EElUhMJ(5s598%6*EG4(Jsi;Rz`t_-Y>NDNg9vyz+<_D@ae=U<+!%4z{7`(2R! z?}sxk?#+}+b1*y1@eJV|fk+GbL5?b+XOYe&%Obf;EvPu+qcjc$_YG4kZaYgcbTYaT z4sD=66#V7zB?qUWd>-&+p)6(NWk2LUzO6Zw$=pN1`{Bx9Wu z#L>@C@Rs37DR|EpKELKbm1kzBG&NmLYu9(r#2bt$kibyzn&F|~)x)%|kSeFTDL=o` ztLc0NG2FQrF7&i#LJlvz6iL13nb35!^t69~R;nz>tErG+73OC2-a;|!O%G^PUIUfy z3Vez^{!lQ3bSq33K3Bd6HKBFAwDCyAbjV(UPJ(8VwSk*7T5p3^Yegi@X4dZ%vVLbM zczy_Jt{|=MTzQ3W%^{WA49`rwdPc4M5wFtwQ~q=hX?g4K->jzj7-EQwc$MBUW~ByU ze=|gRTMD^`&!d<2zpjNph49-14nIO!!1|>17$EgK;>yWT@KMaA=gM>4=%=#50e{zT z3*Pm^`)xf2_g1Wo3f%;o>9mU|myv78U# z4M530j*o?k>`w?rjKkB~Ec_CBE!&{$(m&Wkqew4t>H1KC&T;?Lp^}ZZ;9&{Ts zPLfRBHL6Tkg4>IBxY+oU^1mK6V~J1EjlqSzO1jM4z0bLxg2q&w$3*%L|3D6Uu^jot z`8+_9OGIAu9;hDUG3C2OlUISpK?69b5;%x%k=_}I$g3GOoaBU+*cdsGR)^AWX6d&j zkW(R(Q-NFnIgx}_4k?t0h5Dw?pi#~9{d^(oiTxXAtCDI4pF3?4Nkz9EEdrnPJ^-~2 z+WLQBGs6B>2rI6<4h5HE1;1D>c8}+;2tUl)maj|In71SJV`Je$%TK%SsMQ<_UOHgm z^?PBD1@(K@K#EqsU)91sSXS%*xJBjKj{Gh5itV&gzq1EY&O(Ay^_UaWF?@kk6sosf>WA*WGbU`zqbD`@HpZ) zE=Bl^me5hs9HkhdM1y5>!&<;F-Mi+Gl-#0h(X-xI24pI*QGu; zjqhyS&+?!}3w;=&*QF|XK>N^W1!DrBk{5T-UIEMwoV|waW_u|{J`XicY@g_{Fd3HM zJ<(FUlXS$MeaA$PV!QSZJ5gD0sUU1irLl568(A#rw{wg%*Tg-gSf6|dD|BrbbxAPA zKH4qF$NJuJcpG@!UV44lh+cnIKkcVdH2byw-|E$Ld(pzbtCfH@lz<&xQRl0a09!wH z%gO(M9=g_lj~4bFgxwz%wvFu`vtG1Vtrv@}qBd8d^JO1Vn6FXzPf)l$DFugB9M>xp z{@906XH7&lI{%95(mkK7H+=KJ8c2e@J^WFq5a}RZBp9}b25lUTBM$eK@LEt4_|0Zj z1}DJ9mkn^SR!)(DsKr&nKH5hzXod`G0(WU)dq{p!VMQ4@t>SD#p>uoRz~@vR3=V5I zK_li)1XD40BAAA9@}I2}58}PpIY#Vaq_pm+uw(2=sXHQHh4z26bk0XQ)!eQLyt`UW z>HmV;(kO0sU`J^^?I>kEpTgl-meSDYl+vAA*uNuec$p|AHKjX{+ig~H?xE26hTdzb zRrsfJto!DHTTs5&>!BSUJq;g(B6(%jxcCNKY>(n%hc|Z4G8B9@M0xcDOTizOtEulp z*dIlO6;se{6*bCA3U-IeSzeiVUZwE7GV{E$Ag?~(E}>4-?vmZM?KNhs%qgzDaM75! zCQz?&kUpn2aLyT#Ve|;?X400}X-r%uU-r3@_tb{%!|T*`^qpuiTwUL^E~OQSnt;DX zO;=OE>( zzMJyrzs`SwDtRR{iWv`6@-)>hOmQ>hya{vb@!nSb^d zK9Zls(bO~XpbM=N)tw!)?U)}aEy2}j30mcSe@m5;)uvSFQi|$Q_oy?e!Qiwg&R#54 zIlBRzSzs-iuwqaX*sO*9A;SKTO-z+ouiC8Qm`$Pc1)Cw`btsKS!<<_G z&xN`vjzR{5-P#PfOg_wJa^dr(*s++}G#GpvE7(fERulL%M@`Rd;Atp|ryX%;N(O`b zhe^^u^;IxQlYV^SA*oEMc~n{_3`9z6i;rgYHGzAyINHJUNul0}W4^)QT>{U`InOri z|Fd^a+*9N#W&8h1+5W#$zW=Y3k6cRKgTWhwR9UnbpPW+@SRs^uDnH^_NRjSkELEh< zuL&I2s}gwz60r&r5l1+K!HIPG0=qxU`TjmSyHOK(R119)p_lMcrW5n2jEfDK*vGLI zt<_d&z9%6T(|xWPjWZf+1Is7FWxn4vuW?>u`Qrt0{_X-cBFaM_vjj8VdKj1QM9Aqa zU?Zf=#|DF+4HY2Or-$;jyv)(!{s5`YYynNyKd(gJz9Mc#YB2aFX3b;d$Ij-V&d}VM zAkCc#S}=DeNZMe6%G|le|Kes)W$Oq&q%Si5TdCG-)+-JMWz3xm_}qDnyyk2H+Qe?m z4b9yJm~s4Yz=;`E%fj){rquXv)M%au%_=Fvx40%X7`!!#=4GH6p~U(PzfGg`6)2?( zl*Be;FjzgL_8Vj5{Ii7zA#Lo?Ga3szss5*S%8LrvOfnCBQ+Y{NyAAUkeea|JW65B! zY)FD^jP`7gtunhk%VWEY{Of#5i1HpK=e&*3r}vobDJ8b{0;ROxVfGpAX2DG~2l@wt z{dnnKpDC3TurckjJF?noe#z>N|H{>>ysxOO^*^qa#+9c$@mfBG0)CH zeJ^13y@1tsF2R-pUf-$YuM)T`)VNzwTjO6FQ}V@@QK|3Mj5}7}{ikcxl&wU{(u9@1X8PR(ivCp^njlp2vAf4;mO>Key0gdtoP(IG}D>-rw ztHXoAVa)Rfg98KEY7O=;(?Yb=qQB5`yB;;z_aAD+$8=9x8qZT&xR z7h>JKOwFl!Il4BzHK5KjbLGoHf##7$oB_*W^UNGi8hUhHZ%)6tB8_VqYW!WZRard< z+64k_QIjzkY#%^rWaF}2*~)0=ct~@h>%Gut!MG?x&QSFB4H?keFTJ3vw$x^L9wJ)_ z*=YZWjd1QJO$2c6w$x_HS#EPhjwglD`F&ps=;WYg?Zxg<(k;~Zb2RRDgS*J?+Kn2!Q>3#L zx$Js30(=n#r@K%a)@mgN}?e$y|NWXebn zje`9(8dooXtB)!oTt)YrA7eJJXqj_y`jN(~neGgaxiYJBFnGM5(ih56({}`ve#Q6w zo(auIxvEDiK)Zk%VP7D)Nq6NG+%066sqaKP;TsG-4Shh3|0#{~TcEs=^XP-0E*hc~b>vZq(4bx1`D-UL@)!~R8=RF)>E zwp%(<;hV;06w)`XPBZjXh6ZwEBYv{md@-3y`0WV;zN+UMNVlqchKA3q;)$Yk>sgV8XBO{!>I|Wdo$!-9oV;8 zkNJS^p$zzJm-$j790 zq1#c*OsGv_TvNL#&cWcN(7hNk6*(C&H@CEyuv^pAZa_cNirTDTm4|eAqa7s}>$rK) z9$I~yT{d9WK)Qxbn@iWCaNB)818sc@&d{dd3~i(&>MNp8KZ!nKDMhXb`?r#nWxOk2 zf&R3C$}X*vkK z#Bw#7*GZh$C1K*Twaw|bWRe`5{h4V0^Jo=DXKFWl?m#}1zfvP~TD}(g$VcJwPv=eO z-KCznzBJ^i1$k;go?1|&EU0Cap6I+1eTZ(voeVD;%UqF)Jhft8NqPDp%hP#Nz&*>; zI^^klKcciyo+9VkjU6Vp0j-nTQsMn!g zR@@6?qC|_MP)BfQ3G(O`*6L{UfB&mU z)t{Ye*(r`Gk5>#MhnZ9eqWp2GyvzGjr~e4TcT_~ei!I7PaQyHTp9$@;RBGhuu^~MX z`&hw_??|VSwFad7JZ?)V1zkO@X6SlTbgHijQcy<$-%biyf)sGm2&Ax#NkOlr;$x)3 zm{ba{4@FDCs7S&8Ht+kL{!bBpr#+bzI)@4|vz1DWf)o;`{Qo_TX)$RubyFFjzD7&0 zKS$$t5d78%xhD2D1Hqak={?E&VW(e0E4tT~EWM>Xy#@b2rZ@dtq_md!&0*J9vW2gcg+7&dUv8GC+>O77&#cw=TKeV&qlMaP`UMA zrSY`^eEGC|m>#viWFYvXK{YJK(RPgF8n@$A3EFD(QOgFYO(jEX+l5%6MoWotgh~G2 zm_ElG>2v(uHL66mlvVpXTU3cmj~dYp1WN`Re6|FAfdw&8@2aFI!qtRs8o3c?`dtG- zJ>$)?rw}7FU4?1S*hb5qqHX#;1Ho?wES}VDIvSC>EbThZ@h9gk7_&Nys8>h@4fFiy zegr!c?ohr{dec1h%w>$jYHJ}Z<9r3{-4-h!+a=GTbj)PE8_l$Lis#dD$re*GrJg5P zuI-+!%I>?!weM-AX?oQ9_CWBbSQ{7nd^65g@IK$aOruc?`4=@rAco zSW;Fhm0_P2?^*2B(^Ob^OKe9=Y!)<6INzy{_KW?JiV<%*X6bwNEG)ba#L_7oyqKKrnlN^4sE8sF^zlf|dcy{yK9T$GT{)p-TRVu6!9glQ!jh zY?u>Dy+6b$W0e0=RgyEWs}5YyX6sJu>CFQ^%`FFlpJB#Z?Vq6G&I9i03PobdiQW|$ zpDy!eVK)Y5_Lz;b8L1cAJ$WGL?aw`sb1*;QdEPvf#IAnYdyPJGC@ zOF;@!kit`tL%S<(fu8@4f_Agq?8|4`WuI;!Xu|0NifeYz5|!9B-(to$Ut7Q?*CrRH!BUdx#(~@I(x6y58v*M)}s&zWF2cJ#3 zMTIe=!FhdVNMTN&foWw7?iBel?W{+NJO^uDMw|#SFwRukPieFlfOe)pJ9?yOVYE#G z?R0^*$)|%}>nNSz(X>E2y7aQHUFy(txyFulv%4jBK1ByP>Dg*}?1-|h#?+0H$kula zOv6MoIU{l)mUiq25}Gx%eqv}7+FRVx(%G@T{kCLOV#jFaZar2}NW+z!T2E4Hu_K`5 z)XbbW(#GyAOvYVozZK7wNT*Gsqi8=;WlKBsT2v-6)6!LtCgT5N?QH<7D(?L6bCVE4 z2q8p7#Gn_5G*HBVh=?hTAw)!q6e*=>O@JgMkc5~7MAp)1Sr=XEUXZd$q^!EuC9KO5 zYyE>uZFGHDWYvE_{uW(y1G;Lh>&Dd0y~MmcpYM6Qa|5>fyhMjN-(-Zdurx@*~(!5s|?AZJ9+1dJ3mZT){XDT(k-5|$q!^rI*|Zt zL7r!`$6$TOzY~t++h%%4Ig@?89CmGs_?2cRcqCs&ur9b0b%$T?w}Q!`34CYH`l4U! zd^_J)K9=U^{JU)%dHj{1M`ldF=nn7qfA^lu-ifzQrnQOJhrJmb-z{|QZE$Egy(J-Q z(8*}X?X3NscQ6OpZ|mDF)fji9X{UojIY`xSiVJC-8W<2aRpqc}ivebQ0ei-G6;`Gz zi#up{cxk`I(~30uXneLpM)7tXG5^U!EP<8<;(oMSCIGTxn9dpp(h6~c$(TB{#|cULrQ3GyZGw) zO?s;}6k9$Kd6l`>RCdc~f1hy`jL*j~PO-;|Gd$J3{nOX^rT!H6?Z;Q!O*`{uNZq{u z@0B=(rz`Q}ayz5H|1X8T_9E=g8;l7lrnQN&JN%b?fB&y@4GcGaEkjz0In#F- z*4hj+{CPrv{b{M2`oy7;20 ztyXhHbL^S*e=xZ*xh!saa#2diu}aOL13O~p$9f*x7TIdi|Lyl>^gN_`o}LZoc24y2 z?)I3htVebe!Si)9&L|4DPQQF*Jo2MtPOqt&l^Rx z-~HIZT<*OiLTNjO?@WDcggt{K#7g>2AehD%PLh6edq*5!PRb6Apnj~*rMan$>qA3n z4Jr8E+n%|d34S?$M>$veJvTpOt_!=vH>rl~drW$0=-CnUno#7JH3A#ccQHp?bcHH2cXzE(c;@wn@lCGuo<2v2s0`6I~vko`TPG}Lt|_>f504MAFFa_-jL3Bn)Pm_qtlUTLz_mh zqI@foHiLIm?01ZKZ@_-PDBJ!wrxo1(#P3si=Q7*%^W8hp==Krzn@2onr(VRnHDX(YSZlRPHir|DZ=iJvfw)6BGW-L||G#@RT#PrS+(W(P3~ zRd0PY5D3M$Yt2?)<;+ppOJeS6h2q*-sWD5n8seD~{(oi4HJG$cBu7@)%<-qOW@P0? zjy#{Tcs})qkCmVOt$n@}zuH<|QC?D27p$#YSywVUcy+N=wz8_Ywru4(Q1SYz605vw z;$THd)l|De%wkRnMkQ2aaxX8vk20)ZS6&jVTTgTqWq0b-)zXO^5V*3qIB1+9 zKt|a!Hd%zK4hn8wxG?YLxwjSGG53yT0}`%TUq>UDX$O{J_4-OqEvT*ix)S*DD=XI6 zB~+shRN1BQLS5LT4UGQ5Yl6Yb@+yB!)u^Y+Faj_q zA9-Bfcy~c3j@2M$_>GNHxxL|uu4xY_#wbZIDP14L;O)`UuHRBAJU{`jdAVu%gLrH{ zQ3=azS?)qqZsEF;`)aMLYbmsIGbmeG8(dXVQbp_3Zm8tmwvt91kmu^M^;nlVETg=J z^w^BO!Ug?-bwK>ZXle(L{E^Yut`66VE*#&S*grlJI5J<`^_}QH($`&qKh?P%F}H>b zFX*Xm^q(B+9Jv95!iK7KRqO9Hh6zjtE0Hw?vlz`8#H-d!vMNf}tXzFxY-Q1L>E7$q z71x)R2K|0Y$1`pj9EgM+MsI(W+i*a{wSU9-nt8BIT}vV zjLYfQ7wz?~1-U)h96P)qZwBJbQryA6cs;ix4N=@ZR+rJWuuT=h8QL>t0 z)gBL+b;U$-=S1_$^;OYoa%+TsOe3wP5!aMRC?#lfl)8UkCYt}dyv{ON>0@>CXc@2lHTZP|I2 za4)PyxVFqvzU8Imx&>2<_iQNVM&hTcURMY!lh0^dT&&nenA%#WeFj&rtX{dQqQs}N z3#{|1oI;yLHC4!R5^Eka$%T7cjX-2u8Eu-TpV=#TRi^C^VN_O9#s?tp1RDenr*Pt}Luxx4L#( zq03?HM;JyL9UE=ycGbI3K*oEK>NSke&zTWdgSS!I3+a4Attz>f+msJb$XH6dA?7{Ua>KakG1N>67MItqURe{fs3|x4(uLXC$I=zwX<0KYtFquu>u|8r zvQCb$S{4wNcc;}X%-@s3vxwI@d{YBfOODbIFRXasEZjnPo?XFNllZ$=Scl_CUz~2W zG!eFQh1D!9dEsruEB*WMZ3k~9-s2PAjJpkm_4%X)d3)v}1N0_26oC!FK* zP39cnT<|P|Pk0ng<&6BmI^0uXSv~00^8?HJ@&{J4uy}+&C0=^m56|b|kBIm55`GC+ z4bMaP(yJQzcSyhT604<-unOdb#V5SVow_4hl zb4KTKt65k)!fz5UJsRLS2|iA|r{+){Y<<4dn?$p0hhuS%nS3EPUiu=s>GyL_CZ z+Oh?_(clv<#))SUa;Mf<))w?yLf8W2gvBGA>+($G9O!&-j=>{5Sz+)*zVGmz{JwQ~ z&RWMV-X`qL?_15n;uC(Ac$MoZ_>O^FiTBDW{31?z?LsbtboI1j17RWLgvBHLkjv8! z&m-Um4IbfYoOo6s_n+mQp$gC4ge^l(SUkcDU7j(6td_;#`38^h9NhQd$-)<39P+;* z{jcClB&=_l)hsMN;V+jt<*R`&vdpqNi1*4T{620aJjd|G_Z0HGNzZxDEzc0P7kOdv z3GZ_GPQup!4jFvHTX0loWjen2dcJ2JE+akXO1D^qMZRY>3yV+qbK<4XrbMfylY)Ip zyr-XVJ1$^ZC8zM!pI$)zcGB;F??u9%Lta>X!uwplm*9IA{ItO*+J;CTjLdWDex7siEaFSS~B5w;z9Vett+=<O>|H~572;ckSd0bll7hkqUTZqj`po-g2CMc4|`35!>FvCBIunRWm#G$#y;%QkR5@t*w(7vrSgROE(}?j3lh6E+z+VetqDU7msz zt0fbhVeklle!IhS`gZH^uvM0I4dc)m!cN_8H4BSJ_&D*(e-Auwf{zmK=_B0v9s4}$ z%Fpnn*W2H*4u4ikeO+#~yi3^0?^w;k;uAhbywdMYwOU>Wze>EvC%hYn*;j_}#kU#x z*GazszAc1pL|#~Y!WAxGH+e5idP9ogk@M42U z_*lNf^IX28&vwf70$~U8qxuLxO}z4dMePcHf_P6K;cYnSQ-jmXtK=0^1q-b=jlKL*cJ;3ncdeS{yxNuLVj zZX^HSqE9tpWylHh_oVRME>9BeunN4w;1PZ{&*9mf=jgK!o+iR}=0)`p=4>8YpZDR} z4&F+(feN!aOJt67-8Cxzc6 zUg;X(ISD>ayvHMa2$zFCPvA?hwa6bLeF1z`gq0#M%-@s3ce#AY)MpWRxxpv={I@NO zErrTQUB4P%yeq!#l=nk;?7x1;41UPQd~8cqE!0WTol(^EJZC!R0oSckV3(r!W4 zVRM*&&as+>`Fm3M6XKO_3p}5JKP2Ac5#EK<_%{__e4~-qI6QHj)sjKjNaVe7SvbYz zTR}Uefs+hA;ZMHh@SOY>^HX?!1kc-qz4JjFLzhr@TX?w-InKv>aDRNd$x6WVHM-eb<8ITJ2~5G78alIG2)eeFMO|qUnSn-6MhLNz3xZu z8>IVNccu&Kxki%&Sy<;$Z! zv%o=vPdHs^;OSs7qxs!O_yOh@FXD@T&yCjM0DM23VYNI#Si_B0v#|JuA0=MpJPrR& z@FT=~GyuvRKFMSTe`y%)`;ywL@pT>!I3%>ZuT)rCkDhMk!_=H!ud?}gOCwQ5` zC!B}V`Z5!_y(_WpNz^-GLF9y0Ug1$L&tiDSfYS{g;Y8eOcr1MB)p>(;_$c-DI(l`n z!2bLOt65ll!XFZ^aybel!cBqa2y$h#-_tXhClYoDIbrb#AHXTU2ITg` zpN!ld!ge7iEIHvv-2Bdv-=pA%jQoT*<5UlKA$N>^SNsjeVZxRpCoCS}MJ~_itLe|+ z1qP4s9Nc<%&dhZ9UYcngZbFY!==BO=FV3`@g~ca)ka(5*1^Au^KTEt<55iC2z5`zo zzS?~uzREk3blP{^J49EG+$nmk}?0)2Oc%;3dR+`U~gd#FvdPzA?xzBmE5c zt|W|p&@3!I;S`r|1$=4XB!f@5n?@4f8GP{_o#F6pgYP(Dugr+@2_GU}`W%4o2>5y8 zJ^h61ar|Go3b{=faO$=6cLMH4PFQ*gFLim+v*_>O#RiXXKJNSQ%)yslsmRMtm&~?W z(g{mO-m_a_GPUE2h))3bTo;WO{^&Z^Z`8}e8?Ba4Av{OCu=Ei=O}xtSDEgcMpCaBX zm+(tC{;%AJ+>r|E6`p4acp5oj@d!7$Jg>vE7rfix5q<=RI+Yd3sUIx;Ci6zZ%8>K= zh49@jPZHzDD)0(}M|crV{UQyY|0}zvJNA2$@wIO{>#*rj`xX9-c$H@}d>!CVi1*4T zd=uo&)e40Y7i>2tR}4)>*j#Uwl)Lf0Xnq;L9c~ z3wdGj318{*&8NM`gU1+r!YMe0j>?m4Hn7C6d=OvtR*`KTUP-_I1eYDDaef`-G}gG6PAUXuy};8bb01qL%G3Y3?AWAQ=NVA{Zp;OX{5XR zTUN^f!k(FGH4BSJcn|T)|2RBPfE$SS^by{UQ#({47pC4HfTxDAwa5vJN4Uu4Nt|l6 z6oc-8*h zvaj)TSZ@-x4>`}?g!j5U$KZJi++^?wZ^y~rvhXqU%DySq;Wyzs245Uu-BYY)VU<(3 zgLvt&k@5G-DfEBhJ-vk6ajLIZkb8l2tT|ea67~{u!r~Er-sO1?oLpYR!+%J&j-kFKMh;CY3x7m*VdkMKd4=LLA42S01@2=B$I zUl!x5Uyi|--6xRlo^^DrT=v}wqjNP2i&wa7vZG%$^NH@s^rOj9{e;ip#B&t6Wu)5% z&vC+DK~7ja!iQX*1MnOHKX32|Gd|h-znk&JSB(5D(!UO08DT}p3yV*9nah_po%scL ziNPnFgVT613SWGd%f~)IO9Ej%lcIdWos*n$*1^{`iFqmUUONcCi&HxsK~D4EcW+?c zN!TIey!o*30hi|xJkNpm8$7~$aheZ5iZ8wDksnLBeuiFK3A-P8VU<&udADsJU&6N$ zTxIYHFUN@|4>?WTUVx{7usO&Hi${2d%QKzz)huwf!6Tf36Hg*?O>60=@FWu!hn%o@ zgdpV~?g~6=5q#@9_&ScKJtf|6dAT zXz&Zq#)*G4zWC03!#ezb;QIo;_HQu%`G(ajEPaLFBwp><0N+XQapJvp72byvU%l%W zxqd#r_@|Oy`W4TmpA$Bj^q#)LL6^UP`9LN(!{8TA#)<#)iH`p!zIgXcWPHI8k{OSm zAgo~`_Oy&rI+v~m*;bM?g!TyJi?{8e0Wyj&%>XMZ?`+?wC-iky(NpVAnCkyu<$6Cm;ITR zF<|y=hRgO~p0{rFpi}9D>&%s}ae>*<=VAdV@vs^z5e+hUz zK3kiWWAJarPjmgAaXe!Ie~$lM{7>+|jeiDT?eM}l>+mP&JGp@UCBmK?XEh5;f8l+^ zOJDZ?TAl?zO}wYS@J^iS{eI+RR~his6SfIC&(4IaT%HI#HQ==dkMInfc&*&TBtm_B(BT*#B%92~IJ1ggb+l^#gd`#ur~}(9!EOe6JFABpB68_&MTLp6B6v z0epaXuYAH!;l%d{zWC}~zRX)#R}fZh@Clc?d~Ei&tOc(!_=K0^0^AoeUH_x29NxC8 zoO1WTdy25vuZosi_!Z)%*VFJG1+yRR>nXe+C;fIIr+QDA&vP-tLdbdTApDTa(+Yo(_Ow&_+}C|)!-A(bouhQUuA)V2A}XKocPXM>F^!B($SCSr!B_` zd*#Zge!_={S2+*BcLe-A@m_lf@5hO+9$)rbfP5?E)%d)Cusr02`Fm1$mdnR;h?X4i z41-U2Do%VO@m1cwv5tOC@Wm0y!jAuoJEk{mRi3*Uo;ZARYHOSszQ>w>QiTw(AD-;EQ` zEabGW#`{MtIfTtX&f8}bp6JHUCVnz_yb&*)LHu0wxau~ZmxD(WFRXG2r@DG9XMK_m z=J}joF5!+V96jE>!aAJ4ivG{I^FCp3Utu*1i%0l%;#D6_@U(%C5%1NH@P1r5<=KUA z*AMcamvFyV{SdYpd13JhSG#;&@YR7U3_jucIPpwJ?hVpC2G2~wrXnXS9^p)vCy#YN z7C30|2!Arh;W;_RI{Y`J`@i6Mo3J;>Sk1!X5q_0;mFFpVj)7Z=_sS={2Pb_VLav5% zAHwqpVZ1lcEG!=3O)k&p@Z1lsGkAn^aN?PW+%W3*-x)tA6E+?>Vetr$c6k=DUdRBC zGLdIL@hZpD@EirdM7&on;r%$-^YR`BE4k?*=b3_=NLt;+u&tz9913NM8hBCSe)K3yV)U-Q`;f-zadZ!6)2(nZx%v zzW7dG#(PVo-wNLu!cJYrdrK~#@Nwc*Uwhzt6MU3-ul|Ie!%4rV@WrW8T^|3i~JC(@XdT zoOm`OHc-dW^iCeI~*VjkKDDrI+vl;#HnQ@I43KPrO$?;iquo*@|2X>8^%n8)5ax z35!Q~qs!9)&t`Cq!6UpDC!U$eX@8;`p4o&=N6y=?5S~K3_9r$GpAF6;-rKJb9#4FT z_)_90g0CcASb7MLboE%md~h^4&Co+Q4mSfmKD@+v9=9EyPcC8IeM$6robcPks~$q| zybC@_yjL&6M{(bW=LP(4;y;LAi(iI+5B_L;%_l!kw+uhIlU@;kR+u!NYrshrdO-AHj2ku;-Bz7LV|LmxuQrTMmGqF?fWZ!2J-O zhw#N$hWzEEZ-%deFn%}GEG$0Z6)s;2_tCq-%M3o@9EHJ?g)hEjBl^L45HxrMY^37d;8voo46>-cG#Q z@m+XB;BCZv?J9gfE*qZ3$ep2lTbVyDC2S#b!YZ$Dp3B3#$1S{*Y|SxvglFMoe?ffd zb#yq-V@dxxe8-0~zZlN*SeH-u5b@IE0DMQl&lB(ICA=5Mwn=3@zW6ecuO@x|9n9Yd z3nDKp{e(xke2W>+$AHrfKH=9>u`PJ^;b-G-O|=fMApM*0Z6mBc)oKA#4V6UU`KlyF59JYg54!4IbfioOpUtti!)s zNq>dMA}o?(H4950;m?UzIW!J;rZ8?1@0CmVZJc;ok$Zu3pTqMiVMmY?7LV|AF31MzaB5WIS!r~F$;_`d~&x7F229IzRZaq9@_-s2@exB^;_ewJB zCV2i2yhjOpDVcSX%Pagm@oKl{7^e<_4-)USqws!Q0DIr*`kP&UmFq8X{pqeh#`WV| z|I;B(`jf8zqU-O*S37JPVjcc5`t)NT_Y+n(#A+5+xrNsfFMWC#ud2YM#C!S)7vaQ{ zhg=TnI^iiGYz}h5;t`(V@=T{5W`VN}9^pisc-oWrT?OgtunT@;Wt~alcNH#=@JZs8 zKflFlc^mvD@t!`y$8h4=kDT&<1fBzgJ%gO5kMJIs=Quo1fEx@R;bNS4Qjr@2Pr@?R z|AZwYC#-S_TP{y2zR&mpPBeIgEu8c@m%u!d zbdSRGQ3B&e0`o|hNB9)+D#uQEPJ`Qs_sS)lhLb*>@z&uVl5X`6SU<%xp2l0v!qP|h zL*kY0LGt+o+)lj5Bm6E-_5BjQ#+xUQzm@b)!uK>`dyp3vpYTqX?-YEy!H*hz!Vls! zF5Hi=a^@jFk@RQaD+<+u#$PjH`y{T%5!AdYpB*jq>y$-$vN6 zIICG$e8Mjguk!69{uS_x#Czox-i(u8#mKcHw{!*TD#D786Bdu~GM6Wf_!ZzK29Izq zPCWdM{qTO$Z9;A;VH1%P7LRa-%fs*DTY})x29IzTl_j220qbxh>3)seX~Nn9R-5w`-KXYs|i8~KNk|2^_egzZFLSbW0UT)y{--wxht@Ck3m z6~R-DUx;6d&;KQN@lO?a34SI2&v(P;xc&_M3c@G5IOzJLTt5Y$;iWRp#Ss+ZvScrQ zDd9M4IX-#Y<(Om9Ptbe%UHlG%u-PmqYnsF5QZ=uEBqV zzLy$EveKycr`+q$bbn-wS9n~8W&Hzjx=y~D-%z^YrIUCD=3aj~nLZDfWL~GDpTj3>4q=PwXC1G;h7Yw(Mvnmvcm3l zFrWHxbxWAXah9(9ms~G(Wj-vhpW)g0J~ZF5e(K8Wg_|2)-Ckdat+-|H=K6@ozsRyK zb>;8p`VRN{6|U1G%fo4!Xwy1Gr_25_|-KJo{w0bHKv@1*_Ry!yD#=l&(0`Pjh>w=7NM#oWjaPsM<~ z@A8b{dJ!_ik=Nhv$qQBOzgFY=GG|_5hX>&CWZtLUy=&b!z3Y46^sdhvJlnX}dEt$e z-McO|u7?=>|A?NR%#RJ3IY#(+L;jc%KF84cY9rs@7&_lBJ812g>81?WwBfQE;JKeZGZO8`<`JhpUst>PDZZvc|Vd!v&kyiIYPyS~{Uf(mW zD-0fYj%v4co553yy?H!O8uFtIonJG;7a7-;hW@V^`K~hB?mvw7`q)UzT)@w_&nRP} z!TA#-?PTNnyN1l8M%qsd9iB1dPa5*fMg4qp3_V{nhzR@gDcn zgwa?hJO4{yg)tvtjf%M>-uJJ*PRwQVJ`!epVm3uxoFftJqLV< zHp<}$>Jy65Fo!ob%#n-vR9`fK6M2y@OGZT;&Oa*RufKy`YvMK%9^^`s4TzK zxgg9|-V+pAOpEh)DVXgcT1(NuAX zA!4>`$!a2^mF&vfec&RMbwPOS=%KHuMs>ujSFfxpEH;9o8F^najVX~`c^AZZpJ}5M zHGE7hnt@$KwS{HHHTwQ_Y`DI-T35JQcEBfoW8>EI{q9OWlxIYXYT!5K&Axcycy1LI z%5pKY)n)4n^+DCxO!%^#^RdzDbrMxGRo^GssF>LfmDT0Z2&|!$E?!$^23>zanB7qZ z3aTWe=X1nP_V$NIV`|y16n*&)`!chLQKxoIG;gPJsLk@~GQMTHfujQKtCc7Gd<$A=zcEOv}R{qjEy$$V78VkE4YVYxAy1EV{|L6DTz@Q%Zv$e z>@qgUuQ~VdfS87|`@I)ocB?fT_!eR`Z&k4UDP<#!0nGUnzfomtYO47pZEQNzcuQ;6 zS6(1M{u`MTl&>kn(m8RVf)Do&;BZ>+kBT_v;dIJ@$sOB>#&Of-W6V)C2Y#E>ucHe- zHtNS17HNMK+3ll+wbdmCv0<2hM2gNyB5T65Yo})iqkq$8+&Jxq8PjIYxGosHK6@Gw zPV}_w?3puWfNsck#fy@ak@IcpsXSJ2{@(2V&%P8cSwh(B36?X~EG?vh4sPZ0Vt;!O z)ZT@BmP58<31M(dU^UQEUc<1ti7*t z)p~kuT@5(@=A}0~ar(D`^!#sqMp`dlg|nRT|E}gL%|w z0xCOOANC(hN=r^WN~OB_y1#?QI?$BSd0`LOXR`K(&-dp9--}qB#Fb(N?6X<}A!`R` zhc+H7@=jy*WIyQV&16n4i;GC|C-w=Xaev}u8RhlZ!Qg~pUt|r*?HswVl@rQ(^3QON zj~pivFCrwhFaLdXkb5ICzdb25ct_&S!JH|jGY4@|>_Z)u;Z~{oytJ&MBYX32V-2pNWsX!AV4% zea$(4Mf2j@EY4`@T?dawumxh$E)o;4W0Ecs6Gu#xA>K-AXrn$;zeq^s^tbkSKkoLf zo_loq@ICoSO@klT>F3UgO7{8BA*&;ivy~G3vlN{(w|*N*2~m35Ysu8u_R8(d%_Jn@ z{`}0c%(C=dPTLKlZqhhWIfb_1WNT_5BTMHsMQdS5=o(IJ><=I2jLJ(+B#cjL7)O@ggwHu4KKa${cik7;_JbijCf%l zG1&Yw@wo?8QfGQ)s#5nVbg}o!3%LHJdp(76JOkF=dI9;ibFF>zMCyAZGP<5Z*f=*F zPyBW`k4~)3?sWzJ1Xq4K{zuAkt-yZ$TVy4#Ss&A47=Tz|`u|DJKp^C6#e zmvLQf$VBI3(b)`J37mt(ESv43i^dP!kQuP~!h~KYF4>b;gTM>+HapBYxHFAX#^$=8 z6azw}Wb96WIe~W8r59g*8pX3$O3{LOdJSA#UVN2hA41}+i!P)XxP*dw;L^rfy|9vs zw=!^~djhVU_`JVAH5cwcce=dQK>lXBM2`S};9PhTVVWDC`DeXu;-njm{|Wfd@iUL} zz6t}cIX9k6xSZ-o&t#Y5zV7cscrI4un(6)d!T3Qv&v4Y_4$ zSqaQK26M`!Iqysg{TC;>7Ig0R&VcQDe|16U&Rp*0_W9vDn>d5ncS7sH)0q3i_5FjH zll`ba(Vk}~a>DRy%we5c2#nKgAlMz~aOz|D3C7m9QQ0$D@2?hmgt()|M`s7uH6 ztb~x&`CxrQ&3+$^uaCNg?uXDVUW4mst zE$F<>KRGrdWS)%MAAYxQxLvY|cKWya#P49_$EX|$(yyccPE`3Ls-vBf*0v(~b{x`vIR zK*zU_^nbjeA-AeDw4tH2aYNJcP+GzFcf@y`>ra3+#b+&qwai^Xyca3ju?$AoSb^Mi zmU%G#a&%2%K73POJSk6l=ec&SBV|sEJ`FGLVFmd;Tc@RlPFMDoGAACDHP$Xs$Y)p& zLx#by)K0nBPT3!h*E#NX9jiRQ{U_zV)K6PS+VlQtvZ{?!FQ18&*(YA#{%Oh-@Y(kx zW%dkw;isu7ci7wu4Xxhdl=6bkIG^!e7+;HFRCxle??oEUYTmxYW|;3YX!X<|KG<8h z@9yRe7d>^j^zp!T{o%jqEo_L-8vCwVb5|U85VsjSc!1o3MsDA=+4J49|G7?d_sjl+ zf7x%>^PsaW#uGSi_OikqQoRPyKJBL|r4p;PA z!3~WsN48n|x8Bq>p?Hk*5j&F!oZpX+h@+QTqkd_*34qLMrp*m+*vw}A7mof?R5 zcj}_v>i;-_65a3Te2knQF>-z9|`Lnm$nq>N#IF`7sXM;UzS_vB( zOPeYmpHHqjqj^53TT6>uY%R|B-ol!A>`B#QqMz&AMFpM-9^6ivqZtneGnXUNN zVdcKiPx}FBA2rfCxd&Pq0~UHcS1WFf0S=CD*Y#XGj}$|@fBmYoLH*_uyUp_K+FI3H z+W0WG8DJ)%Q6Rqk=1*BK<>#pm8O`Q(y^`nE!|%{!(c)+w-fZWP;Fe-fOev}lf1SnT zcKobf)*r~qQ%_!R-RJa-A?t6wFKO-%LqDV?b*}rF5!>=6*&5{f8uX*VGlmB5Me48@ zje|MtVx2jgYinfrWp?c5_8843pqcKyXGR33wes)C_6xPRD|DBw#mkY?fx8+4j1I4@ zdpU9@Aj$gs_%W8Pc`H}Loic1@XT!dd?2z?Crp1r%4`0Hm^iCaaneNr$rFYEhy2L2K zw{4Ak=mEMA-%w@4#4N|sGyEK` zCx?C6(N>yc=MZsoc&*#CwVxl7t+kK$w96sw&vTu$?2``BJx6(eD^$dp@Ly{02$#@K zy`t^kc5i4%qr4-hecj!Gy-{SWa;N_8PvU;}QdGU7TZ=y2CED#xhw#{H}zb z^@rzo#{~<OJAECXBE zN_h`l7K$8Wj89tWT))Qk{FSNLkxHi$yoTf;SJH{?|5!D>G2N@_A5xx&-B!x&4Ei;l z`bAvoEW5Vb2h{dw=Y#GYt92beZ_F)i)cxx0`O?N6k@0EkcC2d*PP!p9==8dV@!4_N zm5tl-oO?<1{$Ea>kETT}W2Rk4r(Mf9az1JqR!8VJ()Vbbr*9=`zYIpxVihl^d@+F$ z=h?H@+dQXY>bgI?>%2A2(RdyEz^8V+6PXoyjU9jb{<^g6{_xiGTBC4BT$eVjv}wY0 zPv#wVaA(*f`vUI5_ncRao`}4j7O-t$TzA|T0jB?fN!NvPJN{6=u3@{4QHDLLrsHYU$t!OEx+nOJ9Yv87s8W^q`=zO)ttARf!?a%==@LuGJvtQWM8wLX!elNuGiXn9C1t47736)>$S*- zfh$-|%i$W8gnh%|Rn-q60L!5z&y5Blk!yklNxPIa_Cud&lV z@1}n&Vp`Oimy~y%pY|8zooM7e#ZG(BO}ioDwPbZDu3fEM9jb1yvYmF;9izH2fZdG9 zAHsa9B2>{3mzDAs|7KUy`T^Vi6HZsKzGKDhjKZCfC0@A?q4(CJsNUbS^M2ON`-T|3 zhrT2`IO3=MHF~c#Y)CzUma*+14m&t_cCyX3&t~(+p8jx3q#Eri&~ANby=$*)Lu(sY z$-cF=AuTKM^xB5?zV3G4?JV$fJ&wjF7e_UoWasg;okw5z{eH8ipZm2mPWIFOZ_>VP zw34Io5#Mt6oz1e@o`})7FZ@fMRH=V%E0VQpS7P9LJpP0yv7Uan7VWFJCsi@_-1Uz9 zxM_?+nu&GZpXb$m2ihbVCHaP(_a3(-_r;XtJHM`qY4a+h&C5gOSY+HgC#!xi@xq7Wf(rLxYpq(K2M(`Gnjuyl<=|t&Zo8+(~W|Lety&Kc0YnSsnfL zx=P^cst0tH%+=r8VMDq4XZvbc)_Pk$jgTj7sZm@_v9B)UYN35KfvXCxZtn_IPhgIC zP1}L9s;fQYy}BBSrcFlsj<+@4=4$$IpEDZ1w)TNM>%`xm-Oy0nm@sWcQ+&saNL{E7 zz2n=o=CC?$KeESW&hweCg85E^d7RC>)n&e`FA!YK49Vl`9l-aEBXu@kXS%296!<0? zd_kM9-sPKN?^#fLCzcypEx8kGHfQT=d4g)_%Va&nHZ*`4-VK&r9M*? zOy4({uCSRZT&606>DMt#H+}H1&6MFYZGvg4!8FEZDs!1`HJDDvFpc`47^eKLlQmvF zJqXiKgXwacsn})8G?>1OVfy0Sw{50vKGSxX+Kt{j+GZ+pnfh7RdNrQRYF)j+v9H(9 zjj@^L_)NQD`g?=vy-3B&m)UH0*=)Ms^o8H$^$+2dsfV{(4i zC#$@Y?p>YVRaXsicTPsxjLTj9{?S++|Kwcbe^|kqP-(-Y>~*k~glZZpG~S;qVPspD zwfIDdy~bR4B90s$@^g3=y~h}OUux&D)XiZFHDJ!2r!f1^@0#zYK1k|61f%+mv{Ns3 zQy2Ec1(z|Szl0h6CH9Oyof&<)J)`dnFP8T9+XowWj0jCQH@Ln3;~MV7HK7vzEeY-Y z*eQ?Z4Z==&zGs)m%DUAqPk+|D6S9pLmUuPxDjMBuXq0AalZhUu|gU3rD`vevRAyXQTJ^qh~dbdpYuU4!8O$8n&NWJwz>L0)_gFXWlYJ@gsR#_qBEOpa}1HH|BqytGN< zrRUA|8mB+7EpMo8eWpa9L*Z82W$i`#1IoRD*vFOra`KMvcz}_}vz~uIzas9@R@-;6 z`FpVTdt94;iSpGjW2*`6|G1VG4KicO?>cSgzBxa)bA0W*&d052izeH(l;zga-?66e z3qP%u@=9l=JS224Pa5*OcKZxjF#ObDNU|A%F2h4M!%wu^akIlPm}epyF_!uaQ(-7K z7~YH2vnEPtO|+Rt+f2@ASJ-XVwq~sJi;A>=Q<22X_2#m`w43oSK7)<3TX;^l@;;sJ zS;=hjPBij1pIY^WztL?4H-o@+~*-<(Y3gB ztoq4>P=lka+J=&K(g!HwB zbnJNfFXzXyk5t@qWoXFdMfyAB<&uIAUEEx{TTDs1W5VA4{(od(meGqaN=IKXhKBX_=qbTjceNpl5H(d4nu2 z^^M4Kp3T(Z?g}+V5?B-8#j}q=t?8j^_M+yq2j#py#?B6RydSd4?hCK5dDDE}Gw{~B zPo^?L8G7?Agt%ZqXQZ)zq}mDWqHdUn{qKnEsx7i9$;!GB8`BQN z_43!Xa+S^4B%OvZBcI$R9j&#tO{^W;v~%5Xdk128Q;2eFr_Q%q? zQ0zTq7yAxl?S0ctNzwf0uwoqBxS%XBeL+!Q_`%3ndTUaV6R)SCBhbdFgV74T=*Ne;yCy?p>h{dp{*S-eo1;mM&z15mY8^t)bFIC# zH~dMzc&7L~*TZv7jHY*C*WX|#qKLOz=hIi5QCAvc5AD6-f3X=p&GX870}Kf+!@SN> zLkMT&n%9|X+k20+YahGk!*!=3o90_na(VM|^lt*0BRc}aiwj2oW?{i#yGLf&BSTv$Vs7A~nZ!LFk; zTYJ?}Z}^7(G5g0hNTayG<&R&UAKx+bt1G+fRM@p48tGiLkO#=P;hG4VZL$9Ct} z#_ayum^Z#Q=Bi$&?xN5C@1-81`(9<#L$PgZ#i|h-neP)gwQ;cTa%Kpl-nqOX$(U32 zTb`X0+hL+n)Y7O>TyWI5QB9XUesauM-Z^ zX%#&$?s^2>{%jG5(d-IpSr$+G_o;_n*>KgtkbSR>=w917)lc=~3HewIV_A@1A4_wLdh_jK#5hSmzJ?E26w`_7e+JtH)u;W}cD5#x;7d&qry z-}T(f0$GFGJ1NP&tsN5=H1B7#=jjA z%Mh0>IqRwuv$!AsQ;#_P^?%pT;GDe0Da(72_KHqW2Q>~CgB`Nr|oS$<+xZb#k&V$%Nl*0cxm5*d3P6atOae4z8yIIoPaqR){c zkllycL*@=tZ}{iE-uogd;o2kA@4BSyglzHMKdm?X)7~2xWrtEyg{Rr!+X#Qa4%eF? z`JK!CyiSoGvYrLhjB{YjDTPg5VyD`(y&GeUq(=?gVqYUa#@WeFj}VT^ud9bTM~z zoL(~4*5yAxh$n5xPx}#RkNRob(EW9KnVt|Fvwfbr+x@T2MW=0a8q_Yw_>{v~o|KaE zMMjFb|KsHOL6349@8|Y0xfS`j4P;12G52{KhF5Hc_Elb4KY?N5*D|D~nEN{p!;?0{ zUZ3H2FnpG4)|Od{tQ2!!$6=`Nku}C=CD~S);96%A)|rZRX46BNHLbrkbggD4Sy!~l zg4!a70@)#AY263%QrfZ=S9UFkwb6-WRy*0uM6*Nx$vWp+uC5LJJ6Do_AW!eFIq5Xx zo!fP8iC6l;*X4K3GITe0j(WpWdRVR4Gu|6R=g-BFa-W}aC@IGnDR~}1+v)cvNv-Ct zkyGNqJu1W2Y-us1tT){MmHLKbcT0WFG&tYRHf!=stGRFFaGm{1eW2yswB~$z=B%cZ z>$Xmx!E>b3p(lPn#F8Do!yNRT$Y|G|q*F%gW$cuUDY%SZxH$9E-teyt9oq7|8X1ia zIi}{W)3VE|KHmFR&0M;in-cx@+|qv8Ot22iFd6g0jqfr ztC@f%X;4al0zV)jqp()(YoVNdHx>wSi>+(DI`r5XK%oS5_c*eae{$MW zJ4fE!8y-y9b&b=Tdc$#Ct!eHJ_jN19SNxkhUZYsRmiq(Pk^7vhHO*;^m%r=&?!L@% z*X-yGe`u#U+r6n>Ie))x3is4^yN7-8bZQp!vEJ~h?n(P{xtqQbdA>cXv4)U;?T*^n zXXCw+hiIq2O9Q#%y2dwit>@JDKXl8^esp#cdj6fAOH@;>$a=$jx+gVX*YsZGSi4p> zBMOw`PQupgPqT4v_%A_PPxOW#>ds)lU~X5buf<;K|H@!g3v(^e8?Iun!C7tI7`lns z_L_aO8n0>MBai$(Ca&$8hM}Rs)Ix7~MR#v_dAC}6XlQ7I>@mU5;cqEtn>)AVmn+QX zy?LW{sw^l`gmf9bCMd3R!QXPxg2Cvf~N6?rfS!L>w(_z%jeauJJ@BO+jTn5E9I-S z#&4^=QXUF1legCble$yR>z?JTo7>u1H&btia0A0m+qyH;(zs*CBiBCIt}SP!AiHwv z`^V>}Hq2z!I5U*OtZ`;j!t`18oN<;tXPo8E8E3gWIkRZzQlrHF`+r@h(E9qAQTWUS zyG6a>`F4p%v)eSc^P?KC#HUHyS>%{8Gub#}RvvE+38gbO4a!PylRr2s z)%Fwl-IZ`sR-)|>Wq)}HqsHaTW9N28@BjaTt}FanSR69<+Iqu(&-(zEhVDFT1#`y* z#*cjbt;mt=VUG=aJmI>O$A*W7KOX-@fajq(p#Z-%%MRU^Kc;$k(;XSZ9}7%R;r)gY z)x(*S4&Ry5q$~c-PuY=5c{N5aJE79#uD5@O#$7&#U!qxMz2TZjE+g3B$jvF2;U1co zNDXk6(Hky_@I19Gvpqf-7)QvIR5$lop*TPHRB}&!EY8hc>0(1t(I<6h+%)NuRLw5{ zvy(zEeVl5nb5a_Us#E#>+uwM9?2UN8r+uLP+x9kQ6`HObWpzwG;9?-}LQ$amZZB_JmLM7udf77!gyR1sN%<3PzBF zbCuGN-1uwA&KT#xv9^X~@@ zc`|>*o_Kf1N#khTuAcDj{t?ty8g-QxO2)cpP%E219!Bp@X&T0waHQS8N80^+q}#vK z3_XYQOgNQR8QF9)awMqMNoyG1IA}oF$c7%?|Ca?{>1$np)*sEG46GtA!Me0!>IpCE zzog;P(4`Hd*s;|w8verWqn}Lo%6gXG|AxC`t5#7T>-ulgpSv({yEJ6rvfr%B1rP~Evg2%WcIuomhG|8?JlhO1eZ{p3g{?@MMj zUdcT_&~Z)VO6*}A`6%o}WKUXBeh^f@-g$3+Zs&48pR?q%&&bDIx%7nB=xqmkCazo- z+qqbq(%c$O_gOxMWtG8Vu3mb=`7tcl92w8}7{~naAL_?7XEp?Rj<~ruS_encJzMF3 zb&A2NIvBXB=?P!z)N(ebt%Q_k>T_Wzh4Txt)>ku94i^PGUy3E(WBnJ{an<}^SU1O zIcCCfxxtZc&j9D!^W~oKgDRP8=j+a8HjHl^Qr;83*U%>4XZjXQ>kKCKyAd{9zRl*8 z?gzFu^Un32RT&3o)%s;zWUzj|#4F=`Si?mid-da#(R`NguuipE$DE6skl7&HjO)0~ zZcnGip77Zg!500cfWu}!<9FBw+iZV0>y@|vt7z><*Z<#x>(2&gX0D1HuCrgM_TMO=PH3KxHz`<%%}4X z*I(IOe|FZikP4q;9US4@D2Mq(p8l_Q_gxEF;n!HHQL^zqQw>bF4$x-cGn=09d|R6t zXFqM1g=nAYalgiL4Bq3@y&C%wyl)vA%JR&0pHs>Vn>Ps^V@I$wn^PljUe`vSb1R%T z4&WTPI_n8{^0vM=g8dt7w7jkvKEpN`(qb6Qp8sshz_nHn>wnMUjvB3bZoF5{pTamK zhH?7^>!+UZzHV9EuJ&8)`U_-zchcl(ReCE9XDK`0{{qUO4lbVe1oQ zotS5=|6isobB(gR!N}Wh82N{NLB13l~W6?U6 zFq9H&J;p=e_K`5@6c%|D1eSto^L@ThIEf z`{jM#wPG)c=LvY`b=Ib8)-i&4Q!9GPc6!<=5$66d|D+G|jlJU%oB1C<%5-Pznf7ec zcP>-k9c>-NoAlJRj<#wqU)uUb4i^7)6=r%oESZ)kn$eM9#R3H)Q56Gro$4Ax1R_H39r zBH#WMb}Wf#bDwfA72WKysWf2rtk*&x^Om}&P02?Y!A!n8(l-#y|HDH9Ls;D>wPpr0 z>N6V#SL!W!+COV%C&izy@lt$0aqKbT=-vCiV#G1|BcFc=B@ugW7+?JiV_iEmkP(c@ z&EWrN-1R(#b#_+^J9b54d4yQT8L^nX^0m+pjaYif8z=YD>#wo?_qe7I~NAuO}cdvz}hP}PUk%8CgQEn`u;}NE6bh+D# zGMRnuwa^elmuJz%%O!oikinbmUdbfR8crU@+BrF#HBzKL*tN4T65AiFrQfQG#%Au$ zbcf#OJ$A1?tZ2(>q;Fu~$mh#!h-bGyo;NtWoE=g>tYIkoi={jhtKxass=yaK<6l9K zVy_z7xnx{)W;Vx;9w=rvkW{_I<%aJtk0M#~-cS#h`8TN&Vw;kiq^ z{txQJxZf|GVoUoX(%KWLJ03Ttu;cOwr^e)WtVt>C9Phr3lNuPbZ(v<&aK!BSl($ni z@47z7{c>ZF{pE)AWJi$xaHQQz4-R%p{ZUxQM@EqRfZ02Bhms@TX`}@j+XlgqtkbmE z5!_MB9-#dt2>Wq-31UCL$kl$}NPAS6?(+Wt{yWL#mG1AX`ED%jK+F{ zIaRxn8&mbP@v+o~$BIi-Jvh8iTU$uQRe;zb9`G2Cjjc5aL!~2aPps<_Pxi+*L}%#{n_13 zEb2!dTXx;*Z`WO&K1j`@Zu!pf6rf#S$SKzgI^SL6==8tF6m*tE%00K&(~$1aUqrqK z7!X*~Mwzj5ul+_npC8@YA8zgA_k(}vdAV{P;Z~ih*d5w^&Bqh?cuw21wx-b2B(BP4 zgiW+V{BP#&3GBfq1m5FY*@Djbt}g#f{#?)ZYJ6_M>}$G1tFKx90fDcvHY(`Ma6^1d zh<`Ui=xLw!ru0PKoS!@6RldzIAUM#?yB{C#A4uMpRHxRXkviGVGo>gtH_6U3v^VnX z#U)OjT_w+QBQ<0~A3X;|@+>9rI5k!M?78skJUP&ete|s+%aY$=4Jqin5~&Y;`^bNd ze9N8^c!<*sqhI93pVWNGWU-E6fy2Mre zg4P#3XhBX*O{6}EyOp;tygpt1?(XB>Nt@PIF{s@+yQ2l2%L|>H%2?e@-TPFv%1 zvVN-)-Zt4w-9}QE5J_EXpB5jEe4)=1BWg;VS`Y7#?g-bUD#sFTh{>6GQ2!$_`~fk% zWTdorpYr!c41=i+&L}&`c#f#Er{d1V_i9$cIG}zJj^zo_iL;`Vdtn7xELqR^0pT{l&Sj$)nzb?$YVa5%zi)`|Fc@cG${dRk_aK43c z`m+mHnW^w@iWtwerP-t3h*tHFk^TRUb1;u}nZ;zT`np5^ofZDzz+blwX-re!UY^EW zxvo5w6~pvEvi;_e<_tM}i$0L??%~!Uhr3z-4-BUM?q41p&O71-oqJ=wH2gCq@?Mpb z2F28SKD6WNH`)~Lw{Ey)k#HXoF1pqz>NC$-e>Ia`qJqwG5&3^X{y8I_4|u!RT#Y$- zGykgI0vjB-zpZM_ki%*Ao8ZItrRM4vEA)o$(0y0+TkjrshwiyrYoEB_NXFw9U*8?d zxmr7V$Ppj;V6}gvi_~@;s`gU*JG7V>)uPY(ra$=_GdhiD1}DQ?Gt%6d_Ta$aU}5Ja zyB0cU0pAl@@#N9gyF>pGR?oSYvrnB-T_bL5_$4c7*P8*HQTBA~rA{9$d=FAd&nu*%H%r(^O@Mc{Ba~Z3&J9I4EPdyKPx{uy^5+j1_ z`1hh*1)LF9kd?5{+G;<;=M3Gb-#v^|nhgv(m%zz#Nu`P8^B;%V8KI5}r?B$4kg8E! zbAbeAED3>MF&l_uHV_wh{gYV#R-PNjlH;-V*L^X}E@Rx;`K8m&Isd7G!8qkV~2US}Ay4=?s=C#Nmgt;u;`p7M|E1PllaxI+q$w;;DZM-@}k&?=#=p==>gWQH&)KUH%cqIR>M-y6+18JFCP2f#2A( zt($#`pTtZq5FTq;?VNhZ98}ULBGL(c`ncPWt}PwU`ybMwt}+LD4@p`USfa1OC(7U#@k`WZ-d$KifD!matypBdcd&OsOF|4HMuHuvLj-)FP& zr3~i`-a|b}p`M%z@8`Yb!LE;uztyR=he&n2`#Z>QC-#I$>$uq#M#!X)UGsVs9)DSzHdA03az-#`O&5Q>$^hVW%Xu{Lmdebo+sf+ zHh6lsu9?>>+G4Vke?E|$7zD!PT$Dbo;hY#ByD(}4PZh?%pTg-B1s&rf ze18GoUl@G7>vro`oW#y3TU$CXuz=A|`5bdDC6ecN+Ua~h)=TH>u+>G_v@4eH&X7+r zL)IREgWnII;(N>+XUbinKjr&`G)`@C$~U?qcjw0Ym^qi`ms*Uc7OgEa%w>y|f2=*? zq_oD8W?UFAG>3@~B(%jc4#e^~?GzK(9RDre7)cf37QZ59cT5cb=?vbEfkT;ry{%hn&-~ z^4L9{z_UPokvP`g#ne25w;G8dom}Y8TVnn94IpLnIQ>WO9OrjdNBI5-zJ-xG$(cvS z=+hPY@|w2~JuvY1ZT%bj2Me<}3!W4(Co8kHE*rpZ=Hc9;jtA_0tOe}i=CPBh^Mmpz zvo>0Z-t+cO56WW3#=C3wj$VG}r)#`)?M07EkrK}%bnXqiJYAuq*HmYAFh|YrJQfMN zpRj)u3G3`}>Umh>zojr=&1rGo5EW;R{hSP&6DzGYv-P-n*47o;c5SdfZuGG1{>(L% zk`sYH|F@(#{r*+>RPF%Y!)oylaP~#32Jrpf0Q$C7*P>|}7SZc@^tvOWmy;&5ohi<) zP@$bBy{@ppf>>rx$Cf9$8|PtJo`*O*5A%|@;aG6zCLl) zHaoYX-~az|Q$c5R_pbNptzDsRzCQ06?c=RQ-?M2|KHkt{RbAE3p1~LDoc=hA6`AMS z8opvZ_-VcsldJcgZ*(_ZeayeYlls}aTV0{Q?-o}-dpFF-TXw#EzWRO*pK$_L7W>~< z+G1&$dVjks^h&oW6%!c12p8jOm|E3WQ|++jXDZ#^KGe?RtdsY})%k+4%pYs{wwWtX zSXpY`m$>RaJ9pL;dOgo)sDJC)$DFtv*`Ih3(@ScTWa>TZXfS>`V7r(uFcJ~*u@MX zT7Tl6jeVB#eyl~hv~rfQ*1_rp(R)5S9r~)WEA&ZMKJPd3?BxCw=I6Dzd}zDG;u1&y znO_=9XeX4DlIz)C9zVXRpyMB^ygbh8lgDp#DJ8?Q*}JvhpsY9R2h(3MGyxP`h`2Vk*?OpezkG?PV>Yk&=<;WQNbM(0F zmU>LI^%(R2NROuzo&7^km$`Ord&JYFGdZrH#0}Y@ha*istdW{~ga8)d}>K7p&N4yFx#_+Amj(+KKW_ z?fsQ$eEqH}$6ftdeEn$~CEOsD_yb8LOm(E@+Nht4cKske*pGe2bF4CbjQ0Je#WK1V zU5yENZ^&v_QoFhctj=IWNZNH(H6qv$l z_ZN>nJt=;l#hF%`>1glU$9e5P>$bAv>*GLi%rSje`*~w=$I3`NtBL2&jd*lIci+9p zuF&OhKW-Y*6Ay3i@sEyMqjk4W%VWGjPTP;QXP~F-H`C?X8a@>h!(3mptJ(_9w_=zF zYKFzFLv1ni8CHOE-+7j%+0>rnb31D{@$_O-av*76VqL#yS+|z5ug|PZZz<$=99`p; zd%~=Oj%yK(a{}hb-WA%X^|}52R{y{=tnQfG*?Y-JniKJyD}i-+Olj<-m{s!A+CLgc z;xI?@u28WN$9LHa(VMd3PiW{0eVd&N=X{g===p!0L*Z+Pw07N#lhtC5 z^3Lqw9zDOeOSL~wteE#i*Z-X(VW^5QWWb>Hzt#3d(HVPJS)4icyxIAFGcV=FQjDV% z^_(xook;{}YXbuVShMwiRx|&W$AX1ZD4~I*CA#)?khAu6)(6ho*ZHlruTys;=l^v+ zi>_xPxi_`f9^BPXOV3>Qo25a4_gRanob}w%Dd$s#UO69xC4I5iD^2Y+TfNGyR$e&| z3N+g+PC46iU&>kYR;Qek*%|Nun+JI^rn`$0E+|GlrHaP6I1=a2i1Sc>G){BXcQv%u zi1UZE1?7zP3o=`s+!IbJ8^{+2BTFd_+N^V4w018u?2|No-0tL+@NjC5ledRBy)~J2 zmeyVeEu|ot8x%&ck~8IdKIzZS<$Di)lT~ki$HB>7KK&1Lt}*h-nTzZ6&YYXhdas6h zuE+W}jUL#bJw>0r!xhI4SDd}Wbv4v}y+1WLmgj1N0x7zuz^;*l0tuuzxqblmPmL%_ zTgCS`!Bpyz&ZB8MUeHnJesSdOP8W34mZ4#<-RYK=VS%Ch((8siJB(Ek-!O*W|H^9r z{?)X=FxrsSu{3`O<&p~O3H`%YF{7`Bj<7CvYS+x(bAi0pq3jh7Wv?);&)W$+PdXR%bIv-_^RfJn>5=#fiEoeJs}sxn z)aHjHZ}krkTxLIUXplIH(p8^ro-ZS#?0k5N3?6g!bv1Oa!E>_hFTU6vr#xv5Z%-U% z_pG%U!`yYFcIMG0DZ4AFBep#z_G)PO_1x^Sjl-xvwVd-Zvh=qb^ae>kP9xD?ugY?8 zaCqQP+mx?kz8dgF-oV_^89yJ&x0Bk_U#@-xlhHEF{@O2LUmEWr{F=T+wU(XZ3X9}&WwmsKMX-J)w68LF&l{GxPd&1&;53dG46Tw4*Jbm~LVJYAI%-kHE z2AAIvegCg=R(@xl70qF@N52|6{FS#Z9Ui!sI+)8j58BaAO;6#gt{s_av%Y4RmEKD! z$m|#XQI=LqPOhbaKm@2-Zv_m##j=jOnxp`~B-%jNtF`<)Km zbQeSGu&*BCmYlVgbCoEP! zjl+KDW?}OZp!Mr&)|PTvkgn%;?gm9@H5W@;W)T0DdnWkZOG^E^D%FmD&FYd~#Gb^h zgK~lJL_6pWd%~05f?^3_`-)xu95d$gwXhFEK= zH&>A5#Hy>cZt!+*uBR%jqbl4?K$%oR@bcAMLtaf;ujMlN8+g1bK&l?QiTCQVstO~_ z=8DHEDjzpoNFoK`v;gvwEUb9+4zzL&f($uz2ai#Y^sAbpM*eVevA<-q z;`R3`YpZPCqpR0G(c5u?e+`!&KPKVI_3QnS&H(m`b&poopc&Q5zA7!6YFZkVkRUna zA$8@Bn^M~?TQ>_oPBs6%bgINRES>@XFTw+P0-Q08<-Mhl~mHd)hW+^qk1hJ>58B73l@*uXt=t7*X17P{O; zonBjdLx!U@*U-yf_tkmTx>rtkBL17SyJ(_&H+Bs)Hxs85um=varBTV9blW~|m3G>f z=~BIJqn$g`%*w&w;Re{S$tlatYFoG&?sW1SswrP{z;r@6H;|L@PLH~2^V+riT)(-D zKAiHdsU#R}o{rd&w>FhlZZ0eFSFEFVr6Q8K6;@646Ux@Ug=S#YMLYYaMMsP1_3(yo z_1Zk^=HXOp?8?=rJG-?w74|MJ7gq|ny!_U3x}si{({J9xZYoi|?gyL6zfHXa+(`^K z*puzOeAY5@ZP1COnX&d36EwFi025H-9Rv7H|B4y8)%>QQs} zxOt%7BS0@^jqK#q`gPT0)HFXCcGqP8;|wWsy^GGxKWXA*zcT~uo zBej_X(tYXvNLp3d<~}UF<{STo_ONy}*I@Q)QA{=&J&GxnO?|jMI;OOdsabFBq7v5a zOq$&0sLHiw9ciQTZ7wI_tLdovaJ#8D>MN=1tAK8(hhvkU`2rKy+^x6gPF~)JsHU=J zb(t}I7#&cgIPJNaGka41@Po~C5gv^@;k7nYFpb^Byhyq2&bM@Ty+%!DKJJb0?hT-> zzXq0Gd1+SyEAj`w>JrV= z{kNRo^e#_V`u9wCZZ7|y&32(RFIRnlkrp!@VSE%0+WEm^15Tey6$~E&1}Q4OEY+Cn8m$q_n)aeD!1NG)%27 z-((fdePEh@x!5XE^@oBks4ZTsW-`C#<)eJ0O^l}sd}tfvjVG} zC6YIZzoFCXm0?CUtE-k4{N5tfCM7H_;)(whPZF;PjQI08GO|;(FQh2yy44t{NJ~D#4ea*U(;woB7 zl-5agFJCVu6vBU=(@MUXI=cZ4}Xh zHf9s{s{M&bPvYu#qrfdHLb3K(sv~8mY|wJ4Y+bRt?Nh96AE(T3AdS?Ps&&+OHMi9z zrHtz8_ba{ej(Shi)ymuMTpWEPAw92>%5|G6zFy;WNA|3*Z$A)C=q=M2X+IU~9;c&p z=IHK3+)Team$wJaXp6i_Aj|$+y3Vqea)sS&?7OiiuCtnTXY(6FtftAhjbCRq3iJ1Z z@X-=ZH$?70iPfB2ZdrASR#O9RbtP7#u;hey;jjCnFIra99`Mun3(H@43g#hry4G42 z-@U9mi~SV14qN=&*ILb|H(OTGVD6yDZR=XAQCQ)HEASWJmoZjTHFzWb9>4H>jCk@~ zo;~nP#Vyz15gzCAOpmpi#)GpB9^s2?9G+8atmbu(TULF#)pQ!SmNizRu=Ejr4S&Ud z6rMN0ui)?LBYYUM1btq_R(kii_Ab{hCA{*vc9_*vhFb~Yy?hs5=K9y+{|I=A;V+zp zA$!WNuePi_>~~gM&5O~mW~kM40k_uGR->@=6@CkU>31;BYI+-d5`Rx$;g>Km=s5*j z`RGSp`G1J?kHswud9OT#2fKWWeOA*j@IZr4_~a^w=jbYjCmp?x<92velt=h^{H4b! zcwPiI;P2@ryd5Kb)+0BK^qe6-HsZDhIbr@@5MJ)`B*$A#E5J()9^uYn%lZa9Zxmb2 zlL=Qf+-iCgx7UiTMq&P55I%~(;(raE_O%OJ{59Cz17Ci9g=PH__9bk^b7qCrJYW-PBA!;Ug%ywRoA`_O zCHl3K;5YF1;t`&J5zjE>KB%^=zk??ex53B>i$^%o<#{B@YDxk73?AV_-*b3&f6r?E zE5hAIz1fS~&hJ@`!r~F$j=$o+3{Ne1EB>B7!WkIp6N}svgsX%n0k`XqSdGHs5&rTK zho>UhY6?HX>*@G=Ji@y$;;BY%9^w80o-MdlASWyy;S!hUIy|M|RR)i6KIR^HCSp?r zM!nG5y#oPW}tNA26Z;!B=zWlCbefC|e zQCPgfm++T9wF9iC%is_3_w*A!iV@ENaJe9^tK+ z``~#5xgQbk4tQ4LwhTF8@dz(;d4>(NnihlS8a%?&F}3g{V&`F>TxK=@knn#4-&@P5 z=gX`{VetvSioeox48GUF$MN^lC;SpddhJB6ig1_U*^S!{uww3=dZ>-vt>C@db~cKj88^&raQJCq0ho<73wV3e+7$ju_$kKuU* zw>rS3ExWGmLV@JKH-Hf->_8j9X!|I z6TY_8>3_~*-wWUVrB?IAO6mdm6~ryD)M^wKpYTrnm9F>U+YR1|)!YPu0r}H7Jxs`C|;puwFvN|5J8imCpdvs!}Ov2Wo+>U zkbi>kAHlaDw>`)Ui%)om%hv|qPVkckpKvxtJSoV1k8pEtvzk(IOGHjsJi^x>bo44= zo*E18dN8V&@cR!sJZ~UZM7SOByouXu$O(%__^8YCn&!LU!v>G=0gUviMNaFd!|*(f z+jiu<^^|b6%hL|e7I1~ZBfJu$@pc;aX6%kd=!AU;Tl1e$*mq+mEOOQvm&RL7$+*QX zimo$+FF)Yu)B1qboPa(Pzeat=?aTvKqp;E?d=h_^(;?;wZ-L*$-zzua*DSh>p_lFU4&ka>CL_xDbEkiy!~l;FfpPIh^g<3A9bVDJbZpKDnK${*}W*yFLqn?Bb`=N0;!4BS%Z zM$;*rfWOkU0{>)iEdE|Pg)hxtx(4&%1o5;Cm6=VDJeCFzTnLVv8>ud9~w<^fTjd8-={ru7!uWd<*f<1P?a&gx@c6 z#-BH_)xRGqvYP)1eeV7`^KaY^7FmtL(oc9l{>rbj@CCsE{Js1Wo{N!QlaZ4iZ;!T` zrr`hf5m?gp0~j#@%Qu* zei0*mb|ZI!bd1ko-HzK%E1y@XrwmmYQWZ|{K5;P2@ryc{zXp83fAlyD2a zLA%9mHgdw^5uWbyjHA8gD~!P-JOQJ5OFDAe4}Axo4BS$Y^Y%xD6EKReJ>P163b|*H z`!b*W%(oha6`$}W{O$ZCzRTbb@%Qu=zJS>d&lzmx!!hJ53EvFgE4Up&UYNfZgb%rV zC*gYue9+(%4q%qSQ-nPgdm{3o$1Up@@J+^TJo3W)y&&v&`3mVD#)7j9KH+!2km9G5L~yAN%aMk7rtq!r~LYh`-Xa3%(D*@8a*JPxx(21w27)@$GQ=_Q1CjwJ zJBEJvWo+>VW;ndX(^%)=wr56^S9k~hN^cvyJHb!l@1%Z z6IMP7PjGpr(2wPUa||BgWXz-RT%YdnwN0mAP2-OU z)qH{Ud`kL0oko8;&1w{uUcwjfSHA3q=Y8-y_W&AeiU1Ldy)S$!Y5HKb-3+D zURZp>wJx95t51Ws8+^i5m`ZroV^6`Jj{H)>r^1(y+f?L*#V0(`<;%O1{ueyn;1kZk zNUyH@tmbbL?ml>~H z1cw)q7Z#sz(B*p@zJuWX2A}XQjPk7vn}6ktkXJslXqBa%j8=_lMd)k$v|d|d?Sm>Ny5@P`=0%3F}T!UlvN zy-wkF0y$yv2*2X;9EayM@G*l&_(hD;S%)pY8swEv@iXa{ajQb!%QxZmF5flyHiFj} ze8S5x;+uvozAWUGPk#WPAGZwTy?hfM=<+RPJRA&8Hu!|Ef5XYQ&#}eV`VFhO1wO{B zCgvvAnQvH)!b-33N&HnW4#D>p_)Yx1dLsM^M*1DX7T*r!mA(*sJ8^pwc`v=fH7?)h z@NETG8GOPe81c==7T*NqmA=QmMgNXl4)R`lg-5x3Ma&zs!I=i1@IZ{}NqCA=PcBVy z>d6TBF5~v$lxRH>eg}W0Z!dfoz^(Xu=@mYKkzUUur*!=mo)>XzK+a32aKPm`56^z^ z9)m}?7Nc~QVWVPsA@YxJVXrBl{RZ4-A}_3R5YBV?Cf?2b1e|N|36H`^FFKLtm0PGc z@c3}McCXbaEFR&Gd!6)E!PChG^XK?`=@Y($VaP0h2^;b9ZOE(tIS=2HxNSk+>yL!X zTt1GkZmI&88hpabFw$!(a_WD&;hBzG9&%oPBs|{bnVM@gO$3iKc!V=C`S5(4=RWt& zvzqUL?*|3!TjKUwp4BLQ@c6^jeAhY53N_w+6RIkQY`u zg%`VggBf3!f)^Tm!V@v#$#8iN!;^(uy1^ry?D8y!XCOGi;1T|KvZL2oY^C$~WUKi& zdW7M76}O|4twv$#CHx}(%AXeaUIsspzn5Rabr_}<<$JKD-xlPbCH&A?%sX(aMqXHa z!lf=>7kp*l5`#~85k@>yk=shRsqjq4Ee|og(pSVwZfm{uk=t(O&x4-eTu)AKH(2BweVcPejNJ%w)ERYxbLISuhDN0Zch_V zSo#TXb9t#>O;3WUZxLSMRT%LsK`x(gm*H84+alzI#Uotg@{D30Hy505@CZ-C)WXx6 zOCDh#%%xot{!fZ{UV~dOmv-s$3Gc;U>3avhI`D4%z4Qt{jkyb+rP$JMCi3ZoKMP+W zZqtw#mVUyyF5hJKAM(Hx3_jt>cRTBz4D1c?y*$z34NSC}J8EbLv+194+cVK>6c(@W z4*aE88~X=4!B67v=_x!IBmF+U%WD2d!u=~eS5Um|E~`;kJi_nduW)-gUx05fcqjf|J_v8aNUs&hJxaK^xjdi4Z8>tnN}uo|mq+XLCE)o6 zkMK;)ci>6HR{!_qoy?WM?byPnu~lxb+{w5GZv*kXhTE|_8Q0u+gkQp6`n^d!hrx&N z_w*Isj}hNq>^%6&kS`*9D|}VBl_D=Jy@gl0d_LBRYru~fe8LMcY~h#B#a@8z$CjSS zgv%{we5ZdLh+6{TgvBd-ZM>r=>xU)_93CIlQ@DLRb8L7nW3%mDegXSI>{G6N40{py zMQr8&)9~Gc-hVOAYTAWcEqua?Pk4(P-)F?P4P0%+C%hi>06a^v7h=!FUVuFfdpUL< zb`kb??C)axvA>5s%(WA+9|2p~Y%!LH@8B6H_UEpB5qmcH9qfm(&tl(?eF$6mwfhby zzn-T*+l$-IJEHj|yd8g)<7L)=wcxGzd*v#;Q3jsL*i*3I&tX5F^z+Q8sV#^4o5Oy* zn;*hw@mKi$tUJzw-^SnL6Mhq;d_9C*8sRp;^Ac_ckrP(F3fH+jt?(QG?=^UYcVO6J zDxZcezAWUsHqpPp=f^Drd13Jh4|MsKvW^)HPB!?2uYa9qT=0C3t$aKEb)Lf$p67B+ zXK*|9b)Lh!e8O+wuXG)T?@jP)_-%Gdf zM2zZJ7IKRSH~vBDJ#HDu2}?iWfiBNd=JSKW$p(+G52Jqj!!Zuu=`jx9lklCv?bMhk zpYR*_OOL}^XMkVB-_uJth>>1vkkfd*^E+14dfZkb=Z)XOi(UU9{!76N4S(T6{3nr) zPtapFcqabBN|$h+tH(sffvMnJLl5ChjPyuB?oTQi^Jq7zxFsSdEFR(O*-m;&;NjV> z)s-DhkMNh-&bWRMTYOc>U#ntXM!D7CR))N=_=MNEe00`L>%l7xKH+5;<@a>g&UWoY z*ZzF8k^-h;m|e=i8{#J>*g!+$q;2mZqRy&$|5f2HG7^w|!s!QV@la0Mn0 zeTtBKf^c`iGZ(jfTz!R)<1hVQVZQt-_$dCK zzQQXp%DDzr^b($nQ928;mCi)u|Az2CgD(X)AM(QD6Yk1# z_)6isp2faHR+LY;9rF}CuV9PsAo4#We9S|v({KwSFDyRcy)NH7@YR8L8+^hwm>8Nu z1-AHjf5Yx~?uKs#ZcCB(`W@l7> zUVe;mj{18LxBbWoi${33%X0yqz2Kb&k8mx9ZoGUZw)nD;|1se=z~{$}_jwwH#V0(_ z<>URIromv|BaP@K+?mN79G-S;@mj0r*TH`UnRwQ_*J|a{CB3 zh<5oTZd;HOmOjE|E>9;sRp3&CM>s`c;7P!qirqfkYFHV1+#_>J4J&m0AK8^4;m*)yRPlC4?Ji?1H;+c%x|K4C( zKS!S_xJ^V(So#Q$b$MnIPY&2`@CYYkRNt=;b@;9f<^6QRx54)rZXXZj{dAX4_#*yF z&o1~r1iy>FmpGpF_?W>b9K=Y!J=o&g zg8VqbABJxmZq>*Oi%+=Jc{i&od&ny@6{LKBN*wo zA6tA+BL7!}zk_wg4&1gOFDyRcDwnSVz8Y|u!6&>FBfcVR@l8a2AK||T-(=jzBQGpI zVZX~)NWU-^oMrF{`!M4Bbg;ws&S0x~3*j5!yMSBkV5?DBe8O+xuk;;+?``l&{Jr!F z=VPSTc;wXH&(qE(;x-OBul);WxjeJ+_k%MG9^tk$XWn->jpt>=e{31wGvM}88qdpI zeS{nESNx~pc^-TKe@`Fb?HK8^9y!H-fO6c3+ZyCNeT0|0JjwX4053Iogp)Di`7+hv zNhE*5sfB}I;pHw*GV!bc zFEx0C^D%ZlyZW3*ZX#~u41I*NT%OtZ`@tCokMPHX9DQCLL^~w@jmvqSh1>B#v_n@P z;g|7OI!?fI1pFfYUb=+$Vx-SjdUPlL5&3{L@{*N#}!0qq=t5H}y!q4Nc{5S>A zi{J+Qz5Eg0iIF~4$SFVeQ0_Ijl_BTlkMJ6oht1)p_288Tk8mdDE_l97an^tDV5@!~ zNnu`&K71G2bPTtbQ<#^#`UxMzU;4ZS?;&sye@{Q*r!ms60y*ikm;9>6Z6k7?e!{C< zo>=@#z$*+M;b|D@Hx^rZb@k`D3VJ;AJ=S6UnXmWfxr(co@Mri-k1g=EgRkK4=_R}y zvl*T;Z0R>1`2~a@v4Zx8+c@NfRSv>gF5hhO!4J+b_=GPeQ+MEb4O{vJlC9=@3I9|0 z_T#oE*=iIPpYRU+rB54tJHb!l@98JJ5hJ~pBBy*hOgfk2wir1t--KtoJX!e92NxPV z!V@qW7e={uBDQ!tl2|98&yer)enJxMFo|`7tDo@4_)DKB;k^QG!{5_S_+88ncvfPI zFBka_(Ub47oAPj*fV{BME1d1}<&z)dz@rR4;ZunY&#^=&y^G*^1-B!K(ew%*!e4rv zgokght%LY`dI@jCD81{krPo;G-%!0<$-ELbKk~xTOL&;ew~+WU!GjGx;p_bzo-6$v zz0%?N47ZQ_MfDQCh`;pUyYi+F!SCYl=_Py`BYj>*?f~&$f#(QrFCr%_eT0K9&)e`E z1n)O^gljS4+34z12TuiV>kWN`SGYV0_^$#lH+X~>Vw6wguvK5bOt6}FqQ~xH#=`{0 z!vw2QSb7Ox#$V~#4&SHXOZa=~6MhRLz99B}@NGl>1oG41dlI)T$P0^4xXk72gs%!* zYVZlKz^sL53AT8rVk_O*gj4;$2=6%DMiI_y55nm#?;`v&z^MkW@cZ%fh48$EExzON zq-#Cn$13)%a61}Ly1>#?_(l1zV?GGq%i!nb50=01e#~lkc4Mo5D!~@-BEm_pWAHA) zZ9d^VJ%#gK-faAfz|#$0;SQg}^S;mF@vml`hT8>Slt=h1{?cbZJm4tg~2Dh3?rT_`tanbY%pT}S63BdC%_$>Zj`h;6B(&u^PE+ID^ zo)>XzKu%ct2nSrA^YH8k?=g6UcVg5IN|1YpaGbN!REpaw)O_C)N-*ei)=h!tz)fs|rjJoonsNbiSBGCX6q{*Jn$-?;^} zA(u0K7UQb>yO7^4=pdOYerLMwOCb5J%d=>_yDW7;nVC_(A4wZrJ?q@J+HS^Tu}>!`3)DeXZ^Sj68KluoI&+hLf-=n^}zc2FpUN>xT1?A+%_2l>M_GIf&w9>Nv zl=-AMnIEWL*}r|O(7{dn!Zl7GFPV$qCZCxT==b;~JVSIj7xTN-b^mxN&vXVjGI^xy zxSP-OsWU#xeGp-{5zjIA_d$OD3G+v}>u)CcBR%xzj?wn-FW~Xq=OXX@{uA`~eh)I- z8<|si?mvXu``wAo-tTkh;QfBWh&RrVf0=sa$!s!yA0>Z0_rErDpkIx+KWoVRPviF) zL;h7m=f@5ApBehJQ|G<778(2#4bBWBy>&*|e>TDfjdYzhXhR>XIC@H>dn#qG!yk*iGyWpyqDEXeN7Ow((Bz07Xc+PJC=?S% z;Olf^CtBx(UH4GIV)q0=j*c~zx|OdR*1KS!_j$6#eM!7?PL0b7qB0JZePk^sI~SL4 zih8*RSGq^y_VRK<>15iz;=SD*xn764M*}#XH#q}1D&nZ{Ul4H)IIZAN+h|~iKXPDj zu`Wc2`a0CN@^!+xhjte0M0d`jy&?3?{mmj@U$%KuX>sM|8r_Q$sXeL;>x~Oj>^kH` zX`hVj)*g=ibWV6S{MQFQ|JjQMyGn+;>c&SjrTejHX4bY4aSkek=Xkl$sF;pLzss(8$DB05AP)U zV&^WBXoOOlgTvPsm(-MPat{eN5-o4zykGa2*GS}cl5ciCZbTw-T64rjVIo&)*f&LN zuIjDNrq!H$%)zncYs>riM8i2Pp8{EDh?rG{^QF!Fb~}2zotah0WC-~D*H7XYB&`gEo-W6+i0Nj?&W6Z z=BDD(lIokddyd7bxatT>A1l_4JiYZc&af}uOk*!*H0&**({=5Rr3#N?yJV`K5SxoQ zOx!`9rqar;P|od3c&_8_mPk6ya$=B;dQe-|)2ncpcSKgruCJTj>~3%*PQr6Qu%oMe zCb-=g%mmu!lt@T=q;z1oH(8Md;2;e9Df+1o@U&f_8s+r zMNx0sux*{;$RX{$U377ZEh1g*9M&|$Y2ndueT%~B`l9|scB9k1H@MkZ-d9lEPOUe_ zrzo|&oz`?qZ*Cx<$X9a(g3%|aigI&Kl*lOr`=T8uAML}WjVf|WFR5^|gQ$%`#OwiR z(-p+4%POL=i=%H<(3ImQ-HY-+aw`9garE{!8;etX$|jm1SBvzH-Oi=e+~rl{9jD#b z-#(+7yjf?2q-6U#(3E0AYYak-otb8!W0=4~UxAN#_?o{io6*pf{y1m`( zoj|%D90DBBGi=2_ml#!xlyS2Nnz5=9fOY!=$ z4Ud-6$hoJZjC&D`c*NmU&fhEI)PAQc>Kojt`ZxOZx%ohc+?Q3Zy-96~o|PXdgTAN2 zM?CClfO%eg#78M{8!0W}(RFUt6mQ}Nx@f*i%5AIviIkbM_Hbd+(AfbkYs{p(C+GU3 zf0Od=oAiymNmKIj{Qi4$C*k3EPs+`;-R_w>6(9YrN|q|lY|cHs6TY)u|9+k2pT)Az zUf;2dx29^L=XY=mKX3N;I_ux1$jN58X&aW}_Fr*vjn+(&zvAMh_b+Gf$^6svGKE)E zDXbycN@Nqts+Fa`;^GSG$rI&kD#^Z@YH(2j@AF6gUM0MA)iXmcUU{-Kjr`rtFJ3?3 zkA*LPlFPtsC9%9FYMmzG3vpE17i0A2rG@3LrF?P1%jd?w8e^?&`s(J$9o(UOD7&)V zii-)va5v}gdbk_ey_37 zFZ4LKG4CpjKga#2RotXpl@yrQ7Rx=$2{}pj9qoxZ@vTw6Z{k;5di-~_Ka77b>YB@4 z(uujT+#UT_J#pLun|LlUI5*dEdD(V}x_XkBIOGlRGcho%rO1fI~9=96H{5rgt z8(#Z`@5)LJ4(I>;j=A>jr!n10UnCaw;|AM=XL~}+dwkjb>gTRX=8o^6mCViC2UGh! z7mpqzX2)|6YNCCkZ6dcH-`VERPHA-Ip8HMsV6Kn5QhmK-Mzp0glH0lc8WJbR5ko9D zYd_W1ow(BN{L-zl{mHZBee-4~lWz{|V{HR|o*5iepTVuN(*rO5TT-mm{<0mT@0{*l z9>Cqp)_cp_QnCm8QyNppa7%F@zaue){7Si_E9GiZdk=TZ=eO*!Z?nz|L~#sv)K16b zwR}|c>+n>5E#yY|M5K$j<9Ke{po0T`I_UWi!c%LLxCuCM-|E@@p54Taz+17 z>`&qjd=U1Nx2c%)TJGL%`*k>@ttT|&x}*Dmwv^xiZtRWcc4p`9@S)sXo)XN?9ZoI` z4Q2(hg0~(2e%SY;_P0d17+jQ}AA}Rz=8je^m^-VgD4$!- zV}cgk$?wU|&y1zi_H*BJ?0L%{7f5T1;pX&x;XtZSitBL!wV1d-T+kQk z6}%pyU(gpw2+FTEC;q%w)=7cyx7FIEtKOj}bml8-w6CFdvac?#p>|qaU1G!Firt0i zdX5KJq%kpQRpgiQi&*0(kpl+PRN{`UPmSEIt9I^dcqq&FY+6-ppL>*}?xs{?eNx3! zg-NaI;iOMe#WSU`w4JBEvI64vapSIUpRc}O!!w!j4QZ>qzQJoJ4aaF8Ng09R`-asG zeKsRFgqxvtSG3P=5h=8YL9~m3fg!=Uc8eHtLyH&@IM_BcNNYIn^>HHt&$bPr#~j&{ zZnuWrZG(c&&EbRUbw7LxcL%3%gY$sEQ0&2zQk5%_eltB#P3W|Gt9?t@8a+6m{+1iE z?fa(F10{Ct?r+!bxo#cJr;Zl24Lq3g(}C2{y#MPu`ft~yXHsiAcYnY2ppUj*Yq#q3 zz+G+J-69VdZ0|V);~>89UF+*_v3J!|EJ+ND>i4$`IsQTQezwDj-j^4 zJv=LoUXRbN+O61Kg&BVrlWmPpI%mt)&$a8&;#rABae*YbW5kh~SOlB(PoH=-ylRfx z)-%WZ1rqkf*Cp8XJD!q=3;2Syxp7KqWTZ+AJmJ=J+5z=^`88jC?IhKuxJhw#ziY~_ zZSy&0obRKIAN(|CbmA;u{WFwyEZlL70I}SX9Y>q!SD&~(A8G1$QQsKzX{-4iQ`34v zqpw+`)r*`Bud@2lf>aCUc37$EZ4(0%+T_*~8hA~%uU<7i@mdU}IH=X}iLrfpLSJ=T zevc<6m>3wunCv5FpR}?|)~mINc2B^3AeiL#1Wz5O4KYUbgf4bl_88q0`p51=qb+*+ z*l-L|e?%`8vyYUi2l}FCQp`S!8Gz-t>iNc|F0tzWd=huOYL4b0VtT63XZt0U(l?P4 zG4u{_mDZMOZW4>6GkbZ2ITiD4IVqobl(%7zz8PNCxP?2aC;}lY82-01>v_b{9E@X|M9AR`7swS z#8x~!8@9vqY_4gPWQ_2_DX#w^{8Pb+hQIJ-BEnjC*0qmg^QlAm^RB%Ro7ddS$peeW zN#(p+s`DP~XSE9GJqzB2&O5+*hO6gGf9cA+PClf$?vu$Q&0!^TjC>vAx~G%(apaGl z)lMfY<5%Rl?O!4z_bl@LBiCK?-)CL-FR|BS_-Fss7{9$ax;!R1igS%sn0>e}~S%g#uGYRoO(Xv*cPI5w^30#ElbgX5w*0i!N`QmoAwZKZhoq~<<^v%UFW*`thX zpLy&?YVGy%P19nhH0tA~Mf=0%&Q$LWq)0aP*?fttbNlSdxTKD>nK*Zo#oaJS=I{S@ zoqb>4R4u{zbJy8ro1%+s>TKV2Hcin=r%hOXr*7}@DmzZ*-(gr$9gzM-!1mqLzs!bOeIErIIrN``VSs6 zA3VY1e-ryxfBCy{e;7M@LFXg(9BW%qe#h^IEa+Tz2Xiu3(afJy9_ZLu0UCI{NOM1# z2RfFQ;Nsg}G`4hX>Cg7hVWpJui#fsC$7TlR1Y62x=>Ny2^S@S5zYbqvt@Nv&8TM?T zCv=LvhWtQ&a982&=VFMtZ7^K1in*JZ|1A|{Z7pJ6v+slOmo4vyElgs|eXPws2!Cv^ z$$lO7we*Az^?0+JxdE#^=1uXpl=g)7_vEAPw*uc{o$JK#WF&^TF$+3hzG)08EmQ3n z+Kd<~d&SWDw{wE|8{%>@E*5aesiS3nXVMS&#fm+@^QV*fMLMQG_sej~*y#-?!@l(C z?6@TQR<=1IZ#(Dc*e@sJTtUaravhF>j(zre?}?&pl3T@oTbpuuTdd=s-!Yjy_@%4Aa`_u}y5G0c%^uQqZw;$lUG}#XUD~APrn6l&NVpiwK?8#_50cNd5unJpKne>9{VSG4S_jM{`Nno+NWC3FDLd~ zuK%0Ndj0nQWBFgP)I?%gHD*CaPZe=e*9QEq?g?_@7axQ_Yr7|~ih6d2mA-}X5vw%b zczr>~hi=$h|Gb}1XVsIEPAUUQ9ZTma)$fN>PbvJ&gSmN=(RdR32ynE;?EfHqS}g24 zoN8&CGdnPwwZf=Y%B17+8ZXVIX!8?S8>i-H{36#*cS|JidO}~nK0ByV`O%5-Z3{X! zcxmzHj-JlWN=n|1`n0zV>_}fEo$iKhB0Ak=?`@p0S*6?Sq%x5;=BsV(y>y!&(QPxj zU3F`mr`rTux8sIx?|tRyHseHo$Jm1DL91hFeoT8;*RVF_`?V!rO1H!Iw+7ptHq%j? zsVDT>SAKi<;U|alSs^KR)8~y3+`&%K2jQ0jId$`Af1TaBKmSVn>G|X9{gZMUzW!WK zsKE=@=!Hu9!k;t_?w-(|ukuI#XnyU*>)Ot z8M#$x=hn;rGAB5*eqQNl_8EIZQ@>J9oiFrq>N%KNR)XkxKL|e^@WY}S^+C9{jhacV z{F)u&P$a}bLOkTgo!^nm4p-JkUW&dJs3INP327-b=}8Rqgsxxn5$DPX!%t!OeuN=k z473WT7LBr7##TbwEdv%Yd|)$VMHrrkAt%CMjUacoOOM;^_-hDd#{cHE{LxNX#r(BCBd!_L|NY^9zpvc&i@rx|GT&s+7U3N{a;EhY)Vuxt) zHLJbHLQ~fH>DJ6(ZDkC-QnH_Ptw$s-y$H%yk58kzEY1_IK<{Xq6q4W1X8|j~TJ9OI%I@tSzN8 z>UWo>7VTPZV4tDCAi_Eo===wGW54<3A3cbhMrJo*Npn2Nri6Q>1}C|`2Mvk z)r~JV65l-Hd%}oskR9K2H@?=cXpNcl5f{v`U-+x?rwT{4e&>ktv!z@vNfk4n%e{v( z;Au@dW29z$sx!Wi1`_v(*$dR?(dYQ+_ofC;&lx~jF3!!Tiu z=?g=r515&z*m~tgY8>U?rFMFmS`x6iwi#TDBV09b{j3jHf17K9!L`EXYH5oZBhBuw zr)@F|{kFk)eT`Q_+hHv2!>%*w$7~b;> z_4PfWWSg;~P5o$W&cbuP(bARv|7tW3mq$4F-ZQ`RLRGXLDGw8EPQRgL+g0UZQJc5| za9uFCQX*VGfoo46u6{OGmcjLg%{7X>-TV$K?K_99_7ASdQm&^W(&j$XH=Vz%rKTB!h z8CqM`(S@D6h7v0N4~y<9y{mL#=eA*>geQxplujvKdf=|Wgnf6`jpzB=OT>1Fx_B_) zpPfm6ReZJ9e`oy&>S<5t;j8Jncd++5g6CAxrv(!O>pvNj zE2-o5y1N=iV?GEU56q|M*&le}-;!d|iv0WTtj~aPIP;vlua2V!OV7Qteq6(FW;tKK zs$L_nF@4fFo_vfa>`Q@Rb_<=41{qi5M&Hpe?zzmOadks&od#XCMt{wH#^5}cniv@M zQP$y@?61*&tg9nwKe4SNgA)Toa2;KLJ3Zs?!dZ=ZN75&M5DvCQdz(*fSKs6zc5FSN zOFX?8yKit{Z1C&sGcP@#b(r!G5BQ>LU|ypS?Na|g(!M=Ds_NSRoOxv?nIw}C$P<`^ z0HdM~4;2)3G6^98!B>M-dqT0Dgm~pzwP3luX|L_&wp0f% zZNXO)vzy3KIcFxx%ICrTZl4wrgVUtH zVXmr;_=2_43#SRwhct&jt#)b{YX#7Y7LgCepwE*rgFfwAhCUDBsh`p3HijdoPcFlg zW{I2GQ;&}K^^7`hojNx$>NM-rnbBJ^Cx_7{gff@D=+et9z#aLU)9O6@Dq*y7;GXDm z5rb~mzpMpSN*GmalJiJO^-Sm*6&ieUu@YF_;T_4MO9|+bp@^qrTCWc@Y6@kZ8C3c! zqf!Z|^em{9Qse2)YK+`?*;q;SrMQ-i3I0o@OCrnUn=M}I8%!_t7y9GBO{srMOTQHV z{a5|Ank9;hd3L_p5RwxMmMV42z*XMShGlZaID5h}*=?~WT(*roI60A`#tKvVm&8)) z&h%7Z^?cfm|IgxgPS3%+#IyE$QtEa*<9Fq_+lF_po|G!#sSD#LrG77Mhb-wRM*Ymr z;HY1!{9e~ouv#H47c)*-%)vBV^73Xh+?2XLO_JzJv$PYX|5Y!Il9HWCGcS{7DfJ5s z%NB;^iu5x1l9i|xIwLjVj7|sog=rz#>scndZsFA7_6{MsOdej2 zCl;&Ao6w?tQek(&);Hn%_QBdhF$0nCn_3`h8}vm&xF<{{8*gWw{F`aZC<$aTI)=Ajq0Nuhz)}fN;Xc@e0W$fY9azgqU~8?Iqp-RUv6J>x2|y2xjjr+ObzBPUq0#$;l=>uEQnX7P@`)+6D}^aFZ?bwLU=)2U8lX)zm1O>8VxrikYr&zjY8YV)MrZqHUX<}DVlfIcaa@_KT6 zJ=@*zoEA*)*mCjb+GZ`8#i9IG7KJVL7j}_XV)*4|JI(tAe*+|M4c(M zV{Dn+snee*d<~=UweWk`+BgMIvbeS3c%f9#oeypeBF>=m zF7lugx7LDN3&E|q5=q&s8Ky_W9Md}ag1JkT78BEjF*j?UpS3Tg&KRrOS!mK~>KO5r zvHq`3y|S*{}wf zFut1iIee9e9zHROJ`j9AC0xi7mfLF^3fhR9z>gSJ!I%s77FVycyQp!Am6uSz8~v8y zrW13Fme&D$VIA%mH!TE|`7v+bcy4+g7(@P3{h|+ibTGmBsMmzE7;xTP2{>$}zHl5L zJuD6gOy}XL`atq_5e;z%Tk6izseDuty!AH-7kCrM^EYWI972i40YLbPIE*&L4 ziq>!nh2%*X#h05c8_!2&qXr)Z!AC{7BRB|dtH zHD>85lzv_>O`M#~NAHagAH6fORGHt(Yaj~OG73*;eDwPfqVP*PAEEv0@tuW_mMSUT z;`JfqKmEO_y%GCId{l;7dl;tMiaD+7WNq3~t#VB@KLMINAAzzqniPb_{gu1!llZLxv2Xe^3gSz1!zw46EB%_Qb3=RX6Zce zkLRR5o6&9`;jT+(;{Ee;kq!8!)N~RxGcK9|U6^L08%#Kp0Oz}YlYZlR`b2W6a)Uk& zsE_BeKAy+8=$+*ME^>tCmTia&Dwc}6i{TF-i!nti3UY0zP%35?mu*6U{wpHn;}>}i z_KFf>!i?Yao}NaB_Ch%UsMKB zIB)Z^ESArV_?jR+aa^dTm6tD)-)7cO`?9_q~dDPigk`g&}$3$b>CJ~m|YP^2TG5LvA15$GKFt^2%~tR^iY zno=)JdUabzv(mqs_jO3VzkZ4QRl(?^CX@|E$FHqZsyFFHtNLIF`b8F5=xN$u33qNjTUSN z78k6{^k=qo4J3?J>I7I_xCQonWBu~j|Ib)2jq#CQ&_iSWQ>@@J)S!^hpQ1UHl?Q-zpCI7ZdTsXrD#Zb-rj7P%R3~i?Kq`AqZu4NRl53QgM6KD za?h0BmJL(3e{lDqip~naJ3{cjZNmF0;Qg0L;SQ;c^-8O*iT<+%-o%qrbepee$_=tg zlgIMX2N}MwWjY4v*B1QZn3tF}?Lkc&EH#y~nr_i+3R`N5otOguY8UL?YX<07r!WQH z#V*8DRvjYj&G}z>4KO`HV|;YL_Cp+YlMb^?GseeM=~p^Tg4F5vRqP|E47L!MHDCkO zJ8Se&r@RfQXLVVAOzXhd?tld9icVzEZ!kyfn0h)*V`EArv;n=fVM^~It;=83K-W(H z81@h#VieTahqh1+ZnK7CsA2CpHFRQbx-T|?)w0a2h4jNQ^%v>M5r#XcP=1)8{kqt| z_Y|Og*8qca7|gR^FqEo-pPKdtbgrb9Pn8~r&!7rX z!~-ir@gH{*%o%2@CIIFo7MNCx`T8cIa@joT>-Z4GvA*BLvKJ{mM z$7*dKQ-6{&`eCZH=s3a1O;#B*fgIUn(AW3zakSZXH*b)y_h)eoS4$>iRgAsp~IHf)kBx z?-L%!VpSON#HX*sKwJ5>)kbTsK@H!wj9AW}oO{Mw3PfMjB3o*je#fBZ-QnG=le=Dq@RLc^xmNlrQ)KZIeRvuIT30Bdm($t7wp93F3JT%)?aW{{Hc1Y7> z*kf_Gy~lI64V1I>bS<_8$_F78`so)cyp_@t;S z?0OqJP|OmJBZ#I4m-W+Ez&JLCQ{mgd`1#fh6$s;_Si!uZeS%0ZA8P^KAJsnDXJZs{ zTjW*GsNi=>&In;kYs~NUQ!hTO!wxA^r!~v<`f8i@iE!F}d(;E0B`q$Bff+O}$}MJz zX(%z%q+qRN)n~`lTUp5gZCLc6o%=LR^gu?ePl|rJ-wcRp>`b8FgPK;fIehN`)ii+b za@(^I{yaupXTv7=0!hWf#;TTqdM-b_D z4BiNjKDsd8V83zTkH*-6Bth>Nd_CBQ0=PS|ws6B61zWtf-_NfH{97vA4F#Y|be#`6 zPXX2*Z)*pF#+;J_d1R|@Qg&}b{bboywg8)}7T^xlEJQi7c@Rape0ws9-B|(K(L(I| zT92JtKIp>-m_B?!=sNB8=V(RVQvCUPXs#0CU(;Oh-1X{J0X6(<^&8{4>Tzb6VC|ne8$p?)_H17y%Mn!ogvb* zilj2k|4m9}{_jJ{fTd(MS4?JoR}?9R+{0cR?8M<3OlEBJRf}yfAKpPR=A{1-8{fI} zcfPi`(36qS@sh5t-^19MoD@|OAiFuwm($b6sO_Gc1q7A;7%x==UCSHXsT zylY(%@(1ptJB+#Ag4pqd=J(a%f3fbxt*;LMr~5YJ{|sLg|7Qxk z6!$5L_l&7`>NUA{k>}(Hv~JH?@qU_x#?)KjWrwU@Px~TEutO`f&KB@}KzqRkwLLz1 za|p3YbS+-jiP4<{EpM;jj8PqXAnEB2zEYhkWKGLu*0enIDC9qjSojfSNR#rbutCQs zASwUHgFB4+5G<$@G2WL&Cj#Prp$O4MT&5HzCVtLn$is?zBF$4_*T6(`1{4P0!fr>{ z(u7G^+TkKMbY}Bw-imvm z`LXfHv2g{*)a9D~gni+eeN4LnR_(p90$A60)Wev%P$SEx5Gc@b5*!nICPMD)^%rgT zLZXl!=7roNi_hm#VS(A7^DO;&34T*=mINI7uStR0LBNQAn4sOAG}AXJtvU~fl=sk& zyIM2-cuZRvwayeIQ%BWP>5|AKsRXOR3BWoOf18byD5G7!&)p9A>n0*9Zz7w8-|&m3 zUTKSqwuzAE{XucA5WkWnmt`L?wfQA~QF{?<{Y(B;?SQg=bNF)LF2oy?8H|5c3>=yC zch7B7JmWAPztS6p|DQ1a4IA6UAFx4Yjlh?Hby0+R^CgVMiHN7T8Q#YxrO~Ws66*Q6 z?wLRznseR_h(bLeOvJ21&-$ev%sluFjjSJfm>8W1ZL2@@T*t(x|D?UN@?z{Abxxo7 zFYjtEwSK*0(HWN$d`dGUxYr$}7|2oevh+lTNxyGmuLnLfcXwKy06$-ovd3n$x*XVi z^-H*8o-(R!f3y`da4oFA-1khr8G;LGMYC^gRP_KZMObF2*k;0;0(cj%%P7%!1!EP01@d2j#!8o z*)4VKC zG4vJrOntM`YMGap$d^n(KU?AgmdI5lc%tu}TC%MUd^#Gf(|1bk2dB=1MWL?8gSnZk z%XLf!PG@B22#FC^7r%sIM`XnWCf?xi=A~5;jZXL zngO1}Z;Ciy`hmNK>Y5*{L$B_}2zqPOUPCRIkD1SL{6nojb}44Gdm2a8eWSLlH!sC5 z(cio@%1hLt_xF-~K)L;~i`h)L2_>I9@B2*+v)C7->NfrTMYtbTpBTMRq8(68a>pE_ z-Bs5&$@_x1V_K-A`vOM2=XC1bH)^Hc;k`t&g=X2B>zn1>=8WTjWrAq67i(>f=P=|j z{c3=$D2W9axe0N0s)3kSFm^n}0G? zEx4g=B}= zB&TdfPktFRdtK+-keu%U?ueb^+!m7E4t(dBm2`}H<7sb>Ht7xH9lxK*?rT_Yca7`q z@(~(S(KhOF&$=BSi-Mc^KAPlCv-UNh^Fbj)=W0ghhjlt@X1sn_y5%HaSrN=Ka5KSl zHyB)fGO54C_}$~zmp`6$u(r%k=tRa&i0%U0Uq_eT1RQuB7lcBp+Vc!}>65eO<1L6VgPmwo*atS$qh+VUtqw2!sLR}YM zth}?@XzwFv?;k8Yfn8Y9O4eWN4QSC(bxLv}xa*M?g9+_8pE=&!EcoYQw&9}{63{0y33Ukjb!fFSs{Ti!3_F_UN%JB!@(v=S zh=}#gJk0KMq&bm!XlcP=dPimFAQFSm6cq102U2v7^vUUYxLTzvmpzxER$9?sPPJo| ze#Hlv!`eC_hp{t-INOwxeE&~HV=2~MS4dZ2onsrg0+b#&POD9VvPU4?%5=;}5&uv1 z?e$&W&GEVnSHhie+aD}%con!#g1vjO5)T`Fd=OMFHZ>@NGsuc-%pl&_ygqT>cuy?N zB6je|)WqELO8CR*m3IK;upYsmE!9_I{E$=^5?7ex?iLfLLEuzkkrBtVqtWp`+EMj{ zM$~9Nep!SffB3j7Ghw`kad&GdGw!S&+EI1CX%7fXf#bX<3f|{*HKfhT*#VQXyR{09e+dqjQL^q+^NE18EAdJUV07Au-L-}g=tg9` z0v(XyE|G_|VGW`#7As4PIu%#_Vl$qRqRlD7^{Dp1IUeN^^^24*fMwSzlsb+Vz-nji`BP;DR;g8^U<2a44SY6#NA}o{gUSDX&#Q zZ}G;K`|HlwL~nNitzpAL{E<#Ca)OZ`>nMDA-x@IPMvKG+UEyVefQ>bsVP4BOWRo1-WI((S5RDjkYCYxj zvyK3QGNNuvA5KF`&@jE9v>e$M^bh~y_@nOu=s#N>B$%$EtDOy zD?IIOYPl;2?MAnW+iOPDFQkOPBt{cYkmw5k6P_-?Q?j{onuf8i;}rb}p24e#Zu0x9 zjaJqH&lf|+7@wczcN|ftgFZrhEo_F|ez#cOVU}Ekk`YTuqL0-c!|CH-^a+4FYqQ!z z(MF5q78BYEKx?x=v)bxM)Z=4_4AJRg11!N$+4Owy&Ha5ZgqQgh9Hw7^e6`QQXYQB$ zm{t1(@BB*qir$4;1#8~L@~bTdUA_iOQ=8wQOJ`Q}(}>z*;!`dC%L&2nXCs#A8;bv` zlPKI_LfQ;SO%_PUwDspiJB_IAV;m#oI9)+;WQ*m?O$d(w!lf1nB}_A;nN^TR)axy{ z+;l?pSN3>kSN7UXJ7`fuWv?xsW7(fhmeHbyitdV@5v>11*um(Bwc}OoBavt^fGfA{ zES7%}Ht6wv;P3}id*}o=w4F0kkEr>k)umc0KH*~aX#=Jo<8wqEMK(HarKZdR+{*RQ z@q!^&K{56ojHsVr4NtSPK~b_|TfY+vXqWIk`0~9`ALU2YF(&Ag(NCx`^7%16L5|Nc zTJQ{7Fxk=q>;B;pwSUx*rq$9fVQn_xdV>^ifj#dHQ!rA5jh&EOLWpWR$Yhwip4I#f zcYPImANq#zehYqy$lb@j#rw&WmlJR*p~K8zJ$!?S+e^T$SICSu(%LCrt+KCx_4RyH z3+LL{2yzH!@cpOblaY576x(P(PSzN${tY1CnFaYiKqiVl5E~zd#bwY%7RbTlG?sUp z(4v4A&Vt7Aw0em%($zIeJvlW}g;o<4yt60wV*VeQ(o@wtc{|O5=&m^#5mi!}19<`LT&Hy9oo{?*j{eI z);hC{s0~CRrX^G(!!q>;<=ibrKU^{5k{G99R2$sJ@f=Yv7%`rZmw8039)V^dKW8&2 zG=e%mZsolag2fRd3fjR!=n5Ylr{8>pwa0LUM$tDuf+L2JhPhLLPo`R`j@0Ne7TjJ> z(TydTvzSdiTu8Qa^0YdTyBYd|2+gxENS1jTI|5cru*siS+n^bc!*J;^jxulB(IT?a z^QfKmjT=9+Ii7FyNWunNP>A2AA%ivIbvQ(?>9--THdbYTm@6%hku}(Z9(_D`NR#|! z6`MX5MY8kS57Eq&D_tFdo1{rK0s?yMWj!DYT${NDz?QQgXbVJ`L&% zxzY^w^)`GR5gfhG4*Bi0uh5gUkG?wOFSsCCkPl2D@X3jp^}@qXI>UEe92{-$g5K{n#eDB~N!~{yjqi zqm>)&2lVPFvO+^oL{`@ek>A&g@xINEOwmDmQur*2tUB1eo~S?LvG2fdThcR1yDxXX zvZm3N6yp51;NPch6Od~>=mpgo9sP9(u>xd2!R5HTimb)2YL5$-Aycx^H@Uredf#9N zurxSyt+)dDU^jitduS>!bVX3FDAw4LqKS=g!OmBDSpD=%@Mmx)JVR$}z=h+3Tvn_n z$QRWG+kK<5y2aoiY0YB!*#)?RSIvdo$b2rpI{`06{2mRy1?DepRDx!SAELx}f}H1Q zrvvS4vua6P-&&S%MslQO7^6b`-lS7%RyutY>EXnzGXSolD_KMvm3PAiE;|6ZejMcS zew7id{|WL`Kqg<94L*^yT8o&fM&)r6(k?(Mw?MK+&W)%kc;F~%!>#jQPk$-0gp(d7 z1QrhPU!`moyX+82CgaI#8+{cA?kI(vLKfhSrMfJ|75cAnIn`HLJvvUlZy@`5m_8YxH_1qM-S{`_BJfcmClu1854&38+CJD~XXy^Im)sn$U zhfliIgrMN>fk*X}z_Em(pUl=e_0_?T)>Q6Gs7 zh48XnWueWZW<4tExkj&tup-)w*JF~ZnkLATi8kkz-(J1_WJN$c*H}KZ2KMlbQR)1==?lL8yICzt*|r7o?Nj8kV9>GuJQa=CnPpySy=PyFH#pe)vk1_U2oSXNbjmo2YK?|5vK- zT`YH-I@2wZRS!w3_hA*!b7YrEKVtoLO|j8mGf?ttmXcOIB#HI^3x6ei9*AXQPp1sz zFzj8x-lb#z$f%QHf18f|xvTRVF}tB>u?k)PB+d{hjf}yro#CI=HluA{M9GIuNx{d+c$t$_|B|8>=9!V~Ws;Nd zkM9_znU*pxmFv30WBufFC2T!71tO(3rgJbVY>1HZNV~9Nq<0fx)q57Jv&KyRKjnVl zaf8_cKgOzGw}A-Ill{<>+hhNtiP&MBy}yif<)r#l3OVUvkFX)q1-))r|8E9d|9Rnx z=d6;G>OCop0=DPFBehVTd%zR})o6*ZG1LLAnCLFoZZfFX1?Z=A{fnY6vgy7g1wRba zial5%8PKNa(AKhe%|`j%)dn;P(E2UVto@Kwry;7sBjv=5nZ(0l!;S3sl-2X;{z{w! zQ3y$X!EY zXaT#H1TJIO(!gw*P311LuAQiBp`|YCtdLY67_<3vt1EkpK&K+cr9N<}Pv_EKBrDjc zt%y`f@#Dq{uSz;|yd3oPtmD@2M!CYQ?LSf536qc3W48{CQ=SzosV;(TfNTHQJ8`^> zV6=5>2eDGAI!0I@3L6yqE#Umz0>>(^lWMgE&U43UjZ=v^0DZ8rGHYGZD0i9=e+P(P zw?MS6Hj}Dmt}?5nZ(;@pW{AF;F<8km(mCFyt6>XilrJ=){t;097O2*hXHtFB0(Ir_ zl`(=skhj3AL#w<-GyWg(XMpssKQkt*v1dtjrv=hQ$17RH!ORab@Wiv7b@;mnaIuz0 z|IaZf`3c~D+XC0RVnzR3;HDv$DnDoT3&sDZ6YnP&1{k&F z2K*Rq%@f|97GK*L8H}G=z)@RqTG_|O-X0O&Eg{$DPFVen$g3lb6q3to*YjQV^p_!u+4K!2)BC-<_gsQmq6OThD;)7^;lYoaUGAj{B7 zoEpOBE{ad3dQT^e=tD$PRtIV*mXprwfnIJ)tCMm180mLH1m}ieJwTC-^gUTKet_>6 zDN2jct~@)avJQ7xYeUa^0PEogicm`^TEsFqdl93{>-@I_Y!d67fjsz~gmtb!4!gRs zQlR_1z+~uQiRuLR(qY1SNQ17!q&7MKNoCWn_*s85?Ma&Jjk55OY8lj+l5&1P1DQCh4EfxUw z91HC1nc?CD=;J4QL9rw-$cUN7`b&t9Y1FUJnsBZK9OqX6m94Y=*r#deb6ol))tp2Q zyflQ%pUHpZr!%$I57aATI9;o`tpFas!d}`nAHe*H@oz%D9*}<%;xuhwBc=hPWFey1 z?F9vWFTh$tIkQQ&W#Z40>HzI=4|2?Z%{auM@?qI~@^qemQgvZ(&XvB5 z=LNRPy}^om=&5_$)0^4TBKAcueitE+J9Z5)$x#HTds&ot9rlRTwH9HeJvZ$$WkuB- zqc=C&7b!E^Ijv~?VPDiaHld^%)_gdjjlA27lvs^X_Fm9=Q!rCDTe=2V8Jwwx_0>a| zn~1;2Pv(V`v@vhjet5f_;C`~s?ic9<9*QmQ++ajKleH8l%Eib&3tk0xa$Dn0#+^5r zczg$Vq%Qy-7Vew@?%Wog!ML+VnxXRzvc|9z*!)RvT!`C+YP=!7O{jzE8l7+HN_qyX&CQGQ@aLNTIJ>i z7O-D4dMF+%rIu1OR>NYsunu@2v#Px&p`L(0dj^wZH72fa0#}~}S8K+LgnBR)LJw}a ztLgS?M1;^toGDE^3E9RZ#7t@O$@FQC2YCq>$**lPXmAv851TqnB+KucP@l#+o$G`% zrI8ax3%qCnZ!2X&MOHb@9<*b35NttMb1ahAo6t`J`Zp}lt)AQj&d_VpeKj+sHvk=3 zC2=lbEuzaPKPp)w+L28Y{zX4>#6uq13TD6_dQXD~D}!nHj_%y}0%v#W7)`?oV>5au zK$k4;PO0m(V$gO1;l)~Q#Q)XFLy#jUOgR#fta&ODYK;Z2PI$YCviz(((C{u{LqaV| z8Na+K5qa+C7bVmj>=NL3&&N#PikN=dFR)1d%4&nw!h}W2!+NbKQ%>X9$E176knZ5^ zlcrC3rc?*2@EQ+~)j~QGb!I?XQiMcjJkn{U0dHfx#i-4T+ET5!V>WBt6iKLr_-A1o`%y5bKb6vP$pOd3t9~>lD}crItjIQS!%Ve zs}t(iEVaIUoVShYt;Osztv8|Gh8+sirRg~Dtaji!i{uismMN%Zm8BNq zTVH~ln+RQpB&`r9XYLF( zzYSo1%he_Gfar&0CVBmiI2E=qYI$@6J;U6#aVoSMKXDZs-$wqQI{6Ez|8h(HR$VKh z{xd8A+&42*`V%11xc2uwO#41gSuy}>Eclt@CI4ys-Z z8cgZQZEJ2L%QEHj5ZjPTApRXq2ux-5JZ{$WHPmyPr5@|rI-#aU2sfMxsdL(N$*Fk{`YxmrCEWZ zd^l(Mc_A^!nurZh7WfL8QyKR;#ChB45&Q3~5>Zz!@%lyW_2 zBk4RC9RX-exQgIfnuqKdJ+NIz9PnX($~?daeF1QG?Rj``ebR%| zng0y$I@$SX4r@@1{6EOC3>f{s3=FHSETJwZiwK(|@}!pmfzI}D4CdqOQi0zZ7E8iy%eDAOm%{I_4>g!*%7?e^` z_YOC?FscS$lAg0g1Gxo6ZN~LxO-1C_Pc%;cB}@) zWwv(R+(okYezaDPt)O|k!|en&b1wb0=3<(P6Y|(r?dt7rb+KKWE@&;A!}$X)Xc^Is zE@-(2?x5fBEu%!}F35ja5$Ux;Pfy=>@u#tagNbDj|1QKR-<>yB2F1w#S10d4sme?# zXd~89UzTO9OQ=50kd)|6c1CX(vP6|&?h)9z+Bq}}ZqU@xG{0)NcH({*dH;n-Qmq;@ zdQ)POcD{-IPk_fyzQlWzBIv0PHRS&*U>r@kFA6YU?C}-oJWW^5(*>}=Qtpcatj_ib z{0=eI7!7VmK@YxzMaVIyK;K_Sd+PWZ3l;37c#1%&1?=W^!UZ9$McuE6)kW-NCoi)k z6TFXv0_^4e1hC0sBMv!4Z?C34hBE<6kY{(2&AZ(`*nUKhKGt+R-Au_NE>yC^q`}7%27q5boFtXFhT}lQoj| z<`c!P{oJ_xTL-zc1Vz^qR**b4qLXk|1eUb7R#W{rN0G<#@~HaVZ2d|3^EI^?XBHqc zO_fWc%rruv^q7&+hT8g%GuoVF8Ep)iZ`l9qHa;$Wsd)_F!#-$SfCm-&U#S7RPi z=2LI)7Buw_DF^MhK#Q8z7GNeS=y9(x=sA98f(9ETNxvG)a%Fw53IteqFsghxG(H2w2b$MFy`~1 z)mI?OC9=2>K8anU1%~b-zqA^Vk@=!dz6h<)#&%?sQ z^bNV)gfScKSnM}?6FF_z=&aR8XPi9DOn31~FU7q6e6)bsF9c^>pAx?pvZr=n%lX}SfA07##K?UF(RdAVDr{iA23VgFGW4*HS53VFJO3#o zSfi|o_(ng)s090$VCzMWf{D-uG_`i@yYQ5SFqgU{XSV|<-6J0YGFLpIVcqfr%Cy%N zE;?jqXV7C`4ps(aBWVgft=WCT?PVUmwKVoNrt9RhGu5jLf=*Krj zn)*9Dqn>?B+X?&AOwuXk59b*4nRW@cV@FZ*M zGh{DdBb4eHye&uiUd)M+d2S@tm6-hpP@@YoM8Cj)+kTxs31`hxGT6tYmy6GR(3e6;*r_tKX zHsC;fD6KY)7*DR@>b`^Z$lgfag7voe1<<14J%p}BPde{Pt0zaeSAjo?-erql&b~Pa z52JHX^bb^P>Yqp8bzEzdq^F&D`VO9Utuacw@HC`IqNX08ug&Kk?zI3k^78V!FJ+@) zpx77PB|#q*{zpUdD%RoapF=7VO3- z{YY^4d@`FN|D8RWI&DP2DVW5K6c1N0q!rL9C>pK*kx}ne?Uc{myXp>i@1eW%=eW05 z;8!>P2Jgs0?kivf4V7RbJF=gD-{o`n{3}*@Zg}N4Vy#4P`%vRPZ3p}R9R3e#JAL`H z2|D~>coSuB_Ot&7P*O_Z)JAxBsPtw!!IAi#NenmEoo>wd90t#Us;T>ugpDY91_ej} z{Y%ExFD0=;0~GRQdj}9DxL%AOK~!HS`uGLd0I1FIQ=Ay`=Z(kJF044y2`oN42d))L(;9-&wT2*ApLg9#&kx)>{<)hyZ(`3M z=|?;SR{!>H+g1^$4G9vPgI3!x6CJo!#DDi{Sl4=*Ry(us+Xs0}t>H2$g!#xehIM7Y z_5pe(ARKdnu0oH!cg2~_IOWjYNt-x5{%Jji?jvF%0bf7uu44IFS66p_*g4z zY=+Fk`oEfVlI-?WqraHu(@K`nRjsh~wo-Oj%x1_Kh7s9XK(r<=I99`3SjH%o=P~9~Y$AHXlLbzx(jJ7*-SP*b!89C{4fm@aq$JtGULu4bqY{w?1r7b@Zs} zpRocp-gLn;BVqH0{d`-otJ zHc7J($I98`!s<2RS8@Iy&3@E^KA#90ke7QJ zmoGLwvWzTqR$4l+OH9n7r9+y>#u4p(-^*ev>}<`pS5(zo)3B1Gwg1FgOPoqM?Dk@x zZib^BQVDAfNhs>$sA!b8ffFd3S+rVJ7XpHV_Mb&4v$u8BKwF~Gw$>PJkM#TWHrOK% z1Z}eYh2(T*R6C?=F@{z3-&4fdVvwIhz(>48nvGscTSmM?3dE={L}2?v=Hd3DC*Hv- z2fjg!Kx=Dv z;g}pD`7)LHmQ;0B$|g}3KL^&ZIGYoakY=59z;Sp5<{6rgGW_V2a!n7^`%HE_pl3bj zGi2{(vRR`whXt}yTSv%d%JvMbHfsmj?4SMaHT~V|re<(Hts@iyM$it%&e3Mh_jRWq zU(dx{`M>%)>R%zBU!yrMY~KpymGkH+Y;EhK)v7a)|NbKRF@4=nD_WXQ5Mj}lE#Yk7 zJi$-zMM#V{f?_;JTybV!(F)}|&A|PBJN5NE(@dmj3aamS#96gF$C->EDI9582O+nd6~;ZZ+gQy$2i&{vU%r25vte zY(ek&R90VR=J9j&Fq*ZkW9$I*Gw{UioPK;J4q?wb`BizOS(JHQIsbDjbOko2o`ec?r@GsZY6v zH{LFTxHD#@7A4xHOPWd!G?jYg_I9lMV5PN73vhRfV->BJ1_38Fz=kWn{D1fXV!I!F0_^WoT2q3snKH0ph>kTnInZU z*RKo;@v!!2qb)$^bb8PRdt~!e+XcSElzYCj%?WAf0FI8Hm9uHBCB#D-dZ@w4GWpcY zn`+QbvLGt!?Dg_*OzU5^_W<+1nRO4R@xqRQc+Ld$d`L6HmSFS=U%|ttfOrtzC)f=L z>WA8l9{fjNcCNF2*`U0rTlwfI@5LMztLabLu`17DD;gi2s7voLnkEl4C|_U6`%gsX z%x>*IQ!YT4!`aXcW+s|*-eXi*N9VaCj9LSa6UJ(0JR<%Q(a!>61NizvfIO!-Op%Su zoB;!GAueK7oLOJMQU_@C74~yOizms$XJU%zY*IQmK{{;$J-6gC0P`4N#BCiFSDMb{Utcngq_G_XvHq+u9%&6TDOvY z5OXFXJe`Q9xisyPzCxwrU)5aFm+*_?r7pp{@#UAYul`*#VjjXuV3X0VYbVqzTY`N2 z(OMX7i&`zaWQ$kTCKmHBGgb>oY4yr<2GWPC4M>Xt>5JnaS*gt-O=FN~#|lMJWFjIc zz9Ver|Ep6D+Z&WVefNM7-=V4wSU)CJJ6L?jeiq*mwZwNM)jwF;*kEE7gS1#~N{i2H zo_5cCGrJBGe3-+(Z=tiBIX5H#++C;@)46(*T8ed<43~g z{{K3q0KK)#(ysIOJN65iG%@}EO7R5v|4mOocC3pE|9>`3p26w`*=o8gx0e54vc7(q zJdO{hNb66s{tp|Y=^Mars)^ryk~Jb%MgG6ZpF^)HgOkA<|2k&ue4HX(ds6UEX6vQG zfyr0{@e^}A?7ODX%y$It0cH<_K~SA-fn?*@JErrZN1II+n$Bo?~RTB12wLKEsWBju?7 zB0L*W52vWDwF89TUw|J@(~@2|K`l4-|J5l!pHMHqZ*n%rZ2S&aRlS^H)&jk8(0ni`m3!O z=+-^5iuxZW^zqu8bI`~xG(|dl9MYXx&ZbEJgM3RFe8j*!9Un2kYkt72`50>6V5!*} z{j1>oKLgI+t9g&5=3kgK7qEyte^O+g10g`8Xh1uKx#r7+4U zgD!sqc4t>+=wgi+R@9lmj`D0z{6O@tt)6_|tO&?NYT?H<$LWmGu=0RegJ)V;`JIIW ztv+J~>wnNU1RbP(3QpKt6f^K1PYvqj480+Nk$oSh&9xGzPX2sOm4`POEuAv0Uj9NT z(^8TIR{t}NQ$_t*iX;K;drF@se#`3r*j(U8a{Uq=8#)JS<_DAYbDTJaFA0bO#?I=n z++o%oMBTr%)NPH*P}KX(9R*XQ|7KBG#ErDioc8>O<)8`YO2FA+fn)V7%Ed~|t1QmKM zveBv^DC+L9GT<>KGF8`a#^N56B^`p!5G`wD=S59z-b6+^+~MfGSEC)5L%V?PL17U;K?}646 z%)Y0+tmo>giYkvfB5w3OPBQ|1Ymu`ftsXbyeZ%rB6J8APo;Tad;aU5SkEPcbyb6q^ z99VRnunry-Jzk>MH%YH4zucz?K9aPkATpz~u30x6tC@N|faHBoW zIDhH*ql>%)^n9;qgAXAJ&)oAGzlZ#1kq@xI!Qx-UzIp?DDQP9XIqb&xA}^5`QPfu8 zElM(GCMp?24PRt+eS}{v?ANfEz&RHb{a{18?z8x@u)4rXm)i9r8w*Em##o5V4J)6u z;*LcOl3$e~25F}Od{gQS;6}0dJK?Lz8=#09TF>r;PkWKZe<^AS`{p3dr1t1vP^`>l zcptr6QJw59-zSb$(fYJ{QJSubs$pG7t0A0!hxKn17K*F!CWwEsJ#PxOYn{?@`V38KJ0vGRMeM~IBx~N z$ZvECwa|O$e<)3!dd&YxTXmiCvN_`(0dx58{d)xR!xlh?`{It2bb+{ft>=ib8d9 zH}crM;iEZ%o~Q9VwF%FMJ8>@98$OI!R-4biTxms=>PHJh@^oF2hvbnG^eoPPap63u zH(Fus?tre<;X31XHO51(-{G0@COzMLGu(N*<&B)qlo=K*Z(w`2zPXW?S-;kWvp}0- z+(-6C2oVNf1LUtc&Nv+n!<{$0rM(g2KD^ygT(M)dA9F$(@|IC7)E;oqCyBHfXIh55 z|9d>1A)ALX11Rc;31^RZ0d~C%hL!8;&^E-Zg%!hUKrzfePTEMOf{${f2Ov!#O|jE7 zeY#$W>$6b3@_rF7S#O>hUffo%?3sY4bdJ1i$9~$f=;PXJgc+`{>sLB$lI{=c7<+>p zbGLqV=vN_#(}ZqEg!mnZ)VkveSb{{vi#@2lhFp*jYOnin<|E`Q{XZx;Fn_>f3O!-7 z_Bux3-HCdoMW2`Im9;vio;Jj_wYqvG{H?^FuhkW)qqr<&h*i|jT9mAkKXHY6;ky9^v-0QMb(9CIg0|IooL%)k1p~L zkiTe~Ab{5*KCCO@uOn|R-S5EtCG371+Bb&SetHA`M|_vSysq?rhX8B*1|ja!NGhx9 z#8gHqlT1FJM0^jhNFo|GP52y`^jFl^G>Q$v$x@o=^&&@!0QnhZ&+P1(4Ra~IE5#pi z=R^HZXgNak7hH|E0soLCP2)2^&@;bH&04r#IhDJQRRLaFF~Ldz2-;Y?e) z7GpHg74Zb@nhWT351To=Qp@Q6Y5b9w#JWc z+umE$3QtK#s6q_F1JH`O61Gi>1`v_MKy1yyd`$77?pD~hJLn7YK#=c*;%3Op!Op#B zJC5wq6|g!JWgVdG1qMAlGbc|FkV8lRW_qkqNw7GYjs_m-;Bb`37Rx^mLgKV%o)zNR zUs|)DIVrb~4u^V{`<2_xleXSPR78pN9<G;eHg+k}6smk-?t3E}#7!{u$4x7Ex0 zZ^E5hYdEY4o%HvncEjdrQcZXDR{syC;+*3S%o6t@inLt{G#35vtlF8L7CEba3*Prh z5_yS@m2a(d2>JWYs_ob_&{;qyKvGUjKeK1N2`~Rybxj&)*fvbTUmJSoK>$&SE4i`-H~s(vNwPGS+#-1E?l;Yatb5sSi@ArFLcECNspTv z&#Lp%6LyI;Q{a(a4{vnk4<@m^%;k79GmRV|kfp_uTB$QOVP{QGb?;fV3g2J$BIRk? zgsemBV|>R1K`LZ#Jiw#~cW$(_qT3BCS`~aE*B_d&^Q@Xm`0-Cp422d|1Jd#ki=Uip48Ck5nN) zc1)%XX^jp^;GabX?zp7DGGD>*cp*qu2FF=`WyW#8C_iksEbcdlvEkBrm)A z-N-FO>nMtj%@N8fNMCmct{HGe?B*JR;;1QldJ=qTH2W7pVmYu{*-|0Es$=WP0gkyH zluy>(j`uh*&MBQaeM=1XUEt~hM64Mr;HyAcA1f;^IJYF;qNGFm7_9^pV8cBoHNb_| zoEdx|fpmzp)+B7)h$-XPh*{X+Jz&~_4J;+qGzPKG>ZO?z)S-;MvJWd*>-||(Kx7By zeKjPKu$4ShcD7EaPTGcW%FZF?-9;azA$!RuYnLv>9FFg>SN1e)r=;5>@&exVu5jfc z$oFc|lIPxrF;(0lY(L28CxC7gjl|)&OgP6V;sGrs=|fuC_xq7!M$CILU&@EX3a!t_ z?uhN{vAYBNodo<*W}u~>fJsk`%`QFX4&$Jv@YTXV4n@@zF$%i=cM zQ}!Ryu0YzcOM5)uME)irz6LAMIysa7cg^)-WxBqr$&0$_yb98~X$5;$T{q^1b@xvz zN(S?BHZ}6j+?kKaf}Q@n?X(AiGGDu~UjzGJRza@aQ-JKnmm;sR5V#OA&H32H;ZAz> zwOF0}X&Al2&M&Jar=Iz}2y!ql zB579%WU0yRxq1QQ>ygac7hF>56KmqCfb$UKIGbCFq)oAMri)|$E+kRcsAE^UCWQz>JF=tK zN?WviXvK6b4|=xue%;esHOH~l*IR(vYEhdXr(Mwqqk3&pS)+&%buZapFzy_zUd)fW zwX_I6Q}q2x>K*t~!K08Btz?<0THxs&{5t(AU*I!&%hTKaHT>PnpSvy32l0GRf9~lm z0#-%$(O3BkvcB5HpW*Gjbe?UoF7J%7Fbq#%oowd+l>=+S$}jXCONepzVq6r2m91+r z^7NA^!^*?A;m-N3hKt)SZoBuX7L5Ca$KTZE<8R)+7Pfb3{f~GffW}63Q}-2Y4SSTWVb5ayZ&2-e33+2*X^9ByC7hM~ zUV5d}0=wcdt?BrOS_qu&js+V>z@1~YWvs-$L*9YdbY_D8TCnYxF zw6}JQ1ZxfLvCDLRU&_V;;A4cmgSy<(S@p(|W#Do;DX~s=n>a6C6PBYUmlMvxee)QO z1164V)%hdKB7|8fC=%Vc6!Q?-ZR_Ny&1m~|psUBy_PGqk8#-OfvgkVevJn42dsniP z5?8X568~+poAnpv8?E(WJ`?#a$})2or4KszK`-@3w2kP&&k<~3z0%NAsvVqF)X){a zkoCxgCRVqhM;;V1y`7<#?>NdVo5Qd?V78Qc!;X;@#oqW#fAqbKbM^#`tc?xe9;$0g zMKkrv#>MP^V|Q~;3-&PJ$%g;e6C7K5wrr&H8&P&$3(jvu|DN~!Mo)0I-nX;2YwDR% zM|DUE>$ZoG{B`tVVUV{ob9N&i8{^OQqLUl>o6O0LP5XjuCsUMW75wpYI?v+#Kg@`B zqIw|6sqSt79X8NdJfx4p5avCf^z6qT+gY_1=PQPk7grmj;#hOASOR{!0DKTq_Ouu+{vPmMl7(+z-$e||-3Bzw*ivE%X6)auaA9W4 zjI*}iE@51@_O~mb#jKE;BF#Fdg_Il38h*GYq&%}SLy-#^^qmYk^nc_w;9fG~*K2<} z_vA`gHA3;?hXnt%(ly{0%532LfOFEdnCGr#JajEaF!d>Mk>_pVa{i=cT~UKLyDNMt zI4h(KgpGFYK|8-~!GhD(D(k#4>fyEPE@1dQXSUwpu>#5-Xv(}Zd#TP4a1l0!+5bAi z>rTo_5sF{3*^b&<%-Rp4_E#-@9bk3r&}ncSS^h&xt@-ua`1+^%*PJ`Pf?3uW2PM%^ z-*X>(y%>cwKK0R25^d@G%f{#Nd_R}qc;2d?q4yR2484D%GxS0^+AX-+as4u`bQa&u zxYAjCU&58n;=2jgoM?{rMV<53>Tqtvb2^Lf3%Jr*d^eb!Ii6>)H{WocZDIH4J6rdx zx|*HE_Z5+PxFL8}y;&p9ZNU6-XhX~P4>lU7>0(umE@P0}-Y02X0=Eem=GFg$CZ+)5h_0C4&($VSKozPI2q}f!Y~A zayT@rmc+)LAd4P#$A(oc%`ip24YUGYI>NbS9nS4e^4+%~<#Mxzlfd#)T^0gzxAi31 zVfAe@gZ}l>zn|oMMk9}Cbg*q${qHpNV#d>_%sFxh5TTZuIs>&mdtUd({A>hvW{vV; zwa-#p$4Sn6wI6WZQa8dGvt?h^Er8x;$O4YyBYw!%x>?JonZq{UK{xz5AxH zwsn|o8&-qqdPu6mlcC5pkWl0~4k<60FbeMtDPuanQ4d)2B@Sc%e?~%mdVq_onoLzO2_?=)TUo|BF}R#Pp|&@#TaJ}4bofInu%aPtd%1KS-cnY<`;b{c zsJ^;;p+s}{a?IW0f~!Dp`Yq1s4u`Oo3qZpVi8QI6@e_X5gg7AV&2j>E9i zW}xJ7*^jOYhhVA%A`%l+%CSoJ?;>dC8>&9HVmu(HfFCO{2*I# zk^r5{Ti!T~XfT`kbo+)$`qLi)3oeCmiY25l<$k1<`LO!fxHlCI6xmgTH{U`&zbm^Z zNLNM{Ue{g)eJso{^@Y9Y#f>X7W5Ie7?XbFZ zEYpiKk5dnR5;pojiXJ?ymqcHjBdf=q1*^;InlXa%f(hkSK$&Eb2II#8ol0-4k4j?J zm?vX>1o=OzkAx)t_(d}`c{)b3gMiqT7Wg7|;5_Ik{SKIfzH2E)q9h43haaxUG^-;8#lz*<4li#$+x^Ql6}koNMBn0=_@8(7_tzG^}0?I`Et+*X!Q) zko;DS-d5%Ra`rypQD)`c|AA$ZMMOkIq!dSF5ipDSpGjmX`70t)%0@&)!X%lHKr)$~ znS?AwM2d)rh=_<3DNq&(vdFNA1QA(^NGVc^EJaEwrIb>N6fv^AyA*$)@AI4|^CZDu zzxT~`9q#9Q-}m{R`}{x8$z*uyslo?e@a6S?QmOro_dha$7uLS8vGBpE5IO8EXuRY9 zyG__zf%Z50KGH2{=ii04zw!IGdhk~Q+yXKW{?A){mOZ`wjo%@I$loAKkiUMb)3-o8 zSld%?E4s~X=kNcy`}^HfFS-nu$f4iMv;R9!Pw{lNL-)7NQ#v|+|NjAb>iMXn{RB^K zZ?R6J)$^-w_2lnmpY7q+sRw@xWd`-&_Y*z%&3-$-|L?(X_S^aUe}0cg-|8`sA287Ey}}1y{9xgObsfE@Z|)zd_n~WD zZ}{BvSCIP&_ix<#t*zmcH_xoqH|V>c{20mq5Ac9*SnA`QChqU<>6NmE8?DsZqf!Fh zKF!ts#xrm6f4T90GUqwJp?GiL8E)6~&3{V9zvVw3udhhd$H!Hf=O+ZJ!?C*N za9~0BrMRi8i`Ir?fx1XdW1yxn7I?Ng5NS;C*c7QY4VB?)a#b``{{e@1ZDUhCIl|3w z)P|zbaKuDo;f7E=fg&ERiiH!VDP9+u7YMf`!jbB5b)d5`9*)QB8Y5(m*P1`z6OGlF z&bcCufmAW0J&ss7-qaAT9%HB(d}VASU6A} zN`wN5+E64=Q_`}^85_JvXSVdJO{2FQ{9_^%gTHQG> zs|giJG_u$v7B`s_o6lnopz_oEtP0Ln= zSw&gTY)93^SX1g*`RIMM2z7BSOsf~23Z(_&iBK$2(O5&ka&fC!9czq6)#b$hTw~31 zxHr*+%pW&D;dCQnbqiM|DBWo&XSEL0#6t5LXe6|nTHQO{4&hKd9&V_t4_7#Adq?d} z=R6);D52$9dqTV^8l}y`)f#{?#*a4&IuDdkwH-qh^`V!#3^5f(!CrmTvKncAGVLA= zWtyX^k-E_5EDLr}`U`UAe1*H9RoBIJnOEePhDRqa9f*L-pZU z!s}LdgcW#mz|_S9p+F7mYJF$Fz-T51^J0waQB~i_RHtL=YF_fFT+0hDOli)-Qc*=I z>MX4+ow?NNPtbPEZ{@73sjCVloDPaFsEgW}@3*KnY{fp6Ca8E#fC`KjyN(HWHx?B9CLnF#t${5$p8G)+$I(H?EcL~|3dwnHz zv}K4zzG^fPItK;ztWaG&gTG^4Y{^N_uc%@^JE2r)IgN%{seN2*ZwqOUn2twM2dbN5 z8l|ytBuwMgIg`uy9jcfj^O(U;bhPbVTo}Nuj{go#5x~s|aQnJzRYsQ<>zEg)Y9fR& z-D*18Jq0+&E-l3IG3to!Et?t^PILi#XpA$_d_C9Qmg>OnHYe0>>W;>bGxMry)mF}u zzcAp;D2@#c0Tt^UAnGEOI;J{j5aTR);b0_gdMF$9AljI1G_VEI%I~$9qyePuv5jI zjmF*UI*)Y!6zymx@o2s}xoG~X1r=3^7_--#BjMD_+L5WFeko1I@;h36H%Vu->FyD2 zjQK-e#m=hW_-g&Gao<%^MKdYbwOP>A=gz8)mlu~dMtcYhbDF7a(rU}i%T~AuUn;2j&uX>L|RJ|5mF*_$~yHl!lohI^zQpdDYFFz+Izc?qO ztS}Q*c4%)DS`URH5lNoiIFF%{=! zWu%woWn^ZQmE;tr=i!zg%qz(+EGbSe%ns(36w?w}g~i3$*;$#vtRU_=CA3mTey}(< zI|G;W;*wx)VMbAYX-+V&G)RQ$rMdaV#rc`RqD-R9$;`;hEX^jQ?99^qqRgzajPxSf zEw?l;KQA|{IKL<-tE9LryQnajUYMC*npH-_6lc(=rFl6;`FW*fS-DxInPp{El0b{g z@=Ho{vVz%EswkL2l*Ke_S!sH42IXd#8E|@5W@%Y=Stive&B`w+qcw7hgJtwUaZY+} zaY<=WX1GrKUmlqmBHbIa08O7dx(^o+v1^y2J7 zhLZZNBrh*Ly*M+!EGM%#Cy!RnE6&YKFAV19WEPd?l;)@7A7tnimgE&@qGWsYh$b`zG_e-+~yd)#5xP%A_DKwkrD5eoI zf*GY$w5*h|Phh!Bjk40bOmGoQ*+nIJMU2C;jAC_lSy^^*1_Pa{Wt8QXl0Pq>5{lD< zd1aY&NN!FMBZ00=FUf+sEVHPr(0sUekEfr0+fzNfhn`v^bOoVTH=R4V9b(U{uWG92 zq*(1~d0T9%cV2{jzFo8O!kw9u`vfgvIB(`L-Qm=+l5#*wI4|un9R{A|l`C$VqO6Y{ z@9P1M^GzVvT34^P;HtRcY+B#QaVo~*>7B@(s|)7^-dnrfjXl0F6b(4%2W|^|&(0}O zg*vA|?+{2c*tcAk{Tfpl=42A~R0Z}XfRofq^^I(7RgDc?4A4HjCUo=lz44~;u2WUt zLX<>=^_zYdeq^|O8)=*QT zw!+rHglcrbU{OIJ5t{e^5+o(*DDINFZgN+-l;yM_vb|DIYq90$KR;V z3Cw%vRFlT*s>8n1)o4|ca|`c7_UdDiu0HJR?Mu8?HR>J8y>@Y5lvBq5yRqV9-$jhu z(e5EXkUI7o??pJ^zDIHs7;gx1HlhH*{cJ8HN4W%3A>+s^siT>kk;Ra&;cdt7*sWNahcRzCZQFIy{a;=Nd1q8NNas?9OX2wp0q+*6 zqhq+MeUe%SEU!LpYnqO$7vHr(F;$rtE_Uw4U(g%Qlbi}u2elFnT^p5i2Na@Dbf@kt zCIwo=+^ZU0Bje}Z8a-QWqK#aAa}VRanu;S5!IvSxRT3QTb*L^~C?Klq6z|HycUE?8 zad^9}#t z@o~xK+`xO}8G$i@(G;Sx1FT5IWUuF(6~_Z)3RE|S-Ra}bW`8NqKI@j?vVP$CKsvuO zSg86l>^rv)3$Hrg?NsjJc+clOI$YJ1(63m+4beo$K#+Q}R-wEC(oO;{SKJ2~V1p*D#Il5}(?xsV>Zku6s_9nzLdDjme*x9o^ z#E9**mvVR7H43sfGU<`k#h;|cJN5o&?=HR9LFYA9zsK-8 zu)a<=fUJ_d)K(XC%Gj}IIQL+jYp8}Z<41R}FnUzz0G;zuSk$`(~n%Gm;Gsyr{}TbXVzh3jvLc3{;+9VdDNJa zUM4vaUGT7J73OD~@Hp&IWPvfsOypSX!m;u2;@H^hgvxh zN%J)HwesY;0@Tleh^+p5>GvTZztck;fbQF#ZOo~!gDN7-=|En5xX3cH=O&SX}e1Y4IW~W7k+5WnID=~Vettc z$F4Yb!gmsU6uTFf@FD5oS%u$x>T`+utwFZ}KVk6*FSa~);8_Z8@$m@PkW{~E_^Cdc zPvz*Q;OEs(xXAL1!d?cR;Nua_CQ)od0C@@76L}ta>wqz@BhOlS$ja?jPC~wd{lTkl zeNMe<+L93c>-$ae47wAqnpR=eNBA&ywZq=tCV3Qm5WCkd!dpqI&no;Bf6m)z7j!G| z^XenK*z(+gXDPVF$0Iz8B%Tt>^XKqPLO0RJBb;k_GO-tcGkrY5efGQcyOebKjwju? z{-+Q9itcDK6_@YKES%Pjn{=(uD&a`~FeN8eKJkG}_Jd)Hy^98AKe)R|LeCfk_ zbe#q5@()t;MfeDFBD~u2T!CjTc%_d= zco~W84GE;icO_EedyuNB9c= z^@Yao(LJVZ0Od~}#r}-$@E+4Dtaya?VORNw;5h)^gWZcqcq@q|rlA0-_U@1W+sOYL z_y(fui@&h=gpK8^?QfF3z>mJ4;uC)GeV6CV_f1dj< z!H0c3!UsrHvthY>k=givg8c7fyamyv<1Z{e;Zc^a=$$4x7CgeoCp?U#d9av+jM{(7 zZqs&=fwye5NlrsIX}4(=7N770?22#f0Fx{N7hw0=P54Z!%X6^R?Z;={Ws--{?Qc!> zqwp^5%6AN&J>VVKJs#oJB=utiKdn2*Mw(;{-F*DKbx3%w<>^B?)!^Aa9^q*utwVQq zxp5udW!l=P&l_V{-_af1Wm<(*KjA&t6~__y_JMa{_u>*>O;UR$kZP|v_-lNI26Apd zHw%Anyb4dVd_%C8gQxiTgfmIv8GxV8Kg-9N|};M}O^}Bd>3F&ygp$yX|&1%Op>uJH9>DF2aXMiesOZyO8IIrxLjz zIR!}=4HJ-BXVZ{O>xL0lKgjBh)!*6X`d>xL{{->^axd~%$n{9g&xDng$j9JZD~BQf z0o)TwcQ-uR>Ykg=ZFTE$B8UA2-I=YadI%r4_Vd_Jf{*&_!b`Bvf3Gn&n%S?xi?9p- z{`c(H;Q81`45H2ACK&BBMcn0Moqpqqi8u>6FlVSo9Q zF`s09m4l~X7nWUkB8jcOVWgFbzcg*l)bUN;4_p3{^VeURR$=)I&&R$2Jd*dI2)G8j zu@UKZc~j$7Vsq{_Kq z@o9_qAyuzU-!X09q8`7cKenLT@Ey}Cta=Hr#;$r?;T*IUyb`-tFX4KU_$#fPiBvuL zOCU$`cSnvKWMyBZ{O@dZ_1BR<$Nw_&1oAxc4)PT8Ch{oq8u9@0401hE`Bx*gUM;tB zG4c>NVdXTW>Q}JQw0(j4JfCio6VT;uG_As_pKuy>)n`2Cj&$&7>|XtZ`Q~J2oqqIf z<`4O1!^3w0nTOwI{#YL2yV#X)5j^+5ZOm=#9*^);hfqe$v?`80wfo{zP_8D7_@N(>m z_Xg*smEfh=z4(O}kyK7C@;H2x@qgo_F)tJMRCHzd3oCBn@s=-*^T|YT(8nj7MiSo; zr1;+amT7wr1L57o_xM|!3%_Mrg~ca)2fN}~4BtKQE$m)=!dFP*JA_nyx8fh9erq#X z@6c_=Us!y?>nz_z_%?vo`1phuk;Iokif<177hh+6naFtt-7Nft#V0(?@(tmfUk;w) z;}gy#J%VSTl}FaQ{5z21U$fq{r4!#K_Um=%R;@R!!r~WRie2@+1^;sJV(ec1g{P6U zzYasHJs*G5w7vQhbe!jUqI>h3rd3#c!uPN%e+%dK_HWX@*gZbsYb4eGxRqOwigP9T z-c4M8kWmwG6+1Vf=my zo)zep;3q5|;e_RBho=P`_3;Rolhj@Vkc#WgZ@A~*pYgu%_#2GpZ=}w@!gsJMj>XvT zfp1~=;u5|<65n2=_%`DIE$a0<&N-XWt;b(j@d>Z8d{^OH176|d6COZv;#y0&Sy~i*a)gd`ot)$`Rf`63B7#!py&!ZFM90G?)W#K$9C zNmBiSNb!xp|0CpoI?p6Wq2rsZTZP3ZJjn8ubB-SZ9^m5>e)x5_A1{C1w3Yu2!`{rq+I<4MdjbW89P7LRbk^0dR#0*?B4gsVxa zZyA2tZ(50GGP)xCy!}TwXnE2(uZ;(1`*?&$lT_bht6g~*srdG+Hf@K9r`N}M&qcRu zwP_Vre8O9>t6rz!-45P_-K(eYa*}u=_-!NKhvA8#n~$Hcc!cL#o<5wrs=>2;Ji^mR zs%IvC`n}Cm_OV=a;aLM-;o}irL{eP! zNbya@U+e8x;G2$aGXCEBD?HKijs6Jtn&9z1KH+qd`1)FDtX#dyt#|V(({>*I^6@6Q z2wiNIX%$wzg=?`p_2fKL53a`U)mwNvN&F?q*NAr<{y!uC*Wt@VHx_?k@d*bk-z4}( zf`|F|gs*?anEUXYM*ar57%Bd{D^1&!i@X(x!bR+{*3#z<;Fcd5N6LSKl_RZwsFgFm;P(IVC9dBNWDmx}Fr>=6{dre^0x8~u$cM-c$TyHt zYoCRb{}iN?-^#s<%X7iXGf4UGvv`-q>ybZzZ;_P)t^VvwuKu8v>yXOd zY~^e#dt3Rq#g=R31*Gb6#>x{`9zni_erJnmo5yx^k|N zbrZZEySL5=*OS!V?r6fa3X50x0Cw>lDCPHh;CC_IN5z;cKMhsxN*z&#wAY z>Wl6ue%|?3_<-d(0M8*X_nN8tf_IP=8P1KkY#z58|HN!C6E`xJ1A z&n`Rxdok_(Kh&!TT!39z?Jt~e;|YGuB(uS3zIcQOlN5)+FN1tzUf}mc=pMyPtFU;4 z@5kKsX@=)PjQbYsUOx(7C#ii-;HUG^kx!W9DRjs1^Uh1c2QANjcn*X2`*?(RlGHw1 zt&AWw?x!LZXOR5Uf5z|Ih;ux;Z1M{$PT{eZe*)**ao|xte&I_mx_n2FTJM%1#asKL zY5P4qUoU68p{st;vh^*$epqe5KJX=U}60`xU%@G=ug;x4+S} z3acF9UD(BYjB@sXcVPF*5#B;lIUA6Qdnx`0$e#w^a&(LF7Z#sz%&_sES%#j&ixJ-V1B+HN!unWsBJPP|xB->GPEOG>PVcCUm*1K^Yt2b@6w9nR=CV2wgk$TfA zEI;A>*cI17>TwXf7rPgya0}@N)OQwA^)A6*^RD-2_&q+liTHc-P&n7}WlrVuA>d3O zpYULk`t#-jm+#yH)Aj-QJ`UdnbY~WrR$;{_d>p&t*$LlC@KNkue8PK3ifaRYJ;_%M z&n9&1@Dmn~@Jh>b4W8BDxCty@YR()K1rtit7UYH@T?qJIf?5p*x4a zu<9p#((-MG?=<+hk570H$!RD2PLnSUo=xc1;U_E};gy!>8a%7P%Y8h;EhN=%7Jgda zN3m|sK{o?GZ@m|uVtIyf?wAIigysTf+W+7km@D7q9Rdl6YG1dk6Wx2G3%23H*c=m+*Yc z^BA58xW>mLJe%|go&ZvOeeu7=JiQ2Ce{{X^7Z#uJqp%xSJ>%SfABIzL37-uc^HX?s z;rEZ^`_LTrTXZ|{6Bdu~Cd+dco-N=FJ|5wvB(-}bem^GPpTSduZVrCJ;t?*lJcBr2 z%mh#K@d#&<9>Oyasro&tHf^iPzY;!1k9k;aT7|_Yd>6agc@cc~tLX>qUb_o#CW&W- z<#`OxDs;$Z!3iIa@D!5XJ9ClZ8-l;yiU?wvDgNzMZoRL=zZ2b-s#Lv&*JD>bFTlSMycWAxZ{ek+ z9?XwSD+5UJ_O-l=c<<_uuD6d@_)(=DFPu*d_+e#=SNK+?%X=ItzCHM>KQ6(y58W>O zz5Ws2V);(Pw;jC6$0t0WB%X5o>fsp>VqBn`hM%zdS-8ydj9@>S3@-BV2nR`;7wPzY zjQ5gvCODs>OT$lCJi;SMYL`bLyM7>#lW$kZ-S2i#{vLG5j{Qz}6Lz)lS<2r6-hka} zZ{by>9`H6JUxRNN{sqK;9lmmOQ}7p79KuDGZxs7<8F+$^Px$d%m*>`8mxnqg@1VOe zH^n1-8N1?G1J70PMeJT&!n;VX5zjiyvlX5V=+^jngqK^M8}O_IFZJ;V&mxIuIDXGk zkKe;H0^Lyjg!$PfJizkIWFH&^?&sqX-c#Z7Y^dP#gyf6yez*zUx(Yr|XnBNJVplz` z!Lu67JnN{Ja0^NOHVZ#zA7`G-K{o@xj(r?F#qtbe|CxtyVvf*4?pMf-bMZtz6+l-ZU0LC zr^B3o(4G67X%!Zq@JZ~-za75Q;N#dmKH(!I#kn1+_*Ub8lKiZf$+hTK;x8;d;U$*u zHhjy#i+p^-^(66?A;p)D{~q%5r$otYbZPhti%)oj<-uAA9>CKKj`(?aY)tg(Pvo~UgzHTCDt``4?oMg02ZI{UF?cu5&Oga&$5qT_u>-1LDD*X1u5Q> z79X|vAX4S*g6BicWO&KB?nUpc}{N#dE0-xpQ?d7J~#)!-*A z9^u)Rryt{fE_kMoM|cVe_l9x!X+BJ6o@JsNi=Q_?gaej`d666mW}bA^TX+CT^}RmJ zjqA)T)3yNOZxh!!bf;#SR$;{@d=$IdZ8vt6CI z_#$>MF5%N8wbvf}mXPl>JiJ4hUHA!$M|g|nIStQt@FpLRFzc{WzZRt8nu32d`3Eo_ zrlFgJzp(g(Cs@9*>=Q-c0w14nHc9REc&6K4w`OwRMgBtg?x4Fdllv~qCwv*ZQ&0G= zf-hq4s3-UgNqoDl+<{a-tRY`7cp~twL$`{2!irOPspY)|?{e^BAFuFul6VHH{b^Z^?mkMQ+RyF6z;%{oH9OYodSck0uuBbG<_D0bCrH$2C| zhp~J06kbVEJTd&fOulz4Vx2%2!B1H62v=L4Ud)eL@LV5{a4(X0?#^(>=@NME&tQF+ zks7DM*RZSnmGImEU%~FhBfN(so(-1gB0QVWt@H5+ue3bZ;8_h`?&A@zB#CE=HAx%Fy>=gm)XU;3$3y@YRJS3Q=(a|e6_yH_va z!zA(S!0&UkYZ9Ja=(ge~tacXOV0q5NvkAP;$0HmgiDx!`W#qdK&s=mf@e>x0@Knn) zl>KEoc(RX2cm$~j9=yzDl9(XYuHtvmGIpFU%~FxPxv57 zJj?KV;~Wq0tU$K}KVk6*CoE4pJT2g;k4JbuNpW%C;H(S1@c%dR|08^T&>8%N#V7pW z1vjo3``?={&@V5f;u5|?65m0j;@gV;EM1L?4gvP?C6fuWlPgKJHPI52tfJm~L8y#Up$Z zyV{xe^yF>ub?jcd3!f*6XES~ec_@cxE4q#N35!Q~jpexv&pPlbACGW7sR!*e*~&~L zVKfXP-`1ZnzZUShAan!BCoEp!-j=trmiruVPam)FgFkb5?;#cEev^- zqkMeAgGl0eJdJY{58r^NC%QMMagMS)!uPN%juv>@r!lUudvOULCG{Y#8CH(BvOiMo zc<)cS7lCiWi{$@P^8YFKB9>qHI(G4`n9tuyfUjcr_=V4t#DCJt{YbJmtR!E8ha2#& zMz@@N!m7XUBFlRh-X-8>AFptPB%X5ort)wfo|)*T;U_E};WEoJf^jezT;$^s9#85) ze2=HP@;*}azA)9T_pBJ_d35Kdrs^$x61(cT9p2N*gWapQ@IjJzcU!p@sq;cT`Gyi7 zzfVd=(bbYqSn&$avAlijxpxQ8^6?6nllH=6kYsDP{Ym~#mxuSoxtIDR^X`-Uov!5* zzJgtGt%mO!_!4$6PT}*U9>jSRsd{h4|G$oLj)rdsy3P0t^RrEOo#nd--v;m+AD?iP zB))2-_{#AA1^K@K-(++}_zUy1O*m-z(i@lu;A|hC@Mx0wMj)wH!yx>Rl7BmVL(mPt zUzne5!o4jYzoSU@1^4vv3GexY%eQ^9D+eIeFXunb=XTB+^It1W^5Vz22lzOj+X0JL z_yl&f+YaX0Dey7uUONgOCLMrhH}Vza8l?IufmGac$iErB+%MCw=w^{$Sp34%EdLP3 zaXEO3k6-xYB$sF3B<^X+cNCrj==MzFp4RdRZ^y2}{3ei(&-^4Oq6^|DEFR%;mZt!oOz>DAk8pt0 zgZ>?2WpAX~@7~8;{?i{bZG+$|TFK`f(VhI5X%!Z~@Dc2)-yZmnfe&H#>MOjHq&OGj zclYnvr{P(Ot_43~@d!sO&ztbX!1H}P!c$1%8G+vk^6`19x0@F2@muJH*T z;NubAT;}quC^K!}C*L1`h5Jf$%gRivuy}-9u&W;T;8_e#VE5`JJe8z&8j1V?vX{lz zOI`jGrKath@ckVAQ|OMBnpR=)3m?QTzWv;z9R}~m?(qw+C%p>q45aEk5&wnc|Hvvn zXNPV){=(uD&a`~FO?(~^JkG}_Jd7kBKF85Em3))n>51;m64q3$@UWV z8|+?O!ly~%Ie_0t^6~k+uvxBGa63rOM_iQoET@NiBWjV^$n zFhARb2V0)$&HOztc%Y9*xV_k2=PnjAFUhwNp3CUY7c(!x{A?3Ggj+d|T0N#9x@7ZNh6T-(~pLfmiwXglkEU;F)gaWc+nc`nz@f z-Vj|G{@%T*@CcI1Z7(uy{U~R^=Q-CE(H}*oRhXY`!Z)!i?q$5s-v(dD?$ty10_iwB z2l3N+>pJg2htciF&pUq!@3K6{;MoJ-;o}kBNK$*OLn^Ln{Eu_dHiNio(aptQSaAu@ zuzUk~ub%~;?&A}_S?Kb#6mp+UzJ5!XSLhOj+-F-J;rZBAA3ooejDTyfd-W5ZOX@*f zQ<1L`R~r8HRge^L+l9!_Ko!*^w(`?(wbUL|=A z-KB}C&)o>0CB25mNI{_YIj0sMsd*(SUjyW&1dxqHDov3vCpUQZIw68!YJ z&O-WW8M;OI3G=gU*+lkp%kvPP1i0SEBRq{Ho&wABC3q&F%k}XHr&*ry*wewIeLTXw zNxy{W;h!*fke89KBac|Q2dRC!eS-UU{Lidqd`@6|PDuS7zwk}$s^>D^FK>gdWB2MU ze1)WVPvUp?tT6$2PNO@HpD;h$gb!JseefIsAMo)A?;vUYO(4ZL2Y3LnZwBW$fL->c+>VZ zc*3kFBhd{TZ(4;Fr|>}R;+es`7!2-@-QyL0^iemyn;&)C?N|8SMtA+Asdf{-gkAa8 zV!r~ufZgK}K1NczZO89L%Ktg>>_oQ(KViiqyx#I$fM+9kt&c}|Iq4ug!;xyY{RO7& ztzR%NzRBlK3OLIZm{wu&3GcwJI8J|R{Ln@DP>di?Z#1;2wQimnzv@B0gc z=UAS;OBpxdSw0@&a+2CV*UElK#rGiJZMVNA-<$co|Kz9IP52ge#j_Oq9qs+r(IxQnz7IiozU6rgPXt`!;}M=i>cKGB5p?5P6LjOsSjN7DZdEW9 zm+(^TisRN7xn~3~#_q)>TuD-Ymf)vxf17o161s`_dGkOx*YadiP60U6$0Iz7^doq# z0Usy~IdVpkle;M)P-jNOY%xS6E(D!}h9<6sXw6VT=2C#-QH zoMw5({{`zDc(jj4co0eb_c+&Wr`Pc7iSEtZR67aZ!>;mMu(#)O4#MumBYd5t_3{Ez z>*WEY*30!)F0yj2m1#)D-y7b)C*Ie-&HE9$p707Qe&L5XZn@Frd=4Uq^G!~wT;aPU z_4h@j>TwKzt#iM}pTEU7NAUO7J>mV9kI%Iy4}$ml_=MM!#M6SGK3~e;`zIHpOW@~y z-c-28+Q(s^53cmtg=bl+ns0iNWI6^ zAQe|hHs2Eg&z$ct4$)1_=6fP6uW&AQ^-Cu2jRoLL>|Q?!4=3py-5V*sTUjpOVfgN3 zF)y=He8T)anZvgRzN_Gi*gZbsQ>0hn*@qP068sB^=g06ZL$?TjVbxohzjt%^9>CWO zj`;Y5b4fku&yiO4Lmp7PRvyZ9?Mtkji&VLjGx;d{Px&0g*Jw|4WtpZ`Smg?j$F8{f zyOQKYa1gs!58*VD=6Qeo^gVIU!7~tDU;Mo9jT1JOrxu=G;71uL9^rc#ZhW_q8sA4V z`296}74RKLcNl+R#U;ECyW%(m-vRI*AD{3}lGNw`FMpNe#GTnj(i2axyTM z{e-V$S3E1=y9vIE-HT87I7vKv@caA`zN1C`fNmFl!ir0Hi{&{D&vx)8ACK@Vl6d$# z>$Wr0XAW+KMJqJu6DTw&uZ{;>|Q$wFCi(e z$w;kRY542&3gz&nqZ^IC_xT0k;g)YQ?KuKG)W;{>pCrCMNN5@ke~8bM^RN@XqaR}Z z_z<5bxA6(@!LE3YsDHq_uzT?dZzsJ1&uXN2r&(EmR6C9&{|oSai1X8EbOG`Us~v?0 zTmI>cqoLq|K7L_C63_inrtNw16~psj6zk9^(<&?;;TzZ$7vH0hyam37-HTKBG)X+` z@zZ|)@=o4s(5=PK+y8}ES{}Z)A-Nj7+{YtqNaDHvtZ5quPs#Tf-_J6>pEa$*ibwb& zc9qX}P9!gb&tv!E5#B)(&l>y!6Bdu~GRt!lo)zFFJ|5vBl6cba`vl|t zy`1OL(T&DWSUkeREze}$4@Q88`gnwIjC9A>$&tiOzU}awmTn|*TOQ#5h=bsA9VSaaBka& zZr2A>e8O9>D~{8Q!69r-SwYezQ+KVg2h z371=*L6kESJk7@=+@B<#hr{{4MDn%4^JqBl&%^n?M9U+58@u{x2|RbfH?e#DCVZ46 zo?ZCq-0%x{_MqE=pLdQB-eh^s!m|au!N()Km?WMW{30rU3-8V7D)DnL^%9@GjEdz>|&Cdsz8U_kCyLQ1^YI{0Q$? z=*ACCy)Os{N$U3z_$4ne?+^1{if%Z5!YW^Q5O&2~PJBba1F(Db5bi_j!Fu%geT-4~ z9wLt-FTaoS;W-TNRdg5MNBNdl_zZUOY=-w7_!M@JS9mGu-{F~q-)i!W`Z4#O=w{(3 ztoVe>u`dP(u+Icf!!9hl@FbGr8IIpI^oQ{qfo>>%!txUyVB?v|``I9HKVLk;y-7Dz zzaehBT_0lF{)YU&g6}4}t3ynyu=s>8U{`(C!*>aM4!c)B;nSr5fNukSdXIbj6XprJ zb@+Mjb;8T7eZW!96X2yjyKt1G_uJXlFNohznW8{eyg`;d%UC_Mi9i{$Y89?_gKH#qit% z-@@+k2wx|upD!cTzGsk%?;!cw;mQ3W>ovOlVH&XH68|2QbU;l{vfkD^?rRJ6Jb?mDDikDe8z*n(*?IC=L zq;}nppXSlPL)>ej+l!w!uY`A4o)hrw0&n&42yY^(pVuMPzRQt{FG9Y)zhGU0H->IL z`GnOj!gDQeAKnwI!Lxn5!ZS!}-|_gVJ^5^Daw57QeqQ?ukF)j~?3v)PKD+QxlE(MR zcf0Mp|J^R%b^H&a+xzYmpYU#y;$M%S=FxlTkB#Wo;^)mP;T71`p4W+g6?hqTuYH9V zkyLIJc@4h#NSe8!8mV?KQylQ~*}&vvbVZ5-to9KOTK;t2TgQX5ef+|A1{(7(@LWUw z9rEZvcb=Vu?>M@{15@)%_yG3B@E^l|2)qxwu*wtOMN(W#@T*0C9lvGh7U3r>KjA2L z)$<{7CBXIAy?P7Rki;_{zjE>oP`{xI;wLN~;c=FyU>E%c9_!-~9!a_i&tT+fWFO?e zB6}hkMh%bN<@VFfcky{Ic&Aa$ZFJY)#pk_jIl`B)E55aqa|L_>yBDwUR_q#2?I-v> z8+bEzZ+r=_vG(3SB#?uv~#?u9)+W#a{?SBZV_TP_G`|m+2{?+iRz51MFokX`1Ua$Rx7g_sI z>`TDSKD%%fdmHsH(Z%@>j@5 z{W*&wA0SoE7Nq#sAjRK;6o16(=UV*~s}EZJXsaKH6#t`lxcpa<;y;6Y1-aMCEy%~< z$yQE4{v&wkJKTO+^tXJD1Kr?vr20v?pS7>VJ^yu3UVO&o{ZH~;MtA<16tD0p?22nE_A}rU z*u6M~50hSjcdeBptmOaAarA4Diod)M-}6U%e*9J557ABQ!}t8z_7yI}F5VIQsUNrq zyH}3zSdw@K;ir0kAHN~!2H@wlgK%%lQ;EGVxTlXt_{7`X^=vlsAK;sYRR3qbjn9=5 z&n(`ba?y=@8=ot+@d=N_u6Rm_e>6CN-HT6n5J~G=Pb*jVcIW3(r1qa#z4^XQ_(t;{ zH3!{{-h5xD*ful#_cI94^S5kFy-C%ne;T!v>Ic$JSwxS6DQCgJx_V zk4JbQN%1`D;jS-#gP%e7ut#cr5x$FE^;m@cJ{^1;yH_vav)Bi6N5Ok-@;vx7c45UK zd; z&|_Z%UV&X$cHyPi(|AYT@oqlP2VRU_Sa#uQ*xT8=H@}_V(}1U77nWVP4EqeuhJD`2 zIt?zuE-bt7c+l!mXPfX!%Xba?YVdL&pKyZIMqKle zif=qn=k%EusRz0s{@%G=c&xS0$36}`%4ZiIhJ6v`&*0uQ0HzCDh56YQ;Gh23Ri9bd z2ZGs_JL)GqyG}=_o~Go>eD()D7<_O(1$!pa0T6YkZ7(pR3nc`ij+S+%?!|jnTic&l=AUE$7Uk#(WSg z&K<<`L-trbPkWZWwa8n;J+JvJ-~ViR){%FujqUvR zc!y)%kk8=?=ibwK4$!|Ntbcnw>y>T)oeg|8$v*4*`Mzh{`~lD9oUO!jsEKo6FZcQW zLhfMf^PL~DZ`#<#9x`U4eO~gCvllseCw`v(vhnO$!ug1S*q{7U80){XG4t6y^L_@T z%38PDeTUTZ{`JPZ%f`Hy3D?WE)vz``56JkF&xY?BQ)-`^dH%B65dIeUKcP0{xt{0W zTK!y}-);5FdH%lb$4tiib=yZLUuF#3n9oqJ27KO0S!uN4GmLLNpQ|p% z5rdw~zs;INS$Zz`3u1;x&n?T@+ZY>qzVPR)GmH&AkNN^@yyXdg$(VV>ApKI>>VoA- zC(o z$@4zul%9tX=d<*qo=2l^xBA=_tljj5^po*9L|^FnE_M72<6qB*@PEjd(Q^%Td7q7E zC;qE!{0H&BW1r9Syu!8*pWioWmUA6#QqDLO&wAqjyyZ_&N8URe{aW~SpDv%nJh$7n zJ;U=Q+n$5*H@5E%@_f0s>wgEI_gMbH)N35$K|FJ4pF1{&5yW=OmOGVteciT0fATK0 zZTJ}dPb}x7P3+OEYvMV`IMjJe&)3ious&onD=hz-$voS!w2}G#lr3w@aOe9woxGJ} z`23IMOnisE*|z5{Vtd^_PbK~lmS-o=Z`rxJdqMBeSTuOCfhU$uR=gni)| zn|J5ec%QI7Z%*M*Y<>DqWo+AaI6-WcmOqlo9Jg(_X%*i|YxS2#(S|n8!PM)kb}X%$ z#e0m6Id?Yovi?J}Xn*T-qmgIZwtbq7$$#2ytNE;r=WJV*F(!*_-a%XWKOby6FJT{dZTKGBk8|k9 zF}>Z`hEHak*mhX)EqrVpYp7$kZQDC_j1wF4$f)ys7-yX9e2z1Pjk7(Q|96?P7}Czq zLf>-qdE_4S_f-H(lX>(71lfLktKTln}=bJvC zc|OjyMCm`^e`%l5yyjOSg19f65obdwencyU+i<%nL7X)EC<$U*5~Ua(DU4HNM#R-9rb@ zI3Le3AI}yaPmPb~sIR^~eDQq7$MYXPo}c-6zTxBfPajXIk0;`*?>BtUKV+}>>dx<^ zI-Uc*=cB&o1HQ5SFTOFn&ZqySZ%(c7#Zcob_gP;b9cEs8F_?;YyuKnHj>qd7BNbJR z(U(jGU;0^{sE=1PMC&|FxS>iG`BpVHE~pDvRMm#77F1L>H8gbAFO1bC!k*q^a`M$T z#={kn#zb9>uMC$lQd7|!j&(9r)kSN=F(OMW2tUc+i7*sN)K$d7(fZI6U1}?$p;)M) zqAJmns+CHtsc(wcRx~yxqD_e|mT;n~wxTZL7~~oY69WGxVxdU9p)OI8sA~w5(`}6E z#-_^p@Dt6Q>fT5VYeSLhcx`AwI7QLTCl(G>cQ=Qtq80OE(Tck2iu$^^E!u79+Hie+ zBjvx?6!r{?I8t5F#nP=Pr$W)jSeFK)cj)65Z{oj{=rFhBr01)q)VZ;yj!{+}t_eNaqb^csLrD!XXXwWn$})LH z+B$bus#e|#kYaMiM@?g_p$kQIZC8!*cV-M%RcjLYOZJ+sZk{zrk&3pnb3=94+_j<1 zoZK$ThU%Oy8m3oHMrLBkIpJm8LDmwRWY@g-foAwb1NRL_Y{twyU?hg!oDW; zw_X<$)uJ_hTD#9&{km_)C1wIL9^{Zm#Nja+Rt3vfvWbbTn z8vKbC|Fm(qymn_mMH^Z6-SvyX83|YUijrG3YjSf~lRln`K?XbRQr*YAOEmeMyqY`n z(Wj?_)Q?@&>dCG;+m}yJXLR?q{mJ06lf+-9HFk{gL|xT_aKh(7w9K(8HbJ-horbit zl8w-(tYMtSYv~|I?aiu={tMMdBce()RyBJ0;tNC3ig2{Cs@7LxM~tS%r5g%h_zb>^{3~O(rU} zeiCz>CijfKe6|jr#UHP;#n~m1eLEcMT%9PB!;U**bmxJ$%DS5`8Jy;G4j|f%t%3!Q z1BPX;Wh3=drxsJktCP(xinM)Gv~w_BRE(1@8U>P?1q)-LXg7*b4HLP615`s7@>IU6 z`Z_iSMs@fPy2Qhb6OKdwn@cyFMpI>7W2#Qk1uP$tifW(AX-e(+_2GG;s+VZLNO&HH zv`~Trp>23=s$C8KE_KFOmyCY9;;aU z>ci@qM9h)?mWI5xI!0f1;qFkX)x**54vJmvT@wq<>u&AnjwhSlb;~=1b?&RiC{wg< zQR8Ycn{70#)qvq_x$nNSu ze~JFHhSR2Qi+LvptMcb?VyOw$*H==nRG9v)pLe;Gp<~X+BhuFBP+QGwNuzpxUZOVT z>Fwk0zL(P5eY~q$`*>HK-N&Dx&gkw-M^I#_-nOFl4_~2Jo!YY%y1P!w)~T-Xc_~9j zU1O0aX{#!AJaf+H&T%hM=XcW^uruG8Yn=>YRd8-+yCHWjlclz!8id=~=#J(}v?8)^ zCKZ)UHLk+GjkpT0qy05>JUN17u#c0+b0H3AMP<6Bly-NMp|ZY_aUbtwUKEZsc2YPE z=IpJ`2_!`%gIIiriOxo63b{3KyQwM>^KBcxm_(J@FS;1~}5ScX+wOCKQi{8}!!V43v(I zBt_!22{l>(x1c*7oeUhdYPm9TudzC3asu<-gsVbiO4&OibE$L@(xm48gB~64a!+tg zh2%6t7b01maTBUnBiVj+E8<K+Tv@LZm z)w@zkHH*7>b@uYTVs$?5%xemDWpwJ1T8niH9A)k`b}3j#ya+mlXGfNMCD^%S=X|3J z3Oj!ry3tfMd-02$M7WEKyJEV7_Yb(Z?c<&(x@LFR<0spmP}eX^Zmg;+i5k%8 zriBgD=v`m?ESq11mO;@mm^%83<9vjr*X!MAxQmzFCH@yL&I?^LIpHQ^O%d%n?p0Ff zvKxX!3hr34>;h_U7M{e>qMKglqNk#&@(B*!qG+#9x;d%eomcU07AHo% z)Qi`d>b~KjmUTBMpUvw#r``QlcguFya_6$wnewUr@%whU!ci$%!R-H~ln(0?N^xx7 zDDapnDw>$N@wzORv}-n&9y~Mj3)8;*NPb{E_v*D1`hGCuBbn)e)K5lsenwt)Ms9X~ zAdr)ufx$Irq^IX*XQK;dWV+sS`&Lwpd*L&mEGaDuyzr;f%S%hddyn5u>E|K8$K_Y8 zj?A?36INDR`FSfhSotdQST^6IXyvc0ylbU?Q6&37D@R&6!Ad^w=h)|2`9&+gg&gv6 zJ|k--pIdbB6)S&hvT*_KUAz(tNoYcM2MAPIRZHZF}MNR!Z{k$!E1iD@qlNgI+j zC2ejZStdP_p$WHXuhomu{d{N7?6c24`yAPQd7k^n?>yRCGkexvvu4ejnKf%>&t7k# z)>d`@F$@35!XH@p&lb*N9Zz_r@cs3B65e7Pzs1513m>=e&np$!fPyCYvIQ% ze9XeTS$FKbJK;TO;g>D^6AOQ0;jb-x);{+a79O>5GHZ~^_d*MoT6n#MtrmX5!tdDn z{<(!7^raV1*>t_*A$tF4;Ry@h!JY)&Uu@y~Eo`^&I_RYLvv5HG+3q*lFPxE&RHLt896HXyc<6PGwzN&+C0I!FmgCwQ!q-yq{*$ zpR{l*^j7@#B=2Dh4_f%=7XH13df!cS^&Xtyn1$0>(^vd*3qN4tCJTSh!X98S4(Cmc z-2fdG_lDD27~Qz7Hx_ zXcH_KWhWK|7bU_QKyqo@lw9RBV)XZn#MG>xpgN4NpddZEu441DKBt^Y)oO-6)i+N^ zmaVcSEV!m3c5Ly3T@ra!;+w)T%54+!3u_b1Tp(9)Hidkn#k47L#q@o2@({%M4}330 zj0ew8$akQcYAU`(C&$Sik*YECbGMD;)k*$r+1CxKtJsQ2Q4ejFLaaY2o1ATeah!*m zaK{8|Ms8g;uXyX_&&|IZyJlg;<(4z@_b1up-1VM((wdS?umwsex%(UP$P}JH2GYxJ zcgcTxqN!ux2P?3rA;=_u0V7Dtw%G!`M8WmTJbq7Nkt=p_&s2$)-wLPZ?^y~8kk{cG za&B6j$E0!K6fSCxyCz2Ga?%+X<6Inufn3BmzmJa=UK0t*QV--X4sI!D1` z#QP3hSCu!ktDE;1umj)eSypy0lm@Y09r zsB_r}C+DqS$T1h*yckxhBKsZlyq+>7a(en)9+aH3oEpw2Vua*BS-AD-(E@u2m1NiG z3aqOO!zxpLp4JtK37)fgPTHd9V%xJioWe^gJQ?&zx%maRW9))#TCrUmaeGLLuQcZC z7tZlu?J<7|HD*OVT!#}ZXie}nC5;R7$?K$EyCnajfYZMDMhJ-7w(DIsOWPQrvjw5%QrI2E#2LAd;!8K`{ z4B28!7Cu&d6ZX^mJ~>xU{S?<+@R9Mu-|ZaO#*H2LyYXtr`MZ}cUV_(KzjdX?yYjAf zL+5Y){f)PAzu`Id|KUpVzOGoBi=TYoyf0qx*UGyQ`u))2G}}0?SWlN+dipgsZpUc# z!+w0twYRLv#$D)Hd{Fv{p4^g)X7e3&-I(lk3bCpN+4#e5gF` zCwlG|EmC7+vvouG7>$j&{5ih9Z3*0erlaJ;Fm2tL%Z2-mA5LL@O6Qd`?{)sY6S(Sp z&UN4>E>-U)F8z4r#9WfwMO?U}Px&|A;Jw0g`%($7d+>B`VDR+10cv-E``w3*Nt(8(AdaSZ|r*s@0%IoDezlE;nXZ}c>U4wGIC?xKxv|GV0of+!~1x(5gE+R zBtQCGiPw4aU~{5-^q|-M3_RUHo=4BG8++~Sy0M{Ts_#g$q;D9AARfH5uq!pXj`K^wLi9D&2d1!mAN()f8{mD0Eits(UQO{c`Rf z1$Pj>hv4f-MIB{BPUPY9>z8L_THV-Xl&d^Zdh7r^Bd_ig_tp2l)&AWc$x`^^$;2xs z?o0NbIP7)r?0Dw<;alwWa;6X8SbeL^XjcVx85pLZ{?4kq552&NNu3Waon-T5kS=A zaH4wznU0cnj4PFxc7y8h^`zImy98d6rG2}ncw-My$F$3R5Aw<7O!Djn!qM|XXM1Bu z2qTj*$@Zw|!PgKx99f908tVpB|AW+JUR{+(>MB{9S64Z@-%x7XiC^xp9DBPiIzG4* ze(yqd??!eXLUxxTy9#gYm&j}!K1Y`N?Im-jH`XTk5s#JMUAgl6KC()Bou8KOk5o+R z9;K{lbaDikNR+&cK97x17U}&6`Y?*@u197oLNc3#tc-kkUil7@$B}mck!go9}WH@(Jh|mT%gqzbe1~L(8iQcd7|XlQ)RRr;^kB7-fW;gx2lenetO+= zsYJ=cyes%Elb-P2>`j6TJ(XdEGK|8*F?g>_Oxvrn%t@5KJOa;^C(AEqI8VfHQF+0q zbS8tW3gt^*(U+p_OU9Ln)ZPrTn26>`g^xQeQCE{mPRpY`4cQ*yzT_E4-^edSfY!AV?!2NXamFN(-$x{ zA4w+rhNsznG$s$Vg}F`EMzH-wSYA1@jv4o&eJMJ!AS~n3kR8#d{UuhF+=7?0E+jW+mW(g<}xfxej`?&MynIQ?5DY)?FpEB_(sI5?>(rX9SZvCXxC z5w$zo!wBhBCA6L7?>v{5r5CIAHpFzg*oJ#;|dfhrS6r=*`|4$Oc_*O?ZoRPh~G6r^TG% zGCMOBnXHD!YRWbZnecq(B%XgA{71H4xLPvWaG`ewa$0;1^v2PFO!9&SBgkqLc=?Q% z&TD--b^d6DH&B`M7EAWYJ7~!B{V)tE~@ilG$)ctv`i;GR#4|= zEP{t)(i?2lW2zU)RQiH^d(ao7leS(|cb}F{BJc7k-qty%C=c4GKMscSE>`xFl4ofA zF4%ue)K@3ZdnGeG!90Y1BhQw_CL6ylWX~eYp#Pv9 z-y9sCW%}ij>-_n{2>A?Qla121*GKHJ5o5!a^l2_Lggt2HEN40!7CP{fW5b4YaOhHO zEc(hxny+E+4wJvJ?Fi>R7m@X3JrkiV`*F&gDc!~{A)K03KbApG-$QT0^&=bNGRC=J zZj(H(xV`)z7*Cal>cc?fqB&y*xs)Uh)jTwX{>FxvS9x2TCesfQ*SLgD^D=FqJHtFG zb2>bpnEGa$Y@~|1=X7rvyHjK05V%K3S6PRMD}1pxX>TJ($sA!!RXZ7`?Tj$D8=UIT zuZEK7kr{&-AF0oyN&opl)z@U?3BRVz5jQ-*_m3m8n`mqtZ%8sHoZfpPne6UqNW3Dw zC@tyy5p(^08<4p!d@lPQ0qS~|dE+2s;SlZr2z51#t{r9kdJTP+9W>`cZ?(qxW0E1| zS9u4K?T{^dn!ZV2E*Act^>1Fj9`_b1BC0*R0)AZuyPks5}ppcw7IY zbdf3Z+QM>`o)}$0K1NrN@mKP6rP0`|yV2hh_pRzhH_TjK^)k1kvMSB?rXAZhx2#Xk zU7xO;H-G2c`HOZ|m3kZkvW1Q8=}YH!T$-+&yCZGZhe$}L=XR8O!n!i;rRUCHu#;P9 z4_dcW>Hn=&-aSnlceJG2?{p8ZPxGEzM^(D5TKRlAnv_YIx`(uI}@nq-(tTU?zL4q&k$Jq zYao7yc}Icx)#g15RK7hvT)W@KzhvXumnZ&iv-fYY_ZI<0|2ORG!)GyXBT#f&eYjTV znJa#qjjsTTPTJnTz}`;*aWBr(IcOAZRmO+4M}ZV!-iyFXfad%+(!WWZtZSbID*s1- zD*qNBq*iV8VeKWr1o5;FYrjt?A%1i|IdJVE8~-yK=R9)5U#Go)zrDW`sC+n2+~ji; zkiS(rPn^HnbNHwHIWOEJt5uv6E?CR?qUQcSAU?=dkNB{*5-55pn=Yp%kF0tNT>#eV z{A#8DnhAjDW`LlqI_ksPqckFwYtVGU~~UNc@KzX6wLYlwXa_BmuU3*ozU~d zhirV*#{bF2|K7%R7MXr8+W2p5{2MlY+{S<3#^1Ja?e`b`$#yN{5gVUl<8v)P6*fNI z#xJ#Ty$_)0=i7K%ajsQ#I{FRT^lF>_AorC1Af1(dKd|XbZ93;58+td`_*ZQFCL2G^ z=I`V+mGslOE`SI92%5OQm7w3%TuRp&X!;%IQoL0a$M2uH6i+L{?_w^+^}d6Cw*wV- zKdT=u>isdHP_nlz5@)R;C;h2N`p+Wqk3{11H95~`SM9?4m;F7`Et^=tj7QK0=T(jG zV)-dPJ!da<@cxlrUd??G&42GcoORp_^Y?UYHs?LDKhS@JJ~!@`QNv_%_H47$z@)|V zT5uP)dAmAHbYt7*7B;5e=~c-7wEfctYqJ{ z%mtRZK=l$A3If%O-K`){y~y1P0@VxMtsqdnz};HlZQQF+76vcX`x_zka=+ zwcep*-E+b>>yKuRpX$>ZEqE4xf;w!lb=ct7;k}X*bvHuYjZ$~Vs5{MPRd;VtuY<`M zeY;hE_;6S|9nd-r^K!r5mLezWN4`1aFfc;>lqMcJZ}dIhKp*!Txj$OY+9*EyRf)al zy-q!Um3rI6G3(fD3o;9t|C7h?L9HeG^{KLThU)PHt{&lA^W72o1gP^&ih7g}L-hzW z^$47>9-)K1G<#?{`6n-0(0kB(g}MELKI-Qg>V6$_XtO43d?mg=8GTsf>RtR*sXn1I zhz`#Q)wSV6Iw3x+PDG#Wb&=F z*5O%0@M)`znHwl8?RD^@-T+%n*ke)m+%S6l8u-27k3N~`*4pJD`8OHA5^JXw@Qg0X z-z0w>{gL4d{~5IW{$L21x_uJbpYWP(r?ij0W8{_jXx+ey#PKDAddBLk_6dmhd*H*B zqa##~&Z+o&R0i~Iq?xwFvvuTm1mCP=<>k>+UC@yg;5vS3a8=E1LAT_gH$gMTRL4Xk4?iE9HR_@4q^;KTP5 zhWJ7ERIWOeMZ7>G9m98z#ajX%L)Yxgb#-IR3BTF%*aw%DQ@;tVrLz{LdKtn0ho6!) z0oro|?V4~Ex~28bkD~`GEUgOY$Y(zYt<1a8^I2ZEa4!bem6LWj##l(*-|y4D{N!je z^k-?~KTXYvp^Xn$Wf`aZgI{5-f_7m1?BwtKqUr};fagKRt`qm&#(tTP;P;vu_`Svt zs}G;ld!mc}6ncZxq%+hL>q@EF_e)9I zG;M!Bdv%omiTnN&biIq{Ur&v$#x#7#KRR0Bb&n?Y-(0$4&o)e1g1p*qS?|2@g$OVp2x z2g$ILu}uAfo;@d2ujRYFt^27{;V7^2pL$z&6VK592^X_5(1G$_5uM64zQ{#u_moG!_l6m%=%9teI;Y&TPx`D1x8COG7b#Wwl?{gyuWdoG-CFncF ztM;Ug(8rGQ%xDFDPDQ8evgbA=raxRY=jAVG-`NQFo}nJA=2BO*_bTH@FWEZ-{p(AV zURFwfmD<&LvuwUnU{%TY&O63)8+O(G_?fN?j=TF;l)QA_L#&Hd?n<5Clf1B>wVnYS zL9;Ywj$)4tVvp=$EP>Y_QCHeyHM?h+wQSpF)y{_CSLxV*c1=Wjp*}9vcNF_qWs+Un z+qJg;A&pDpj~Mxzv6*|V^zlI*Md|@xTTle7~eZV=uG!VM;CR_L$I#9*wYmGncMc^gGTY>c7^A_3knLzpT z^licmfX`B)dQRUF6zsHcBar@f-c7&@fpiY$Ir(wlL0tY@!Ac9KTiC+{($E7ceG70V z@ERaehJ8W!#thCFTSn<%D;aO zQ04eO4FUa~*9nw=_$r|CTjs;H`qrD`SJ*hVxaN}czNyXx_y<62sd@L?_(q`ksk3qU zO~uzyGOqyc2hz9AlmAoszm+ia=6Uk}T}=FOpyRmr%VB)Xa_@CM5JJBQk7TY*_Y<}n4xcvC~9pDnZeK!6CaiYO*29a?5 zUn1$Bi=;C*%E9M5Z8`Dvk@)XL@L!L_zZ;2vD-z!sp;r@0|A$C?LnQv!k>`&@(pCSU z1iyKa_zxrTDG_=dk@U5Z^sEc-WR5n#f7yYvi8q}*z2g;xoySl#;!a<%ueDeQs2&SD zLiH3Yj{a#39W5KpdD)GPE!(!WhuopUa%UlsH-~(2bfo;BdYdL2>uBAveLZiYc;-ld zo!6?@iS&vHn9ZBF#~)PMcGqSdP?~$PXt-2*DJA}V2Bp|z8^q#AwN~nGn71}K@JjE0 zdyPuA?_mYv%RO*F82-yaMSPz^%0JFRep8i|1GeOSoKL+M^eZlme?MfwqNPjH=C`g? zZ@`!rPy?^xf8MXyLtm_)^DDZzx&~cN&rjB`=$?0e#aI0?;-vkGcI@%C(Dz(I=IXL; z;?hsN=z^r-&313ZPW~76Q~9>z{m+?so3#PlTy4c^oj1?%_TQYC|M0dWjPLb)D_3v@ z-*RT09}AE3;|;RUC*z|?_%u4^>JZ#M4y#vj) z*t^F*9OjwR@fQJIJhhgv(!njk2iT_le9ZYr;6?LL?a3L1zS5_W-k6xS;eFUIZ{S~% zeXnOS;FjX&(K{Xow3kEoXW08^`S*u-M)y-Cmi7#Pj$6n5f3UPX_N9uJ=AQ{0#*alA zyvM;?^h5CEkCQw_i;ui#@d*o0&zIb*`3F2~WiBFmw;}^%n!@Kfh|Qk3w)02AJpfL6 zkvG<9{ct_V5<9{7SuXbTHTe)0odk3QC;hgcw$A#)Qlz^&kWWMPVCGKHR{hWfj33~6 z!k7joy#Mg+_&2X%e(b;FF`ksaaw_kWOkBtN@kQfbJgNGh5uQ2;zz6VWr4`1?eg;fs0fM@9>Wl(+V{+`MBNhyPP zzYM)%@7jjTjh?MNz9&?7A2j@}g_bvleKlKkJv8-W&#A7NBaO+&9Ioq?;K*;?BO0U` z+4%dK{C)GJRj&2@9!^%0!=y7ie`NMg@{DBAiypbTw(=4!qjR*u9_?W!?%nF^jP`^b zVNX@?{O(E2EB$%8;ghy#+6g*UY4z2`6H|N|K0RB%&<)D~d(z+6YV!=9rQNykBuhtn zsx~lZ5$|tIW**No^=t5b04tXvFZvAWtgoxr@jjCE#W#4bC=DM9ew4a_dgjdIglQWC z>NhI+PI<7FG7;{K5boiuf5`beg8qv>E5-W@v3(bLG64$Ozmv7vs%w|p(;fDCJWiuz zx-)N&h4%v)3+DA;GczvDTL+~7H*8Y+55%mVhaMRG`+<6X4N%YRq|)`=B|wvp?sK`{TLfe)Yi^_8om`5qF)`0uYU4KQ z-DuEc0Ikwsv0V z44;s>7rTyplXNM~#qV6MSHl%hpw8RhVJG=UwwaACE^>kS^Jn8p>zeGFJPxM4` z5A@%m8^vUx^?by^a$y*}- zzsGZM^Y|cR*gB2Rj1wiYUwhe)ESm=$@u0D$ly#O-@+`ssM)|O7uwl8^11~?9eS*D* z#0-C|*N-)VhmBy?M-WJNc+An|~WpepC9=s{|iz$m_)G1#u z`3k=f4@%RVBd4q(KD5r_)>0(%LFnx_eE9XN=NXRt@{#vM^faFtwEQ`G>!7D~AVu?<*R0}u4LEr8+fnA$b+@|5`5g+qd}w2-n)={tgBG3*?V)L!J6I( z>mEt&GxoFo#+v%OjSdiI{f9999%1~wglSu|$ARp19|+c~&<&N#@C8qzskM}mX+B-U z7wak|b8LR-bPxJr?khjaVCZT+0R97g2+>WQfrh)muvv^&byrOySda?JS)gm!F4IuT^{xk@Jz0S zg#QTm6xZ)^J3Gq~PC{28vV5MIXh$Ap&vWe|1)zsU7Du4lOV zJkR?>;8HG43>E|T0rvqv%k>4WKCVSvpYl9!9QbA6mw~mw#as&rU&eJh*Somh$u))R z0M~t7{CN*@JxbtSu7|jGaDB<+0$v4tH&->`Dy}lFd0cb3CUfoQ`WV;$=XqW|*CT{? za_!;T&QRrCw?4HVcL%V6^Fvu{@7d$ z|Em#v$+#H*Upoc-Nzi&Wf`9o0^#AA-@I`-H1b=pfezbl&BKYb9!t#mY|84~TLhy^p z=l3G`<=}_uhwF?aFBQR`%RT9i)1N3mQzQ776~PycGb8v;{~aGu`m-bWQQo8YmqzfN z{yX|%2s@@97j!?T|6x2A7Ea|Mhv`G{qs!rhp)lqj(*NvlCc$F(_Z-UND&+LX(T$e( zqY-?kKZWogj^I1}arj}V{P#xio&JRJTv+&LMDU&dIGiZ|>Wjlar$2G{(w`^8$b_9d z)%M&o4hr@6^)K{u^;-!4t`M$*PJasFZ;0TlZq*(O;V+EfJNx6%<|8)E~-Uao0>W~4!zhd~J@tpwE4>rYlRiuSh45>`$b?;cDTM#-2)^j6ybfQM2 zpF;TWjNm){DTM#72)@&wLiqA4gnv$d9DY4~6g_iQo%Q<#PB+cI8m`QT+@3ocM zh3NO30>0?W*A@Ob{de@E@|WK%{B!zW2>+82e5d~oKPsP3Mev>e7sB5gW`^)wu4483 za0K7!zoV~Y$CK#vMev>eOGh1^gF<~Kg75Ud5dL!!eDNV%haZ*yA4l+={ujdE7r_^O zmCNBPIm~~zZiIeL{|n)NzB$i>r{+&qDZ%Blu1~3*j$`;5+>+g#U#IzN_Ct_+O0R zyZSAJzbJz5xhqZ|9*^L=`YlBNGZB2@Ne+eZpE#8JfUDm^_@9s9yZSAJ|LF+6YrhWP$zD*u z#|{|~{B!NMAbx=92b}&m{HXjt9l>|{6NfLko$7DL<_(**qkPS()$^`xxMsz*`oFq< z-iNMVvtnNTwX5em6peb`sdQ@yViJ^z{pEQY92lAf^ zbSEdtJd;x+g^C#NAtsl?bU-hP7AJrRwNQ>ZRT+a8 zC!`QsAkad37KeKh+2_!mphN+#=uW_I;c5*r8m-uyR^O02a?)dj zlan5L-l#!NV(8%liMGGae=6wXbCOJManINU+s6mb1a%Q&6Q**R36MhUIz5c1R7l`C zlp<9hP>QYdAT?Uq8uEigH^q$PpNFG@M6%DriIGSiPK-eEa6)v9So07r@Tkr9NZDPn+3?v!URET{T&8HI}hKk{oBZr#+Q51_+P=F|k#cC;5QF8K(Dhr)P zoVvt}YZ0Z2DO_<{Mo=**AwqE|LD^%(9-$VXhDbWWM^Ix06~T#$O6F3a4F%d&9!^Y+ z<>ADXEDtB9NO?FRI!2Ot2q7Z*2!ZrMWO$$mVu+j*b552y6eIc_k0^=}{mwy*t+pJD zaHYvtcNL2gpVKl55MSvky;ljWeI58&?tcmR`@nTT{Clfz^I`38cvkUW`>^(BKuD~5 z)rYk&0YP2$q7Q3#0!43?pT25^4{Ixd_%c^r;=|gse}B~lKCG2LS#+lRuy)0HX1{&e zIl#x*(w{lk?1?Yy2eOt_wg;&Edd;nMp{2k!& zv&=i9WiJ8mC;kNRK42^GW58v=dx5+=;_U>!ievesz#iZ|z@5Myz!kvlz;l2dK+ZYU zxyxn!z^%YNz%9UAfbGCa;AY_QGdyn-@Fn0z;1j?NKz(2IZs0Ot8!!cI1-?4Vyem@H z1H6;?PGAdg1#ms^9AGmrLj~Od><2ah_W;)cZvi#}D}lEI^{s)mz?Xox0iOVV1lS7v zFmM_0R$vNv3-DDI9zF!@0e%p;6ZqS}6~HyXbAYRXnHipUGf)SZeE_%zcoXmz;Elja z;QN8cQK0t$UjnWIJ^{P|*a}<;Tn4-zm;$1kWv@>2yz78H!1n@o007i-9YEi-6|<7Xo?TOo#fF^#iMcdw}zSw*cP_tOULbsI&Ix0bc@M0ek{@ zIj|LY8E_e}3YY>`0$-&QxD?m}d?#=xa4v8K@DiZTeyRXwCYv*t%Jf3m9O8R`Y2YnD z)*{L(ffoTe{7q+Bm2u{u&O<7D0(d^K6-ZMqTLz@5mZg9+!LnEBOlV?dyi2G(fMq*@ zG>x(qKvci%93ZM)ruV;5*|L5hDp|G%h{~1e%qLW-jCTa}{&(4N&%7sI_7adPE_(t< z6_&LEsiHDuu03L9h*j@dmOY6a!taMe#++sE-fz9$#xI~U^h+oocz5rs!i!f%+1>l5 zO^PG4C(;D?jS~*z->rBE|Fg=Ud;8M{-TODCbNz*lH`(~8jq409rJpg!$FH^VD{cIb z;7#dw*m${(KWyXskf+k0vGIhB|Fw;~Jmz{AwH5HzgFm*Ty$m{+_h)?^}NU z!p4`{_%R!Q%JTD$OZ@!KwDEcye=zCO-)Q6iYWew`jo)eGe`@3A+XUqC4>tb4EkAGD z_=jx#;<8_zWBWu8r@s{2jCL5zEhPIuZRoY~xF8{AJ6} z2W?z-i0bbi8|Pb|CjMC)|G{Z~{7-Cro{j(5#-FhK{MyEoHeOQc=fBzVcZrSv!t!Gb z5KwNi@mp;A3znZ|i@ekYhPi*{U%Z~;T{jRd{3LEEJf~I`+Hhz(fx7hfnEPoH#_}45yU$^noZT#&8ge724MyN!Rs@^>DCrhZRb zey+6fDK`FL8`rmIRG%NS@qe`Ze8I-wYvbRx@o!sx{?^7TZTt-z|GecV#o(=9sg2LE z@%t=)SK0XGQ~ms#Y<#cf?{{tdnC0&o8~>n<|Io%?u>AeAjW4kAsTdLZ9kl#iZsQz& zW6FD@jeo-O*J0!TX8HS^jlaY4*KgzZSpI%$<3F+d{F{x}+xS@+Gx|Mi`B`A&7uxs- zZ2Xg!pO4x2xaH@djq6+s)z9~Be8}?muQr~r{GE*vrC*cfZ;_3^VEOs5jbCBooi_eC z%g;d@Pucii+W5Vezc+1s)beuy#+!a0vGF<^*LgPLx6#I5xBPV3_$nL!ij6;O`FYvK z&$jVj+4#pTKQl2J_4^mg4W zG+9iNvvhLqyD!l28JgxzTXLy{5IKgirK536$A-cfI&ZNNGJL)+7m1^F!n`zgwB6On z=VY2TPJrj1lNe@#lN9f4+19eTIdY6n7{{>D#<_^@C`X;~6J;Tq9wuN)+S2U4*iw`I zmP`;@8ibYvp~XRHQ4p$L7zDGS>IK2gY^b_AxETt~4{l}y!53|o1)-%uXh{%S9E27H zq3VS}FdM>c%^*+{d{>8)YV5~%mIk3EL1=LhS`>t;7Y4y>sCq$g zGaIU|4sM1*^Mji~peFdH&$1x2GzcvTLioolvx|aI^}-;S4OK4)Ze~N(*>4DiLh}R6 zAW##0PiR>XS{j6w1fj)2Xi*TVUKj+kq3Q*}&1|ST`~9L&Xnueh1ZskB8L=3?H?yJY?6;Fbq4@#kB6C=2@C~J!Ahaw9Ee%3Tg3#h1v?vHw zFARd&Q1yb~W;Rrv{d!XlN$v#1Haar> zPWoK5?{75Z3_U%2OQ+|_w#WHRDEph}oG?e{-)H&H+_pLUtU``2cXuve`zm?;(u^m&vmN5==TH6Ih9Gy=1Ors zXubap9dq7gwLKrR{FCN;22bLq)7h*_GiTTGy@k=F*S$jLdQv@Cn6Q=R#%7KT-yOQtN=*-bd&e;r?V}x@=tFGmIC(e=5 zc~mP(y)`MylHwdPorhL>Z*TvKL~5^>DE~=@Gou`hTdYi6`PM|@)SHo+OJ5ai6(h{Q4a_oimk@X@YZ@XNR6g zbxmGjITzL!Z^3YnPj3W$>qS497VvE=Uss~vCAt6Y@$pBvzQpw`*Pn5HpX+B_uXDY{ zHGO=1`~t2kxK?r9#!YmXPx9)~aW&$Htk;W5@S zy7jzx5IxTRnS*^7{q89n^e#SdR1$IwzMi{Dx>( zYIBolbHm^$JejcadKx`Y8#(|~*}g#8jwJ6hX8{kwmnj2%MWX4PZsBphZa}N6F-z;0 zJR{uKct&U0xifA}*>?M7GqmQZtU6DRv!ZqWa=rIvv-%T-cYANrFRT$>33b`aGLFl? zWY@|8`ec2>&+jKmFPUu9MYFbUtToB^tavu1cs*wnayGBZV(wA*sdG8=ne-~c=?iTb z+&N7whbET)#K;RdbcXuU4sw#hHpmCrn;?Ccf?~ z?zB1@s-Fh#h3i`SH08@)_a8z_b?M}iV2qe^e`56*0O5wA$_8P?yq|+l}PMWTN^yxoudse=XMS_-55>odM>rA z^oyz=^%*+5TY4uRG8LR#33Tn%)w9klALV;W?zw54pLuLr_B``&n&-~?)OqNf=e>es z=ro=wTr#I_z|~7B{f5r3pN{UBw5m`V{g~2Lvcy}j{#^A1udaV_v}wQbv^MNY zohjLt*tRguwuLy^#^Jd(!#L!B2S9xY{W|ARE*OFCWzbdoTn^oEoHkXXc3MR`-vTxL zOIDV%0{I-^+)c?MZwymA*y@+_g;KufM_#TiBxnoaxZ1{kwLjVl-?lP+VCuwmKMwkl z3fqsMXX;0c+{PX#nC|+9g5y8D9p2{iHa@PtC0p4f^h-XhV?P`4x4 zoceYceN+6nv%{zF@Jl(%mA-Hcy(s$JLHnHW%y*}do9jcdF-@Cyamhk;?&9Ud=UCnJ zd7L1xdt!JjP@Z9nE55>c#_{kJXUdv#!<+hq-Y&*$&iYmVqqLsnTE>9ej;k-}u{Mxs z{{Oh>*8ih&h^w<6>abWp$G7^ldhodL(9JjhioQbO)QJ^8PF+~{>7adwbl7j-;7pLt z_x#2*N79&ut}pm2eb1SD&m?a?yq`deZcEKkQfkL`Lv$#Y7}0fx`>wUN?^#y8krULBttH%-nghjWa%0 zAy3X@W~|0m)402~exPmA@udczba%g$`x>VoWekrm2lKP%{BjKaLi3A@`dLq$T?n`N zk1cNFqXzfVBDl$K=F;VR5vF{G--ut}fGHdE4(!q8oX6~sb@6hq_*Pc#vGo#4_v_-K z{u4=?H};r^y{7vq#tBnj^XU&?O^g|tkzPJjR>QdI^ZJnL^>)U|b4xGZvI_!?&$0-u)>fx1Yj~$s0aor?T&A-**}7ng=>>R`^B2zf3;x z+;?bWhmzi2r&~`G_uB}1c9Ykw?@89L^WoKe*QjB8{XjFe^c~pJ2Sd1%X4eh)`BB!F zuB~bGQXAOU;p^AAA$_rS-7z~~DB)X0fi5wpboQXpv+#4)R-A#(8hJUrG;?5IM@!Az z_x9t{EY0bm=VzGts*hI&txU44?^nnmbC&v?8GV^qg46rhLkOJKmthW+;k(V5DS{<^ znYgi(zAE{rzT9O)d@t2`vv`|>eQ~w@X6eY^Jc>_(d1}Ks{o9R>po1m;+_!W_UCqkc znX9jFD!EMc%=esXs^*mXVdlkEe6O_k@VTac=skREzxX%?&#iI1P{#-V%;&|;Z=JrS zG`D4rYUbOF;i}*8+@Wf==c5r!i?yGS`bJ~ZB=w)6lr}&QTn}@B=rCi=iZQlE{dGGIHyb=#feIAOnxvuAP%f@$U zX0v}Wr(I_j+C0>*UHKOJv^6HlZ#3PEDRF%fw(X(ZJch}`?>msoqgfdQa_P?Ab8^x5 z<&DfflT8zTU&r~&`Z_+cjQu2wOq(LCZ>7l&z-O9o3#0E9FZ%psPM2@@qW^p1s{j}#eI}XeU`?P;6CH2n;IS0aeF+Tq`Nt z4aok11m8`V_0SiJ+N9*=bm1Awd_?^=`anJB>n=J_@p2YF+8)$aCVIZXJ|D=7dhzo= z4?X(u@fCd6#H7hyGWN%5t4s9#6VmW^ns1%#F49+aec$S<9m6vTr~4nqx4^g3r0WIB zmi&SLEPkB+o~|$VoBGA)V`K_H$ME^+TiDk#cdH^E_H#_f&+&-y56AaG!WfZn*PPR6Qz4s zkf-4d9lRbn(k3?4(;s4Q&DJ;QdeGTD_;#fi`8F8i?hkWi^=0wIGl5>C=NccX4tU*t z=sRQS-rlbBjs2|o>L{|jK2DZef3mdA{HB6B?fQtZ8wE?J;Afgsa#?TJxyYIO8q0N` zvE1BmIJdvI;nx1DS$zAC@ssh0?}}^AH0@ZiakAk@x#ejyGQPE6^D5>xTSq>`w`*2= z1D*IT)&FNcWWSekqc^awBy?{cxHotMht3GyV{LBaI@;~*&^_$`kp@2hzZ#Ft16sTjW5&8XeW$z!e|l>4ehMwt6AIF6_{USD_ZQIOos)v}lK=D6=zRlPbBfSw z9y~RAUxwBUORuNv*5Y=CQi??DIow$v=+zo4!5(N^grU+%>&b7{TktL@`{?D`S) zA^2I}9ML$g_Kkh{@gjZu!6SZtt`C*&WZsq^7rUZcb8Bl?&`k85z zj?m|wo*epfLOlN!bb68>={G){BJw@_%Uqt-r@5==@P~7rH)D3Bzme`_7~jX{1>3TNR!t>aJ+6&?#hd?fT%WHpFPJEl}fa0`0)nny_iGlwKjY9b)&&$p47oq(0 zOy+XGe#3L~!#v~WE1AosN8aAdhww>QKJ}cp$KGG<>(6T+g4XJ~vA2PzB`$hdWejv? zHf2C2L76B+IvhVYQbxXgraoloAm7X-uOrYEJ>te8P8>&lfIbed|-S?Y-EEA>EKqUG0>h3o`#3(WaoPu(4B&9 zvg^`ZI`4qa1*$X3Wcn(2d|1yzS2PDH?;!b<&$MmvQ*{Ha?4vN>07M?eWItS$EBpUL zK1NTGkJ`WFmodu8VrD_`^Fx#jygd4}8j zFzK$nOJ~%Ue+g}sb%?SxO<`O;Jn0ov_J(A)pyIzjx${SF-{9A^;zyDnd+u$X|2e*< z7n=ROExJEMy&qZb(^LFFb0UY=pX2a1$UWh`%{}}ZH|smb}Z^&m-sF;N{tPF?~ud$q~DKKLgy*U9p=N(qW*^|_fhovHLKTg_C-Zawv5U%YG2H>vNi3M zbot`2muHpWpNi+Pd_mWhK99102LFaN!;o#(+jYC~%MJ34&lebr2Klb~iTiHHwp-ha zO=oO7$zU8kKXG3vw%sIrR^`XFZ{~S?(fVwi2rs%e`oF0YL+huM0sn&f!FZn7%XhWa7qcc<-k*`)VMl3?lI$qa zDc|J7aNU~y9nL;m?DzR5&rR$DR{isgU$0@`Vk5rA#^X1D^FU%^zhcETK5wEsjc0CP zJmDQOQ?_!;n`}hwUvu*E{eIqFGj0UyCTsC|YyE^hDGzC#k39huejlAm;q&aW>m3#T zdVoKFjH^TZUDsQA-Kh1w^8PP5S=({@06rVXi}v1p2ilyruvb2Lt?#A0x*C%|{vFfD zkbfM`$a2~R{w>odvX^YX^_hJK-Urzy=K9dL&o_Sly&Rwr(4n6k8^_*|t)V%y{M>h7 zKbw5HH*z^PGVAJZ|Z=t!_`4p_HQ!|@E*IdJ%pd%58(57Uv4?3h02kSU%sH>{XTwnKf_A;!bx_X z>(LKRq90^U(2h}YG%9ZLX=n^fT);j|`WS_!gN%cD^U7iH)qb^qS9q_T?vFh~KW7xpr+jror9gB|IrShTgF+63Gq$Rv#8Uswa>uYNK{!F-W zc^$sl=GE@EPtGgx`3#LqhF${RBYP8?G~Phh$Rw6NdrQ_t>*8waf=?~W=g^g)E~fOJ zXh@hb$>@t+dmF^wh}Q?kq2IQ3gWX`pp%m{v%%t2?A9&8}6~%U{nnJs!-Hgyqs@UtJ zeR3<=4{Xw(X3ya)_8O9wcmFKy#kU6Kr<wD8pJ$ zPW>k)Q^wr-EmXHbnW@ugxhvM@mLpoH2P5S^7{L$94L?)rC!2B)C-3q1&`VDZpT3?Z zT)l9AlB=&%siWJA^SU#_Yei!&eh#m@PcyvMhwDgwlyIFmUyiF2?8g1-$6Q>#oQq{w z`g>$kpP@}L4+-L5_U8)m{RK8#lkMZ4_ums)Azs4ujBHW|=u7D@j6K9ytiD0xZ27D@ zyHBLR*mQ@byW3>M0 zu`cM!pP>9MJc)8h4_#d462A5+O0NT%QU@CU)Q68#ZeGF5wjt_cH}!LbHZjazE6MeM z^0a+cXXrhQf91K)g`cJFcC$8T@>icpKl~q&YsFo;a{Wi;@!us=wIBMEfM>#{pP!oT z=SOTm@9OUAiTZiwvwE+=$*h+?p*PYO9&XKTH_<-f_bK!8uxx1uL+mY5UzJI23&y%M zZC~rhS>8(aDxPFL$mv0J9CCc^kLjz1?=H^QPIwBBC(Rpj@dG)A`YQP!3boJVMqAhT z64i#*ftv_jdQN()wS$1~h%ASp;p{KrM`g)eXf}KNvpUY&G-Hj?aqU+bp+D%g^CIc` zu=TBIjP4BSdkr*-m8D`^Zdo`AC#Ni#@Iw#$Cx{9sQ2$5!(TSeJWPEJ=RJ;%m*dMIJ>Mq9e*f6+n@8!JR8HX-2)*c-dKf%c z=fZmpKdo?wfCm~b=zm@HjepMA1@w3FRRnSCs|ez>En_D*d^ZNUxb;;O;yHQ0FF&Q{ z_$uJzd*XxpCCtg$*S9Drll)uUkCVZ05qf_DJx8OnAPx2!?6SJ3aSuKiGiM*5{>=PS zee;Q{#|$0bu`~SHIXP==YxYd;yqWi_23$QExh5}SD&jqkoEBvWkI*Ko>KQAk&(ZVQ z>s9Z4V3cQguV;WGnEWzZnlETQin6BA2eYPlmhUf0&<1<(r;bcxEsE!~f8Oko$3CAb z8p>yCd0v_;zxa8ZG0M6eJY(g{9P9T&?G)KC4w`oA=)T4r1>f$# z5z3gMZ0Zl*hStx&!gaoHAH0|>**n6$D)j!H*!eDeDR#d28jR7|gL{hWtm*H0zu3G> zfUjaDHpDUJ3mcfbjHi=aD^J(M#ml3)x}J~I@#J1x2e!TLZ@8^r?OFPvtG5eZ8on6K zw-0Ep$z1xxec5*tB;)bJnnRw(d_FsejLWO*Q9rL@{b%x%*|NlqA%99)G`5B3@bUdA zZ4X-F&wqEIy#HDIY_LYFH9F}&^a39nI;&?mzqfmkdeUCvV*Z`seKwEh{c-cLP#)q- z{jBI|>`ZC>mHro9_ScAjS|f7%xOKmjJz?6%ZNlseGyAx^F6uYWu*cinXMeZ$i@9|r zf3CzHPISxU$=ulF$vjti>Ymnl<(r_dGCsBZ`r$pjPv@3p9c9t8vYWBJ3hy6$%s$6H zPiJ?OKUzAVZ~~vYo^RznPK|4_0Spdn1YWJRnF%N8lf-j4P4U5G-E*=H4nS+p75D(J z()@t>;u+qL9t&*Zt_zQ=9~QrHWjpv8rwhK1r3yYYN01*?GEE>my{}++;9hQiw`b#Z z9&Lj20W1$C52<`HdE#sA`rPiDjepD9G47f2lEQwKVV)5WSsUQJ_-d>TkW@QM_MV_$ z)cS#`SJv4)*4dPgiL+-q#d{Xv_m_rfwF?Y;V-zlY|?H2DbZT$Fy_ zmEF4ln_oQJch);Yb|ZQ*J1f_QUd|-(ZL0>!bu#Z((SKn(9YD5Eb@~2z;{)rW{rmwm zXVw|N)BY~jd)PO=U-$d##_G`R4rnXh!<8D)T(U@eDe=o7Tz1nKy;uEdJx=4f`r9P! z)Ww+tzpV2>s^)s#O1oNZm}lek{II2cqt$OS*OafEeu(y8lNX0>im}SQi)Z$#>79M} zD6!A6&QoLjkHX`9yrMWWPLh`JiqQ(?Z}=9U_I<&k`4^!%2u;a6fy|FcN7OHiE^^fx zUL|V=Y6BTK3#u55g>6>YDszaw6JS*R#(~Z=0_7*V5K|j{4vigx%XX+aVdfIzu{2t$nv;wvKYM&f3d zRR^^F6Ziec+vm9J3pIvAE2q7xe|+)UnsWAns9yFKsh5U#_;NJuT<@Z6uQU3gdMRNK zdYf!;%9YYOlG<-L3{DC=F@sM0hV>=amJ7CR#-EAmb$IG|#`eD*o>fNE*CfbiM;-mP z-*=0zUf%x@j~-#kcmy32Zx>OI+7s|L>l7~~Q=BX0x9jMA*Utyfqd)(V=Uw^#LF;P? z<`=ZT%iv*@zGyjlhvT%p8q>!iORW`D8C_xzJo;7;Zz7zNp)(N;>ZOmqf%cNyFND`k zB4ft>Bx46U9`p;?l-e)LL0jD#PsY`MgvOA#K4CZ=(Y>9yx;MgmSK&G~;|Fz2JN{Oo zv7z~5pXN67NBU^=7G6Zh)m28iirp*URiLXjZpI;=t2zl??W*we`jB*$JOW+4H&<8N zlJVtW-TvMxoq0ii#{PhY`tOuy{k4?U;ApHWgcB;)QQHPrFjmuuX0JdWRYvKf{K3-4 zaNOvl${M4O1@S_<6pItl$5@<+XyoW)$UhXe4Nq~LiqpTtm45w&$E3sbm(mqCCY7J- zy;;l_X{hpP7@r^Og4jfyc~QP#1G0ae`g;`Fzd?WWB(e|3_eSE;^oJwq4@KezpSs&) z+H7bX`A^8m3+(Ett7$i9phuk8>f3yA@=Go~3HhB>Tz*}a#zo|Ve+K_(?ik)kxx-^I zeN;|7F5Qf`j2YLPb>yk5(eIq`+|WRF^dq@r@PCQyPG61OmdY-P?V}i{8s2jfa^ro8 zVtRMj(lGBH;!_^Me-)NfoLq{f8~pz^nUt>X;nOUxe=Onsa^AgJTues8=leduqHS{m z84V}THnxP5k@0oWCY^ow|CWrVowAG$H~i=IsNou)hLh2V&KCLakkKjH664qqVf#US zlWYy_*>8QSNZaaqpI@H9p5+y3%*2gdM|u^*b>@ALW*%A@s~@L0K=el8r>Sgm*!_O{lK%v^~wR6WgD z6)IolWbd11K15r_wjCR0?1`3BzN!-F3CiwJ+4SDHe_!wUmh=sy1A5NglUx)IpP?q7 zobjjde9Fq^=dy#r)BYEKPUp`#d%E!5kq7>}SE6%V`8Z1P!{^{&Be*%RN!NZEM`Kn2 z8YK~&D2*9j&58R$_C&*}`b4mI@y}@wt3NLe`ACAXbEfJ4Z!Myu!`In%i`?Y**IYQ( z7eZZ6G+%07;nUKdJMA@SV?AXQnx>CKZ%rQ;io5Ys{(jAONATyP_h*Ek32=&}YrdfI z)AZ@{s8{@)t=hAV-Z1`s>s(uY#TnBJ`c=DD`ut00)!rPv1oXoG3;8bQpg)z^#O1+t;};qW?5J zsg3OK@LoC4rL(?#UtJQrBRB)b;uzh<&Q`upHQe6cINjSi&FpEuy&qrcR`wRH>EXWF zH%2)x<2;sf&PQNv5x-{WK4YiuZ{k_;kk3E+P_6@MmkXDvTKQM~{ImYtaNp&#rE$++b=b&)3Jaq{8)#83G0 zadOo9T_?V9Xb-5q=BV7}oz?Pw%`eP*Qj`UM<(o!6mVe$YUL+d%b%5XU_loC{3gt1y z$l31E?@kP4>n$`tqo2^&L7U@!9_j;rvi0ZByL!yJx6h~6?ld1Yat2ppXes^6%3V`e zuVh}MGgK(^8kJM);gn&vSxaY4dA!T*e=U~h>8t6tmr&3CJ2#dNpQJ%&@Trog&a18L zwrlh!O}BLQOQOs3+85ELdYLGX&zx!=(@rf9`hd#rQh%?(Nta{h#PShc)&le79=0!N zUkB(%kDTe-wR+z`{eaoyiyrEogdxVJaxYPI{WAGEUmyMVo-lAq7^ zO=n0~$Tu~GJs+pT1GEVnetw2MSg36!zmQuN|19#*xi3Qu!sTymuDGGyEUp*$pM$E9M==(DOR$-He5-TT3p^4?fB>tQ&w|dd#&! z<)^dWja+G~IwRcqt<`p0IV(x>8KF(5iPOeRpQyG$y&Zc&b^ttjtR1P{%Px0z(4gMi zm#|&Lt*4^+5?PlO{WyzQylBM>iYV5vPI-@vc4&G5woU$mc_fyzow({6=&Kl!fwozypTT6NXEzOw*Nek8^ z59hxhVQlL~{@L&G?-4L2mbo=l8JRRPVIo;CXeLUGh zW*kt~#bq1N%(A~IB+Z@o^of&V`|JZQJCk29 zu=Wa9(!bz4A7EW<;2ChD-y>j+GFZ2E<#GL}#yjQhX@5Z4>y|C1`IM;-rJ4FDUqJgX z?}auT%i6Yj?lr~$BUhmKyAJ+bf0&v={lB^E$ALZ0o;qj89LsjaLA`ji5$ZeW!(!UW@NaVYh-)W?p5LYm+G+>?HCNyA+eyd{3+a{G zh|{TI#)6~tfzo&E{Q2%l?p*-ye*ShrZ`w_8VC~O4w@^TJnCd^0AQcGF4w(!Ds{u9#-~EZg=kw$BIUoREj|1qUq+AfRPIF%SoStFcI)0d@DgZjUG`EkaYeb(UfjBK<-!q2-CdyYL#M!(9S8SXPG-psb8 z@UtoHk#F+H#q7K!G;W021GI0}d9BfQp?WB#4d7GSno2x$o|(t;4y>#`~ zGnTDm-_$TTO^j*UJ2iN=8zZuPZpC<3ek#*zXWKCXsD5xGJY}ZdAG{M$S(5bq3)c47 zQ*eJCwu@)mgni%gR@EIgh3VI0Y!~I9uN(Mx5|)m&T{Lb5?`c4%3L7Y`a|tM`8Nbk- zi%S~(@YC9(f*(0ix_6X%sQ@0O-*WyM*`-tP+ZdjZ-)YFtg{NNV%QsGL2Pb81ojAE^ z{w=-7*Y#$-d%G>d&Fec_n>G+z-@duUYukKJ)5f;-K86r#e=GgbZEf3I()Q8TmW>(iT>c5>a_zAb%E%eD@_9GhPeY%aZQ8MMdq-uJI0KcY8}mB#AH1`V6j5Z*1B8E+dd|F|SBxF;rx7Z@cqe%Fw={ zttGv^o#f4w-IuB5(oc-sY+AoQ9r^++8O>j`)8npW@ZS1WtFEqZxS?@%!|D%49=xl4 zJCzWAHd=<}_Dy`Wwxgp^34(OKhHFZwN{zB?NjQ{9`u6tiO&ilKJGZw`cho1cx@&u@ zkyg0=jG8oVYiVxZw%)s{Hco9K`R>@pr*^lex3_JQGH%=v$=AxKqh%X{PwQj7Sth{m z@b1`gCtvHOBB+T?O&d4HKTjSl$g!B_+Y;S9BY~BIS;Rjv2G6^(?G>WUnU|NmgtN=d&?JezXo3}UK*}iR4)AlgsT$x&# z(Fhyw+}3p0Cgj`b*Vja)*uHJY=4M*a`o`8xP0bTw^NHkb_iowVxV^PybK}Y2OMB=k z!0p)HvaPYBrFmP+_K9+7+PG!n8ncZUv2VzssK%-G<=U`CXus1cu0m&$t z-@ApidRt4=dZ*O6nzXHD>y8!*v;KctN zrn_3w>v!lQ)@h%fcSjTbZ76?-=Fyf~+U|j#Vas(tHeWTd7~aE#u5ewjXYaZmxgCCy z!yWBA=>604(&-x`8?cF-ObwcX^FCmxG+{H#bS;cHI+A({w1IUXoUF zXL}ljH@&5i@10^e!how@2CbkI&&?-`;e~6KQ3&BSZfLo;!<*Ydq5Z+2wW%Y0M@!3Q zYNunzCdRfVDlw90b89==74DW{UR`=_#;$Pbpks}s$C2rX5Gm688gW=H%J1L&)Z#sX zk5jPe`^iPxx<#0%arSj=del^m*1{qTfNmF+mge5hr8u05Z_9%o&WlFh9h-Rj2_LcG%a*f zg>XGmN886*Jn`F{zO$)qBYjRK@-s$LRko*zd>JfZft3$TQ&UwR##3UBPX11YTuj{la&bVnBk5&C9bYx}nCrYT>g z;hMxN(>JAkc%6f{2EaP#@{yCg#G8TXx*Bv8~xxvs;{+-I9aX+_bUTTCqOf4e21=s9~6pw2TImix8&Z zBYezAS6v>KiTVL?DFf)H)i-!FrL=2GrfqC&*SNJUy?XU34AAUMNKGae8zeO=_3;xw z88(sBe65+pFy))>s=FMIK#nNGjA%+`*tZ4*t!m4r4)4y!ZJY1P>Fz{f`@LIQFhiNg zF+K%?+Sbw3xMf3gM|Gp65%Ncblr-Bn8tu01nxuF{cif_u$_18zyKSFm9{0s0YQ0Z(1pM;P;@LW9X_u#hYp9s)VF7 z1!P}%MFhS8p98!wQo4J=??S)F(Cq>h|5-z~4*V%}tHBq+`5=1;Dyl)nuL7TdeyX9H z0xJF_L-+RlDB1_zK5#4kdkx(#(5GYQwu0ij9u(hp@NwwZ7`oM<=-Uk47!Z$&xA|aF z{Evc<5#DR)UIj&ez|idj#djCD1^;IaUAKj2b{e`)unM|bPZlX#O1-9%9Q z(}r&KXN;}|+=PF#p=$(1x5&^<0mUy3eh2@thHi|7XUYxT{#r}_QPA5psCbjWO~jjM z=+dD0k2Q2pu`65j>p;=30soxv)rPJO6n(3q>t;8Q=yrhO+hypsf}-m*bZwyMn!!KA zztPYwvhd6TL$~SEMz;=NVliD1M6! z-2zbj<{P>xp!lW1Z{t7K(2cS1Ou3<(exuP%0mW~Up_>SbU)s>UeS^{Uf#1UasG;ix zMR(B9^(Af5E~F2N?@>e7 z3;Og8-8xWw*MN^gx7yIPS$L+^&@BL8g{}$|{Uq?4&`&gUX;6H}8oKUlqUe7?w>scl zQ1NDhl4rW1s{$2os-f$iYjiun|AK#)q1y_IuG7$!gQ{PxR~vmJD87pf-2zbb^9@}Z zRQl!MH}D^A=tfz1CS~Y0eaiT@TxIl&K=EB*=;njsTWjdXf~qg0LGd3Bex2~h(4CxP z^!!9O9q&Cs=iqHi&D3qZBsRp5)@MDUNn-q{xa0Qd;>`wiVb zumtyBL)Qf=oz38S{2w)Rn=CxD!O*pWRnVQRHarL_-hNQ=_8GdpUe*^ec=+_&%b)e#}HFT|@})21Bk8@gTKze^5Ke7nH4gl{!;ouKG98@fhN<+#Xj z;r!sP4em*x_>2WRh&RU2m4o6l+R&Z6!sL4sRJk5EbVota^%}bUpvtus6yHWr<+I4p zEdWJ7-_T75+o9{9Vf>GSUnacI(Dj0%KWOOof$u`U6%_wRLGj;Y=r(|&UvKEz!Jk3b z4Bn4_qoG@1;hFh{ZVo8Boeq8hx++6A#lka_3|%?+3+Q%CH~LO+74(}8-6l}!Z!mOg zz*nHJ27e89Uv6^m03U>|%g}8F6|d9K%>|{GH!rhxZV{;b)`DMxZl0mbfQmQQ&{ztPYwu<*=$LpKNXdI8r!S7qp?Sa@cVp&J7p zfZqWcG3onRQ2OpRbWedwe}|!a6cpd}p!B`Y(6w85W{sh127dwF!AnfuJ>Y%N?=p1y zSVMew8oEwUd^drs@!w$R)>(LFt)XiJUxscfC_Rh;?}fhH(2WAcH)ZG|P;`CMqUav{ zj~cpzpy*yTbbCOh-wm$9f2X0_Vd0rBL$?Wh1-kj5?BYPBmD^shjd*(u-7Zl4pEY#t zpvt!mT#0|Hp=+`5OtYa|B%~guLD83kE1(~3=te0VcgoQ9PPP7LCn)+ZQ1n|3T_-5| z&4z9@xF5O}Q2kG{p<4usZh@i8fbT&v9TeXw;N65zGISF`(WedF+n+GHKCl)4qlT^* z6x~5Xw+DO)e%;_w{C66CXX|;$Lm(W`g1~-O!bT`=LvLh>#g> z=uUpj==u#^AEag=ZQKT`l-JbZJn0%fZ{BA8qJH zf#RDobSEdA7$tw@L!;Nb5a!j3OoqD2JQ*C6+DW211Np01@9z&yP;bRieH8S;5LY`(rw+NJc3k=;{P7e*l8M-tmzUAOT{6`zQl!a%88@jj0N6`Z4c7o#D1&Z%hL)QtG;NEQL)`FsI13!y@ ztD$SL@JzFzn*;uY_O04*;q>6H3hoprJ}1*r#1J9VZ|L3zOK`tw==OpmG>-yBzX`mJ z@C}A;Jt+EhhAsn&t{R+=|4c(S-NG|fhVJ+{qvM;#=vL?s8oF0O@jGDX9tFj3J@^@= zW9Zgec&6RZRfD3d0;fVZ)zD3`@XRDbxBmj8+XLPL-7Z7-EU0w#(K+bWfwk~!1;w`! zyqWMthHe2U`uT=#I(QRwX;Ad#;HL>6ZRkdUqE8vRzVoAK9(4Ob(eD9oBz%{ldlvNa z7`jKn8=z|kMc)Qq4}GhlYXL>yZ0P2K8R({hqMry}hZo-&3Efyw^kWQN|JW$H7P?+g z^asFe2;Xn$_JN|`Yv{VbxzKF@MZXrjn(%f*w+0mbYC|_4{1kN4LD5eEuOfVsp_>Sb zK5gh0ec0$~L6zq`Lze+XH`mY||B%u3f^+acXy{%AMR&l^Z2-NTp!l^Lx-}M_S#9V} zo@aD#f}%Ta==wnMJ8I}ULGjxJ*5JRv(5<)d%sNBY2#Rh#D1NnuZk~l_GKQ`k{4I3D zLDBb*iJ~i^f7{T#2`c^LhHeiix^8eb{yPobQx=}tVdyr2qFV=6L$}t@wOe>*jiH+l z&LX_l(9Hw?0C&dFO$YbGXA0=>pJeFLpyV2B=thD64&9p{w0Y$wQ0sHepxz(#e!$xM zec(*u?KO0}K=FCj(Cq{zcNh3c{I?pqP7BX$HgxO26VNq-qF(@B0sVYKR||^oJVQ4Y zl%7+d=ue&-MKcKRH*{}F)4PB#!XBHW{>7e?ja!~Y~UF_+H8#?YD z@O)2}dvpgt(a#S!9aOw2pwgLS=q7@aCvE6Pff~LE z=%#{9)iP5I-6RXoOf+;m&$9Z|1!~-})zEDQmF}a4ZXNg@ByHeJU^6&{@J2(o2o(JS zLpKq83A!=h$M7#VbfZDhjWTro@3ZuegG@m(eTJ?V6x~5Xw-3~M+aB;VFalqK|J!Fq znj&Q0G<3&7#p^S4dq9Tp6_0`pohw>EhOQOWAVbTFa*!clMc=3>V#rqUEXa_kVgooH zYy=r9R7?lyx+_M3be$FZ&am`%fplG&XANC9sPuOlx=v7XZUX5lG8+utdJE62Gjvs; z=q7=5J(-DyE^XnNv4-yCNTYib6u;w!t`AhYM-AO(Q2aK4bSatjhHjmOXVx0J2=sa^ ziz1r*%$tVpI4FL7hHeZfx=|oaYbIsrhFf?hGIUc?)~>BT-Rk{Za3Ap|f;7FEw4oaV zihsGG>p#u-9|vg?Gku2cC@8vKL$?DIzehouvdkt!x8A}t>kM5xD0$mJnyO5zp=+`5 zOtYaIJ;M0)50BKOWZpJ($3dTeL)Qzw0KaZB)2%x=v8^n+@H1kfxzxEhsrw zgH*Xpo1tq3Mc-oRszB{SI#_D-`@ypa-)HFdf}-DJ=vqMWT?A4UG7Ajdd<)Oi8oHUF z=%#|0dS;5Dn`GgciH2_TFr(W5V&a+ghHf3Gbk`cXM)3cFUj`K4Y7o=R%rtb28e0x7bJwID@S(FXnp z*a)J!idvAYR7?T)42!l3e~cV_BkkQn+-?`$#W47`fp0_K0(w2lANmD`ZazqqOs%1V zC*#cF(I+TW-XCWF4wLx%2-_z{{C!m6xPKAc8xdCYqYzGi+k$)MS?0cnOe=iicym8V zT)BsT%-mHWeAHBP-x}PH(wXQF+xGO;pY+b?Y0^>rgAAhdcRxlad43b*`3339{l9{{ zGPqMqjsBY$lfo|u?sqU6xj!D<4Z*!OxW7)JD7`r~7XK%sjQ)Ee{1d_bUxQoyu=xEV zxX%vm{@}hd$b0rO{{-zH=FzF5dPFH=KfyL-#bD6lRoLH;X(`=5jSw*+@{kpJG`{$Y^!+rfQKaQ`s4 zmj?NN5!@dS@{Cji!QZBk{;1&I8^ZrB(Emq}=d2LED7Y^R?jHyFJ`>zG2l?&~?yexu z*5H0Vv=2`O{k#+8`@0bSY_NxkYN+^|AHshf!p{x*el&#tD9AfvmC@fE!ru(x6GQk% zL-^>xzjmR~e>LR)`ViiPx9qVygufZ`%h$C2Z+i$IeY?3o6T&xz@aDjOUY&(&+$8(k z7Q(Ly`q>}ce;)MnPH_Kw$nVGQvG_LxcP6+;hx}~0*TU}!^8YBfIe*8?Kc(Kn4+i;q zL->`!{cdn~1^F&mZS?1c_I2$Y=Ki|cfAUn@VD44HeZ0}!mxlaI3-LJ@(bMmcBKiAj z$ls?z_`ihw%nR--g1bJrJ462N4(`)}`wxR#<6G(T(cr!}g!g>G()(oy|3z@u1b2UM zZwvV!bHCA_72KBu_vVnF+k^Y9ApiZr{i)#oFTuSf$iFkVPX>8j3hq0C`*?8g4e|_M zW9ff9xJL!|rXWvwaQ{arpDDrpM?t=-;651SxjwingZq}?ULWLJ7TmuH^4t^L*9Z5; z;Jz@F@3YM&-(Lm!o(tjU1^0>I{!)jui- z#UY&YyuJI{;GPrQOM`oRknfLz`<0OXGoiis6Qxi2@4UvnStMjgL`anzZUX;d8mIYLilHc z`-PC+qTn7I++PfCt@B8~@%-Ty%9nM@?B8$cFA~n^g#z~lOs10IDdb7IUt_+Ibe}=} zPP$iPUBkp5p{FG>0@70~}dLHOi?_u@!C-Zwofqpr+D=&Oi0lygq?tdwWUs4eN zq5^wR+R5~*3-a@7fxI^t@EcvA@684BEGTfVEa1PmpnSBBk(6g8ww`o%6~sTkAiw(y z!fz>XYkeolZ-0S&iwo>Y>t#v$e=Fd3tRVj*3h2))Nbjo!;gtpM`33afDA51^D3JHb zg82Vb5dQ}S^fd+f+g}j>je_)kTcF?T3*6HS())Bl{HQMeU^DlPc%43Ox8rycpEkx{ zkY^)^ijxy`0!EaGl7CD?9S0v+s6Ui|PhS0Jj^Pl8T&N|N{bsr@@3@*ASzr=>DLfci z;1+*Qoj8mq$I58@xeWebnU%R9OQmQ~p_~Or_T+dNVLd0% z;K-2}&ml>S3x|cY=@6t`RP)b2y(1TDj0X#~xP?c16vi$d9$TCY=+2f^E1T;$P^NWN zo}Kv5vxCX;fxka0Cuv7X!^{RJ8Ot(7WRY}WLGhy+vgVBa#~%rMYqtE`r{Hz^l3C{u zPrtLNd*OaIFI>EW(CiT#xdaQ(eaM$2d4@x#?&B-lR^(zTFGW90&$7s#v61yrob2%~ zG>!GGoWPM6y0V_r7wVQaEp1p@5R!{$M{S|$rUXf{c$*ps$mu%J`>IexX9N868xb8l zlamqaZm3^Y*O>6iB@`e1l9wZ|!vP`jckSe21z(@%67VWoS=ZdSLI;NB`|F6BwmNSP zoQaelwwwdcmU6N{B3P{M;s~AOp?t|IIj~ue>gr^`SX)E$k~*D0lb;Bm;@jygtxH6z zVrsolv^lb5IV^2moD0Aj?xd!3#7b5@sxO6pzP=3bBqzk@{3c7@pVX3NqkM)sf_(X5 zdE%_RE0?w@2W>8HZRYToRh+G;lLk2EK*{9OiKQiMLga^93=4-tE-;xk2QuUW;G#P2 z5BtgH0%aBW=(HZ42b3krWz?UPk_&+0s@6u1sz`cWI>68CwvbRvtrtr41vx$nwkCYg zV4d)Wv2Z$JqH@c4IF>2L2pLtCOiwyyVz8=6<>CZPMm9?WNs!K;@2F7{y<<3EC~3{s zJmv={J2Ee2eG6R~cI(f7%aiTS6-{}y#CarLITpihq1xpyPC0dj;L(mq@w~JR(eB{ zSOHk2ER1fpkqe{m<@BnYn1zSAWOX#)be3#L!Xo`KQlXC4t!!;dFisfe5L8r7B3a+{ z@fkDXCqDBDewSyTF3Ub$ntiI|JD@zRA1oR;;>Jylj_Jrhq;v!1z!>2WgC zvrm_2pDxQjU7CHWtja#-o+>ZNdgh)gr)52JPnDHf&&1QztY`LN#^qVbvQL+1pDxQj zU7CHWtja#-o+>ZNdgh)gr)52JPnDHf&&1QztY`LN#${Q_vQL+1pDxQjU7CHWtja#- zo+>ZNdgh)gr)52JPnDHf&&1QztY`LN#-&-wvQL+1pDxQjU7CHWIp`!J&_PG)-c>GJH;W!a}ovrm;(*~i>dGJH;W!b07OS6x;r^>3VXYQ%;lB{R$sd8G@Gxt47;l~q~K+*9QxS4<+QA4?y0ge>zR0( zn)CFcPR)v%ec~&zApYgqr^~WWm6v88b5E63S4hRh5@jU6M{;I<=Aj3$C0x^|Gp}bo!F1mj&`gBh^FMDUcsu z9xq(K^dJBFE=%)%sZIZ}tQP6ra+K!B-+BBV^-snBt7RQZe^WgN-meBX%XM0!&aUCr z)wOBGDEn7eS9{g`+N?AC5XTokmLQ|GF!`uLhez##`0qjQ?l)ynrLHhI0GIg+zs@_r{CqQ^xaHJECKcVe#f|ezPHHUA@zptj^eH; z-Ia8hJCj}~uZwiY!bRauzKgh%ujc%2_FtBFa=%0$cTV*or}A)^I}mhszSo)VTMBto z++O0fvwgQO#OKvc`C(++f^5C;@cJ!6$C4;_E8PEdCv>8Dj#7V5674gMT|@}N6( zbzckV_H4mC(P_^+_g}pYJ$U^q-g_Ooe`o|{TCy>|596`Y3;K_6Z`RTG+r1aP(l_!i z(%k{*V4dzH8~4ZlevTQ);qSxscP{9DfU+0IJs9pM+|t4@5GGU}7gD9iEatg~Z5 zzn6vkBoA}HrQC-mn0(dvc{eg24l;MLtz32!$7`2eeaZOoin9Fh8DC`UUHjKWBm49^ zp*-|lg3RMvxeE*Z$d***gW3~!9C>@Mtk_8++j{h%xEX6xxgS6!tG`}@$B?Clt`G|TobO4we<`Q0_%_7?QZ z-pFe$Hg--I{!V$_O&dkrE$FNdeV5)HZ9Gc+*Mj~Qp&QZnDZN?MJ=k=WQ1L5*uC^e5 zm&$;9iX-$Sea2}_geK3XDOb^!aet5Q9#R?T-mzYuqi0)xo?4VLzm)m$O_{kz1$Rlb zT{fWnrq1LZJ>A;{v0xQb_`PY^UCTP+U7)AmHwZ< zCvP7O8SQSxR**iarPFZX81P*DPts}edahzGNM0-EfTF85TsS?r{oZ6gA57yGzkVW# z?rp<`2SDtvVh70U{EE#WufZ$U1#AOpdn+b_ikCKAI3~EugS!tQyd3-|`Sx2sThRq7 zp7sKR3m*mf=l1~9S65_kl!H~^Ip9$YO7y*k3ttWH1Hs)2Dt;qK-K`+5_I~@l$J+Z4 z|DD6L-0i{RuYx;;y!!htKZWl{pZe?Nr+4=g(Ubn};aTo^=8VRJ$#?q%dH2*1t}O=& z-xb^wc$WKs2>E-3UwHKHT?Ot=0+Zo?QsDlN0{ZI;+;k-X&tXEtw=%!yeBsi|W=vz+z@N<*R<5`wH(9`L3g-)|QnH^Y&5ytH`1Sdx z;{P>1Wd0izhriez&lhM?{NJh07ka~fQ}I*Wx4()!5~^UnP*>N$n+=YlH}GyE2#Yj-Q1W@}o`T&*mSKgS+jo{dW=B`N$gFmm=G~pRm`R28?z&+s^!V zp7m2R^-F&9`Tf3s+_lPBqm=P{)C9=m@}W7`3D ze0DIFM>fq{4ikQ))W)FVlb*vf<5vGXm*>*(oM9}~5#~t+`Fw8o1>MSHD#d+`vn_A_ z4m0lfVjPnln|~X*MW?W`vg)3p??mKY!GE@U*GzxWrcTm94^>^eZ|~MP{*Qv*G`}e0 zj_%11l-$ht^&H)~{Jiep2l*Z6caq+dKE4$GqY+>iPx!&+R_9`?-#DsRy?gxkGT=w9<9$H_09}H!VAp``L#vH)0Md zdb1P8%mw!umwq*QH{$L6PwZaUE!r*M7V1LpX|c_6C+cmwH}HeZVW2C$l{$8Ne{Y@Y zZ)*E%pNo83a;Wrz>|M7<9?tRZtE)cIduvQved5=*TH7ODUGQQq#vPy~gWmzlowyB; z#Q8J&S@UTJe0?jX5AHh+^oPdjuHp;2pCm7q9(h?voh41>LC?wi!`~>4HZm6(c!wu4 zbo{Z&5X-H*Stb8S?h!v+I@07HL7T@Mi0|2o@;DOn`1fHiZz(N(*~^e%r61ZkdftJ}tV`)7@hFpf2Xz>2+Vs?!~x?H_k`e3xnQ{5JfT z{QRDmu&3S|bNLakk|_0X?~TF6cMq(06TX?N8_H8*y&E<}`OQ|pLmG=Pm`(rc zkp9)0r$=vmc?cWb{jGfc{bWR3A8*aBA-qoAn>$Fosrk0WSKUzERUbT5{oftv<2vzV zGQC8-y>{W4o3EK&cCoL=XI9VP9@UFAZWyW^XxN;P1zu&ewOO6im`=Q$v|%h%Z&^5DxX(O$&$x@1(YUQ0LQN0>WB`Iem>+B%*`o?AUb zvTWP^{_btNZ|?T|DCdz+*7VFO8M&m>--S-QOxQMTXfk0J6Q;Y;rIW?9ZyL8OE>=#A zQI34aWbUKg?V{biF_sxVW$>9iB09V5$V7Pg z$ytBw`;`xpKh-hOEAEf5&t0Xei`G|qKk5yBFLu)2bn-mzQPzuxs4I_uH^1E99iD$D zbjSB{b@c>NP+ z6mj}WM{WOC?5pcc)&xt>*xpqp9J##io8j zTj5pq@Tuyh^r?Kke7I0Agcs^%8!{-35v2EB(u?b*@{qcw`o!K5(N1q)8mEs4ZBz*J zZ7$F0>vh-nt^M2KrMtap&o@2>FNIHdUSYTQPyBmyN`E}~7;4O)YY`-sa z&x`W+wqW(5%h%b@_8((igmU}pP8;Lj4?1A2XglX4dfN?g!(xFs2h9UuKl8@?5Gs zf0jId&bLoxr>icTdosFFn>AEFS^A^=yi}2wE_e;Jl{j6qp8>YgLA%j09~q*z9`bD` z&u2$(l}g76dA38Nx+uAZ8n@LvmoL}*kc)c8d#f@1Nn5GemD9D_cIm;FC3){E{Xm#& zf2RMtr0aDKHh)5G$7lQ)SQyV;kG-IBz~7HK@nFe zzwh&U#*qENSDAU1Jh{kKp%7{61uUlX|~%(=p_xEm_icIr|w(qgoa)inmpo_y3*g!ncR4v#MXK zX5EoO@o}Vg-m7nvp5rlOC-c5-tfOF0tS2sHJ@JBW&hIIIV~BK)><&7ot=_WR)_NX; z_iWzdAMw0P{rFV8JK@=$;Jpgo2ZrF?@%Onrl#HtGQT?2at-tVl=HYXs^S48#^Fl72 zQD0WKOXpO1eh{Ab48gNw z-|x?J7(DBT;JN!}zdz4^Es4r)t+z;@kByhU^!xLC6`q$5A!p70-=F7hcz$FEo*gg$ z{yhHzp4ty0TTvT!NNpH%4c6<6uF>s&#nR}b&ZTHK{W?AErrQ5&*zdEAc03N-M*Vyp ze%BJNzF`~f_BQBd(U%L-k|3e{Si;YZcIzf92ixKKLB_Mbs~(p3t~8^qCzW zz;7Xag^gXV)Oucr^#`+VE4ll5=3U;+y2Rq)?3o#4jMwpxIX#w)srL0q?~qFOFpr5! zmwY~~0}LD=Vk^H0@-pYzJu=L>#zr^a!B72EoDat5JvWkF$j%r2{AT#gtZ|$(tBmmz_ER)Z zq}TAzaT(B8be!9LmDjJW>x%E}z_%=<^So?v_buIwZ3nRlcpl8>`H2FaTM|64iPu_~ ztJu8E(t3h7Iy?56Sp@#{-%I7INi+^1m`SFXD z<@cbE%W^Bv+T*1CMSdQ3UVG1W)rTubu8@e8)99p=BSmUWRnbsKJkcO zU+euu)bj_VIaoa?eXStga$A?{{aDnaca4fC*;6CfTSl8dsaTt@b}aC*w)K|&Ua$Yi zmnCyCTL)qu!}<$*=4#O&YooKPPl%uDZwc?4#}ALr_TjiS*Dst8)l(L6{)*>^`TB1x zKmMKf?%TWHx&O9pCzsD>AKPggcWDoCO>Qry_OHtR^saMYJ3VgNgbyU&ZzE4z{`_n_ z_a!q*fz}G#TMgrB*Cj#c-b^mYLRUh|>>JxnvSksyS560MiS?=$N44LndEx4`gS@1=tp4{m%Ta`!ND_ z&hInD?zNY?jJ>@UKJRyg&mA&+Fy6|K__N=7BXzT=+#Me_xwRKISr&?`{yrMZ{tLf1 zcGfRCYr_7A8r%QyEy^HX(^I}ucjxr)-wm-Q89j)fba|ew?Iq{84d*|YT}${i>zPXb zU1qUVSp(IWRPA2x2cr`oq}|ef z{jLQ4Bn+(k}Zv7nJ2il%?9`^Thk~3;bRZr9BzFZVTy<2ID~4 z1@)Ks=&kAydeM5&FxKB1Cg#dhbWdO>qTK?j&a&^)rxEWRipwo&zayy|uZOy!J>jwL zN{~H%9)?Wf8@pBZuS2W8Fs}dG$tSXHym&CX|LB7^aSpoQpCDdIyL_Cm+!~j)2_ybY zYqjVOT7{*^??~`kPg=z6YpC~?M@S=?2krTpOdqa#l+;0- zN53a%urTUEVLZu{jH~@te(yE%)6e^T{{z}-?0xq|=!Jb)k}Z!1X=v?2aVhJfZAs}Q z%hO|zv*(`leVahrx}C8^33DIuR2Y3dW0-~gDlhf_|3B@}dMKtZjYEdCuaC#}wa~9y z{=|=+nP0s#_vfketG_l_ofF^R6`rhXeT%AX*aab&h}E}zN>g|_v!3^I-mVd7i@c{ z&$6KIRcb>zke zZ|a*6`MS}^9wm(}v`&_0ye&8Hn0scO8{OT>I4r3)bkz2M_E1>7Vu@QRC83tlRn=aMCQkDqCT_U*;{&n^&dsj`ARaK^9s@#Z}ZGP z^us!?*A?sFGX}Unr#_gz9$jZ;W{#St3wYO`gKm&P0`9!${99-gHu?9Vzro9hQ8 z(`(P!{O1s;^e<1OpG`Z+B6*Tym?IO0(T7Ld52MFe#^LnS@$(4!>0Z9eQCUjn0kV8< zXjyoHkoTTx_ktX~%Bm0B?qeU0_5=xK@0y49Vf)@q`FS_xr@SWhHR2GuMXqEYc_hJq z06lpxq%U2VlV<=uieVcELz1G3F@8xY|_&EQjMQH4f$8xx58Xk zw0>?vTCc@^@LDI^4?H#ZkzNM2JM5WR6zrb4tL%>R$;-VCL)_mrcWtP*_;KE%lHtf_ z`6?j~(tRvy*i$KMp|P$DZGF%*8-`Bv zvr3b3ipF3XbJjHG=>Jo8j@%+d1^$ z`vGXR9v16dHj@r}PI{p`wxqh}A=;(E%Dm&QQ09EEs4^c*z8P=k`UBE_P&Uq<+CKPU zH|0v-+aSD~**DO+d)Uif&o$N-#%|%^(l0!%KI2!HRG)ahfq5D>Apb+`OFYbe!Pvc} zp(Kw-FT51@5OK#d-W|Wl;>tf6S8l}}Uu|_;yw?rqJ7Dybl&MB}LSDTu>;)C}F5lkv zUZnAA=(BKZo+KR~x(NB=xloaIvUEkx9;DksoBb*2^};VsM|p|MsD$~d)|29N`=E>S zr1heBJ|}R3#I+FZcI&(AQ`X0vXJ;^%J(3aBy4VB1Vn6D*sONO@>irmN+S=bR|L#O# z{vAsgugC9Le7ntfy;tk!tkHTmW7b7UH)DxjpH>L3AYAS6INIF7){&Ug9GPzUc#iqZ z8MNhnr5~DhjJ1<^ZlpC2&7ouquYZ_tr&x2*8pd^uxxdfzwV=*i_&oFIYp}z?!sZr) z`Tb6;JHAfbI4tI)bl#g_^R&6>LV6s}o{Cs!sa3Q^v_XBe9jfDHw9$Hw;xWT4>iMkd z8J)CIDxX6>X%YW;ztok46`yxA&b-QO z^b%zDYjp4{)R%9^$+z^Tb%~_jl3|+5NbZtrs!u!yo$Mmn=9XTaYp1k!x*eK#iSyIa zkq^r*RWIcJzGPrc;qOaR4}X{E-cpSVM*6v|(pNbo*OI)h&Svb6p1-H}N+s<#`F0jw zZ>WC#j`a!gx|a4ot~aV@zJ109i2JbCHkPn%pnB-*6ZCns=Tc7xq4jMbdeFCj#mj*A zOmnRa^1mZXu6^jtnPIGZFu%mE)vp(8Hz%wyK8MbLC+jnMU!`v}t9MwO(s?C4imNu5 zvBwNOC)Xc*7;SaoJE3}O`>p>`eDb3)NN2%XaOoFw;iuis7T!&u)uJ@WbQJDvK;_ce^stUU9cv!+_rv%&&!e0d+a@5 zkR_%miFJ+tu(%9Ls!yD<-nZtb9oL;$@3$Ao+EG9s%aM|-51!^_y(Fo3)>XH#58{+; z_q)Yq*%IpUC&l+vZ5Lii+vSeJa$on=w^64CE4#AN&v*Y0UT-4fDdl(j&@%lBK0i$6mvQx>)G6k7$I!gBNA*MZ0KtGT$yZSLT%TRPz@@=VcRoR!EN6E|_nyXXKRZ;_<&6n)d_njqBO( z)eb#XobRE~4&4Rcys_O6^6BF=eccZ2&?(te0iU={iR-cE@gGgS^g;<;z-_hV}?)El2zYj#c>H@2_J!(0-(G-4mf@JXQ239)roz@Ha!tVc(S5 zxfSgHJG+c^fZ{T-uczB&%8j4qa3)!apQCf$Rqi~pBhkypn4>cm8~n__i=q?SSMSdr zW9=<9TVonOZ#ltPeMQG_yMOrLO|QpeBl=Nu!9vCxw0ciyY*@G;8(UHw;K=sg!BpLiD1@}6Uc%DO#-7uDC^ z{4}-S)8`ewD%S_4f9BsQ@~!&tp7M)KDb_W#@1!uzJo#92BJE2D%Wut#`DuS8=rFc* z>7RXAe!MXhpN4(;d{zd%#WMPJY4lSp{~bRIae3z;dub%D>WR-I^XyYCyPAK8E#pZpd=hs`LW39!+I%Y1f@1Tq3n z3)&Y|X!D0C`@@v^5p3LtVSDc)&+w899)1lu25Ucd?;pCZ>w5#)f{$OcJjPAycsa-& z+MLds1*dSH>A*7$lV?H=)@SVgxutcqCffMgCE9OxfnPTez19kR-xbyh{4;9<(LC06 z2)~l&E9Y0A_z};~f5Pxr-{alV$HKhs3El;s%{s4NyBWrLu@|t9i1^xj$6Cmuf_Adw z7dhQ2t+-Eqk9joXv!2ugV{T5drs?;%!F$r#tk-$}(fR)8#{Q{%|MP->lE?Y1HPY8i zX6Ur=pMX=YOd!>ndq~MQa%TJP^iAde+%n z+4G1`fk)rzUwk^|(Z?Fo03IF1&(kfMC+)W!74~cMzM&*yZ5b@(+|c@T$;G|w#f{cf zf4!G>x0m|JrSlv0P58KISoq$un4VbI3_R_-lX2a)U!8rqYExuW@M2HPTh}no_Tv-2 z84-@;TS`8c6^lnV8!jQTWb ze2V(Syh!zlv5d|JR((>OaZ$+|Tf$i9Sl&19#ml?ly!`UM61n}Hk9k7jJEUud^S!HN zQQe~+%a(MeugdlB;`spYm*gLhpN>%uDi7%Neq_lZ$ws)!Kb~8bl|()Ij-^C8BP`25 z-fu%WrFgfd`uDH0eEVzh+6ddjBMwxbP?6N@?61%5Yp|^wwgP zi~0ln4)HydZ=+R@=vSym+4CbS#D{*y*K6dM^h^owwt`JytNz^>=}^{h(Vyr{E??fN zXUD$DyD|KT-!r$AcVlro0LI_Cr(NW~Gt~PL)z3-Vy9FL2&5K#r)!Y<6Z+qn7WuFJq z!)9Lg^IUj&`#~1jO0M1|+OC@X_Yhk;F6ci@zT%O;!A?Z{)V*>QJt3^bGT3keF^r8)n?sa8b^N z%T!j0qzVZLAT)V4&mt1H3Zn;$V zH;yc>ua4pD@gB_{@3T4MlKqOinSXYagl{hNE;j#u3iec-V2{>`LlV@9t?-PG~&aqkQA5%+at3C~q-jPpQdSfKtUp{h5aVE^PIGT&(jXm*a zyyDM%QhKkEzGP7!to&&0^hoJ_Pxm3C&j&wM>QAy`v?r?Bk4D>0yXx!6>C_LN+2`Zyj>d=T1LD5^*cmon z!~T4~9J?P%q^+{|V>J3MtqYFyV|C6zWp9V}&#cpUAmsBx(c&llY8<#l_Dg>$8CbVF zahNdaw3qWoV;MDenDj$CV>&zT6A$9~xe96iV?6d#zUcRr#~1L^H!H`^I^WNYN?1Sq zNLWLRxikIBpx>}|+!pLk>uZ$zBjj85 z;PW&B*=b`mE-BVdlz!IYdYz1CK0>@wt*>$x!*S`Iw96)&|48|>Fa7iAvFKQXHtX@g zPxiM&b^*0-Fg>e1uFLVQO7LYp#P||F<^1=e&&2soeS?01 zF+tY-XR@P&dyDlO+3-IdT87<=ax%O>l=GpGzeV&1gO$tfJ96>-{Es-QU$P77$?P(* z&VyYh?`7&`ZPK@!)CIML+#fT;uTxVm;`;RwjS=OhPRHx$-tE)zXA{g|uhX?}u=kFA zP8Yup4~3_~c>iCiL%oD$*P1$V=ecXVtGdt!uQJAr>|^ug=WRl50b#7Q%;<+l_B{8* zSlZs*jpH7i3;NYYX*})gKJ9JRCVo<26S&pBNnhFWSxozZAMI8T{rjcT-B&|76suoH zt~b3){z2<7w$*Th(Uovlj_U9#cqZG%zLC++1oo#qNv9F@p7)eJ za#s(wf0T50!$&lqBt6E`(~eBg+>7||+7fg`{K4(&(-!|@CT|aY&E4aJ9Y}^)w*kQs1Sw=JYN4>>Ts?k`vN@oX^zrv$N$O+t3;)w&(BX zvO1QS&lI%%x>wi642gOk)?zi6QahPlqb-n4GTFXr+aDMp6>Gk1xWA%yclh?iSkrJJ=R2R;{ ztjnH*S!}=9?z4wpf7hBv(!M&*$WHcolhv(7~{zv>yk z4trOxWlyH~YHz0acsqSUcEdhi;!S$e@>YP83r4?QGhoJIOc zH{*ajx58ulk?mNYu6rjFZAW4qq?2+}+ogL~lrN<#o$AcO)YL0ytP5jomD|K2%B|xa zE4NPG8>#FLmsX$PF0zeB;m7!JM$$dIz+Ei-F=Wu$zO#{GKwRojHRm|IbAR#mlp*u9 z!QW-)=MBo!`9tODnB_@(rS<+ZDMvAxhYI)f#pF)ZAwSkBQjh#x3_W@~si6J)2Hy&@ z&L_9}TAnYB>y|%*OZEg^RA%D{*&1U3o5L{imTmT`&3rlGIWJan+W>PVU8N$vijQhT>L z4w=;dl?=DON&JpbFI4CFK6B&YVC()pfW|?ixu5pr+@Eu<5wY8oj_Q#5 zG4*Hc56~Q2ckPJ2*w|=7X6UgIW0b_Z>O}h#=D5C$sKdT}MK}KJ3FZ=e)wU+w8VC3} zjQmRYEoRPwpZaR*&@*cL)y^}9w)OlGgewoopPd&c^csIl8Q;??POkZVvGtbZeyX@U-jl4}?vZ^aZAxkMpITd5 zH`w|X<=F7Gphv#VmW=I*a!j$-tMQ`NQHLsvj<4sJ#qtD?-`f_@tKQ9aXs$oYkH>j; zn|dQ9cd)Nx&}iNHRAhU6Q@(8U3%PY2*6mWsbKP+Jxf5lYo*nkikmg5lA0bV>D_Nv> zq<`|rIjS?~D4+PpaVBpuU5!UpZwJJSSo~@?h6$7aQ0cq%hk5?76tIcgnH~dcWUfWJpJQPyAW|@eA#@_?qBw-aVYfJ&>gv z`#PeHWz5qjlfHiN%oGn0&lT*srh`e`Z2>eqo%^KghRt;;Hvr zI`2a7SFRks=9S)0=-h>9`yJ7+?Y*V^2GPJ9oH_De@!M8XcCEg@PnC>(_)PpK@7xdMU$G?b}y>xiNR}Hbg6%R@~FHBF#<7ZB19CFKmpO>z6gI zY_4B|t8w|VrfBi9d+J*jHyVWq+#jS{>sPF7N;kADZd%rsZf?8NRcrt)ZFg zh+DbTc|}vh@)eB`)i*Y+h>}s#_gpe1y|iiN%KE#S(rx#(TJm?)H|8;pDF%<)(zNX3 zUh)CVTURV^Ti&p|B~1=jE?&OuiuC6$Y`o&a#)U}L+ERaCQ)Al1o04u^yt1KwMWb%= z4H7pjU)DzURt`)!tD&6K1Cq|sWW^gSXIwmex8zSxYFgde)X;`h7dB3gYP@#mO1bGf zSJdCN6k+Py$VGbD^0xHKRjsYdS3sL5-jq0}vG4L_E%(K=E7O#EdgapkmKF-U4GGgr zxn6tes->}7(lg_yIKD62Dd`p1#PX%-JML?1%Gbw~^hyd)LM<+o#O~RS3?$d$I~O-t z26TD0B=;9w=LfacuUt7u(8?u?TU!TYxM6W?Go`y~aa&W%;+1U$f;TK*+PcCd%nM03 zt)_4#_{!+c<*Sx8rf>H3;D-98O}VfTw4!NQ(_PEk7Mt+dm?3oK;=7jBx2;;yR9D|} z*YXvM+nSfI9Ka%5TxrU4ackS+hIGR!D&A0(t;-ivyY5`RVrhNbK)R*%tFva2#>Vby zYaWnl+lp1oP&o#r%ew~zH!W*eabIg2rqF~b6eEz58i~HNer1~)iKd1XO>G1C#3n$l zmJ|uDZ)shYh_h(Bc7nl~~bmJ^-mxhQL2v&qx)dolAN*~zHY_D(VhCr8+4I#Cr?rWY?uWBf~(FGJo{ZE#-J zguE*2rRh~G>+fi3@^O|eA0!$bLyI*=3APl{%4nu5*8W?UP_!2L&Su$SZnCeZ0A)Nf)VixlHF*c6Btx$f?S{<4D#tjNJ0=LxM?L z{Yv_*X!^X@&J{`Hpz{b37O%9jT&22&U&5b8e(?&*H`!rYtU9kl6mKo+%2f>wJl?sg zg*Ke>Zd*O2jx(MKzrm#=DROfPFv58f>0E{ob$+$Xgb7FxnBTlDI`BG+5w8qq}P ziiWDFcsyB+H?D%_Y;bZ6wt`WGaVk1uPE`HPyw>~PJWPJdTeVUCo5N~R}5ux9Yk@S z`8_}$XZ7r8>dvMWDC&wd3aglwzLzdVz7;fX>B^5!OWR;0Q9*O6DwZ?GYxmMEHDTF) zsAuD~yb;U2UU6;d`q*C8X{e$XiHL%4y5VXBT7J)B`Ub?vaYd!g%W0Tm!^#b~3aD0* zL7K0&#Y;8nYgtvmC2zcO3iY9(zM;7(uSPN0r1z+!R8|)7j@dD!%?{1-rOQ!77cyuH z)ltTEM-zF&_*N|??0nJsbk60 zr4OyMVR6nVhDtsR8?CQPwvY@IbJZhX>kMe>;&E=>fB{WDZGEFg>ghqpH$|z38159O z|6QY>qOoFg2_3;;xy=p;>wM=^H*lC&lzYKgDr*aYSdCEAYFf8tcQvV`G-S@N!+8`` zqco3hn?_w%V_^GLu z6zPWgRzI4`WdT|5YHEwslr5uVZxC14{4y#=;b%QE_L|u%uV5&5C!IsOZTWIK2j+iK zU_`e%=Z2i@#TaGfNE((+@ryR}7DOyRDhZvA@8+@=7H3%lJjTS0aT}4C=_c(hJCzr` z=UQjIP#qd;U3Etbg>*U^ zAXw|lC3W<24B^^xcH^lC2z?A)v(1kZ(L-C))L7R_P06vfT<3+xIiV1Kx2Bc-WbS+& zy!y7BmFJDJZV6MZc{g9j{5<4BGX?eGH_xUI&sBd~(Ni z#SZXaqNt)B?2V$9HHHg!ari|a{yRbbWu7v0J3!tWWV#I9M38fuD&FRRhI^rZ3arH4 z3Mzgh_=nIhGIR?-#h-8JCV`?GYvGwOhOXSgGouaN))hwgDEKPzHyOGOp!lsfbnW0U z(q9cqo?7s~f%AfU5~zGmG+a0~xW@$dvv)_)g~Z z8&oSEB15+T z6y1D7x3$Ui#!8LXpAJ#!BfTBqPoV2EbX!5i>ojz8LD9_w_u@a@&{bJ@W~!kZ3m$`R zG~7GCir8eZ|J64cxH;B z+jWP@xfA?*=$Le7nJ2(CsvIPk|-4cNn@BP;`sH=kQ-( z=;m8^rqkyA{O23GS_{w2Gj!FU=&HaT=%yOFDHfiY zWawVyaEuR-{@#T~|18)IeYc_82`c@k4Bb}nZ{WKD6#up0UlZPL=+=OuUv22df@i^h z6e#)#e1`Co3p~1hQ1ovbx;-HGhE?nYMc)PPBz&u(>jXu=+0ab|MK=-rEBw=jZmfl8 z#u&QZ&l%kT@M-Aw8@hd<`0X`xTS4)A6r{_}Y%+8kEIhN`(5(j5p3DT*4<7uiE}*6# z1=W78yUoT6^TA&F(OScWQ$X=ggFk@(SVK1klpN)TZWQ5p=-AAOrxP215PG?Z-2)0^`_y%zTiF@+^wMa zHG=2BZ;_!}04m-2hVIo{jBXz&y1j;O4=B1_hAsn&U$up2W*WNb7M`gxbg$M1exT=P z==Ok~pP|cuo*%fKbY>d5=@y=;GIV=xHo9(5{B|0;r$F)BVdzGIZz12No1*9tSPP2( zTu|}m7`kdu@n#yjF`(#1S$HO8=!RQ(CNgyEK5cYsz-`1|ZRpxS@oP17b3yT&33lN> z-OyE8cxI}hJ2)?jIP0`x4Ji6n@Eqt{3|%uQzKw?NsT-r{qtJJOqTdXDkMKtg-6l}< z8w_0r6#X1f^wYub5?*EKrh=lMV(8M~6VR={!RXsT$+O1Ltp-KkX6VwO>T?QI{W^Jl z6m2EE-_X4YivGBv+XPCEb)fjJHFWJ3o>^n)#)6_7ZQ+?whAw5{nc@F8Z*K!$Wp(Cz zKRY{-9l#2TBPd8xuo5(t@F8&YDT$#i;%osjbd5 z80-Y9r`CgKl8#exuybf-uF=*r$2sG)2|*{IJ+&RrG?_tpfB$u_=VR~eL_6<$z562k zpS9M#*1Ffd?sc!vXFZ1D;k?m31$K~LmtlASRKAZJhHqYFbbQ|_co_dZ z!=TFX6nK}?GYlWM@cg5O;X|Ot4=*n@`scwt&>t}jp9PifLBp^fRC(rt?fB0!3@^6u z{0zfz9QaG<`meNhea!HN7eU2841S0B&l-jYLFMz5VR!)Ky^Y#-@Hq6l!9OQ_mtnXA z6#aI?a5H!s^pim+Z}36F#~Ow?Q1s=7;r&aDt_2j`R>N=$D7wvt;bO3#{1^iQ1o*R!&#u?!!WD@XF@;lA#0D%gNpYosB#`O44(oOugfr81&Xg3;5pDw02MC> zDqgu^7=Vg*@`Db;1K@G!I>B$_zt=E)$injv7>1icJ_udA3Kabc@LSL?GYnaFbm=ZO z4CjKJ)vFx`ijQ*e0q6t6@Z@5nA21Aefud^xzX{z|!*Gj*=QkUMOF;F@iw$qM+`AWe z_gGNr1mK^N&dElH;Q**|ziAjg52_r`f|&OFLBp`i!t)0V!@b}*%CQAhy6Zvd(OScB z4XAWi8HP(hrF%K}4g41vhO;a@f3aaW8T>kQ$F4B?m%u-P{zb#^2&i-q8-`sVXZdS8 z!B>g53;ZL(?>7v$gQ9OS4A+C=V-J3*zp*D%}#D&6hiALHL*7;drf{AR;&4freQszB*$4wSx@8-^!COLxF9 zJO(P=mq6+3i-zG53(p@m47)(->k3f(UJmYret}^)3lzT>8-^1>r8^e8=2!r^^h(B^I7vY#7c3rKdSi>7KmI z)|&t`-Wk77!=)87M|}i3=dd%{&B-_GblU10u&!hz%P-`V#DxqQ0Xo(3}=8< z=uZ`>^e2GZ2_I(|js-=ZGYpUX7o$4}w&MSkVb}$V?to#~4l4iM;9dCdG7NWEcz(NK zxEa(qWj)9@tZT=C;-ehAmw16;cyghoKVTRh2Aw>>ZP0ZYh6gM>|F~he7gYMMFR=BD z17HjEj~j-ap!nWv7(N94Gx;wDmHqV7uhO1_Zu}1$hR=ecJ7^fTfWL%~6<`nj+cLu&7K4sIa4Yn44Z~TW z`psxqN0R82L;apJZ&N2)qgGzTCcqjg2 z4a0H^&j*I#8?%F;f^@sU&qKc(ya@L$?_LI~9E-s%q*HGgUJfe11%~0ppyE#l#osva z50$TBSPqI_r`W;p^|~PVcj)@T{{SBal}|gk8M=oI!v{dc+ie)`00*Jl0uF#{z*At} z>6uHYTS&l!dRsPsdf*_^;6A!QX+Gdz=pb8}7*<=bLLMfd3cw^Osn8p9NLkgNET#p!n-D4EKWP z5^pgmdwlZ!L9mJN0mJYOQ1q`GhA)9C_Yv@O_#ZY54_bKsDZ}tl@Ym3-0Y!fuxDoml zhG8C5x=Reh1>kR?n+&R+#(^6MA8Q!qK+%^QhA-C|-Sgn>_#ZJ04}+q6)-ZhiV(SlH z1V4-a^M>JJ(9s!&Pl4(;_JX%T*KQa-VBz`QhT;97=r)7vq1#{>t_79e8pCiUD7p#Y zI{e2OhB*t*mm7v}Tx9Y&27U%Q-qjF>FM&$$MZ@q}@HNtVKyK=54d~xlBT&wgA!{|MFx4JT)qd%*C9BcReb2!4cg zo-z!(K;?J9Fzf_n*T#YU(3gX22oDUylNTEOfMNI|*bH4KcoVo4Tn#P*SAo;PCUD?= zL2x5@1iS%k2UmjILFKaryqBE+zKk)Er#J*a2)07nHB`UfPObP7x#6b z^2>wEpV4XE_40~_&QVHhs6@O<7d90!W79J~TL-tiHJC(pC=1`NZ^pyaV06#Xi& z0s57O;dP+$Utt(t4vKCTSdah3hT#kg&rdfD_nvF(nD>LCZvhuUztu3@0xI3jhT$?$ zbc?|c;9qYTUT)#}1%~0vlZ@_p@J#5A7>0*IrT461xE^%n0Ym&(8iv4&1I{=El6I@96Uc;~*6#YYn;TCWKbgMwouK?#0 zzRWPpgQ8zz7)}Qnn%9m6MIV6k2tRp_!*Bo;{hNm2^Wa?Qx@4~+f|kfB%pb;Gb96#X&7@F2*Lr?wMR z`VWD%gg;;y?gmA_%P?FIGPJ0z2Sq;@r0dVmG7K*UML)wZEC=bzYmc36^e=%mguiGQ zJ`alih+)_X&VYU^sPs30bcy-(hT&RJ^lJ>m4HJxR4JiFuWf-mmMR%QHc=9Z>>o0+H zdHEL&!y};R4jYD#g37lYRC*5?h7VYHez##b0Tf-%!t>>ZVPN6;lSC%na0hq{y7eGk zT7IozxXQxwD-FXXpwhb>b8;0va(X9gM z`tmCc!|NyFl@GzhSrqRC?<{ z@we76Tw~$+Rfgf4@3DUSS@0Js52*Ut4$_6>TMWZ3pwi!L7_I`9{t8g(FEb4D7M@>X z80Nr#hOYl~OZP>PE++rHVR#r+y3ZPhvq0@1O$3$xSdcCzpEC^0LD2_>VSX%fg}w?D z-{U~Kiu_o^upD&shT-dDEM4y3a(usR7`_CG?nT4!0Ep?RZTGkX6hB)*x`_N1!*DaG zcpD7EHK6vfJ4YM+Lm;L<|A1k*8x;L6!|=^Yqw5DH$76|Vw{mX{o^Wb>s z4}#L)U7+&W4l17(!*DC8cv}p^$)M=QS$KY|VVJYftcoemtlAS zRJxBFhTB2WZ2>W<`OSvm1`E>#HwYvp~^J2VK1zhLbHkKhZD@K+(NfPB}^M4a4wt zQ2F*7hDX3-&>a9VLHWlG!%k3idkw>fK-I?@@HluKsCrys80JCIFEI=kfU3tTP<%`P zY0~*|hT&LH^f|+DbJpnAf;8p)8pCiED7uw~;pN~&(wz<}-H9MgGS3IPh2c0*^kWUf zlVywtpnn~FKln08)2w|86JTBuzCsvJu|lE^PM4C_Ju z< zTfO^w&+qrV`+J_hXT1AAXguOCv&GW?sONXGcmI*+cb<12@%$|H?(yDzvv+^O^Vj0t z-}U@FswT1tsFAr}txZkxteEo8BpY-K>$cO)#=WoXf3vck@ z2Yomn*K+BP`?!U-d3pTOhhK{9mH$INyw}S^i~9Pp=Ig@ee!|>!KKw!-{-<~={t+L( z&CBmYKKx1_|Nc)}{1?3ZuJ_^7y}a)A?q)BaZ+Z8_ULN1~?tk&+`v>p7*tM?AkbdG}=RZuRbe#R!W3mDgMR^`8G9`0%GZzpr@r8J^$lR-^x@=XbJqKkwZ~ z?y>MQy!)tkf7F+!qQ%1R^YVXlwYk6U%X6L&@AKuk$h+rw_toCr>dUjyyMONazu&v3 zdH0jvy~&s7@4WkOJ%7LU?!}(J>DvPLyU+9UKJTvZ^f~YTN6$}h|AQ~zU$mP0Jnw$iyAS*Px2(7DRlfYM`tZkn`ToPZHMo%d8oS--m-+mrdw08+ z|Ha<@hL`_b?{4(^bh&rm>*c%HyPxs=t@7^EynBOpU*-Axig!Qg`Dyp=YrOlrcN>4N zdH(kK@XNgWhu+-`nQITX8U0Sr|4)7RKY9ND*}LEG`Tv!7zvlVN+-vb~^X2(>AAYIl z_o^>h_?JC@YrXp)JU?Ic?)OFfdiNiCe*U|6|E=fe=iWWZ^Yeea`#PV0<(DnLZ+iaT z=iM)Rem>yce?HdA|GY1MwGY41hi~-!-s#=Xc>dbFdwj&Ncdz#R{=mC`;Q9Tjcb9v9 zU-a%q&+o6i8+CT|vF3K;|6b4k?|k_G@cfv@!>c4 z@LPO&?)L7#^yO*y?orb(&iLJOqw!nj!?*hIhdn<(^zPq!eqQkIE4=&H-u)+@zsfIKdarnX7I^o+c>AZ1 zXX-cIhp+PC&7R*s_HM0PNuR#&-M{kk`-yjl-u+we{v*%tc;6rXFJHdvR$G4m?D_qW z53lv^b>4lq=YOwve@bo|$;&?ePdxpD+bq3F-reopxBB>pz56!b{$BNNtsAO5|JS>< zUMKgt_gZ>)`0_6B?jQT|-R#|Gdv}|6-|Wl#w0A%0`T4bXS9tdYzCY1Ar}A6w-QV>5 zw0ifWo}Y8Pefy2)XO4HD^y%&L?N{qsO0UzqAM)jY+`E76)BjuV{>#&#&+rby9ai4= z`|yAA;ir85(fq5N_QZQ0IvehOPkML1cmFAqSA|Ev4~}y4zsMOZFLDo%e~LW#81d8Y zKgB+$-G5LN{&;0!_?OYIH2uFJi?sVC_)WXDE|YeTE{gx%Y+?AOBKM=%-*o&R7V&$3 z5&hST=zm<~{&`XSzbY#47mLClE#m)o%wN;|e6%S4_ZQ_iwMc&7DoXFwqV&E~B%i-8 ziXRr`x2{Ou=N08YwkUoTnv&*U>v(DRq9T1cqbR=zio(BA zdqoldbBg%?<05(evM9ZUw8wOLMi=G(&qd`~T@>!uJ7az}6zTUTirnun;%8csJWmwy ze|J%RT~$Q?Ka2Rer6~ScMdiDxNMCO)O7F^|{4On$*UX~u+luN_i)?9m-c%I-(W3Hy zxrpCsMe&am(N8O?k3TF*|KcKf{96(IlA`>6Rg~X{irkZn(!ZvtypI*h3_Pp6Sw4G@P$Nhl{SlhZvvmaW}Y<6qBj^6%nv z2}_!(;X-}f=w`*jn^~HQ6NzpNNnQJw&{$IL@)zz%YPxMx66CLd@R!RJ1X--r+?Q8O zUg&3Z1=pe_5iGF8Z8`~wvG6WP?5dE@ay?8E+0u`%-f7a+f=Q?)JzS{8_19lC>25S` zbr}-7ba=YTKfV5rO>3KOzhkp*7>%_@%873dNO&-Wl)E{ebDImi<_+<4C5#A_qp8<0mnWs$c)=Ab zNxn`Dsmpm{u8S`>iUVAX^tDGR%argD-Rah3w|XWSifOLk`gGHp&FeS$>$Wxp`KI@8 z+Wfgfs?-HK{@#?B2Uqe^7tX{K@%2ZskK)94Q@X1cxg4n=bkl0C65=M7+nR4H3Q6Lb z0ia%PPLZTFh6|h0V)ypmHMg`T`E*kLR+EJ`%-#MN^GJK)_P!>TC1NiX${IA?gl=yw z400kI5)xhW6sLlRRN$stH*?JxTyFlH!&Ey}aDktb=BB2#Yd%-PKk{sn{>mP#UDu>5 zZVQ=9T?*H92W`HIPO*?e*VQ=tvVnjmS2G*#RBGPE1y|;ZI2Bh;uk1Qw0&i|krJ1fL z`r0HjwB^$n7jDOjWpdk^c|-hM>nkQyp2X+I9plwqvgO)Dx`6KDuO#&XPBz_=1SmBL zI~`YIpo++$kWM*So|b=MsKu~wQb+>Rd2@YM5IC-I7_!Yp7CPG&>B<_+<4A}=OX+NSlXZYoJy!Pc6F4dzNes(dwf3Z`s=RFtb| zlZ31i+|9KnM|V3@N=1eZ5(}knc1ranX$wG`{w(?G_Qxc5rBSR38hMm3FOq+J3E9v* z3WL*)#i~zYq6uhD#I z#Vk3b`U186#H`$M2bYu=a^-FUF7k7hLY=*hrfIN+aa_2&U%Y8EcWrLcRpQ)pmJsP4 zKG&6{tDFujO(RCr?beyDVggF{hfSYef9ox4Y2;kSy`GB(Q~4+jQ_c}dO#96g6-PJK z9~xG4m7s2oTYr0V32jO)pNs3D_?opiz>Nmd7qG=4Dv58Tw1iu3_M&Op#Fg%eTt(&E z>N`-SCF{D2bTSw_oHmMh|H6gQ(}MVEe*9E-Y5bTx)y<1Nlc&15v1jsBHz)Q?p6X`D zp2<^PUF?~9niYE{4+~;`Ua^(iy(Qbn-hB`Pj$0n&*Z7D zF7`}4@lu^nGk#b&KlX~B=EqNUm&T9DQ{BASGkL0;8+#^Cb#r3RgL3c$y43z*fV*mtBXBTPrP&)r5QaeoD)4Q zh@a}_$B)TV-KDW-@>Dl3_Dr7Ycn34eCVr}$6F(+Tb+cp7gL3r$y43z*fV*mtBXBTPqSjr*}?kF zw{574m|Yk@Er_4$=Esl8Q{APpXYy1xFZN8H>gL9t$y42&*fV*mn;m;5Pjz*%XX<+}n;$Mof*t19`?r`64$OPicqRW)x`9RU_xH*1#jo4auC0;66vT79#va=iccXtDe6 z|NU2QN6V#J^JOVs?~DaO6@UCD@%MmxD*fL9BJ0O{f9@B#S;E!X$ao#OscEy;7vo=3 z(~1vXw<31N4^e!j$Fh5HjJ59z6%s9M8!!uS@udtOWUdG+pF zdD&-!?w+aj-LSel%BzJViTzXm*nNk64#y|;tx@;A+DW|rt8afr?&?5Cn^r`$Ga_2P zfx9SEzVW_PST$k#wp+mW{d$S-@;irX@c1sJ`{vs=zWG-aM%r`x&#~{Yv6afPZu?$a zW{O@fgkR$K=sUc8*G%7WOZ%teQeCOf)|S8l%hvJCpcQA zr*AldIk1Os$cdj`{~ftLhg6=)kanBfiSL?%kSF5b;V7BQW6!%m%i)_ar+p<_MAI_dX(9t?&U~hKH zz$2}b-8V|xTh9Y;9O$`3-+{bwfX36-!?*5w_kR|@NKfD6o_b&Ko3Bb27yXgb>6-{weDT@dIJv7H zJ>!TWGXLTeYI91nGSj%QpYN6L=UH`}yL-%o`d(#c_PhZX{$uK@btQDj>k_pqOYi8Y zFFq0Rq_|5}&y=MHo#@dwQK|1J&kvAiAK#5r8||H@@0;H+a2zay=ZLp<>9@Y;$oJv& zJ;y64$1L$mK8wrverX5a>dW$dHo}+kjlQLPfA2N&S;sfj_06=a_+FX|EB3FzpS)gI zJifzr0{z}k8S2#r;kS=6y+Zh_g#QaDy{DZGp1>YO-zAL7fvKJ#ofD7l+kcYvJ;)l_ zViR3h?!KUHA9Xh)!#A}XS9a-piuPU4tI(UQ)0Z-Ee+?&$VkHSmYS-u~@cFRsi{XjqN-0HHn ze$r5z=J^GEGt$}8dFUJUw3aq;3OT9{BL7?k^@yM1s4O+72W_gebiUFr$u{@avY+SB zo8#Dn8uUqdj^?|2C&&}MUuZN--kD~EG$OvxivzB|^X1G@hD;^)2|m;o)bA<3WqnfiY8Cj8rpXYG1QY;*c)qm}yZFF3lQe&LnXeD4sule@eA>;30ZX4>9s zv@3nzx1TmD8zJ|)D}%Om4XV2_ufdD;!Px2#`F!?Zdt6@G$>R0N{_m?jPU(`(DYhN^ zvn%6v-$A^0Zue8V=(qU}=KW{xqi?`2ty?V~E@8|-9*m)eu?JJS&UgHoy*sM@%GqF( z$2o+h+qv3@bWUxBH>szX-`xEG=Z1EV{a#Lo^Iydg{D^-= z{0!fyyfRbYeL8=9w{qRDMt$d8>{2)H=gf=JkbP0#QA6KxrM|mM`(%va_z_KRN^n-L zA{bA-E3VcCM{dz0vJNgLwqhqohpvXW0`r|V-R(^X|{y~xOYi#pN`>{JtZ zNA|?o5@;iv>c$MRC#30~u?sGZOy)J&5+_ry%O4>f(Kx*YrMF9On7I7P26R{MN`1R? zbfU+UDN56&Px(60NtIXM0G=@~7<4v=xY%pe=}xtC*`;*8mymByw*HCC2U~t7y>VmN zxw4^*E9dgPXX*JbzvlXQjiFS=06QYu=viYf#ynFy~lbUxDq@UoCPwT zuieV|7i3vGjz%#V9LU*wZ+h>Oqm8vIK#t7R@=bQlA8RLrqQ4kVp?{yTmhpj$ulEQ! zqFJl={qU-N7Uo2!_xu$92$ezqUb`0@$GtS|hBxd2RSvy>hYhM-1@f=itGT6+yT&zVtbK#Z6e3%_uUb1DfA4SH+ed@-rv=ayFi?KBJ$QROW}0x^9|}jzuo+$ z&w)NhnA|Hh(dO67pWF+ai@Okg`17Qr-=}f&FaD_R<)^sm`2SJle!YlZ$FbA&KQ3~=T121hQuvKPc8TJ1Rkkp~UX4DEm>jqA z-nVd&$B{;xZ9WBkPp-)y#Tb&j3mkGHX3M-;3w3U$=wM5-IO79S9{#im45W^e#Oc^} zi#|SFuvZfoNFR-gLz0rqS9xq&&1dBN5gqfU81!&ZOUE(;_H+ zVetE|$FVLq|5DcKs;c~Y-1<$)VjSreugA$$=>6fKia&nX=|FaExZm2hEM%7A@Qd6s z5&FZvy5GB9kGs6r=#`$5eBcz{PQl(6ug5htHFL~_Zx<7iw;J=^?ioX z|DN5*N&NMEvF~%M*UvSt;`Gk)<&4VH2w&+R{Y1g9sfhzys}rxLro{~_8WQ(JpWZU> zwS@GFc}l3={Uz#a_?hvp;Yse?hcm$pP;q77XW{-0^;M7Y)%{vB{Mx~* z!Qc0H^7bF?i^eCX4vl_+s@bKnf&SnuUMJhvdj3GqHyJx$nCU+LP3DuejNvvhR?>3= z&$s*MI-b`t*1(@K=!)YuWV~xT*qfa?yW;~b*Yr0BZd}%XyX6y%_v?~(F|N6b@4uG? zPbz*CUP-v-N++^G8+~wzbc5N=i(0Os?7NRMc0E2n(|vuGv0Ie>**^Wxlm6#Rq)+%e zre9x}exuTd$I3~pIh-DB{3-JllU>keatqq%hIcK^1Z}Uas~`MKMRxE6c;#DV$j7ZS z49?T|GL^>aGRBjh=Sp~5G$q*h%zq+X&Arm;{%6u)2r{8`9R{--KV-7#W$mXISu?1b zfcm+=e#%yP_tNglalt(1TC*jSGGx%aq~#htm-FoE7P^YnliEaoT4kf@1G31WKbf|r z-HXbDjoT_&bHs0m9+7VIm7a&ba+h8(i?Q^{D+Z53&-Y&#>z3_5+EhPSAF%F*glwW7#h}p}eDfrEgWpT3C&&h0|6~Y&%Zg7xX51 z_mf^{QQjRN9Xao9@*&NDJj56JUs`vlx7LqYy=mRst-&^DUN{cFY8wskr1{v< z>x03gwD-m`Uz}C2X z$)l6-o~u%R$S9JrlUa7l6R&hs#PuclR3V>8UL)1fp=(B#(|qLQ^qw>|$Ljg8_^8}3 zdG%x07>Evvms}>Xm(1m6H!p9wrsu<~Ekk>hvh+7%XYXM@g?LeV74R6@*yE!n&wdr! zR^s*EQ{R2G(PZRkkzob0iD|Rv&X$~yXV0JAA$p$sp+9<=SfNZ$9X03Cb~Qh z5l8asy*bR$0lKuKZcMUBq5f-#YfM)cztr_M5h8 zO(r{K_VMiG*(X@9e~oqU*NOX`vx7n5&eMaz*TBz=XRR7sdOB+`;JWcz=N|K%d(PAk z-u8p~g^y*Xp80ep*q9rC-?^_*u63-rX&=YMuM7sapsz=@XF~j-A=B3Tc`q~CBlR*b z4%<^0R@_dTuN_$j{(A-;@M*uz+V(G|*8g02o==(j(TkvsHEP*CWU(aE^0VWF%}|)+ zLOoH>6a>ljjqlk z8v4*o#3Oa7^k!C4R@Q)3o{{>az8eesBksS6`y=&BPWMSqdg#hWx&=Bzxn8FY?mRsh z{3?0vs6f8xE92yneNSJL<>&elbgc4@hVENO1@rr93*uXHsu{fJ=apLD`Wo%E$WM7+ z1urMEWA?Ltw)6N-^7~3cr#k6x#Sgk1`rN5C8~@xtCm5t1T0J2rx%=nPzpy*JlXBN&f-_aWt4E<{3@<%dqGD8-_mjA+{^5fQ;dO`UqSO3@EMfs7_ zap*=Y|Fl&3S(hJ44?Auy)WaVlE9qal9kAx%+M%;EU#WL>T!y|lTd6vcjcLUO^L)hw zzr`4YANcm5@wJ`s0r|K$qgB$lAII8}QHmCZNpBumPT(z2K>_s(wiRxk+JPB!o z-N(?2SEM@{qg;aR#y`lg_KYnM-x{|R+rp09Mz)2U#GBGtogFcq*3XWd&T7(e``r;w zUqhzwRR-U~@z#3#$Z6(Dll9Bi~6?{MjKd~W1)ShIBc+RHeo2R(7=pesYh-2Bjn?$B7v1Wc*yHbJZrP?a?UT3vO{ex_ly>3VbJPo+oFzD(&H8zh z`tkZf=DWMrf%+Ts@nDbz-$D9`!G~MV8tBNLHL$n!%z;O;XAXR~b^L(FQyMd#SPq>V zSKawUd+YLn{*ReEw~W2%)@!tnxbyhOY@hvJ^_|-9$e!KB`ssw$(_4Pl*dD)=M{$9wbO<7 zYA#2*3V$1vj5FhdwocM7YaoqvO2g9bCw$L;D|?~mmc;hSucx`teU$SMdq}5RJTw)C z#s1f){NX1@UV9u*>~~!obpM3<@5FuljQS^#`&awvPh9^>+In{OoBpMrwTV;rP@mXA z*#hbJQN}Bs@Od0R)!At6?~+I4-j}_`)zfJ0p^FARQXl<;Q@yCiC#Fw6Z6}+hO@VD1Kl6&yP z8PwGnt4oFJ*~xrN>AL(I`ej#_TMAPRH`RE;Dv%se0yHAO-c@ zpRQ;4Rz3gMR6X}*u}_p+a^41y?dX!8pQc^5XFpzW7V9{+Xy(VIccWj^xh`i{wMTbo z)DXLR>X6Q4y@zuUS!X|puro-aJJnk8!pYkwu>N^AXLlGEjXHm}t=*~q+22NX>Vx#RU+bS2 zAunvgQQA*G?c~Hogw>)i=h5e!N4r0V`Gf2){<#|T41fB*lKp4%wf7qDhrC>~WhO7& zM~QO<>sbvwUao}ctX4IC)%7M<_4kxv7kzVE^Cw+eyRchruVS~_N#kwkgDTqNS?V9o z-~Y;4RtM>L*-s_$zKs5{X4dvf6c63#$yV%t1=&khO0#!Urmc7^(Dz~1)%aY@6~Xpz zADtRlJ&RvxtLvkB-ulFL>a-6($-}MHl{XF^MP^s@1Z}TO<@^~o_U*=&Zk^F^Yj?^! zd)oe2;r;C~^@9hqi~d3S66N1<{k_*vUbn6+p5yqm4ac{S8}Tkw`Gnh~U-07mh#RFD zrKff3)|FO2(ClLMopQ;ZGOh{AUfbhz>En!LR&e&H!ksTsTIn;o*qhnyt(?=%PNg5` zEEx5044J+{`Cg?>?P+ad4A8_m$r}fbQ8$wFtCaI!M%7b(TeEuWuGAUU)^c=p9J)Fl zU1d#?wl<=!Ms1t4j{7z|Tsv?6lC`6P_Pct5$%lNR_M2|6*)J#URcnp!roB!hj+42! zA%*SK#*8N0tC8(8WLuudHhUW7{{zZ@4rfi@MO&qv_D-X%s_&vt(iutDR%xRr&Y`VR zAFi$9@7gN@xT2F?ym$a&73)F@vi`vjJ+LAlZby=znp- z`|VLf+tRePskTJguTFzb>5LlMmLeJTs?OoX@kN|s{?&&1NLS(f4bz6MrJg^*xzN*+ zdTvb4x%ZEn`u}ko()qwj+7IWSnn!9s^o_Jr$xdyN^Ij%@nom4&!zHdC61FfX$lM5kDb-t=4{iIw4Kx$?bLW+ zwHy3hyHWqr;q?H&QhaBde7k|}C^W9! zJZ|zyx0}{g>2`xmpnn_spo(_m`UUziWaDH&SnsqF?Ph+e-O#2@?pvQYhK&25?@@Z% zD^lB`Jg)zt4ZTVq^!6O5^Rff9msI~ly%hI9*_%>rhBQ<0yNmmuNIp7y-vbYhf8vyq z)gjVVIDe@&L*3HvSlt$nVg6s94a+9)M!5G%4xP`~lk;?v5qnkboMU$9^>>Zq{Q4B0 z2~&T#oAa94l>34DLA^T>$L(qutm3S%&fKXzz5pgZS!=*F(8X9pX( z!MTF!GSRc-d>wOh&Qfw#dCAYCbIP5ZhtxUc{qR_+u{Ytvg(>a*&};nMN4n{} zIQQx1bN8n5)4W(~K$@GY{70dQ&SdMk1HYSsvYk5TE#2&ZzEfrKd$#@T!|1&P?#gof zErP$adxm${Jfk`P`2&9v#b-YxlM7b#b!cvEvJ0y9eB(f-67({v;aTqwI2y*M<&#(^ z7Cp}uQ>Y(wNNb11>vGe+me?KD)ho0Y(e{FSIP=&EA89+4-IdV0vz;T!U;QffQfJ7A z)D2;hzr9-_ooY&Sf$~+bo+v&(7RiA8L* z-*5$Xr#dKmE^;^IvhKV;somn3-ysnogY(sG+RJ3C>Uv#kmbw6>lJo^-lJ+hMQg z$j%FFuDe=u#WBzEF3EFxhvz=lCWcG1 z`E27QN|Upe?i_QxuX1;0d9=5(XBzg3^mA9b_n*wBeq>~xv*#41e^-?L-PnoKyj{M7 z^*Pe5!Oy)LG6KJilYDw!=Wa=*r!;1g7H#{v8FvI`hj7ox1_xAr$2)m2j%vg1mF)ML z&$aa3S}1V>Wa{F95s%u#l3y8VJNw31MDD3~TfgJzRVM1?1bK0fAv~4Nuj4$+uM=9A zKJg@jwZqDQIpJiBqjTODM&&0Sy5q`Os;%}-DU{nJ;yL}p*0pGl^wj;lOL2bJ655H= zDaunrnVnvtPpm_sPnFN<$HE% z+K5hb0*zVSd7$cT@p&Ne_(VPAmf~Q{U5XUQvZ&$W!ogDeT3;9lnm>SiZfK+ zQ)f57*UFKh?~ddw%&@QGv9y~xg z?LPdZ=Q``A^oG-I-W5RZg>^CB`B`0fo4QkVvfr;IE4`9>f3flLj_;skHK)aX=IaMn zu~sR1_0j$K<>*t6gH<0SoVGnRhYn&7ML#4@Y)0Rx^Jc5f($-uXfhP41OzPeBL&^J| zZcVI_cS2jS@k?|*FL-hy@#OAoZ0gdu$;muZ!fumi<7gZEXkB+E{b3EfDxU0H?(VYX z5A&>jz}~Y0XY=YQ$6I%$-qlR;;^vf^Pcr7n9d2apQT+5W8U9R_J*f;8q{6}Ml_5P{m7mN}0{;69>p7}|oH+tPZ`6~_CXZ#dDro)cU z_(|6B;Nm$qcKsdX(Ra>NR|iSGr^=euT1uAnGU?$|H|8Evk6Nc`G~JPINfwz|A6uyN zm+jvEl#0{5xG+x8-@tgz#&7knXKWsbZs;6ilI|G`)y7==qI|huH4O5tw*zUn_Gu)e z%7*%di$3Yk1Vu7q?`6@|oHap?E=|&p#|w|J-VR*`*$T@lRF{QoE`1+P+U2X9Cv$ZH z-H+h=@b{B^#ZTqc8LQXRE&LaA>IV=1I^+6a(f{}_7(b3uTe7v+ZjV zc{sX10~z#Rl6v>i`{x+f^6q2z?qP&sr1oYCpHh=BN&_p;rXS*+z{Y z8pkDN(0E7sWbKx6BTJhfq}l-c7H{2k8hc^(ZuYRUd4Ecu$MK%rNb>0wP+`rzV!OY1d^1X!ruXb~8&UU)7^EWta&wOD9 zHY0lf7M;}da>m+od6&iHuekPp?$yfc6}7{3erNdnn71oG^@rkPsLX@e**R9fy|>%E zTY)szQRDYD)OdF)#36y=UMfG+sX4s z_&v4`l+_&WVDBQ9brq6)l&Kucg7%c)4sHB zpmRNzZC-)$TC+=v$?%AC;>ieH=_3OH{^JpD+NS$C`JFZUI zL3A&J?p1HiEU)HOUyTV=pUxiC(a-8`1locd6V)+h&^cpt^UKmn{51zvAI|w4i}MKj zLwnrE{7G}UY?|DJiE<9bvvx~yihwjUE%dR>8;c03V zU(e8^hu0h(Rqxu78#CZvHA(Mf`Fnth!fGzi`LCvdUoh5rW)yocQ`INgI}7TcGUIPSr>AV(Am(zjoO_@`&`S zAw5qnG5+fNRH{!RUb;Vu=H`yS)*HJRo49+bl(ysJThdvRb#S)M%u%nC4AVODUTkwj zpJmP8>456IV4awH{WG5)VFkJ;f9Wmh=dcem%56698%W>=3~Caqt)w9rB6oYTMG zlNa?}%HQe0_hk>y->K(=|1EI!?ED{OT%4_67(M@FRPy}OG5+~G^@GnvG&~=HW@q)7 znQwFc{a1`*esp@kcxLqeA5{t~_y4FunA`uOVdj8`Zc1#_WAO6`btL4TF!b|u&bnBi zt-VFo0d_siJbYU7wrljfmuJyFhFneyPT$$X80Z!H11D$vhm-dq;>-5NbNWMtWB8H! z`o=ZJZ_?MN*RM<54?!QJ`ILB3n+@ncv~REe?BHt|w}A_4EhsvTk%x&P}t-i4~%&w0`kV}8a{mztg(=WZ0;U-BW!%G%8n&Ss(S zt_~Q-2E_a|X?R!PM^^%8dXDxZCPgI!d+2w`p7nb=vHU7~ZF4c@Z zjzWjMclQ(4EaUw}+%@&VLg9?Dfs3c{MDBP4y6x^Zc~WUdbKDunGlOT4r{mkxMQa8* zbgonH%AjX@mjAzN9zlG~S7)4_zBej0_odG1+q!$t3%ZY<6Lj~HFLuGbi?y1*rJp+# z*++BZZawFiYjC!&oBiwA>>YR4R0db`-pW-c(8nw3E4Uv`bK0v}>vVogu~%f z&d_HrR66dNu=t*qqVtI9v0mZ0Tl=Sz8PlD|IAZ0{v9;#Of5zF(<$J0sc+&+SKR($>*TIJ-d%KQ5Kr%YxG-$1_|sZ`$Db#AqwR-`C(&0pJy8E!Q=cJGVB4b9LO-g z6CWDSL}59?_7GOBvk2eO*(E=&VV*OD<{@YvOlXFL@74a~N;fa&z4th+k?7d7+}ZQ> z(zHEaOZyCG1I|}9Biu~1=Me=Uko02y?I-ZdAKAvlkb%om}vwA-5Y?D*W zH*V2YL8tlsjK_2q@%pan@?iWP^vTr=XBf2i{&efP=$TI+dfAB4v}MjTNQZ~oAo`Hj z?;7vlZO*(9sm0n>fL{sox{rb+n6h*uM3=YkEKLntmq}Y^)jo)pPf4nz%sWtI<{IVt->0 zw?~aH_suzffy!&+N^}~Xcd{X^XzrnLrQXTSG8R`k(|XYSy+jt@Wj){#cysY7yT+Zl z)O~#Wnk}!K!qWbm&R-zeC~X&)vdDJE+EL~BFHrn7aDJ$pH%`PJT4aoZ_wA7!+U_m0p$vfnp3?WMjtS)1&j z&Z0c3XeZHgbxKz6r5um6UdKC5pB(rLa36m^;<+Ys{?7fIu3Mn7Gvk9no%4O0K2LSo z-gxeiw$t%=A}{g%NaLq`+xe7hJGZ($?N5^aC*QH%H2s@x9`!!0 z?jO7g8LwrHV+nR=U+eW<^poTFVRxJyDc64Tu3%qJar7R$%5stTI^_Ec&O$t${ez)( zM7pHKS*w-t`pQL>KmGQtkBoj$_14)+oYqe`9f@>9wxNOc{WM{xu4Sxxt!&08T-kG4 zSL8XFqhYhiL+^yKPQ$w)MI^|{}mcDQ+|-`g0f8k5j0#pVG(J+K}~adIvj_HEZc@ncl>$ zeotxfJ}>s>`mV!_dBoq4^*HsXKl1rv_lRTfdpzy@-1{D~`|ZyKFT5R%kz_9~;SBG! zw*PtbLeBE?4#lg}c>jR)o4)x$xAJzpeT#mDIbcWglm%JtcI?;$a;GDAH!pDE)PK~E z=)KqG$-$W&Ur&Y6kHr2RQ(QmNdo6cCT*&$==LwH-#_N?!>^!;hd>CH$z-uHIy#pQd zBK?ZSZ|$kE7iW;8aa@1YJ!<819?6zVc}qINYi4(h-j^>CiX&ft}( z7xuzBo+;D^?mKjAT(*vctzzstl0LQmO<{anKPZ(K=hhAx?bGNicgq&M7p8S#*)h&- zcWWNsGfj7NkNj>*v=a>dw`v>~oa)H8nTS+Gu0Hl4Cw(aj3=SoxO|f zeB9q7i-NVITUaBC)`fWf3F|^N+#@=pAve>l8_Dks_GvPetO@1z|Kgtdug7amJ5y^- zoBX+`n`KYy7rK3(`*;`E+ZWvr`7g!SF@zREM>Wp`PBBmK(p z^$Vlt(P!Izz1)G-<^1ZH!&SO<{;p_VI`gqcx5vMVaWm`xiGOcnH#YEU?f++-UH9p0 z?S(TwtNeMS;yAjSL*KmS!-kQUSPKHj((>rJCN-7Y;^(;}Z7`!D;z6RZK$T=3IxV?WqC!#xIfX7pFtul>zy+}FI0In;68wZh)8 zXgXOtk?ps>$I1}&+S!h%JpEo4>T`xK4|`J^yZ^1YlW4WR5$`!gbhHU)H(3w22IeJoJOUF#%{b_9fXBtM&bZHPirkZ=DGh?_%n)`^Tqxd}$#l0XEx28ng+M>AH z>&WsRiS}N+KFIFe8uw=wwjVyDeq-2iDScb(9~PGXDalo7OZSjj%|^3pS4Qa*7WupN zVC?sjlD3;Ox1TRe`w`MsJw*JE9G`K)7K`unL$asbHmCOX5+2%L#`ybjeF&XalCcJji;w7D}Sj5YKQ(@1tPdza6{ z+r`zAHS);ap*c`;PW@Ky8X9s|`flcb%*&Wdn*7n7Xnf%Ov)-SyoWIdOcbu{EKE8+H z{66W@cuvn(a;7}WlXFS7S1fK~{A>~vZw!??+^FK;{st@gF zMQuNzJW-p=czaTY{S;l~FFTwb%cbArX}%}v&$J%z`T+Kgay@odPia*6JWliJCjC+B z+Z`qLM{=C4p30fEcI*+`a1OHG6{nE<9)9HLJaQ ztamqf_c-sa_U;MhuF3@a<8i^Eq5F72T4rMyd$(#&6n@+pq_H|XHUAPX6P-Va{;Wb8@0AsyE50135`H3ZL<%KzA#+{YANFBC93UhrccVPTZBaS?_qF5_gp5jBUZ- zc;YBLr@A1o;<{ij!sT(?$^9qaj?>QM_A70Tu?qGYQ{|6zrj$L){><8Ibk0!sZ=maQ zb+$F<_dpIoqi2m5MfVD4Af;c1r(JXTIV&qQ;38{!9jKHtO5dr(VI_ zC9+RBA2yTzkhQMoW^AM`v*^yv-fn>|E_CsGJkUBBrPg#i{#R0F#aEmQeBAdzulG@- zxxC6S){jH^4vRaJpg498!1jLh&SGQ}dzsrRzfyCgj(<$@m2E6OBl25h?QEuxUw@iE z_mUZEyEM=1|26Nc9J2RST98x!FB7-+6vb!Gm506EGXlq#_9=6jz@72TZME_YtwZM9 z|73N@c?Q=%>is9BHn_p-(LORY`9m(E`PwJ(#C8Erk1Ys6cIHNHrnO3AG6 z7bD9|;~AG$2^r}eLX?kq)|^FkWBoxQ1I>*@7nLolzhKPp@?Xsyyr1!EB>#5V9==%< zxicC+kf!c~TvVGnPbBv|_IYGS()7-*Or3pSnY~k_Z$iB{`ZgVRBt-J0&q&I9EBibC zd{^ZZf5v$VwB(yZ9-|4@S?5;L9|CDL2emT~8f zhE4OgmZt2v>P&s3>=SyP8YiXBYp`!te5PMzs$eWG)cID~vRBSCo08s_>U$#5AI;;U zzTy?m%D+lq;q?icFX--vC-t-gWrMVrpV^r1J?a>BCx(>Ob$yOgK#ZNwpV zfHk!2fkbzrae>wtqdXR&r#*fR&V_THa#h-W1L1xyJ0yL^JJ~0F{p*ZL#_VDBsm&ze|`Vm=jGQP-jc2%A2*Ibt}}o9 z!G%iWk48wN<1Y)-cwK4e-EDZ#+}+Ll(EHza4%g9Dm@XGuI$MyNhYoVKDyl>F0o>R( zcE7`VS6_Ewx(7-3;wWwSb$pXYO{L9KMw(Ce{je}C+wVfxCfV7V??vstDBYUz^=&oW zMW8X>NNaPge_fdVH{dg}iD|u$=5*Vl_4SXZY$MOn_wcv}!|8scm)kslu79cF+)&zG z7wxZiQ1!W?t|ctyj79uBI;LSwFC6gm%>UW8)#|52tp?_G?_Lw(Z_!Eh@9dQ4u}z zn_Jrcv&Q(hh4Rywudu&Py&F^1U!OXUxtN!0WdGeXY(?r`8^2QS|{V2s2nB7!OtaWimrG}qV=6L53NTE=~WN$+6(;1j=H+x`JL9s zvw!Dh=WV3cAVz9~tI_MIEXf=&-M1!d0+M6zBEDI8S+G#^0PMP*twaZR=$^x=X4iG6 zh{A{V7pw)IbFTKSclU4xZx7>Vedn`bS*BZ9&-sDgMXXEk9B|$az8CV{fW%#H`MUUH zhR(UC4JL9_8r%)lEn4oYb8~L3F$~972XRH4$RIrr9(o3ONZIIX58dkTwHgKgtfe_V zQ_niL&HDXd{VZG42`-1muZsnt(YyH$&(YjVYjaxjscB&S2)r^3+`7|@21}z9AC2pc zkKxwCbl$nLqUD-sjiX@x!dga)?xA2UV(6GFC6m;ctN)BYK2z%ho%Hoim+Dm(%5ctb z^H0Y1880iwSUJAMqC213u@9P`yZ(r?c2#M2wav@oaOP=|JsBbcjYY~Veet8a9(10O zGmPD;-{;YTwC!XsV7}ayxA6}42xHyW?C@#+RjGCs*<@^M)W)!T!|tg~8)fPDe&6PI z-}PxKuK0`AEu2oHZ<_b8#?{tGyl4)j{d&7o5PQe^foNG1;=HTfvE+1;aWLnN2m7^W zed;Se)AyTeDzsL|yGV?I>5G_?+MPAbSsm}%FUaw2&}bj!IAhTh*)wPByAKyt40HaI z@nQ35E7OVZ{PCIlk^M%>4|59zK`8`&Ldk)$A>Gn=_st;~uotiZ(-T5iIS1+5U zwW~V*o@ub}k*3@_hwtWf@}uv_-HI;ahn~8AL^eh8v2 z>`(eWI$N(UTaK(4pKxwwn6mbr5w&sjGi8^w2bZ=>vD@3F*!>Q6>Cm_+{h@Y=F<60J zipI&S-Pp|M&spq|>|Wpa;nU~)o0dNHQh6VDQ*hp--H&TkSMuA3Y|^$d;$e??IJB~B zEoU+Mvy<%3fm-$=Hk#g*(wmO6j2F#OW_UfFfu70+zXx7a2eL<{^tEHc$ol%WU+2|a z!0rE#ZYjRwwLRuI`=T}4`|91gsO}q7{<*Pwmyxkmkb7-)(VA6n@tPI&+mP~88Dtlf zj_gFhdM)FYA!k_Hky~k<Uve_J7<;rKV9c_zOYhifj3${qqq+0fY>f3I zp2^46XEd*;Z*jJIXkD;xeV)(bm)5uZS1-SKorZF)CccwlBp>?kNItUtdN)oo8flK% zJlW^7$ku~)lTTdFt`EZImizMxx9A?tV5j!BwC}9Fx#;|t{44RFQJtIV#zI@`zi#g- z^DZ|s|3xb9;pp5Ce5-$|fmc^AXE9bPT1&Tk0&@NxfKv93`PKP_WoV9Mg}!S(kL^9+ zD<(d)S;i@uTqIbBkt**{< z1$kTFY<-)*zYJMuzJAjfH~)+Gz}b6r-zE6!2=lMj>ca9*b9q|d>((1?rrrB=+_-@L zHtj!#^|8-X>pS4?{Kn7S`=->dbja~Y9Zk)Y{U+=5O=m>>*$nEn#`AsO2)caey@mY! zhi?awOk7>Sqwd$#-cr=BJ3B)kR;6|LA8&W-|JrYBCok64;_=j>X(QX7Un)O%R{D~I z%JeW}g7p4+$MnK9BK@dH>kIu_hV^u8l#M_ATEjNoeTpn{HKuPnMjA7|uTU0Ukt}@N zT!mjFLSJggTjMYO{5BTCj9f-zU zx*x@*;bonx=Kk_&jGv}idi7b8)p6W2sjnLHb$3|No-|I9y~zai-EN-D^T847q~rZo zevRGeN9Ofomo-m|`i`j0=qylFF1J3dxl1P4c$_m~i~+8R*Q((;i#)``Ncm2iHA24V zgU&-YxPHxeDXmk?yQ7oKNQ+M&G%wOLLSUGxZ<(c^9~!w8XQ1Y%1di$QMk@>^j>6Z zBt6XeRW5fYF>+a&IeYfZjP?Mhus6&-#?)6Ya_Q&20(eQ)O{9T^^!kAdQ(35w_M-OQIyY(WqANc0G1B@|cAoK7a{cLDmTlUl zmc~dtc0d!Y6_ny}tLhToqc!&y`U%mM8dEmU_p8YeBj`A})zS%dw6@m^Bb zWXHS>o7!TwZ0dHtb=4Tny9?Js88_MaG|iQnPoAL8V;eP!zN-#?2g?Slq#Lri?DOdx zrLrZZ=*}*p!)BDEb8U(AOX+3n6;{4z-#|8exV2E(&mYZYct)7JEShuPH*$=l;hvTcb4&V?#v`?5%>M|i>8Km zH~gBoo^=O+^Jm;q`3<89@K?P=^wE5ave{ZWv~I1u#;=vv((aUYhQAA#zws_e6gO8% ze%#T8yL*S$Hd1tM-JLj9D(rsA@*>05jaFXiT$EO{-yf}|G+=vN7;QuM zTBy8Hy+rjqTsQKM z(c0+FnE-1-NzYR#$j$v zZpJX{VB4^xOIWjZ`9Pzwq0&w3P02AhI@fWR>5am*uT$KY>TZar&vU#oFLE-J?f<{Y zdo;l_XE>Qe@Aq?e1oBM18}kk7gS7;W=cQZv{;*_r0-e~;y#(r)Iyc?8fcFtMKBo0Z zo^$`%dma@xy62I!Pw1Q+emjQU|6woVizbKYKF7Jpu(;1xxvMBg+>WzWr@02NdkeiA z8|CWa0`I0SM^l$exnFK6I@g4qTuq&s%;|%i>`SkeX75eLbfSyqnbCT^`bzniYHO{; zm5h_IK?+ zoJwyffAmjZ_I0W;EOFNpSKmbHXRhRUyIE^p^$VwRE^3=wGlBp6w0?YJd`|Z`b12Q% zbbpHWK(t0WQl8lzKF_~roJ*eW8z+(rdAW4af7OZPr7>N=nzHgZN*?kj?YYC1r>`jO z1(Zj&%cVscnp0}e=}PRB%2)M+)7tu7+BQaYWmdbDt)aawakd8DRPWx_m>ps5t5R$3 zNm$gs$<~-XG8(fr)JLk1Du|c5Q_*yuwP4jfX%DS4_KxrOI*aVMue0d==cWOzZ^3)_ z9{8Y-REcLJGrVjM`*U!bWQd=xEepsdh`%) z5Ah^JN4qN+JeXR`Ce0Dovimx$-YiY@nsl_Tt#O;%%OoG2N!1#i_78`Qo1%5mHg7w> zx2J?3V+GfLUG3BVWa5s~|9HwTO8A8HyTrT=@BA?k}b-(hD(xEpQgS&`HkqLj{R z4vZcR2F%%8bbd(B4WZWsS}PsjQS+ zJUD;WDI7nv0e3ctaGec0DujQB@TqlAof#89K}sfRxdmyNWQMjKt#`QcFg80*I&NOh z*v$DsudxT6%lxR!y5rH-51FS$^!T}X3hu~0CF6$FyLYMjws{S8J}QY*V9!!>0@2DQ z?Kx!Uh^BI0N4gf}rSPM?+b%mP|EXgweCjxlN0`IQUbUPS&ui0h+`i#|J1zbOZj`R> zXzC!|J-ag9!kg9x_U(dYe0ypx_u0vBjrldb#Ck36rVX@j)&37s2jiyzLSt@V2~(Hzg& z$f7f9j`z!r$6QS+4$snY7l-F)&Pd+$Kcqh+7}T?~-G2?=$dq+wC(qy+iyPA(^s@M| zuV>QbzHvKW&NyJG4N8q=8*N>S_4)2z#stzwoe8OC%$d7$>Y2GrW@c`4raNBe8j=3| zGjkQg&`;&e;?#o+3)4UA%v{|t^eKKaYfI;Uly`9=o-->l-PkY3f9AT<^bxHqUpeKw zWAd4~%A)*fqte}I?MrKgx^q+e)2^-Rc>!ag_`J<9^b=F`livmXxD@?_6#XI6XDr5d zTG%h(od$IDn8qcHp?c4O7t+=k#XTzx@hgAQaQx~SUf2g{JE-$PCF(E38h>2BA$$U8o3pmg^-@P z_|U-5ll}C8;%AN@A4O|TvKxBVcreHcV@O;!W;MgYoY2481LbhCV;$Pv_)hYmLVE%0Q#|Wj?;fI7z>l8V5x>NjQ1B zI;jd$&*iD-TFy_L?jG}?eG?<4d!=|>lgdBUZqjYWt&!JfhhL{o=?`O!CytN0`-w=8 zj?&iCa}MbY`dJ|Nsqn9UK=UuRwws|&(QWr!p*ak?Tj}d8Dv!=p><&SyZeEOr!kMxD_M_4?K`%e>nR6uU3+GH5ZliGhqU*B@2jfs|8JTi z0gIGUq+*dzp=b(0lQd}(>>2rQfRD34!K$rINKz6>o6w|Cw2WZutP*F?x>fBoK+yno zR#vy*s)SKzm8wPSR$X-|RF{@I>({!4S>*S8-S_)`@=5=V?biq4`FWr7KIgp8|8vhh z_ukW$nbwAtuRC?Qog%GSgiGzp$)p#{yK~0VtT}PM(|v)Q^||9?VAk3zUU#j1)7bNj zzxo!&0qR8G!f4d^LYc>X;1WA~rsr97ZF|Xme4|F!`tD9Ui^m(C>y7oPpZIx&ES=h< z9zJ7n#&z=7{7%*wxJSNTh;Y~M%>2K>#*Dm8ao>1iKQ_oez81xA1Y6aYb+07jE?v&g z#QpUoaVOWG8jJF>;@4R525ePdS6<_G#B~{c%6>m+Z7m{BeeXl@Px`E-n~V>7x4+tg z!e07dWjq!pW0TsI#t9o|v(_nD{bWM_Af8_G7nc{~bas8@d$}K9AD1R&jeh*S<*e`# z-(OZ49baB?I~vNFFeXn;%E9vC}Ac zD(OF5|77}4R+)_Qj@|5XiRX}!+y`{VAeoC9AD@g^L+(d6uJ@|R59oeyoL~GZeXfZ1 z=f>w)5*_(7zQpqc`%cqO+V`{ia`xODVT0z_S$y9kPKS9`HmJQsq_43k=e}`2*%14= z4T)ZC19P+5-$Wa-p1n9p-_GgCTH7T4w677yG1-;s$r{5?=D#}2KdZcxvew$GSM#9v z^*NM}+~T}y{8m0W*O{%8LPz79owZx7yDl%(~Q|a%_(%*Fw{gYn%ylz@v-Er3* zN&F|(zhGM4od1pf^l5ol{crT&FfH#5$LX(SuA~j?*)~0YcFpwYjt{WcpO>7q!cAv% zU*uhS*Rf{O`+jwH?3(i`??~!R=giJhdq-F665Tt@J1d%Y-5sx=)^Ks&75S^^pXi)$ zW{kFR@@vwm)AGV`cAmD}rcKK$J%xVOHRkv=;YHK(&U=;m@ip>!)AB0*XZ@VTS>w<% zy(w9<;vikaQ;WKNx#aUq+v-I7*xUaR@*r;`i`fBD|DRrE1bJ(-HgZnegPrAm4-MDVsnfUWN@z=Q)(wfFS7VZag1~Kc};N=hHJo+-S#wVrG zn}jF+^^D)Kjg+-r_gT6T_hphgP<|%t&pkuAvL@7ZxbFR`{bau*Rc98pKGK;c^^rN8 zYdSnC-9UACmor!B<{+Wr)9>{O#rMmE+dZ z@w!Ccfb+5=-|?A$l{0PRF@8V7JaKidk{o?qxm&1M_`G1A>YJ1AqjoVpgSbLw)hW|I=XPrEJ zQfJA%G_~8aXt#6jIrApUa9aG$vNe@IKE!x__8Pqp-o|saE%jfm)pSm%jdMatTq?Uc zxLr|H&AZq1-j+X$ub=f!$+MXY^sIxf8FjDlq3pTiRfJQTry3)APtkufUes39$52fJU$UF&V$Fl zK5GqmzS``>bj#v(Bxz_3pY1nC=g~P6aUbKy1Rcgd^`#T`tB%XR+MdFl$`-xzPyQ$N z2i|cr!}^2l(LHRvA0ncTv+YnDu4G?LYxe)tz1~yARr3b#Tj-CUXU|&OXW9K~%klc- z$}uUc_?}Oe&E!3Et^Owp!`U9KRr1eayoPhW#`==BkmO7CtTQgza-pYn);W{|^^wx} ze~L6N&kC#h9N?Nq=M2@SCgt$l@>|xP_AIi_f^uUllm1EL$Ul7?8pGo;^i{T#Q`KAU z8?D}+=Iqu8eLp^5yoEkT-nFkBml0>i*{7;V%IjqI=FU95y;}R9%7(Rsjp!TW*QF{DUuRq|uE#r7;x?$Zm~GqfZRVL-|M&8%x%4#Uw>IlJ4c&uej(jNh zO=EgyLUSKwWP2~nTiIjSFa7z(lZ_iSZ?p7l?xdaQepA-BQ)kh4l6h63d`GGrIl_%vp>-rwThvSe32*vUN@<%cAkJl-`7MRP_Di8PR0SYs|8D zbm=Fi#b>jym-9}y-{*BcN_lCW73br){=RnZ>C^jEmfi7QQaf|gmHzIeck(+a2Y%~1 zI8~>$(>4Em$>gZ$Y0_67;&9Ya4&PH!Um3lU=i_C*I5L6YVT^Z)L3ET$SdT)209L+h2Y9EMPL}|EJn1dCH7m_q^_= zYjdJ`aUDKT^w28Ns`2n+Q*^$8 zGtF7=i#)#HKZi}HU7J@~{K?w<+vv|ZAs;z6C1Y_8X=ms0V>;u3o$)>rV{Ott|1bUd znVQqL(=T9Gj{m72GH#Y8--Gxo+*59MGM{AXUFE%`>dEg;8nfqO&+}(mct#+}%h~wr zS-sP}>n*q5%Zm15a8mUoBso-!=w z^&2MI@E#AVeizq4dlc`RpUt{*DeKAy8H>0^kK0MIpPl46yN_sX7u)Z1ah3N^jd>?K zGyCv$r>`sBcTLJhXESA+-iN2_nGa)=-1Hox)>E-P_(|4!!0wUQ{UZ70Fm6Au>spP! zQ2Vo&cCk+y@g89AizVUXGbX+#k(5QeFF_c|R}hb$Z_KBRPCoWfH}ACa)&2xy_haL0 z>hUw5Cwr%-Y-4>E$D6#byvqAZ(jJH7d`}!7+UY-%o9FSgyReP2eNt!PJNPY|PB(7UTxI2y^!M>=xUBm!C)xMcz1dTh{R{6IkF)m_ z>!VWIOOocv*26EncVfFd{+UT#L#V8hHArPvJ3m=`xrjp-hY?3#3jeXIUt zVbw2H4?1&3`;6bYqI*;)+}q2#eod}J)HW2q=GpAEb1`wA>N=%nsrPHbMO!Oh8aVE{ z^fKiIzocDgJXGHFEfvL?J;$D`ojlw)-cF={e7n;gtj5Dr+Sg?Eo%C94t@c8EAC^9^ z{gX<@Iki3QEhY6E|8BB-knwN6cNS^Pl+J_pJBKr^l9T(!$M4N1dpz1#*Pgo4sUjV{ z7eCs6ZX93yyXw60-(QXu+`RQJAzSiPOgWqC~ z-}6n}GGV`4^->;ZY~pbIPUZ~Ou+}EdVjiK4RF_E_%CGdakD@w=}?gali zS$6O{6A!;9=yA_AsYBg=jctQ*|Mqqf*Pq(Dp4(FUP09zo%SKvJY9A=kQE} z(nxHWP?uSKOY5XbZ+n%`KODC|uQSFEad!0K8ar#OXQgDP#zf9@#J}TrX83hcy!PT8 z<(!<0i_hX-UOXph&*ScMahn>u$)4wVucg*Q2RVCicKWYxeC<8GH!?5x_p#q~4*UxI z8`Ah8VSjV?8>amx=c3{t65qJn1-QNbIJfDzU2vS+G~CY5xP8Aadg&{~yXD&Gr7iH2 zas20_Grjne#4oq|Z#I7XJ;skMG4`_NNYna4@T_87my{KA z*d40>2bst6$QRccoTIdTJ(Z#KMlSQShJ1ri*L!--DeliTJhQ{S4DAo=U0QNeSo*{R zXF;xA_^x!+e;xA$<8c4&$cMRRiSzf}Gb&&(n_7{&}yd-6N$>4B)1FZc10@3T*F`XA=3XbWS)&kQIL% zx6PEk1 z=b-H8cU*R|pWkuW!O?pwD^y3x`LfNJwUxi^{ONw~9{xu7i*2P0c}C9nq^b9w%)S0; z%KLEn;utjGZ;xoUrqy1X>#sX2I#1V-JV(Lvo{;YmaF6r)Jl<`h`p=hpOs*dp%O2ENhAf-e-#YIs{MFXo z_6l7i$Ss!jjfq${dNL_LjWM+4mzXEZR=txOvxjra`W%abPD)7O3P#9jAMPNpB9&G0zm_JD08Z{rNb zGxpp-Kh?g8Kebi0Teab1o!@#iSAK(MyNk9>rtHK<$-B7n$D{9~?B2)tcyHxPe=OtoT#ILPZoHQ|YvQtxM119xn09|Bp(K_*JF{iJSeJ`$y&~4vTj*_RoE8MC~Oje z&HQdgcd6y)dF?4Q=RS83H$Rt95$D(CgWc-;djBJ1pxkubPaMDT>#R8M*d?7&%IoX8 zkL~5NpSCwZ-r_RO{UE<{g;pFPO^H`eB3T1Rr0`-v#Z`FLJV^sL5>M_I2w%KGt|Sv>FH z-)&-#?1{X~zxz4H60S{nk2L-|qoKV^uAk!hRqhR1v(O$DUT2ja$Bk#UiI?|O&id{} z+OKIh~vN56UD>T@1!)=vjK6x1$ap#pa9~`nWyI z_n~9A(Rd!PbQxc7IBiY4&TDOUiQ35o7zI&@6UPd{q3IjHnkIl z!JbjlJmU7~8X+DB(AOH4XE5UL?Z*3yXI+Q?YE6}HyG<#U#Pvk;{p0V z`PFm#)*mm)oT+HuGX4#O_`Q_qC+`E<|E^C=d-$3658WH(+^*|3U0>v#S83NH7aM00 zcf5Dcebqzg>z(Zym)@W@PuM};k)$m}?Mc%fsl&{<^)HbgZTh84ejojIEp0;Ijb`0bq3<1K-6;e%~DbE*ZVVo?-ih@+6&KvsThPe?B&`Hle@0blvZx=QJ)7migH9 z?~_gV=lz!F{|T40dG%k7XQ{V+ED5uF!F>)G7b-v2GPCBDAQ&1KGJ z9m{vPUto@Xk-pc6jlH_w(%J_*-!408gIcQ|A|Cb4Ll=@}4)qM@cCrTpm?q{92>u=EU#i&+>l{{?e;BUQh4m&(d4sdSRm81f3?=smjtRRhq}eb=5@w z32_uLzmQkkM{jua73N#bjT6?KHF>N#`Tl9VH)8ot_D8h#mXq&me!KU^gRC7iZVaN6H!I$g-xmKa<#+t9;gf~s-DZT1#~bSB!L_f~J4?AI zKpcdNd>?zD=7OQv?T*TqzJ=c}%J?QZ^><0mn_m1d{Y!Qw{*Ur|4q@kAes8VUy+&pv%?-Fd{y&zwz$$jpr-1EmQ|Km0#_T}X0 z9lqv1>6}XTR&E)~Z8c8DR>}J2j`BC~%=st0bLfSgy_vIW%EKei+!U|ZAB3`JW>OZ! z^=R%*W9p}NU-;x@`S5oqmgN+}|5WeiSDrZQOFvi`|7M+Y-y1a_Ud)_5ll`e%#;&8x zRPWb+jqji5Tr%xm?g8eV_pyrxyQh|C{K?}MboqM**1YY3RbeKj$Ua(XR$p|^96?N-j0XpNhDx!vc; z{sz-CKNzpyFXi<9=n?FW!(($E{h4d7PrXRG8fPAFwzTw~(+TdpM@(%)cE#%>rBC^D zeZ;$Iyse){8)Ll~+t_67F4m#GvUPO7Sn*`r`0x+MZB+O~|MIN(-%LEZhD@$Avco@< z72f*c4RQINfjz2^Ur`@Qb2IrLd^q>Hhbe<3jTHSm`8_Kuy-P{&5w6j`L_K|Z?E>Pv zf%>{}Omk3D$H`jd5c7iKA9!ZkP%rCHts``eK8gL^=I6%qX8p^qhxae-W6g47yk=pZ zjK9M=sQ$0Eg}Z(S{m#8v>*n(Y83P|(Yc_B`1p@8>gi zkGko68^2E&pIH-J_ES%TJvi#PADsu9e-^v-v*+@F`qaSvInVu(u^>}+*njZexa^+I z*ilMj@p+*e5}8SgKr{U!bP&6F?u(V4x7?0BBZisun* zvT?%3vDXkz<(sk9^P+P?$(W|GY?A9S|CK2G3GIb`-@I>Pn@q=Ta=Z`6c_!Y(<~g+c zWItp**YO#LIKHNEcgibS+fUGCJT-UiHQcPdh6e_T@33EQ|LWn~%-TiktfW00zovQNqm?fm zz}{c3wR#%4Fz19b_m}M-Zzn3lUtVbEWcNd@V-D$jCUG3R%j`eh8s-J!QhSKcA`^N zXJqY-_#TVnIQv<~X~xeK-L^YKSXLwktX ze=f zt`(B}=#1sa_2atnUjI9Mub;dmYpM??YcJ-gOn!(b9(QU?Ki*5cEqY0NuZeBRT(0{K zr)zg>|7&8q(;4UN_V&X07scz{$*gxDp)F;+Q=i6^&_08JtOCg zOdCnUXWA%w5206$UQW)Wj9$`~D%oeTv2c9ORbORq>Fc9hziC~4oA(*5t#zO9baTOF zf0&r}MTCvZkG9O7A+{~*$iGpG?!ekxCfsw;KELJ#-FJGLypOy^&xPlmc)x}H_vBtC``R~7;(Vdz=y*@= z%u3Es+r2ybH}}~l`E%rx;_Jfr>_=nvnGidp7`qSH@8i!sOh}6}dZ$c_?-kg&i>$Q# zn+0+F+21qBcIO)gDnsQZ*30^)f!S;48+EOjE$i$K;rjV|KzXeko8<57U>re?GVgKG z_+V#WbXG!sdAvhuLO!3FcpfEr2SNOfgF?c;%I`^J^pE@AL&p7d-;h{)^5@r*eR|!W z*B-InnRH2%^J07QjLk{<&a8MJNY7GnF9-eqaZSCz&h72z{<6;B$IlQFPTxg~`-<)} ze2r_lc-?Mi!%p^$!ZSCFpUIWo$3Kszdp;@t)P_cR4pZ-{j_<#HMROl#sd#5*e75Ql z?Ong0d&l-3X}RhAMEu-0ZRKQX*W7gav~`Ze@m1_B&fsx3}Ki9W}RiwY9EHwXay#nOfGlGIe=NYDH%cKUb}2iI(5m+Cr$M%Ue#N z(B0O#s)G=%cM?ZiQ&(5(il}R4>++`V9vr$`n^(5>M60^nSKO9rUER~VqNTMZHPN%X zwY$5$a|MCB+oDtGbgf(#O$@c7Gc}$}eiFyZ*6vlyTU+Kt)k!A-LdYi9i7d$XXSQjcWck8E_rpduDF^qDM&4EUy=FUerM+A z@}_40oe6Fw>QN*mIPOTKCsAG6)zs2LF)dx*+0q)#4-@JriKL}%`O@a5j%MPH3%0i5 zomZ!>Pi3NOZEk6spioy++i-R2gR1jotv$_c)MD4Fo~XL1CAF%%>9*EX=dx51xmpO> zUV3YLXa1ZNE#agd(aP34R<(Bbs79A}u53-UH1#y4dfJ*+q?Wb!bVu*$T$NhBs=J5y zTTh6gr+s62F>S?ZWg;(F*E3wX(IjbEVo?s=H~q#d+JxrsW0Lw+x$915x{m zr5&xy;@<_S6}K+Et7(OKP*~ZSTeg(g?p&(0I#)>pgSsPfch#SmSAOC*Cvv3-^IN*x znr?4RB`(>Sr&-Z*6$Mf2=hC*;j*d=*xG3V%?O4^_mLfeBuMEnTm(#>m*ff;edfKcx zp_<7~VqBaG9=CPIrR$-Z>51x0cf~#Ju9Zz)O7JB1wXbOJX>aOir{K*@VxhW-wTIr7 zWH2$Nt+k0^Aj*#Cu9frdKcrJJYQ&vCq~3RV%hi{+ETNxu-$ps9pSDa4%VrR|0+2&S8QN}Z` zsAVe|Q#u&=sC|_Pc`+Zl)g5t$3R2xYO)Gnrb}qwUsaQ5!R(5uEsmihcs?KFsp}vYD zr2klW%sC+{ML@vrSaIF$$d02 zOcGmDkA`Q>3Eiu@x+t^O7B#??w4bCEOl&AkE#8Kfb~N36ToY4bB%I_&C99T}9hqhi znli=F+(}-jbA|dQu%Za`o$d6Xzu8wt5Y%U%kEC1GM}4nO5Zsb zpQX*DqRP_9GBGZd`bk_f{aYd1m$f%H^~4p_eS3SC_xx-h<%X#^%Sjzn@kX6@t;lwd zChBxjC@XJkEg(0kKT%i59P6`Lda}H$X(gG=c9h|==0u{e7Xr=JlTzZZledERME@3rYeP6`-&*GfVgP^R@cX8 zCBLpl%e++cDomJjLQeB-6%a4GG!S>sQAM0svg6Gnwl3w1#%?-VR?VI0H(r4!`o*T6 z;G8M^ZhBsGo60I4^6yH;J&I++@|2Q|7ZB|$Zq+h1UV}vOkk{JP$tovnsvOVG2}!AW z;ph{;CRUbw%}vd1EI=3<;t{V$OB`QbMsc%Swz9QVR*i=wigDvq9OGUdX{Pv=F|c*F z(S}}4?wAd-vPZnuK{9b<3OD1TB29!$L1s!I@rg_7&Z4&#CO?X!RV!{^p$?m`LYx!D z;|Kn6$H}nB<&64-0-TWXc%renZemN%?xLAuQatLfaVUzv`SzvFJuB(GNgrt)A6YYj zGWi>K$qc{ws=EfQ(QdRQ+MMWAS~c;g5bJ9EUS`)S<4Mygn6(+uROj)ijaFipCPrTb zwz8VJb(Ka#7F(SwXf_%)e9(#7Z^K0~tms^Em5uEBr4f7;4b0+I?XigJ(4ecB2@kSA33w;g9+<8nZGnnBbj(Jp)qiL5>ZrY-tvuERa;b8R##M4QB*v) zs-m{AcHX?g`l_n3iqg`Gn$n{Bs$!f<>PqL8&#kVguPv%BEvYUltthLWS5#YARaROz zufD3Nq^P#OqO_`XUTt+%eMQyWnv%k@>M9(IO6#iU*3K(0ubNv}QBzc2SXWeAH?O+9 zw5q7MtfZ>2YTmrsx%K5mrNvdX^Qvl!i;61>=a$t})YaD2*H)F()|b~-6xEg2*VUJn zR+r7KD5);1s^wR0VfDP4qT=F0bn7e1Ym18NYUh^JR@cv~nO9v^SY2FGUR_;NTvlB- zud1-Ht`Mh+nv#mL!t(05)%93YR909~R9-%JUU^Y*`MjdJh1E6X73HP1)kX6Pi|fjY zN=k}KYb)l?Ei5i8FD{!~Q&w9yw+NeR%H|do)|V9(7uDC6Ruz_^R#9G7TTxY8Q&?3} zKCiZhl9*dnQ&Unhx43+6IqIdglu}VedCk0%B2)@%YRl(U@fx?f((Q8sUGO+|I-+}fJ@lIp7R!m8qm zy1DffOidAmT31$DT~St7KX=~Ty5jnJGKrxz^%b>srE|+m$W(QC5mwevto3z;HASRb zQXe4~&MmI1FR3pk8+CIlYU?SD(wg#mYM`dHa9&MqU3Fbqb$LYvd8n!{BbO9vc};y? z3GvLWnpa+2QdLril@(R<>I-XYD=3`8qN=jOnvyD-lIpFttgNuGrnsWMw790Uj8ZPE znO9s`RX(q@xVo;iuA&hAa++RMZCOoG*}QobMTJGAS4hnDCACySaan0qP0`#Es~wEQ&C=3S6ot7R7znL*HzI9N(w6~NUyY{wyLaT9)(?98aImK(!w%Qt*)zA zE3BSdQdCr47q^^>(&CD$lG56F_2qL*O6Se1qtZ*M?RiyHe_efbby*pP)>B|rwEXJA z(jrQ!wxqb6A}X({sV*ZQMRR2XRZv$=u@;rjt*fmi1M}wAQXF-~R7eRWP+DG5S3j?+ zs<^1GtiH6KI+|Nfhnh?6*UiQ7+M>BNwOCL^q9qhZ4TVrtUQ|a$>+5Ly7&ectQD0Y9 zj9g7jCDpZM)wIL?jA@fSBX$e$iVeMR^ zt}m{xuZpgGP0kr-oSB=G{FtOMLR%2Jbkn+%-67`8j^i?41@&@`J|tEkwtYzHuN8K3Na`PM;p zHWK5xQdA+Sd3ChX8}4Se^~5YD-Yt<`iTXA{9JGo4(W)zKHt#6AcT!QCBBh-|WLAm!^ti#R_z30&FD_hi!*y(}e`Ow4IV{S!Au1<6RuCZrj+BZ0_v5 zy(JE!bf%|KG_Mh=c$2P1FSagv&srkM!t`0LN zn&?BuS+Q=|Eze8|S+@{u%HS3;|0?<8AS2J$^H?l@yyWuA z;V3HLPyaX<5b=Ci{Ezbqv6=*_%3c24L(I5O+0VmCInh-S{L?5(9~+4ojzaD;rjHoI z2>b$iyWs%rhYGh2-iltYF|39P*JBJVuob;>__weCUX>H2^NnFPlzz$>_WWBEeE_{d zxF7aI&huTh8vX<}!l&U3_zgG({yjYM3(A0a4;#Y)ID-2g_-}A0{2AN^e+mcT9=Hh( z!+!Wg^>3Z zqzjB8-~7|Fjp4w*M$z-cza4Is-S7kG_Z!1{sCd^I!x|{P7I?YrHikv!pI>l~C!I zK&4-33~J zP<9_MhMiFMY=^RE$QZVne|oDitb@{9ZT{&VW9TyfbcZpl;VI$)^a`Q$XG6uCGKQH@ z>CZ5Rqd&3!GYUIomoe;v(%WkcJK>|mcVLgjyBEHNeC;uY-B9|wjG+T6{YLm^^cEY# zBJ)o#G=>JKdQL%=R~}S7Pd0{QKel+sjNu5B-Y`@>Z#RZ*=AYhb41-Yh*AG>1Jy7+Q zc9y_6o*zZgZ*X4-yGeI}F*HEsr`8zeL*=IsuEf2-81kX?W*fs^o&uNNE;t+eb{fMD zD7|50II`RH4nWn9p!7Dw6}S%=!$$K@Z!m^FIDlR)lzs%4qkrrNF~d=)c#jyvDEuONTcFCd z5~@5(;4JJZG=>7GaQVj2@qN>4gs;PWu`w)y(pzW@1yJRYf@-fbjbXa^r>7c21l3+Q z?Xr0LVT$zojA1=gyz7i%KIBaFRVgTYr$gB>)flEg>E{{4C{H6vZ!f%rc=s5?ZYaH7 z#;^ry93C_-8E|=%%TvE+<-2I7^d}Anpqu9CkJEp%AUX1<@W7rO* zKV%GB;Y{pI|C7xR9Xo7(m=9%Fxp7GWyg>PPPKWHG(6#n8W{Ciy%k;A@k zn!k7#{(D^(kwZS@o#j_eaqit7MPEYR09DTG;2V+K+n?6KSa?# zAUD7lslQs|l1g|HcFZ@1a`;Q7_l+px9ns?V`zZa z5KkrK{nY9C#!wC~KrS(c6x90T*ptRaI354R#;^#UkG#+r^5FZVKNLlEa0gWQeyH;4 zh3a2Da2nydjG+VOP>*fK&_V-crapVI~`g@!^oZH-g5N^bO z6XgBpSFLmZ9(P~t@&XvA<8r>sQ=sgQ;Ca}6?C)ZRF(|u_8p95#@Y`Su9E7rKle5>^ z;G7SoKhxzY@JXcu{|+AgdKCQvj>5fgAN&#A4Zj69!3zlA2i328ojvd|I3< z75irz!we|5Uk}Zun8+8-T5_4=Vm%_&UO^F^1Jp;d+cA zg6E*O<8O@v&h@a3e9VA~X9}D`JbA`287iL07>+&>MXyC~57fM|6TXE14rAC3r9Wg0 zgYXXY)=12^_<{&=~T~KRw$Rj(#PI{tG)dL#4kFz7G8j#?TKHZ=W%AK()tO zDE)Fc89Pdhp%6;Hz!-+MnBEr1Es6A?F>Hp?8!(1)sQ3!tB=qu)VYd0FQ^qg_uEO5E zkDLB3n1lXKW7r`Q@31j!ger$V$kdZwZw$TWpI&1O3t=yMDJcEvQ2JAiArC6v$;Pnn zG1K1#tFWgFDqIUx|7bLZMNr`u8pCX;{=pmdV*R6!TK_m=45Lu`2aI74RR7otKSH=3 zsBvHcRC(3HKcZi04D+GFmm9;#py};_FXO)37tpiQ^938nr~b8-!xUqv{JgDm zwtUX~d*CDJ7ecLndOvIH#~x=R+=Y9s^Vml7KjPd6e}Mn6vjGkukNuU!dl+h+(gNjP z={)?G=04)w31!DtXTQ6zbM}5FiVji!y&Fug0ZOj?w8a}ih2Qxpi+3wLgxm)Y!bT|n zS|~dTq1Jc%9k9?@{tz*5V+X$7;LijZCE-;2PR5}gDFdHhJDb5`qwS4zENB-Qd zABUi>$F>=l3_``f3BEvl8;xNDRQ&zMupX{O@7PDI-gZER8-n}M+hz<~p~7u3h5`6I z`B@KF!8WLHi=o0TGKPgv;T9M}A(Z~nb*4WGrGLN}MxgZf8N(3NxVZ&t{v0%h0rO99 zGKN0bi{2tAI~w2!`nAST2^H^rW5|apui3^WGhLqH^3kzeZUw-U~Hc;?1Zv! zJN#4hhKymW`KPxS!zQTtWdr;eOhdKn6qLQw;U2Eszh|A$S#4Gy3`11j7U z_zUS7!(^y%kufa3&-B;#n*JL2bNp8uLl2aGmocQ_1=P=csQyvtOuJtua(Wg_~~-d2j^1qxaap|30_}c^4dp15o!BTHt<|4}Suu!l&WR zHI~kH_&VYpGKOtX>1;KIjc_mW24m=g|AO3M3=Qy~k!y`%^g|Z!KKK*d_Zq_45Qvj9U6jZyJX$&)<^rsuckq_EsF*F^1Vt{qw+Ti+3;l0s4E4 zVK-FzyNqEG{1y6@@cX#WH->z;3wgFN9KDPA2ffX(oOOs;#5!caWf3`SxYN>I51%Fc zI%DXCN_UMhq@nU%3BRXwjiKE9(Hm!vJ>v4 zANE4+mo-9_-$M8u^cNUI16250V86 zPv;xMOsMPaZQZ6n2zQ{r*%$_(;@xBnE%0mTFM!YBo;HSB^G{bA!wjf=O@aT2UY;@N zri0=;wlZee3lE_;2xadkIE?>BW7q(t-){_gP92=R z>d?J!9AdsiLbEIcuT9l|$vH#25;p z!W9_9RH$(KI!%8!l>RPb*a@Y-!x&aW#oGa&!oAHHTFgJ)XbcOX>a_tfRHSQ-p&Tl` zBP)!Xpz5g~YW(OkhILTs_8LPM>_u+@RQk2>oA_56!+a?Ha%0%B-1LT^^tKtpRw%tK z#?S&4-y-u*FEoY)=ATX*!(=GEv5qL(PWYq7a0Dv8!^SWJN^c7M2i)_FVY2zBbrS{s zaQJr1H}AWS$E|(Fum>u>-NrBsHEu<4051H1#oqwGfnKdKR6>QDZww>t+#jc$cSH4; z?eIzbhm2t>l>QcD*bJrL3uS)~9KyfL7&@Tz+l*l`lzs|Ie>(g-{HGej6e#^XW7ySZ zdc#n9+l@gl#*yAOW9Wd2uMvJ7_r=Dr$o$g_jp5jBwy(4kN`E`thQ3}J0mC+^c()ou zA5_0u1GQdXEnJzohGPl-slLSra^iYMO~jx962Bk&2_4;#ZMl->bj*bUXLcfdcz zeb^X=%s;)&7&b%IZwplVi{RJLUuX;qpyEv%!&qw+H7i~yeZ5TeOZaayhOJQgTZ~}? z+=|{B5%<-`z%zNVUWYL(g0eRazlvUiF;tp=dcH9fz`vp1r$WU$))GZuLI0>R9EM7N z)EGwKLiE=|*}DdAksZd+1Et?(3@z|h^h)64ge!mwmx7O>H`5qqK!uxb41>+4w+TLq z`$l8f0HxP&3=L56&4+`ymm5Qg`KJqwVc)H$w;O&Ly1$rwj0A5_+jFk3gdS5{wR77|D(om7)pQC7)D^+uAuB#0|)S5Z45n7 z`d!9Q0%LpO7jd6$3@P(Z&oqVuOH6Ms`~rG=jA1uae7lTcBUF5S@UL-SZw%|8^m>h9 zHoOPD1B>l?X$Mq48-lgyZ8L@~P~irRVI%wqdi_x8tb?CdyvDEwN`JL6OopnLUGFpf zVfZ=xw;RI{l>Rnj7=Vg*1NWzN`C?D$3JZhwNUz%#!v|F zLoXkyyk^2r;y=R}rbFpZHHI0taKD}W9w5`=45)k`xhaZ1f!<+bH~kGtNg1j8CAz17CB2r9lb{5b9n#!zei z=}KcLfYM9BkD)iy7-pD%db%;>!S&?x*bTH}7Xh>;IW4?_u~M^hb^1093pq#xMkR{n77S2S12^uQ8;d@=*!z#(lmqltaZ+Vhm%~n|+6& z#_LgI7=hB;XAHZb#_JtW@eaY&_-`|Ytx)<~jN!<2rgs3|h5Lvx?1R$VYYdB_u9q61 z;++rg#J}7aN}%)$jbRFu{()ORsQ1NVnJ%rn63>%>0={JToPw`~fxXT)sB!4%JM0|WcGyk2L&mTb z#^q-Wo1xO(2v?%F!5I3@Kiy{xtKk581yK4asQk<{h8a-tPB(@l^;X{pU*1Go&!phYYbiR+vqKV>K6r2{bI6na64k-Ob$WW7BYz&K_^cNa~UJ6%5d2EJUx?a@-WnY_fq{93+!4~}6pyFK& zn~7(UF)W0NcY!g?hiYeq@K)RljA6F0@(a{jdi9;`H z-)Ibrq4XCSLphXQ0i?;K^NnG)`KMFHFa=64f;Xaf?5#1w7*u>mjbSIeLHUHzAA}3= z-)sy6Q2LvU;mB2{cL2T%_Yq^*2c@^y7&1|Hw+n?)7y<<2r9m9#?S^;zKbDKReF&zEHM9c+8An~(k+J!#px1bC^Y|c zfibMfXHcg+(@^@AQ2O(Yp&Tmx5@Xo?7E6BztjB%W7=~bMr!j1Xb*d*Qdlx{KOzE^S z)I#Z38bcw}I({aU9aAAoqVyDF$b-_KYz$*>jv|&aSB=0bxCbiSPRNoWy~7xWp~7u9 zhCV2JdZEg1jWP6?f4a*Ura;9PL8j{TvCCtIF{t>C8pCR+@@s+8Uj$!=|3YI}0HvQc zhC(R4*--VIGKQJvpPpe1$7Y+}5vck&Yz(7N@f|RRA*lU;KB#zmAyaF5jWMi-((f^b z0w}!{l$|q;VTSpqryIk*%S>-KWa>=sGKQT{@$E2%HBj+&L8iiVhcUF7f4apO@}cx* zLXBfHjA6R@r>7djkxNbQ0Az|wj~K%~sC4%lLk}DvzM)yBzXd8kgT}BK<{%Fk!v^>S z`h}1wGhJW|v&}!9GKMKo?IVIriRojhnBgeQK|W#(BX9`4KB#!}AyZ;{wlU0v(w|`r zlcC}ryM+6}xF0o!!%%vBXH5)y;n&eCgqq*CUu^U6CaC#vqjAXwsPbG78A8(QjG-4Q zzBR_s123R`w!yvVH$siKm5?DIJ>M8gpu!az!^lj|RiL*E()H6jjbR6*3#NySVH;F@ z8z56?y5AVqL&dkw7}mglMz0OZ?!}NPG`+|e7DDMSFop*BQ}iZ7p#TZH6?l^nfvJf=X|rG4w;_qZiV&(rb*N$NbY>#?S^;E{mb^ z(*PC!e8|+BE;oh}7?-CpV3U2 ztbvMeF?=iTi;Q6bRD5Y;sD=B`D}=IpHe||Ar;K4Hl>Q83mayxrxEQ1#vbm9N?EpK|}1Q0YyDs`n|z zkO!6CWMeq?daL&%@JHy6!f(M5sC*7X)&F*5*aj7Tt1&df=g?aKzX|6(Fmxceq|?}rr0RqLFq;Xk4`IL-D&HbCu* ztbyN#9qzu!-RHaeOn0B`?jz^f^N`!&vxM6Scfx+C_(!K&{JWvz-v$-`W_Ry*_bzu| z;O-^vJ{A5G`iIZ8_;*6ZKL`h4ud@XnK^|psAnt|Vg`1)3eZaV6qstpyUJX@VX?JgM z_xVuuQ3#pR(*?$m4^!Un`3rC>z4;#ZiDE)0v z`h$?AL3*<>Y=Y9?XbkJ&SJCT$(r<*)Uu+Buq4XCRLnV~{?$=s*?tm0kde|7YL+R_| z7%&V%)%SYm0;qbZg$h?`4D+GFl^a7o96;~L*~Wb5k+V!Lhl-~FvcyQ|8^dgSLkU#>nBiRf8f!OcsPUu_ zGDW8gjA6FBkDbBuuDBmHh67OgyC6eCdZ#fALFI2FWXei!Fou38JNk^F7e0^PVko;8 zK!$>J+8An~^ec^FGGxk0N5(KV+3Y?52M9mx+zhpU+yiAt8)S+|w-`esRJ@CgVF6UX zDS@&hAIgr|#xN5~e}*ya&b9pRG6sEETH&@pg&Q=60jO}BjA0REs7fz1h6PaNR|y%S z(({d>1S(viF>Ie?`Pd2>g3?=zfp6W!dYg@5Jyd*MkRd4DVGJ$ipKdgUau~NisCJca z471HYoic`F7(v%fj~T;JNEb>UF$SJ>j%ey>&Mu09YmOHiiNyyHk*=NY6Be8Ib?d(~V&?vT=DAl>RWJ zDAU`GVF*fpn=!11kE6F5#_a`C1nCxIXoS*VYz!%=ah$#z&vUf>Sf*}bc|8#oVqyM+ zs;|jW!?)BACPzn|(bH-_lcQ@drTmFF`PWLJypDwD?>Co9`6Ji6tm{R|H@kds%H)+U zUru2vzGE_oe^XuFL!;Ecr)d=OUqhwq-)|W#B@fa`_3tN%OefR7D;cEapLTgSgNoz> zQ2(~Me3-#P|IVgBi(KB}@wd6$DZtojhzRTk; zcKL%I|J5#E=<#3c@E8^Z@9hlU4FOQd!x%=QU51=%M}*>YJN*T;_`bvKks$@|8n~~T>gRU=e^a!|F`Go zUibfd*FWs#{|)#5Z;M^P%jS>h`pGe0RG2tsY;W z%YVwENBWfyS@=mF|L5KRi{4+p;qpUXpWku$5wFilzqjyz>*aHy%XfQul)8MU=Rdf7 zON#U-aZk?Wo7~eAPovA9@br(kz1rte z{xAAZi|-4bevQj5UVckmZu0c+a=FUW>v#E2JiTwY{B|$D5tsP}Yiw`V4ogqhd$Par zpG@BC<#qOdnY_x&_suS^cKfSc{*c?>=JLnf{s&xs(8q_qn=QUBx98(t9_M&_`>e~4 zd3t~E@>e{)e{p%Mr}rzDzvbyo(t?kF-}muz+xtyk=jC^i``_o~SLyP*saxfLYm4bO zrK~=h-T(bwp7*)@KDYltmp{m2SmCGNX5q)Y{C2qiXFNZnE^qYwoPE&rKkxaO?ee?a z-miN3rQP0VTrP0?{^;@?w{O~*#iw0e9k{+a)-;!uAfeseXCv8b&=|;q{H;Db$dSL{`FqJUvc>bFTZcP ztbKZw?>?8;dinj<e}m^I4y$dU-wU z@(i_87tNkK+`efpfAm5tkMg_B|6aHEGWRd{`mJ`k)a`F|`C*s4 zef==t`B~%g1ulQk^{09M{?g@hJ%3NQyv6hP1DC(*`TMoYmwNlt;ZXfcdw$<^*yMM4 zeoI__o6^r=e0KeFRlmsP_n7{FC_HkH%Qt%YEb#EUU#R+SarpwzZ?DV0PnrKCF8@Ez z&yz0y#@o}gF86uE-n?m-)_SY+vs~ zW{>W3DZK~W|6DJxFSz{XvrT{K%ceig?SI_;b)Q$^pKw|La~J``!NuPwx*df7R1_{ePH#+S8lw^1D2}CYN;` zF8e>~@^3tU-*EZ=dH?=5mxnyR$6Vg;;U9AQzwY)={*9%7p7+0!zcu+YZvQ#%|JrlB zeE-e-Kjry(z59RC^Hbn*f#>IXm*1A;$K_paPrJ)k5v|H^_di(tbuJIO{6o+09j^a# z&+p3Ln*K-6Bs}f6_GOc=&ojB)<=?q~fy?K+{{okvIN#FWyxqbd^z~ogPLr?j@;v7y zlh5|@yTawop1(U?uJZQ!5tnO|@^|?iZy-JD^T#fqGW~h~ZR!8J zmw%1R2fX~>@A7>YoBlm6uXFo8>+&qO?_XS=eUa(^!R2pYo9d&)>-&J)yX%;xKgaW* z>}S1M_A%xp>*>p6U)FfiL;0Rdd<%R&()||6Tko{^9($e1Q=T$;36Ou~Hk0R5f0Czs z-sH*HCwa#vljmMw^3W$u{>W=hp8Xks<41=r{SHDJE~&X!7@f!lzt+!0p-W@|WGe-0l4}WhMPKm;avmTXKu% z?{dmk^4`C&`2XPkV_z_N4gFXC8(jY>`m5v;m*2y0$?HA-SD1e!@AC3Ux&237{{hec z9xw0TxjfnZ|J=(z<>fcm(>v_t{XY7q;&1WtxX07q>E(5e$9K%r|M%CMeu3xb4_=>X zm;cS{Z-$3I)7w++1D5}vy~gwB`ns>K^oLx2EB#&a4ln=TxxM>7XW_NaE&n_(pTG3- z?Qr|lY~?@d{@?WU_6}M2`=*=!*gu%u==C|^{!?Awe0fI8)8Dz!Tt4Cb;n>Y4=ej+^ zj05_oWvJ30d21|2*Liw-{?6oYdi`zp`qKS2>F0mZ{O5T5+g+aI{=*NMzwR4If8E0- z*L!;{f6(OBUSB)izuVhmqsRAE_n$go`rkUw;?p5y{ri#kx1F0!{+!#tQOcbojIx4$Xt zOuos}Tj=pU>g{p#TJyi(+mmi~>YvV0sQktTP5z+5PlWjl)SB?clQs0&3f zx(JAdNVt9G=guf1LJ%HAH@<~P;CSwtb7zJ(f6O`a@)C%?MV1N1py)ybk$@Xf(TEEX zT|5#wW2>ztcx{Q9fv>gww1pEEvgaeE{B@BIq5KPB<~ww!ls z8UOB_<(;h8-B-B%h{#`mjN6}+`TguUZoe%1;r&v2c+-wm-h{vFE;S>Fd`KYd8%|EKS;d?oXJN!nkQe7h;_ zkH~(w`(4&AC7+&`{r!2_&u_~39~OV^i@!Id|G$63{U4V3J@G2HAC>)gev{i@kodm+ zbJ3T0eR9R^&&YcI`VO~$D)W8nF1Nq=L0<3sBW`~{=J()dxqS)#KsxAuUw7?;YyTJ4 zGu3|+?5FKVz@M~@|L!Dh{|n-ow*TVV?}PPC<^O-_t;%a`B7d6?QiE3uB1ROf}#SMc}1%2;4_dss)N+14mQT`rGRa*f%= zX}isND)>_hA1zTotdd$nSuZGgXk)O&-Bro85KSO8_MiqA)Lu4P^{HZ4wd>YU;})xW z4XLcKs&uu5O1O7&aaQVH=Zm(}is&?5Dgy>%#L|aULlNreaWEG96BdCV5@&PY!wj{^ zl9}k~K%JvSU)qQAg8D(e=G!yi=N~wCDC=}I2qp%iSBs=S~gwm2&wR=E>RVP<%35Agdgu^U(&=)P5%hR$vKndUu z3x=~>T)~o)u{~`|s+VkQJyfVsJx_(POqv&Rbx373`ydvFJ$S-i#O=emqVxeWvpQmS zU`asOIJ*w2r<-?Z4MQiz$E8S^4rZm%kNYdAnhw?Gt|}}E+SkC^jqHjg8Kr((vM8>; z%sD5~k2nRhq_x7GiN$K`80?>0Z0g0zQ89Gur3jEPZ}a}!h3`!j(HsdC+8hIQ(4g*F zpA4RYu_?{y6oHzCP|FUs7E~JJDDvKFq4b^*q{jyhEGHHQ)I~_6=R`1#6JgvON|P{p+zphKUO^@QY-O_CVL znNW0Nj(6+&R?{UK;O*hKuc34xFFyrRb|n@C%itI}Go09zn-89Rp zeg@(fYbauIPKq?`L@($igzK2f(GS^!`M`Jy4hm?CKmkX*B3p7KwI_FHU%)#n$>|cR z91q*z5uhOJ;0SyV42md!2PNp1q#smJt#*C?Fc9!4sw;T7RBH%tIxBYmdJ*0MQ0f$K z5-0%+OVb_ce^VP^e6=`Y!Pwlkl9;f~p|60xW4y7nW?!nyF)Zfei#`nCEtZeGKfo4U zKilY2jdRM9pEnH*+%y;)eSPF+$OCv=(Bmc-q3hZC+ZWU6Sys2J_2#TB@fN9JC#-Ij zSjLnc;uVL*g?1WISu!}5a-JOOv3M$C{o(Qe>LqRa13a8pv4z&GwcW!dOU-n|^vOXn zWe4K}La4L{`EpflHkViuSKUuv0Psm?0y;kNx!>-Py~1m9(UjdDSAN;8Ofz2ReEk_O z*SV+hI`^DB%?9Yu*M;naA*+o<5wDSCP>}N1XS{q&md&+Ynn34z+zqkyCBD+=nNF`h zEO2j~@k5yQJM6Vgz~_Fu;>Bi{ts6?=sMTqJySb3F`4U)Em9p(6R7hq*K1!H~3!To8 zG~p!@;5vssQ3d?K&CtSjGg59h6kKlhkoURx+2**<^eJF;x6(tz450w6ByWmbNLz?! zz{^y3$K={bd_q%pUpPUU|NP#xVPZadUh>h?n2(;5d>o)dUl;u3gQ0GY@cYHO#Hbnd@FR8ffTBQ`*V%zB;jHiv1vyFg5j-p` zP?F`j8jx@o<$5v4+p;=!t1aA*i4n{w`njwpN={pWc~>EE`y8sp0xp#@SHMZfw+LQK z`Ka-iB?}8*Ub$BCiIqQhmZ!>FqQJCCdf`Z8tsAO@jFc>s$exZ|B6lMwyg$pGOg{hK; z!bC|!VXUN~Vx(j+Xs9SmZZJW?lT;SZK03EjDL;AnEkysHiS&%;o9MUz3p)gg_P?#ubD2$af zRE(4i1`QR3$qlB+`@B1>ct8?G?Jz-3PZ472{ zb_*n>SFcMBWafb0@uBRqrsT6$Pr0@U^XxOuZGt13$% zd*1SWkNoP^i8yiM#EI=h#EG~!{`BS-exIVKX*^4K7V&VD$T|R=5^#s$|8qR+1ScBO z!S&%PCHnAD;HFQ%IaW_(e^z{tOe&{Wc78IYPNq@H)Jo0Dii(yYU>Gc;X|+j42e)kISX9f760P6yLp8y{f;2#R`TLS!n0FTZL`Mq9%Mgg7`U|)d0 zKZi2;AVvL!0KX@|>G>i4RRYuq&=0ur?%k}eInAQn+30sg!ITLS!m03Q?JI?1P>qCPFaFA4B(1^CYb zT$&xy(E_vxa7}b6Xhb@4wS3fN$!^m$cb_d z@spD$VH3-X1Wc4m2$&eFu}`SRWV*F#sx*NX*h%!o+@uCF#7@ZZcEG{BUM6HhrUixv z)CNK)G?O8AvUCSG6d~4x8WBP!OLuTvY1G>j%1*%Umu@FuLJ5rm_e(bl*)QE#$N?Pp zmmP^SETTP4WGCQYUM~|eS-Od3*HzKFwPblMlWLB&X&wvITCAAa5p5j1R&EuG6M|CR zG5xk3p&TovCJ;l;1{6}Y(O9d->ao%!2^y(-E;cEpMsAX5z#brUGq+C$QX-99Ked)k z6|1TG9tj(%Vw%_6`|w1fNhKyEJ}HQ#zLsmOrCZHbeQ#Ne0;{pc-qLHJ5>Te8awAt6 z8wL21Z8Yn-a%QbrStI4Ux9~dkTr;&3cXIH-5%(8wqF!7}*He3iC+J)`UD;DgLv(I$ zeh3jTRbId_oFsbkX$K^kF-r!+?W|P6+Mfn%R+%dzm-t6I&e6lUf{)-d`O+ zPi%1`{G<}!4%=Vi!+u2yW?xI)3EJO?cEa{InVqm*vjtL)J3&Mf#9Ga41^v3mxA9yu zRc_|exxF1`cbs^vkxQ&4DrKmPSgyQR&F>~YK-KIf$~79TRDJhcV85&a)qd5#o7n+f zaW_#ZxnHU8rYJYo5-HS4vsc~I?RV2n8cz05wBq?xqWR;p*VrLj`^hR|6ywL0NIO={ zB~iz_JHu`v(RcO_2m%S(?m;aRK?k->gdNy2Np~2Z$BxxDf?j5f+7XEmp{^%pO5pMG zO+g@fnWi96{Me=-(Cw-Z*i6U|_8pmg$Go$$ZQp@uXOewKrq-&4^k>DS{WTt_@O+;9 z!9U)_GLbhn!F)nt$xXeTI94c%_mh7Uek(ePT1OaxFemU2%p3e~4U-YfuC{+`Ykor* z>+8Kg5`WL{+{nK+R0Jb0HHpWjb|?ePG!uVoYspwMwiC3r#xZ_o$4}y~!aI25(7^V) zfLPk^`n?uDVpto6khD$`@0%#<0f5!FP}CzRG%VFAH^GnnNH}@^CBOU0k2RPq&K14E z>$ey!dd6?yvCCqI#i9@7^?D|m$}k-Z%VaE8#$n`?WmV3j?N=O3#iZBQOg@KF$1)DR zgHv|(ea6aWoI#d}_?N{@LFI6G4IQo%;esBI&Ctnu;__}bQFQwKoFU<0D<(!3Ffd(* zKVZ@|B4KMkA@5{@reHs*XN}8ZPmkq1ekNt?&|OELQ91ISuG8;PIk{{MxZV(F*~b0f zCj%>Yu#AcA4fD%n3?|msVp)dCF>(vTI@~c^-^)5>nRZqdmq;xowJqSZ`&(>lS={NU z!hya+6>@rgO{*#B@-*@anKo=SSuIkw7PKXl4SOW5&lzn@T^Fs@dgf%y=}5$jIc2Yv z>n)385l!C{qpKZ_H=T?n&2e2IY6}LdrJ_S)v3pC#64N)=Tx^BYvt>V%Bz0i+C=JGp zCr}R2nPsunP+;A?wmoGJMB8R%p_goHoaIg@o@DM;w3g8x4yb3omLq#xSBJEXq@m+6IvA9FTH9F`>oXCHtrE5L^RxkNl8bqmPBdfb zG7c9VDLX?pYk*0IGd^q6+D&!K%3L)gDYTXSa?7it+bZ?4xT#FiZhcEBla~T|wX>Ym zd8m7Y^YUe^o<_Qq||o0dVMdE)77d;pQF7jZt3%7ZM73{6&N;b z(>fXr9i8s$(|UueX<^>-mSr*DfecP=LZ_nmuwj=o=vUlcOAtM7#b$^Iz0O^)B<}ZP z*nZ=R@;-x8?~S-&9A6f52HX7>tSjEQ!Wn$`8#sgFem$$dPeE%8469V@bP5HhRvMPY z%VJA6UiX%438tTDT5Im4-(zQ#zEF>iL`)HDun;knV-lmr9aA+`k&HBBW4OA}mME!N zjXb5{Ov~b2*3fN6Eo!By3?0+UgrepPf#>QqcwQM2pa(g@+lV>CjPotyv@Vd-o=vZCQ zVO|HLMS&45rq4Pof)?`!=uX$nF|na8bodR(M%-lVB^1tv#po?26rPMX;K+DrL&uy= zIH7I*j*iQ3p`i(7jyyw$fOX_~TyGl({40~ekY_w28T6rUJ0dqWVkTWb$+1xf>)55w z(7Oa}&U6fBhK5$-(vD!WDA#*cu|!^D4*3*Pi%HW;y9=g5*zc)(eKMUqlM97xK7T8~ zEQ{rOhgT}8wCTJz8TQ6>xk_FiQzV?hgxqG!Xw*z1M{ClOd?reFGSSMgG`+N+Wh@IRt4>0 zRFY&|WaJsfVG8IS9(~Mi?1!t(R!$Z2IJNeoOOZ@wWm!kJt8Vr)_O_o^IQ&7I+y@Ra zd7ZZR74@97RPhnm=%R2Ps& zICDE$3rFIXO2*&obb3{_G?3;x>T+dlwt)VE7FG#(I8TN#IJMo7JRGr_i`AaHk&N2Y z+DyEq(n>rrZ_=r68tq|4OmB@ws#cfE!$mAzvvgUk&PjbvqbzBx%WXM_wVv$Ag8fJZ zIjpcfyT2*z?8@b26)~oaCu;>e2dxmdZEFSY|C3sQWnYcplem0X3G@*sv(TWb1?Kt%e;|;4~>TW_O_1En!f6HQ)8fu!B zs_1I;i$Tl-b$O4guh--wy?|Yz%ICDQZpK-SGcs=`kZ=X1WnIwj_2!EWQ$HAX=R$d9 zvQv@x%@w67>9Ck$(2h)DG#k)67^Y(;TG&gwST&{$jMCcuEgpn$0hx!wi2)vpy?;-c_M?B zpRNAO^t?%rKJDRHkHjj86xUENcvW+YWX0Di4NrOH*5K+b12K0oo zSdo|$Hg}=>lV}NwYGBcs$2yX%Veg0g9{}GXz#peWxGb4jlqB0a1mm2O%@oj|awc7e zW*JYw2%Kh8A3nI%nfy$6G_o6v6Z-Jj%)-!d7c15?6D*1EKY*(e}SZI}^pG_vr88fZYL<^Ff zDp52W`!z==P%C2%rJ~u6(a|(i$`*U46=WoSO|hC$_a&*WEuz&cZ61~`8xxwEEnp~^ z&6q5?qi$WSsLXe2d5N~XERHzbrn0uB)|gmbQxY>c>MFNHmMK{>&bZ9(4@#urd@-l$ zbX=ZRJKaJ1w6ehjL)*)AAyF#Zm&IOgq%by2C$q|2M?+Hk4Rs0UhxcFACrvblIK zAu-5u-5^6}OJ#?m;^*9Pl|7+rm9=$e18Yf}(ScI(U$-2?l>4Yjw;2>&gT9S3EJvs;1 z*tQN}mIwR5k6AZjewyI*Emn=5v3WIb9at8_KEQb*XgQO56XPQD6Q<>s1>_7HC|DZB zhCZDvCgeGt(qlG9Qr2a$ui;f1k{NR|naBk!DvMffRXZvrNrX=NrJ9&T>r*>|4t> z6Y16+x+HDMcO7y~$Z2aR8=NN_WjzJhH>&wkx*<=*l@)hU8PWN5rIf!bEw+;dZ^Y2b zsAbl4S)E`cH8bW$k)+=&2{f`6f4NjuNu$j|8vQ~V@cZnn)95s(8aaP7Wmd?XiEhM{ zH2X>^oiicLq;pAcj5gX``gEx4EgEZ#MXBkd{V^VWbXly4%1e3^=X7NAo`i&rB$DMK zU37=@NzSGY(ltHu5lnTm0X7j*WumrzP?OS0xN7i~taZIU=3l?qWweY=#nLKHg_SC; zX31h#=Sk{JDW;yv7iA_cn3WgpL0R0~q!aFDI-XT!rK*0g$^>J^YOU#WJL-mFRYiNt z&9W}llvuH5(F9$+c*QHR^yE#cIiL)+8MRhZP_Wf%N@wcW%z1ORS(Hk(U8AiNtt-ND zRnMie2HaXEkZ5|a*mcIWdV4Y2YX$TYmE3D!m}WK^$~3|fP15R8_G0mVAmNeA{Z*aS z$I;oGU8!J;g-|5mv?-EI1#6aQv6QPe^W}cfpU=n~-3IIHC8N1=$Yp1PTB+5O>H6Fi zd5=@J4C!1(uC2w}9(l)UDbv+5gXOZRTlO)oSievy!#0&}C-N3cLt>9Qb(yd++fBH# z>Ow;4ktTFHR^tg7{2jZ!5XnR(eOXKwjOd^j3;~V4qwhxaoFuEuM$|@ksbQm~MZMCc ziKV=@YNSTfb+^0QQ0Fw&Y%bN!sAFAq&+jNPby5zVl1<@f8rG6FD7C7XP}Ob-s`HF7 z<2Ch4CX=~bNz+`o9}Gov$$BDc4f&ldlOe35%d8@ml4Gvv4qFYzkgdWgY>JpM;j<^r zk-DN}H+9__v(BIO#B#b|qnGGLZ9Y|@(`IcRsWjrKmyGF-yP(B5(e|ezN?X(s3)I^w zL#n81hN60%((7~BGF`7a(KE=(P@R5HnRA)q>8jJ2VQt->EpBm!DlRK#NFi&K=@c8D zvc%KZbDe5Er;#**vXW1cVGZg)L=*Fr%B5T`rk4j5=6Dr_+mxotDo-QLxtg*tY;B3Y zFJ1M9?8UgdUyf$9E>Bh(%wXoK(mGXK-qrV8Y?_AEs;WzL$|&pCSFuEl8&z6uns)lV z(DM3}vRCh#tX@r+mOGT?Hm9_7T*Yd`qwRXS(Wc9n3AdH@Lbsg^=)zX3Efkf8oi=MK z)Ngiusbz6g)=v5p@<_VDv5eejXe$)$uDL7E$lA4LN9)UTUccNM^Z0zUr{#+|thrLs z6;_x0EWS}$~9!ZK)fw&aPqbzo^=)i z6@96pkhX0qJQ*p)`QpN(-i5h)2nrAxmlqxt2v3P9CNnyMWa{NP#4MiVp&|SxhuII)+Y@^SErA0rbNxd zR#l-=N~#ElB{#l*N{As+PrJiK*OaW(){WxZT0l>bj;);;QvB7#}k>*4;3x^?j@y)cs;x zD)(YYV9f1ci?b%MK+JR^s=BplaT-brc|Ge&8J*Tn)TeSdEqYm^AC7iaQfVs_))cV@ zQ#N|4ay*#r`0`DrpbckK$!I+3kE%a;+B2)YajVtn768f<>)fsxHK>hK8eR&oZfg+S@dB+OAfj5;I6b z@l?QBDVmb#7j9|FlS?LjX*ymnS95l&H>;^d>qT9-Rf{C6m?~BbNe7dzG&z@r)4G~L zO{S@hDYdbrHs}taRr3>mV%?oQroA$|Bj+TmgY4MqApigB>OekWbs!J@FSI)%w?520 zJrOIh<7eB%_KCR~%X%0Ns{uDdEH0jk9&VT?jLwQqQSN&c*jhJy|c6R~Aa`p4@5c6m;Qq##-_@%66ubj+tZX zO25?e_Cjs9hGmU5v~Fk9mzT6m-DET8>4Z#lv}lo6a#4S+)}+H3%rPSNxUHE zSue9j+sU{!>@=yFmd!6OU~S&?=sn70O>Zzob@igBo|6Yvg_t=PNw}RJL&2gcWgOZ_ z%S0DqQre!Y89a_uS{AFAvMPg#(Ylw#*+@HTvp$;drI&CjywRz0O z0;7~#rG`$=P;qH=@l;ovD95x3qdQzTF!>(rBxb+Tt>%1@khag2!o=+&`j61+u zoe^8MP^aZ~kIK<8kJbWg24lGKWmf~*U3HI|Hwrb+GS+T6tS?4To905is-Y7#w%#y> z?Y%goQ6~Cvm&%*88#2a*rfv@UbahEWu2U3SKB+BP%-Ma3XpQMdg1sVS2&BECw#`uq zWz7*=RgpAUe9EprTu@^+8181=cVKy5a3@7uKnN&9&Hk&!4$CQ$=Nm-7G_hr(CS!dQ3mA+;ttWIUxewzaA zp%eCY3bsN!Z;Kf?M#uQ$(Jo!GXziv(*Voe5Qo6b>*~^!j&7@Lel~rZlR=U@tKBmq{GRhiL^5s+5 zTc|2Kp=vg!T^9GVtw<*yY=zZUvx!dpxhAM+a7h~fWSe<}8uSlhx=A^+O zql>+kwbbCs`GPCowe|ZIzp=^2R1P`D%UoHLRn=j@swJ@n%C+rbtJZYk61PYPQC-(uTnhs5|5`n_G=VF4V8w%CV8Sw-m_7a@L}&R#SLW ztb&eanvI&Am1N`|I$;kKOFCJjn4seoy|U_#d3rL&%4Ovhiw9Gqvb+`4x9rhy$y-TT zvmLFB@po*6)%IKD_G0K%mr8*I}#(d0PS9*CWpzkBbu{olcjvR zn#8!@w<-%&CK2**d2Lzi=PbUArY&n~%-vqH-t7c*sfI`IwpNnvjI`pkW-%q`DV+8| zH6Ag{8gT4qU^`YMe-Ur~6<;jkviMxDvLq$)G$+gZIqYSM(ug-k$|Mb0HK z%0%gWp)YOLtS$@P_WF``HlC}R%b`lE$9j}0DI@DytjQwVtcAN)nav>0HCtwH+?h~9 zv)Z+gL0VT=+nqADt=zt@+)!)KN^KpD>05lutcOZb!?ZAWGe zm-VR_Q;w7{*^XFLovup~Z+i`PuiTO7tGH6IY}e+!y;4zKRI9Y|xUa3Mw9?*`(Gu^u zqtN-qa3)f&w$x?}=q7(cW03W25s%3v#k$lJC`x5*PfPEvc{=4D-Skw#@{X#Rj8v13 zWUwUZ7wpY=EZza>_6%2MVx);I&_#3C$Xv5fHA_|cfzP^$f!(KE)wPP zIF(>hvCei*YD_z1dR@}h%(vxO@|qYU-Bj61op?TEX0wT4&84&?U>FLvoeI`cOvqX( zdBhtwaK$dHwsc+VRE85NN5)nP$+RvrQ;l}hMQzK?#af}LJ?zR9m9112+w+}lRFCO= zsP60aEP7|w9+AtKtR@?`7+AMaVOK;Ou8v+3Fx2gmWH@9`vMRMT(^F)kF*X&_pl`Oh zx}jW2SmQN)Nn>dhvSG7}wP|to0A~(rNi$1lYdxp0Z*iF-nzjzBdsbZyBpC%8#fry( za!}aw=3r83c3b6L+KHHT))I0V=$ckSXMK)R%Aiw+LQ+khQ>5LY4)$03#c-kAWwC~A z(-}+!6s%t5_R^kYuiBR+CAxmvkygu9gk-PL^w@qJh4-T#)J0670%)Bz~8n zY%hnH5K9gWU`Y`w)dP^4F&awVZl=Q|q%8@jZqkjOzQaVaYPYM|NYr!@I;S)BLIthP z+0W>e&LmESurO~anM^F}>RP&CEE~Jla!t`o7p!SZzLTaKa<1p53lVuw9f-+XsS1YA zh^|z}INQ{>IFH(1$5{kFt1jw-rb^dpSEhUBax|{Bt1_l`nU%%koHk)sN8B+k=gKC$ zjg(&3W^;yCFtcmpZt_6%WB2npH?Awk|8rJ%#e{ja0`qF^B&+|+Sl#nX zWZUW=9JBfxoQ+s0*h=b|9tLUFf>i|BOCR55Fc=x$E~;e+g+4PJ!h2@Fp>Hp%n&EQQ zn=Aw(c2?I?xqC3|z`E#A)6TrIq79b9MTNm1?VDmoRu@)UHLT5UNM&qYl@pS?Sh;u)q=WA zDaMx4bTn*M_G-SaHN{EXmWGTqrEr`^C(ow4utP|>XdQ1IIPD&14qHw-#v#EzH(L!> zoHe?Z52$2pS5*(l*>J)b54SBUhhOJ+2C`vc2*;e3raM02be!4izam@HHuk-CyvEYuOLb0 z%rbjc8`0(L#gNBmi+7}fa3tS_9l~yRM-$~-rQNk87_VN+=6g}EE~5x^{AQ=gS(4N{ z^;%4(YUf%`myu0mdxfynRc{n%xxuV)dLcuxqYByGm3ky^;M9p^(34?{x=K^0Fej~* zj5in7cMWxi#;MmzQ*M<^R?62TEjyRD+sxXi8`C$fMVTs?t>t>f-rx$BPS|F$G};!{ z?CHs438}MVw(C7Eo4S;4;Y^aZtC9zmfo4mUwA=HXDvp_X*Tw2Jwtx~=#Fir*jylv* zogxxf$!t=qGL}ut{9S9&9|||ieXg!+#0-(7vnTi2B2slU$2p1RU(#q+8Cwn~t3olR z)v$zY5ks$|bG(wX6_Zul-Z}Qmb+fZlDlUM8ZrDJ50{5HKs4MQe+#=f-B}|$3sjzgbj|qKH91#xqLK|cUfyi zMwv1&O0!nl(HOOgx=P>5q*#O2o-ue0dAmCY!%01$GRxAfxFI6R(m0e=RGFi!RjuvC z{o%An70^|r9vg$hOLVis8nW4>H^7%4tMYE^&w_I&oSYF4WK(=lVhudL7DXgnNGi7Zqo>I#+Esr~z5A_3iT{2*fBqh1BEYo4J7-%}nF>hIC!HFo3x|zy& zBh?&^@?vI~kZIJ;Qb5uw^+cSj%L)Ck2p)JfW}tHxP#`b z-C#Ea+WL~KZ1Xpjv8uEk1qZfkb*5yds98}BseMe_#CfVkT?0o0Thg}Q=#~`q-BzL0 z@3J&kuXBlZrEVy|98=On^?GkRgbj{pBdU(1%<`yK#>QISyj-R&cyQv z>$Iva=l5%LPFkA}R1{giTjdBw^!ip_DuIb7W$4KKZDdAax5j%Kw>lh4sO??olH0Y6Nte_m z=s?xgv&))}wlSshH#@W~U-Sf%jjYV!R`+t5NJYm*S{+P};$~wogp+(Dx79GY(YBPmW`s6Mg2h-l zuPT-l{#eEA3mRn-XUN@i`E#9A+hWk0Y#m>>T`c63X^z>wbvt<=!WoxW;oAi-;QIvR z+{Bmyx-;voPJ%Ya89*9_ic{f~f0Ktz5EfW*BD8E(V* zV&eW5-WSb)0dW)A{z9Nxp>g&YaR{FU@F@y>NPd4uhPYQgL;PY*P&v(H` zA@CvXCSWIjjce>fDcdZ`o9X*M1|-NeDTJ48LIBAi`E@a(}?6w)V(06m;^Zw@9NwiR_KBQ$u@0wrgikz)0N5%t#BH z5VBn(dzc9llNk7k@q5MJgV2t?4tiExEhHK;+3``TYVuqDsDhLCR?1Bt`upi8(`^BY^zy{fpsOvxeS%-@hR7KaMaj z8F0sbq`pSKwY73_t8TeIGo=7*~jv}0h_ZmD0{Z4|b&T})cW+r#q60=qSe`N zI9^zB|Je&$)tP}}V|ty+Qr&m0imwh`Q>(LA9WUG^gx`a3QPz6r)Y*lu=;FfJ>Gi3L zqDwRKtsB?2r~$P)f0bHyyl~C~ZnXt&W^ibOS|RC(E}cIsx@gHxU%DlG2Y2l3%wT4H z_VT$ej!QJ;wRPjS#yC;ioJ8O>9_!tgX9m;fr!I&dnn6ycE{PuAy76lhV$Kdo%-O;0 z`kav7h0AB2Ke2e``I)7ogCpk;Us!(V$oiE{>dImM|1$YMIEqrB`J8|33@MpogSR|$ zbp2fR(BRPeQRHKR6T>CG_#SrZ8ntq4@W3;N9$k3+~p4>)i@ulOf4om0L8&i)S zzDQmF^d`ysFprS&&6-tBwX)8E>NDAj`8v@U)s9y?|A&) z^2km|_va5x*Rv;G3!m<9@ablF{;xy2qFpulZziUD--LAU-Vm*$hoK%Rz6Tu}+;N~J zOWTr+*E?yw#|FpNj|;8$eU}#p3+EU2v`_IMwXulyIX9R?%OUM^7Oq*+hQ8)_;p2Q8 z5)XVEbC1s5GxgZqrQ_YH3$vGIWYqa%MhYeQ{7dtE@0}lOhvLDTP^)tnXUFpU#BikU!txXHwop` z)v5Kl!JGMT3ME2ayB)24<+SMT>4#5swr(_EqE1g=8pNj8&*e~F*BsBE<6HII;BIKU zbGhlk*PkW4XN2B9H@Jmt-J(bYr`6HY@t zygZRp1|>~O=RIdd>u0ia7sc75+``$(+&w%k)xB%=o~y$YmR9c)TqjoV5L~yco)BEO ztsW6vcVg5S#+V+C8iKs58#C)mG&Pvp9y=&OW{Mv>{=<(Z<$f70pX8px*g>I9&yB{8 zi|>ie59Zeww##%_n!9uJahhnR`GHEv&HU!8mu@G|>eRKV713aMgZNIuHv`}7hU0~g z2{G$ea5r>2r57B~24N*d?n;*=9J3j(GOkJPZ9G7Zmd?Mr8f($L| zDa7PUWOgvvm|9<;r!Ov?n#M>-I8fJBH^~S(g%NZXH9WO4h4!{Y`b}28I{gjkk!%w3 z5GZ=SSQDL{I*m4f@}sVw9E+LQ7~&UzUmC-Q1pE^4)EM3-;Ew|T{g-wmcq>}()asG1 z4Y{2_=--cp(j-(n&6nFKPd|fRF%6lQuSHj8P;ZOf_ptNVAR}LnD81*lXw)-L!)rvL zEX2@})b;;4#(nRIJ<6 zWcrflEa5fH&r4>7mPNGZPEY;I&4mF*y`^F6nttf3@J}I~vj$#zYS_N)XaO_ew{^q) zLlNJHMWltC9;P}Ey@Q-*=T`5zCR$lIy>;U)Kcr5RF?3wh%nx3Vo<4Jtx+^$?8x(0rXOHuGY<6|}Dxc@o>1(s-(ZkVrIL6EmrqF_^mGRa% zD#59Tc5AY?@Z6{_S|YRo$;XU*>S6u$k56yi`0fu#ex|O9pgmu|kvG!Nzf=}A3`zpY zC^I9J_)|RXJZO>k?GitXeoso7!svnglG)4(DYZFX%a2O?^5>>L^B0$?dr;PQEI;R7 z0z7=?h2KZJ${#)+;?EP8)hmQ}Aoj-cv1DkUCtDCDEXN}X> zw?tOs!iTnQeDDWH*AESjuPj#rk~!tckuM4^2$dy19!Cc5_HqM`q8Rs9Nkh13oM+QewXVc$2vc3$?73#$Z=YbgQUKQxtbE`uU?rOEEp}ur#DXyzKWUYS2t&_Y~478 zcqcYUoac@XW#5T2E6|_d>9=mofOhNIgJk=KeX>z2hX;q(4_#cuXefE=@cPy&^|jY+ z5R4^<(Y5=5O$GH)JS(e*zDeLapcM%`x4QT=fgi_;;;kzu9y^R$U#QM*oOl%2qlYgY zCK~jelXr% z8J5BNiwBqZE&FnHXq|coS_~!B|98+nE}l7c%ixyvGcUaH*s#{2v$B57fu{x-Bh~|# zFMo0CM(V}upPT;7;PTPI~I=(7uu*OGk?`v%fO zo`0k|l$6xdJX+?xgK43aEeWmc+UCLOEKNuUrHJw;HF)&$^)He#c5Kdk;G>uS5-SL3 z-Yd(`nGaLoY_RJ9VR7+zKb|VFVzi8 z4;?x$9?V=l3QBr&5%Y;N&#MHxFLeTUwdd8lEWg{E5gsOZCUADj9J`qR0uZZ4g>dE@(A z!!n$dyQO`(+jOQx8lx%7cX0E@XSarPtLbk}V+0!4oQs1+jGi+nU99ynl8{vm zwF2zAczf=bGZOtsU0>eh$103^GaFgs9M+<`UGuSDx{O)=fI7cmym{koTcXEAh;{Qu zdy6`a-j30D`Wj@$XG>3EW_Bh=JzuPnF%jc^PK0@y8Llh**f)h$*7U_M!+!>FAx35d z2#-({_~#8!#do$A=%ogL*UTfLtEpsnBV?q$-jMU z@ECgH{M9qhD+T++%^MHhgf-^Tn>T*#=AlQ=JpcBeMH@VPllz-Z3Oyw+8}377f^b3`*tZ4be?%&qy^b6-SnxMyl0I!|4o)~C;+wpL&J*Q6y= zU3zuqn?sjwb@u7eie-9mJLaFFtoUx^Y|5j@>I1%^9gx;i!g>;XFvk~Ry^L8tdhCo) z!@qnPeE2mJu|1OcFy^b@WS>8RKDLNi+0@fh&=BuMUq=gqmL(ADG#>j4Wd58RVyWDl z1Z)FX^irPo%r-VluvyWnXz=>0ThEHtr&iy>!|B!2Je*k_;%BjnCE;@d{y)EF>h(vz zMlg%3C;1TZ>H-fBtsdp!(yHp(*0WgSgFBJ$T=q4BBoAyzkm?TpE&+e{#%l!piEqxF zCKS_`j%Q(6gw}b}OGA6w0zpukm36Myf9Jsq~{(hqLozu8>+z5u@ms098yw@{z=z+Rr1qMrC4zM`QS z?-Rs-RiOJ*(7g`$0O+0s?vFu7{DhA9KZ{2Oe(x9P-wk>x!ao7}Uj^=6peKGpPyAJZ zE-&!?9O%lxrN{UZzaI~_sY^!CokjfP)6^4I;8@TRKjBCGT7)Oz$6aPmycvEa!ik@R z6aNEvq~Nnc!T?VR>CS@wF5qq(OPBa(@Q`$0I8J>&3qEB%JvF1`kR1>wqNPtDs*(xDxb#4%}BjPyB?Q_%Gu@YfODifJbpZ z+p7_84p0U7y`#hMZwT;1fY`SvC67{{r@-e!v(yt=;LaYU9wUCjm-tTzbboV%`usnj zO-#>GPkj3bMSbH4^%(IJI^zEd!v7xrV+g+r|CbR?{3M+Cui&{C={+jYsX+Hzz1{A0{;gQPW&XC_~m$TWTSKnbYws3 zjf-e!z}*Hq;wN;({}r4eA@W>U8kUC+bRPlkgG)Q*LHysxMiim@`XTD`e};6P1Kl@( zd+HGN81WN+#Q$Z1?$<&0-+(_Yrk?ms;64UA;wN;(Kfv=d;1?C>?*;vr5&j71SAkmr zJ@FHI;y;D(FTwxo2)_&d+YnCtB%JukU2qEU`#te6zqs@5i7UYUu6QTE#Q$j_95Oud zJMcd~7Eb(OJokXleFFR}&gwujmwpqF^ow@^z6$;a0apRPgEKEHfR_MCIO>CkcL{J# zfd7QeI}-kN0iu2I{s#r91-u)4J~B6i-^S)0kz-wePC%0G2?72SHdF~ea#BJ1-}uSr>Eh60Fcl5;n)2%n^Y{~JWW7G&v@fUg0J0^SXH3h)hhBzW$_b3dL6cpk>M zb_Ftu@DTSeAfLY@xU(o5!iV6+*jRld@C;@*UQ`Gnw(Lsxwb^hbdI21%d;GTkf#C-v7A`5Z9fVzAUaf$mfc;6+^kc&W132{M6eN}LO7Ipft;9f=CUlrm$ zg}P&fxM9dc3;cf%y7V6ew;FwJTA;ZEeV`EHUI2|*pm`E;n~(!!{7-?jMs9L`ZsdO5 z7)^1^eR|AY0RItvWGwDK0y)AzG3NdtQXJtQ9>f3lvABOX#?w9K{x4&0jHlat-ZkcS zj>*;=OY2=@X(h(+*)cr1-*Y6}XUAw>HI^<3AJLp0i~HZk@Gp+Z^Tn~aJBLBYNe2FO z(r}uyCxG0Gw*RK2gKi6(e7D!|B+u{+)DHX6`5qiw*+Iq{Wf{3q47alY%ZoO=?}_)1 z?w8yaS-8U`Rl~Po-VDCM5qbQT^ z#~Jb3;j=ACGY0vFIT({D)@;`KtCZGo8BuG`g-U$Sm~^AosHyM0;|?N`>$-6DP^BbX z(3B|=;;|GHt$H1|S*;DxyIM6VqA}{>Wp87MVQ<(Saa0<7MjE&?tI6Myw^IO+iSXTj z7t=v#(iDexCyh6cOeU=rW&~FH4!ToD}ZZjrAo4q z!`x+b-fZ&y(z40-52Zbf zVFY6MC-G0v?!4?)njaqu-A^%k^>OpXB@P$isL%4E5W;*TRJ%8$Tq7AECos znfgA~5SWAG@CMeAKoT+Bc*u|NBoC%Je5_%7cqaU=gAXaky+2|(`>V^hKQ1EsW{YQD zc=vs<%q;zg`xb0R*~^8sK4I~cKr!G`|Kt%DQizY4qfiS^^yB|C=a_{AkyLca=2 zG4|31ix(CiB4@dlU~4^!Qy51E3l|TcU%a$@;Z|7V{%GqMziUQ4|6At{!)ElVtH;&{ zFXG$atG8VPw~NOwz4sJ#{dYEDvmWsKn=erONs3zrAKJM6QR?)uOCtI43y04yV}A*; zuMJ~Ah}c8E$H7lTlhZC_Z*E55ejk69;2ghOe9NG+;ly4PwQ3b&--n&hAw6^L_D65M zc;wQNhp}5~oVzf4e(OeYYx&|lq?&zr1~}N*Hm1*GpXAc~!`Md>_5`A^0rS!d=RR&5 zyp`WSJq8Os*$Y~DipVK~Q3WMU5t|LMULM8H3rU&C``u?nE5|O1WXI1R9*`X_YV~%$ zJVe;_KYsQ0M~_`x>@HvO-MReGu`1aIy!_AS-hp!_FO2dui}Z$^oX>7Od&~N5gWIqx z^;uz0h*&N|kVJ%CDbacuR_3i6)E24#U&KkauX|C;Q+-ab=3$4MSk#VV=NOhSl;XlQ zoY%^d69!v1{vPMJsB1GMckARl#h|K0SwXdDtPQF3*u*t48Z>z(}oxenR5u4zbsdI^BBqIBIK$YG#ZoH%7IEd=6`94!oY@ z&j1a11$R*qnkkgU#u$ZR7X`h79qLPDcjTB+B$UOUj8Q+Zi+aTGcgHARy^BJ|^P_lv zl)W7KnF)KkbiIr%lK4^l$;1{3%x%_4ZcGx;bSLX-V1)%WjsH7VfrDoTeMGaP9&dw_*FU4 zo3?KJmmkgW?Q~{+VenfU&xzi+b>s3F)x}*@Gb`kD>F&OEag6$1 zW7Ig=k|X=&$B-A%-Gu+vjb9w2EsoLdNN^!L3yraLqdZ0#+C?ek3N#On(HM5o%<*#W z?gxf3>IZgF6OQBzkaCRT)w?KYp5N|%@ai$@xiRW#lL0p5*= z%zst^iM@@?GnIf^JVXZKeiI(BpbUT(0Z-g^JVgEgU<41LNdRW>5ZT@a_zpb8l>2Ld zm+%mt#6AAgJE_3TG?l27N|myc+)}OwVh)H_xmoY=7#A>Ns#4Fy%DH~5iF>$tv>oVq z3X^zT*NV$py_B#+vnZlm0fZge6(v>-;HGFkqR)@e1qy4-X3B*NCMxY*Ig#RnQY9=m znPjq_YBZ?f8q?XrVyKQ7vsAT$INQO2nWF+mUrDAwaEwZpJuOJX-v}I-d4Ou>nz%1J zfVVUotva7T0B>sgoKz;)#<#slb^|kSpiEARSPgKgc>{h4Rc)kN$x69bf{&pxsdB2$ zXM3FaeN?gnVQ~*usah#xVRqEcZ#EPV(N)8JBF@NZ24Gf3x5x?}x(FR{B2dK4>Q;@-8U)N9p$f(bh|NSM~FxEkA{Qj4uEO8{}iekKZSV z|L5@#{xl%rKL<$U`Yak3N&nq|X!j*KAhDN=VNWG%nXiN2Vc_OqPbGfBkNAIt$Y_$K zzY|fPCu-=arvX4kQU&50=!p%D*`+z zz!L&o65xUW0r-3n-TJpEV`3903Xkw1?Toa!7X+qV;RF2N13 zZNHuaO-aCi2{fMpA42~(GZgi6aO02v*~Z-Spc~-{9Jxuq7`cCC91r9OKNxeL8h4My zEsWtw9gpJv*D?HGjp2`v;s0z5zhkE1En>vL!`piJj=bI!^mYQ;js{2ieU&WhvcgFY-!^4;$wvMSZ6KXN~fU=V7RQ8 zhc?zdwpL!=Jr{LP$^*}0zj1Xa(n0umr2-@AxLs^$HidBuVpMy(ZKGqN^M=P*yqF?_ z=gNCcrNdNnG1b1{G0|aH+f$3fXuM^Ur;9b$h!KuAKa%nmYII08M2yQW*z`s=$T4xj zWlvI#W~DyfV$ihyMRq*3N~Y$`csq8y;{~gw_)`}tTPmU!vEx8>f6-H(&>fA4}EI+IW6AYA?GSj4i>L(Ee+3Bp13k| zA#R+8-Rv*6rm+qX;WYXz)&fs%&5Zf}>lRMrUwm(ldi~U35vj~yyteuMqwi#iO^Li$ zH?k?sT%BLPy7_%-9_zAsvOZgV?HKiIu8CGQ@fN|yVY9;NV7z$*N}irrdT)3KXZ#9mly{lG=%*#~|l@JTEa%&Axboyd71>nfhO- zawi9B#5jKO7MwCacK#UbH{RTPPt9LC79;MHcwgl=UL;4{Q8~r{H5>8=O6x_g2=b{ z-1Wub8vUC$cXIpOCR&XU>)DOn`Jwsze2J$X=I0xmyYurTVhr;$e@O{hKh4t)W&ILp zPY%AwQ_NpFULZNW7ALv#gYx1ShV0zLc@l( zeC-I%slSI^1f=jD+EJY9KZ4eK6k)?Q_By0{?&z>4UoDi%w@@luFOhm1N_;Dy&f$%5 zc@K@rE83t|PU2km9Xl46)5Kyz-mxU_6aF0XI*VR-o!YwbwU=hsuM|gi%%!UIddB4C-L6Tl>%^}{6AhKZ~uG>lz4xc ze|u#S@BEz0&f@Gab$#PS;@-OPFw!IX0v0Jyy_5aIH6qvMY1n@7Zq6`d2Hd{km)=57$O-JiQAiq&M#-I)J==1p5iz$eI#z{L8{yB69}K`c&L(iX_MYi@2k{)12bU(CG=d{xzzKYs4b`$<9q z2_b}=@GwGzn-Cy4YIASikc1?J=g=V`4-&{tLLMYgYom26I*h$MbS@A5p|uv!`h(Uw z(y=z{v{J!6P_PO`mo138Re?Fi8g_CvG-fOSD_C9;> zv(H+4uWfLrj29_c#!!2epjCRgYl^9`pAIWsjabV~Ox-DpJLp3r(H>l?E=HtW&XfpG zMEDH9Ey?hHU%rkcj@)xq1ZLYFe7$Z zuw<&HhqZGb-bYyJj$Q4F+|`cfKZ4ePx-huwBFLWMG~gNEj8=yyi`qcXxWN5c)W(gw z4v7@rd$EG-)A3{i#19z}mAcsryvCqZa zA9%P9?^U7MhkiE@S12@~86(sPE9r@N?*&2cj{V_ldk(qRILOX@Z;I$Ae>;wyh|sqxgQ3Ih%`abP zyy}bK>t|`R!I*&FhIP}KSdEP`DA3-nPF4m|K3Q1f77bM}gM@V+(2y zc0Tme=p_5BgNcU{4kuw(%q$0NdyW}L6OSbvKi)k3(CWfi*lF;N!VaQhvC{(YXx1ur zkKKKp7ACHqo{1D_o9;b9v+dUR85Wu}0~G3h76rRY9;-mESkcbWfjetB52)#nfmWY8 z({hErTHP(PZVKM<6L?eN1o5_8IYqkR_x#C}>Q|O1MZPf51_2@-vK3W*y1O0-QUQNq!CGvf|=o}RzG zPF+*vuzW%ee1|BhaoC>}X%88|PCBgKM=KTcSz0LAo0P%BeQZIW$~_j|Ehs`hi46CX zz+U(%WcahwwiTOL@9Qo`IW$3%IJ^tu?3=kG@^XY9iE8>`RTS-YzB|Wp*Z-L! zkD3X2sQoNCE8+Mrhd(i+^6d)=M;|Le>h3cAn~^)h#NMj6Fpk@6oqX?c=L+BRyyJUb z^$A12G!dWi{TUMKFD5xcPM5ma<6ib{dSJoNXuQ#V($v_FdnOF^4_^T`CIqb z!_4Qed+X{vscz!ljJ&E+5u_gf!ZR4XgBNsyg1a#~VU~ab;a1avdL?{8XLDy~cSDDX z$_)|9u&$=&P80m%bDxKxG-ub}f^8w{9~19xb^l?4R%o`qP=cz4J#D)h>h(KHI&UQ> z)s$gs6}AlQ8ZmW%vQ8KkOq2&=-$)p!d0N4`yAx_6N>8=9qLf3wKt242P>vHe0a8!C z8tdMF44s1w`#Q=IP>6N!#PNHKcswqyOMVfGRMI=J{{1P$M_^yX34|TN`gh`_C%#3} z1%vJ@SWUWFcjEXx@~uhx1cCu`*;!%x+U9IK#8n!X5$m2_78d-<0qLKt88dz*N8*39BSr1!CGU7U8-45@EdW!2MErZ^!c- zlr;CKZBNi}kIezdPCG^p>OKuLygvn+W~AkPH24@KO$yr4m<$I{ie&h$pl?E2{1?AH zy8C-|_uo?MNzgo^ySE@jOM6jAzfVWAQAhJXy8C(^&3;|@5gi|{Kh*eRZ-@JSt&Zkp z-TfKe{VW~*qdGp%>+bdTnLb^(er0b*%Qo1DJK!a>*LOuam*9#}p{FNSM`}HtP`@+A zYq@)S1I!|@S$ov+f&)|kuPuOg%gE9+>#a7F2J3F?-DVigcHkCDU87u26Aeuw`c?35 z8m^I+^~Q3r%<{$VQ%c5o7NF}*EW+SIE00)={>2ujyNfsFqH~WZ?gt|bEn129HFUIb zbLloMz+F6lE5=z8?}giLDO9_Re=ge^u|3t3Mfd4aUL^F2Vkb z>@``-%`0*+i_)#T?z)k^CJ_BeF{yp<0Q#A~-;rF9fQ}GDj<_%kiQnh3*F2h|rYHMn zt=NymJiYBTKI^W%?KLNnemRo#-->s<$aUhM8?C$k6?nu#_^aTd|LOUGhmRcjmTHTK z`r|Jt$|<0sCK;)^6K#S#;QsBo8euUJ35s0^IqtJvFVzS`WkxY=#UN zwoDR>aG8x9+#hK)L0kA^J--#7fq zHVVrT7Ft0+WQ64?JN9m?_N9##f8t9!7`i8{5r)n;+hDYR@DV&!Nb8Z7g4Uzl%Q>;* zt`~*e#6-5h}A3`7vD3OR2xpr!I+~nv92@$ zp2iaJRY}_uZEgw2>^0N9yniLyf9$rrCE$y5-1Vn1&GtrJR-lt|J@bb!=t+x(y^WSP zUZnz~_Kg-ehHS+X|hyJU4aiHg?4=0H9$V9c9ay`s%PCLf zd>0wggJG?VK1vU^*G6LO-+<>< zV|pic1As?*>u-W!#rSk2=v3b2Z%H0`mwzDquI$Ul*ccu76uhL_1K=wLJ;e!KF~$e( zWud*~!U*k2s3G`WR6WiGBB#*&X!tS>b;MkKVw(~E$YShe0=swH%mL>1&m(~jc$;%R z^9OwA+j*bkY)2Z}bPS-!+It7Rf<5!mT=-QB!usuT*CQiAr>W^f{~uwF(+0>tP4b_^ zwfSCY?H?ITk@kPYI`K%v7ze^3MYy0c!fF&_4}=HKK81GL7ya`YC zCVPN$q2ngBlbh^Mh#fQIuJ2xdXZQr9IOPnqFLLBvz94OP+>P`Ub|XPY`g#Do31z^W z5d5%R*X&g1gq1x3k@zDs{{EqF%T|VvDX`=3}%7c3ZL**_FYiFD!7(hb?P9>TVuN zC-Q)HnQ^HvFo#DbU5x%G+MG^@e9*d3-Q>2?YAsuD9SmCdp)HZU! zx$wjr!}i>TkNj%*NX5cO-yC+-AO?1#6McZNHl940ETwOEOYdzjQmu_wKb!oy|LlE# zZK`JqxtEIj%`<}Anu+v8`` zv2LT@nP_h>OvGDm5qR-!wZO5+9`ZhE`Q0+_==@{oD;T*Q7`b1FOn~=IdZ(OmIR0SV zp>fx=&)9C}ThMMW%Eup{F7}?5!fS0w;SB8dq8*-g`Ay>Ood7?b(;o?VXx#PZ;mO;; ztMB=?fra>P8^+k)*RG^1gMF~FT8CaTt8LXf^s7uYck9r=GTga6iXK3|cIQne*kVU2 zlv{G)Nfhf3-JV2ageTEy!V?|8EU-G^$TZ347w}KP>6Yc3^uGT4}$eTn8+pjVnTkH zsfby`B8PS8hqWjZdO7DsX3UG=sTDKkOli9wbA^p_hqHC)x|~IZ3a_YKFBZs|dJ|S5 zLH~o1%dQ+&pxe3IS`0l7R#ITTLT{*{?imeFDTr+kv*+Q9g?4Is)ebyXnG|@CD~fos zLBxe1vA2`{yjLd&U=0y)bCCT{T^D_%%(`p-4QrNfx3X)FpWy*T&fS}gsHDAxYedkhOr;#x4Q z4a<+PTQ47yoWt#Ep1JNk_xsJ$d%XhRA!Dv3Q{=hZPo610d2$R=%bDso&k))FllA?7 zbnMvZ)vv7($@As2uxlf+ZLd!hw z@|&l(H*7V}$SLw%>nG2Px!&c3=2+%A!*8D4L(O*x{V1z*pD}#@Pu_-R_{p=;ohSA< zVC8gdO$5AN#MbCfoH=~fdinM|$c8yYtUc!7v_tIEQSj2i{vCnSll1-itCAz1NhJDp zHu`mj-!cBq5w56YzmA5kLf@~a+uwPQVf2_E&HjzGp4Q7hG^_O!0bPtT=;_sS{pRRB z!mCdtZ;BkB@RMV)SB{=O{bL#KT}FT7Nca>v?(&o4n( ze23p0{f!?Br^xXeesYZV%F)x4e=Wnk%jj?P_~W(7dj~z>_}1zPMOUj=lw57>==PhV zzp>-lDRP|QC&xwZ92HZP7&Rh~#$xQCXQ4Q$zk3j4he6H@FjgE4KLovCQwY|EV!b@H zitt;3Sr2VqMFXLygB)Y7-PgDZ+IsmHl6$C~vxR??80#$7!EYJ@uLW18L>x6-GdiopCRZ&a}91<+#e0iqlY6s9ku!D z`g(O!v+2SL~+<7oP2T9?qC6{WC4i z%}#?UFx3DX9nZ;&0nOb_28XrDGIYhHKGiW-EU0s#wd9^YT4vR=^3*)T@I9i=s9*j_ zE1TZ)%HNA!Hb%$2@SzS(F>-nU`EX4smL+*{<;v!T3XQho>V=K6vLM&29F`haw&deJIXxN@oL4u(!MiH)>ej zJ00VMGWclUOh=1345Q4LYs+vn_9=*GE57@424*@wHe<|yN2j~3Hw}d1c}Am+gu)+J zD86~3VY@ED6H;EEg%+IKWK56!O(^zJDf_KMi)xj${Z>4;G-Xk+pjQUJB4`6Z+usyw z|0QaTd;{To%+O>R3^W*O*7F+^K926T7NU*=Qo}^+2uAA&L+c0=t>e18br|t1wAR5V zueOc_pjDbxIm6)dW;!fg%HUPdDzDGRSf#+;H~lw^@s%?Ka)up^%v1&!3Q6hP3+Dhf zhuNQ%Qt4%-mSm>m1@kEE{~?*e#<-c*#{O5}NXB>-1{-wy@ zjQlg4u_t04nf9o!1VIlggUhb#WmxQ-BUY+^KKYxxCselK<-CWw_0 z3HAg>BF?|juLi+sbPfgfJ+5=#Z_U1d6Ibz$;x|3N_``aObN_KT0w*wGRSMdN$;mqt zc1US-wK!WryWf`{@s4(HNe_01Z%J3)4xoQ5>@yC+*lI8b*k8euQderIV<*}$&HT_Sc%1=&|nGXb3ebrI1QaE1Zorhh=h z<2)sd-KYsbv(f$u#v#1T#F;BWuv2l5RBjT_6f>;aZ=ELi!s8b9P{rm4phwZCl#Qo@ zh_{DPNbcE3Wk|z#c~Cu9#jwhF&2WitT<+k4G=i2=Y3Ge-C-b4ypuvu9*tm@-VfGm2 z6nG0qI@=43zvO!)L*|o?8Vba-!|q3sA|O4P>%!wD4cEoyfnVEOICJM8|ZK-Al)>!+}n8>FT?ET{0D2PE+q&yM8g(!B zT4J9n&YBzXdTKg2mo%rqkJ+ee@hDGDLkz|*W$^w! zLt2Vs&e0^FQE%LpjFzbkbUKsJw&Uz6j@*_xM@w3G5@L#@5BK-Cq#Qf6Yt$8hQUtt? z6(Kk!CC)wvPeOr)JoFv)F7D_otQW$5;)~@@(&&Thj=z9i=e^S2QQRLb z>sh{}dnSCRXti5B;HkARpIU2z3^|COb2Rzb zY@D@kwq~wlecVXVdJd2Th0O9!`09&O^!QUoCjf zP5r+ZuE%_AYu_C7@m~yAoD3gGbCjCXFvj3?Ts#Zo>&a-d$*47hIW#?-=lzJc(`?kR zbuiQzUNaAVA<{&0414B6(VNv6 z_RKW2C-%qA>nL$FPa|tD2zp)3iT!npbN*8^z_+A1P4vrc*HezBp=V^IrlM!W$!CIH z|2n>GUGq;-mW)`^ng#7U!~10~s_vgIdQra6XhowJWnX76Vv6}9g()@Wc$DZxn3sxP zl+z!9UKER#P%L^;6nar4dQpVvMe&}R7^KwWAEh}`kIp@of;L+^#u{atHNm^9x)zbM zs8qJc3FFBXv|iML1U}Jiji=7MMNjUYWX_6YC4$hk&eQSDZ;P{B1o7T^hFgnB!BspfGRn38D^M`{d9Y(Stw2$OKN@ufU*nq| zo;tn!MjXHs4ifY6A$W5b7&fC1T*6&$D^}MEKe)dBBSu}0QO;G~{Y>>Aaj!Bt<<|w} zPbFo%f!~y>r->NN(*$NL3b?`31O7fMDX-{!QutDC7L@-7l+@brL{*PZic!~U_@d~; zoa39KG}#8tC&dBblY%RcHLnzm%9^76j(EmT<7)ou>$8N6__nqBUn0xtTm^w$| zzD|z5qpmNDeVq}Q|7ad4xc@VVrvXC?lPY#|(uT(Kl>^|*Vbql`Qpg>e(nCd%JyK9| zjj-^AP{9>w6MZ3kqpnwAA>b@e_1B@&bLJOhkHDOr`)Q3h37Pi6KzSCjHoInyht3Afqg5{&n*V9| zHhnv5)b+?P&esLUD7RmVSbHX{RI&CY?~Q*%3&Au<);Bo&?nrp&pf&?*y2G%hJ2DXC zF4t!Vz(;`*<8JRT+5q0Hv|hry-nQT)v!m9y-78sb_hM)FCxjVvec*Hd@Mz7okj=mTPpmhw!DuF1(OdQ4-6z&k|NYtEdGLA!4T9=7XvB4oIC(w<<5R%N#$LTI%>Dr0 zyo_Ub*9B>Qc)D_Qmz1wOU;N4GIdTNJ6-wv~{!dHJx>WJ%i_(pvPZTYof>^z1R67L4o z(Zk}&h1nNk4DWB^x4jXo9a1Ct4y4TValks~xwW}XTAqI|@_bcL_|^#fmb#)teRlVs zHMrZD>a$5}V+z{XqoefHq@ax*6&{yDpn>o_(NK86F|duHJnGY=&m+!g!g_f-vm8zzERSY_Oj}Z3<5j(kk@zvlwGg8ou`_!F1@~b8$}zB5~h``}?tKhZ2lo z#>|nyh`z@Zk&uTlEDc2DC-foMH-udtanOfM$3Bk{*H=&rfrzJ&lCfF&cN`;%808} zti0z5Hc{;u&M_j8$cy7ss;ZIC)_?G0_K+gNeu=7UCs}Fh2 z#O@sCMan@z$^BNU50%^cBgL0whCHEQ#5GOmW0>Ltk-}*T7iW_2%O+TSNt*hD@Ff|6 zZw<5fk_^F@WH7!YgYYFe;`)>LlGG%g2fuVJ<`LHi2o`Grv4E#S$ zKRV{R=&nB_=mL>it=~+{%J^-aI~1(bN-V@^ABdAh0v$I&4?W^KcU@724e;GQK0b{X z9j!YR6(7Mp@fsBf-|x6p*3ZFCN}cnPyn?FglERWaOLc*d|B?wY3p$rB=v2bPxj9Ih-{0&nsG@GQcUi`T6yHRZK5(`~$ptZV4NUUwh`^neezR((Y4 z;Pr)mffsaEHQ+JtX{eV8@+=xLs$&AZ8kXO@qZtnKO=KdDEe2gVgsf_4@2+na-e(Z9 z1_du@t!r*?YUr@366M!+)%u2!%(4Uip(PD*wpqa)Z0LuF8R1srW?I|YvKM%MgUVgS zc{(#|PpNKd(0j@;iF3nnlmP0i)1)@5`Uymg+uqQ?3RivYq@%N-Oto|sbn^sqxaY^g z2BvcQ0ZPv+zu8pZhPKKFW2^0|Ycln~!L+Fhf*?P12{_oni3q-eAqS?YYr_$3bzLny zK3e$V*}hjKMMLZqDJ>!;E8;Iop%qy_67-2{8d|-w z7KQ0>x5m2KR@4^SH3|l4MXJ3fZv5Yl1O6sfm-`XmpoI?fwdPh)LV2Ja>qVB1zNGb0 z>qXD;sa)18x{ex$e$>!PFHOp%w1T9*p&m`^bEj$TWVKYYJ9~2Q^8n=|6VDr!(%o8H zSJ%+qMc>=7iNSS5?r>|!f{kL zx_E|Q*wxl%5(oE5jcik>K&*9BHUaWA`UqeQ z;I9EqfMK^QShNNII)HtE*?it-IYF!%u>7z_}C!3d#AQOtJ$=E83QVV|NL zCIo}G1vDy4;8TGN{#L+H<%EC?Q-8;R9m?WUm;<#gu#Ft5&!fG zHUGD9#`M`0@B^{JlRxoeGX7JX8q0FuvEiKj>y3CMh3S^|GofbD>!4+pFSyaFc_gg*mh zco!h$vr2p>Ac|-U1*AOhVmm1DHvx&iDDmedenjFAN_?lp>m{Bm@mnRHB=H!)Jn$V{ zthS>!7OT(k*?8sLTL>Fi?0JsFdvP)UMH0TYNX7R^m?Gie&1(1?fNWn!0NK7a$nZM= z*}i51vVD!EtMng8_%lGZ(`NxU0NyLZt?8rG1fNt<6_`1Kz!-secF6Lhf$oy{uWVtf{*&c@%s`x2D(wzV#-GhK7faQQJ z?+~Wgq<;;N>7N8-x$gsHx$9;4Y6;DNjF%-%VBHAD3{GgeelfWm4mxknjNs z`v41(zDnZrB^;is=6`vva{ekB{PiT|+z`S(ovWNCj^AU%PvJ5^-a92M2BbV6rpWwK zl=COi;jhe6&YeQo$rPN01DxrJx8P#E)c~@*7w4$(jXBEs0j5K~Zy{`8j&hnf(-D7K z(mjzZ{E*r1N>%&7_>m zL6{kI#7RedA>ywC{{`X~0Z&6bamEu*!gUAu3??b(KLdXQ=uj8RCrQd_;`lvA{8hv= z|3!%ZIq;VeugOFF2rkOg3c5dle|M^Kt^;8^K}Vc?h;NX5PJquA;8i+4#M5w*&&Vw0 z{BM!&*WjZdY8eyfNBThcVb0nW1g3oQhvvquk2jU{1cV{Z+>yYlN;Pd`WMY%Xr zIZd2=h(C*Xw#(ZQ|2%MA-N1S|!n_WV9nmG9oe*y8#e+ADO(>?8r_({Z5zAD5&0sI8wHF=2-#j5GABmP>fqFj#kq$mD+T%2dT20D8#+RGB< z+y#XF40OctdyKdp7v=2$-H(x9!Oa+-5Y`Gh;-n+K1sC6oCP{xSMmhf-#D5#~V=<5? zMmbHK^u*u5Mfziax5Q9PxL9{_-@GXBzss zq$mC=F7menE(QOcpx=i0KZ3p$VU3_CPX5HxB;A#0<$O89s}?KghNBf_Fj_fHoOHyW z#YKMYpesf==AY-f5Y_@Z;-n+qi1<9kancii5f}L$09_`+9|4^mVf#TxoOHyCCEX&> z#UlK_K(_>83qePmbi{{4)qZ1Nshp$!`U-p&YyF1!hcX`DtLJ_X{C!xU#`#3n1mGknmQ(BIXk; z)CIPe02%+F#5Vz25uY8boWGQV@jMIj1%#P{mD9v2FL9j7dHz?xzlHcEz~MvrG;zig zH{r5?PbeVye;S1I0)c-Rq^A1_>3)weoayOKNBk~aq~9sw-vO>gI-c>#@LK^l0#A`p zk>OVYaXv1>-vT7vOAakOy0jX9q&}MU51~* z{H;#jf0%@K3;82GzrWCr#TlFY2HY)Wn4SiDneXGc{}U>be9Gqu9gn!*hx>P=JmK^4 z4v=ZThkN=qCw*i(zQg5x=yK@vBuzZ-=S%r(R$wk9`5(Z2nJjxgD(Frr^KE#bYvlb0 zxc{asV-^OiWO;uQ58@ul{{r~`0rd2P-H7kmZ_E1+@KE4uU4&m*3_r1;C(RoezxWJz zKa4V+mNfDBcK*MRli?2JlOyRtq9jV53qgAl@{{HW?yn$j8tC{fUM}y?;{F}-M0h{$ zk(Ho-5d0sPJYSfNxfAjrpHC6q1)ikiPxei5Z`XyF=_mURv5uaiiU@)`kB_ zmo`gx{}XV~=tFhkyHF2W_XhsE+0qU0R;AsL{+tooM%8 z($V}*7ygQlf3fabvGZI?!H-<*Kc%Xd{{^GTOH58)zN%OC%+tHkqY`i9lb#( z=ht+39o60cM91f8UB1n_v|rNE|BvpT_HFzZzarf|2O=%}9eud3KWpKeySZ_%mltZ) z%Qq~q?cLj99+1ww+dJCmuNpqN8|rp#6X8A{sk^pmG(2*{i=}F^n&2c|x=r`uLucAv z$$N2vh;XmHt+^A{VIF0xC2%|M7GBi_VOU5M?)-W72yjH;zp||jrt11;+|;$S!DPrgx^)*fTFr^Hc!=9N;pTi>Q$tHT?AGq8 zx{)V%Jn7nw&W3Hm6TGi{U2W~)B;CV{NFueJ4Rtm|hyb+++dKhuldhs(0`g(XQmby| zC&cQ!&GSisSQsZgCD|oB&|@8fIQ1793#jpNHy{z}QxdqZ_f(0Sa1R#*5OIPA_H?ZANegvtf64Lu*~bwzfu38gLeM<>hRDGVlAcIy|XGY3X^NLxVJLt1Zk^cW9&NnjJbv z`#eRNnTpgHYPNA1iLN`fc5bVKHCi9cW~L9+Y7ezZPAUT}5M>hd;-qHpDEH%0j|*_4 za+wQixl5d~Eu|4`CdO$Q$=v;%F+idG1nc?}P3YQq?Ngzix|`~N0=Mj}L5?KdTs)u` z++PF*^GmD?)QTr^pfK)Nj+Tc;p*>0Dgdwk?Ue8*i@!|5hNWBkS;ArR*vP%Z|IdEIe zPrQM8np^7YYCCkNZQF3~7D$e4bxk1CHNWm=T>>{T8n|35gK=Fw@gn4i`YpgpaGt(R-y0_3|349T ziSE<49~%$DO8C$L<~+@P`gWAvg|+ZJEtNZr)mX)S`gWB4V`m6XWXAcs!V@1)-wwt} zvR@Ir!UeD24ToWcw|4q=6!yu4oWh;~?8FH^NDnzYI{^D~YI)Dow!+oRKN<#Cv6?-~{%s#A<_jrubW%L&BgFx?6p`XAf;2&^=4uzY;=F3e z3Hf#k`L$HpkVTJjd3JaMk@seq?K=?O7EwhL6h7!$kp%kY=d2<@EOoF#@&GQD9PP` zTxl=7Qx3j}Q$u({^`^0|RPY&mZa6^Z`S-%ljkYUf+*KrYg?#bTr2i3pRP|630q^|m zhx9aJgx4i~Ka8|jIs@S!Js$gF3_0wH?LOxdhvIzVz*D)GpOHRub1%P|g>~=7ed2uL zWSqN^-X9>&CyvCfTCuYhkpA|6KdSm=ig`T(`(lF7bKgS<_W^}EBH^`&`Mxy@-+K0G z=zlR+@7)$Oz_8aw86O1y_w=PR?s{dE=cPu;`k8pT@N=X7yxxD+$LsyKu;WwPxA*nW zb-FOmTsf(({=Ynwp|1YNUWe%1%eQ6&g9o7bP4lr2J!3hrps(iN(sWDH+=ph_6AvaF znt6DZBM$qCu^#{@1t%Pvd4qF@V~&iwsz$j29qZVCI|FGj0=m7MCfUQ^V_0ZXJSgI@ zXD80Cq~%`jmcDZ!RX`j@rwWXATl*)T;0xasQ}BM<>C2lk&lF=u=oIPtC#0iHS9Lzs zJTm$7VtjFA^70;TP1s-1gwk$;f9rO(JM3c)#907mr{LK%f#-KF zB`GtH7H4v21J4GJ#%`i)XC(YvN21+50A6gZGaO0w)lSl?^&Af$30p=D*NfIP(@^f*s0;2S9jdmF;Ary*YS67`)I=!}5(=wRXBdfgO~M@*0$ zEek$jlI%&2+{;hvb}YrS3UU_1aAtg;$By!+hU-d zrmC%_=ZAr|xj-&N)tyHwmhWeKmhZ#dC4R8maDHNgZu30nJkV90b0EwPdkt~?9wWX1 z7t+|$LAMOy0S4t<2EyipjyUOv^DIJ`?`3>gdz-+&C|r05AkaOSXTr58N~D4 z&7lCStC8`<-@pYEfH-4w8elbW%25hP`SK->dJy>%!G^ZGUD8BROe&t*7(GFzs-6ZCh0 z2LHv6b}a3lwk_>GLwCO)X|?d(KHd)b8tb_wv~w1kF=Ne@w@xPj~;2F6}aBTf%4dM+@@6IYHUP;Nz}An%2=-i)LHx``qR!1z5djTWgX&lI!&TfncPUP zsnMmX-;F&+({iaa}WJMM%x07dmjGut^W zEoNSzV?O)?j=R>43+!k%PQeLv((?)RO2yDCZAl9}{`KK36aQLGK{&x7$Pp~RD)+;~ zSR_1*h4!oa`2(?oo8PnWr+~T*#@A~g=I)W0^@r-dHs*};9} z3eO#yS*`m<9130U`9_R=NY$4`UJ6s_pFY`HQy2iBFRO8WCq47=bhuFH%f6N#M4w}# zlu`CQ;yk!?p+}qkTX<+Vg}e;Zhg}rf593AZk?K_M&G{kl&BuSCrwnPN8+WOC6qTxC z0u^aO!0TBZuiL$-LQk1fL1hd&7+V;0%s4o1#5s35>V-P$+@Y7Hwjdx)F(Fle(CI+4 zliYvu50Q~|`Me9X7vsw)Mx54%x^?0!4i~@TRtUc@xkDEu7kZA0#g`3qF=zqP#h1;t zF}A($UJbN;ou{S_#T%nkpA17MZbMz`PFKqvdf*O(=yvKC4F`S_VGkIJSHe*LCVZjM z=MJ6(@?JI;b}H(01opp=yKWhSSJ!mo#c=2&TAbnVgb|t#&BjMjr_kk*W9adpCdKB5 z9>cw|cIcB%w8zdwcsSxd`C!y$)L6VJ>a<}f-hf!u>tBA@!B9JM2u1wpsE7Y;I{xre zdnzzB>WsdwKhn`I)Y0Y+ZB0e#aLNknItr)eWw2zZag)2QO;gl$-x#$kxkHVT3+sC0 za9{>&oBb^cHB8;qxa-MLwZ?;NYJEq``p%HLk+-4!;gvg-v}9s^M~eCmM}5zC*S87v z{gu)1Q_-iXBOP~jk4A|4jzCL3jP@Re`VK>VN6Y#S6ZIYDQ{SpTGPd6Jqw%I_pZX3z z7-nY<)Fc(?_}A(9!z1shzSQV5!D!pTvTZNb(U$qps@zg^6u0?Mn88i|^g?yC3w5-) zLyya^cRsynJUz2~dh^{+Z~hcd?=f+XM()rloen^IdI93;1=;xQULE1Hd*Cen!-P22 z4jFc%t?mw$K9f}6LSgo0(8+!0Qmip#Uhrwdr9fz4V=&?++e3z9PvH5Fz+V_f>HtTW zJ;j-O`IFsRyEDuSG(}xXgf7t3Zxs3vg(D?(GIpLg$}yc|JX0E+zP?lf&wS@nSU~RO zP>h~YkFVlFaf_WP-hMD&3~F`AQx=dQi4qX_q*FsG)UnSoY3L$>0d z>u9gM=a1XJ=qUc%hvHk{77uRmlH0d+w7>A8O+STl(KBokJx<2qJ^W1_?LUKdHp(#@ z>ef*u>+(%Tjjqz=TC2;I&xJKQ9d$7MnEK9}r=wltLrdu{pcJt>npHkD z3i#3EW1l@1@4uMC^c*+t8om~Llv>DWoE1S&w6~#k@eI#Tu6fEC@570?1;YAqQAcCc z(WrGss_C#a{6t6fC-}D1YRtDTzOSSEE$H;^?<8c8L|sJ6x_CrK`|m!qYFj;^qj=Vb zf;AffZV{5(9v$tYI@*Qs3xS)6lxO_?|Abkx=G?FfrjPdnsU5j^eC z)IaY;8oYfL7ls|IEet)>fjI`fTyjL3-_QAl@d(co{F0j60Q=bv^%S%GIrcfHz_oV4 zG0i7ueSZifRDIfd&Z8Q4nRK!iL)Ij;za+H3M0ny|Anb?%ziAuXrQ8HxRn!{e9A)^{ zWvfRX@S@C8jD3~_7@MDXFc|qR5MftzEjC$K2jd^jK}%e4O#e=KS4SJHqfJDKZh~I; zh}RoE5^r?X!)_EtJ%gA-{pd5k748={4$r(7{-_-EOrDiq2;Xk@&kWe_YY}%wWqJB- z7so%MZ4Gn4tia>OzZrKO`wV_IF-r5M4p{W^-xUK9!NtrmPt z^G~SuunrxyRY!d*JSeF-2Ob}HZPQUL)lsQ5%(Yxck>W*>D01a@R&1dnTi;3@b%+^Sa?u}D*>K=Le)sAkLAh`~gm=W=)1VqTwqr_p(C)7o72%d-*B( zeh)dL%tMZ0VORS$^KJXBKSTzs!E9Pszu`YN!x?yptrZ;E)?pv#Nnfa8{=*>V4rhkf&xwN{qi9_7a7|Nc?khIjH*7T+ zrgCf)u0|G==bL;z8$qWoey8w_PyPIU>?7j0dOP(02M~5I_7M@s?=j-7xY9vq2Hk(- z{wdI917?7ZIO&KlMEom&4#Y14OhY_z#uJ~83*X`mPV7e_|3v8ju@^~s8~c&8{D@zW z@e2|ECh*sE@x&j*l?r)k0BL8q1JDGRD8qjbg$u*E7K7pU0J5C**q6k7jzGWPgs>Xy zOVaWso{Nio;{lmo0i>S%1t=e~0Pg}^1b8c88sHMZd4Ms1O!omQmg!ysB>u3(TLGy* zF9xI?WImwKp95wCzX;U_mc-kh17x}f0Lf=NpaJ!Dn}qRzq0^r*x;Bwhu0 z3&N)ZE(V01NbHw-7j_!vhy7va-iIRVBJ4C;{=|PS<1-LH0Q^;5Jn^%*SdK%It`T$( zBkVyP9r62cu^g}$oj(h?w}P$$Va1>$&T1iNh8m;!hyH2KXjjJn=hlQEu3c1lEs-Xgq_Qzrg zb0y3HT!3)Yy|NIH`bVf2ZLs|*+wn|jTdKkRf5`j$Fn-V;LmN^b`a%WT74Ok^mA7#5 zp1+$=kGy{th4n^n?}DH@@w}8Q776x`=fThK*zI1M{`9N zKB(iLtK)xM#|O4zH_w&2v|DuHkLdVc)P?J9gnt9UG}(G}_gT8U*lsnN5S?ruOAAdQ zZVLpKtHaDx+tOSQ-)$ZmTYEEBPq*trV4qPFX}d%8)*x?o+RA0v$vhk<<_gDX-B_gU zMJ0?#G|`A<%=O!_#i4dvOY?-yA8LjZjDH?Eyti_&I5NbK1<;d@`=H_~AXlZV2)^F9ASe?3B-{voc zs9H4}*!jr4$#x^cj@q7W+q)YZ^*Pg;s z-c3xjXFqXhzFhMncFRoM3Zj>)9THMcJ+1`$N1jRzzLX zF2DJrLHiA-<4vEfA=+Yj!tFF%i%mwJ)ZPVUrhd15sHK=_@m0fbZ1eT51@FBUT0@XF zVDG&XezsLmWZ4GQ4HX)LiDl7x#l&3^-U7+N=tg8T{mTsx{`2%UFLT^cL-dyV9o-W) z2WZSXn`$w6|HA9^vsTDu{pvb>Sv2=z{lC<{+=97)11}Ro{QtuCJ*5n#SgDX_wPpbroij_31GEasT+9j}aJz#E*2C8!8U5^jRie_&gKgGXW?29YI3U`u?cd;o9aHFZ;4*ZL`Oo{Cn7sBVj-Oa6IO( zupjS-rP|A0EO1o{gRl<=3On%k-F9HwTtn@-(4lyAPm!>vkBTbXw`nHqx`Xsk`(6Dv@uB%sq0POVWW{sEs`RjVX{X0seLC6}A6hl%HXX&^ z`cSYO(a1Sk=Db-)Ti`|Osh1)h%`z{V#8W51FADskB)?1@?Hn)Kv{NSd$4`VEB@)`n zNZ3(k>u5tjI}_T~nZk}T6B=V`loRbUx^fkxTr-e*25LXfk$}_7 zxL-)s^QXG?{Bc-GGlu-tPM_-7+iX|A)qG}jCNBF*)8)twz~&Go}>&Gosz zT629&)r$LQuJ8IBn(MEQcx$T{-B)~{E6NZSJ&E4hYt6fV{k0E?`qnjK9)Q=l?S1G0 zIVZRa`sWWZ33wNJK;rm4Mw~iEy!&krfG!W==kWhQgxv=^;-n+qhxioW(4CyS7dU*C zoF>kA;?z&#o!@Y)%x@v|)OR3kg)Tqh88SW_@n+!Zx_IKyTMD_MpA>R;fo>4Gf{(E- zU6Y&mtGK9#J^=`wlWjjBrX9lXkO`3bO0GY@jL8u7%8vt5e?{FQ^-~W3Vh&?#0VJPX zK=Mfej0GIQ{D*q!R{*JhJqAcR=n(}S{R9zDk@yHEQE|X8L+=-ldPxd|pHqZ=3cVk3 z))VmoTujG(kj(EMiEog21|apAm!a2Vd0T_P2NjETLCkgQq`42_{|ubz`TKX>{kL`Z%OQ_O zV*;Ia|4SWBo-VvY7cTc5AQnD+kgt}uSjY36F8q=%?Q1%oCv-HmI+~AlGzGeFJ_ju? z>O!^qXLa|>bUgij5MzlkKZySqR8-*Xt)kL>)4J6cJ~|?L`oK{FUr4v~*K2Da>15g( zSv_ufz3cFXsu=B~SEo;zOa+6SgbGIg8GYjg?|w4)>l7ri!2g>H5}Czcry$V^uG5D| zzBkl|NV=&N9U%HbY7N~Jh8jvqy{)#RuIY~ON%b5nC-FzH+_R2;+qNa^HkaiW6q?qp zt*S1_N4Hk!`V>CH!{@-;?l~gmD-^$k!|(#~R{a zmT<3xw9PR5DG6Vd@S=pUUy1l&j6I|?Nw`A7wGy^Sc%OtPC45oBHzfR{gyASV`OTM* z_BrC*(?m#{9^pSocuK;TBz#-KYZB5nMEaX0ER?WD!hI6Hhj-q@`!p9_hUc&#B@Iwg$p!*^HYzbFNNdJ@!-!0)`32Egt@21%XI=cHdL;bsZ%mhdc~+w%$hUO_ir%Plm11GhEk{G#ZH5x&jq6{C-vG@_%k)_*RD z@XyX`!l32BA=RH;YWSp#CXetd7r9L;S9_1n$BZTy0{zORhWpQ+aenKI5q{;85q?wY z<~dTRPXBc3BtUz+xoJ7c@gq$OY?u=ph#Kmr#O{d6c})@Hr_hq&Bu@jeewv9I>R-Ca z8;VTjzYb)J@NL2}jeqGnJNEdgI~h7rI!}b38qy*sN~gt4tUF!IBpfH!9n+{)Lu5i2LZLxw~XG2TlHuhMb0)1Y0h+Y!= z`hN2p>FqO83L)xL9%bf!ov3l2RKZU0<3hz3iqUJ9ruN@h;{LRyP8B zm5J1Tz84uR_DK6wsylq*ryIJpOyjd}R%WlcT@yw9e7@D#75o@QIe_>tVwc?O>{CPr zH~Y2^GSNFhn~=tT`85}c6FyyqRO-HRZ#Q@D@~e^Fz85`_(zn{=PDC{~qu$O?CoquC z*}U5z3#+<^oA5xjh{>u>dX<~Xzn}Z7&ASc}?61X%;E9g|!G3F83-{OJ+;J0Y++&5G z@T5FZ-bQs+r6+D;lkvm}m4Uvno+zqy{*qNTH&`9yoq>C}@P3-!ME;gRc^8qg{(rST zVY2ld-ZJ^uK1`I#-|NJilcsO*dR_Zrq#kN3-XZ=LFHN3e;>*xmfQf6{Ci0r#W0iH-xguw|N?#LBSFD}V*`&691)rKikBd+4&*dM%v`SsS zLKuQHyrA9?zt7_zfrMQD;`8g%aQKCZ}h4+o>f=&2F*Z+oL2p|urY5e}Si8YR% zsBPQwE!7qe&h+U(?YF8to(IIIz1MF6Fn{Y;c);Eg#HHVkb9+!}tiKAclxjR_{*s@6 zzf~eMD!id2?mXzP2(;TTx!#?xJ;N*{iIU zvb?hV?B2Y6metlBX$XQ_#~?xjn15sjj8Gx;nq0 zuFTq2WXW7#VCgNZUSG7TbMvOv`|7fKc5Eoxu&+MPS{M~xx!0OsS#4=3>@oM2?XxT| z+gaILUR}AoJinqf)Wk*4gbzQgBYOyq1vPvx0vWnU@ z`>L$vnLGA0Wo}=*w8XYz&HD1v>TYXyRCrI%@=fdal`Y>`UbU`kbPJew->PHRzJ&z8*=LG6z=D!jaP zZ&T&&DvNI&f8M8z_AtqF7EgJzZ|mw|+o&(-sVpqBpza%UdZNPfc5E(L)3&8#-%fJ@ z+GKuhrKM-fj*?zW*;@1F*7A*ORCMaATi3j5cYFQ1vOQ7Z-FZ7(bJ}~>uia&_Zd#L5*4eqr+_*2VF|S~4SBd5J+oQro z2lBTkD@xkCtp!CT#TG0?P5I z@ce=`x0Jw}^{uA-f_1kPuGo#uV@n|oI5UblK>_MVQ4b=@2D8N*f#V3abl>t=$!^wL7+>$*)}5yR>t2rgcwq zbI!U|OE)#;S8rd@UR~B}UeU9!!=|fdzZI!ew6)ZB;HdX%ezV?iq$}Qsk*;>5Hqu%1 zsx51*J9g}D+O>0SMP+5aWv69vS!HKWUZohziVAvGuf-TvRc6USg>e+iYbq;|qgeHN zb5Cz^zNJk(Gg?sCkm3NjDR<+bEtK3nwzHCROxuB=GsjeKOZFO1C+UgQB zM#9Xpofh*(gqH0TVSC+S2>)U-6zsHAYBJ<)?A^0DtFW`SXw|;@eCw7nYnj)0hTbJd zb4yP_vBiv0Ex)mBLsv^yUe)s2x}7VFH?CW@w4`WdcVoq_qFtM+D?6&zWvn%~?S$SnuOBc88G4HIZ-&9q*s<~}vUhT5F@(p!aYu4;oxx!M{Y+l*8c;}8S z=AIo}+SJ;tGFMwIB|VmWOMO(he&kwTRMfI_Rb_EjeM6q5a$n1qO^eGmn`>JOR%TB+ zZbgMp9Ob^)xD^%tdEZa|$E`NB2dyUgUbJNGu#^?8&nv6Ut1T_ux2e6WyLtJ>%JQ7j zmbJ_3>zgv0%6fZObnV+wx~JN_tgL#&nyhu;keStCF5S1Rqj{;VZCyco`Ie2lD|YV6 zE6Xd$YFxgoXj9$h(%pL-_pYuougs}i+FQPE{rcsLH}$rx+^{7(GkZf+cw zQ@?xD=IteIJF55g^z3b4v2=Z7e$R^5Hr;Fi{RJ(oZGB~a~=ZQreiaV|(}VoW+&3RrTe0U4^BameuC1-m^1mj{2U=4f{5?p@ePLy`|M%OMARZ>3@j0;iyoWk5OU!8uzG>|NqNT!D{_t zqeAgMb%ub}SzXwoj!f$_%geNpsWPj#eapt>=92spymL2JTdJ))>f}gRV)cxQWmaoX zd7i~mwP|_nir%_aORGCdyQ{lPikBAbUfI38Wo_ramJOH(uG(3-c3{`0kTE84FSJ$pAwXMymv{mFRZ7wUy z7U}R(?5S!kE81u&T%Flfl2^6bQk~PWcUg00(e~cOtIJxqFW$E$r)~Y3T^Q;8j`Nfu zN6c3LvT?pB4}H2a-&(nN_2SLDD#}*m`@COvl($*(tu2c*~BpojY5bdX_botZgeT*|;}rY4oS0QB@Oa)K0Gfeu~Zd z@bz1r(WCZvW_G<{lRn(Fve4ITDLqyZPN7|=uC-Sd*Z8G2PyhO>o8Kh;cwC>fsf9Ej zy7Ap)4oh@SJ>^%emYOxXnz{yzDRmy-mgshp=B(17sKzq|p&(I~&)9MzeZduqH{GWC z*hn_&DalJ^rO^;KXQuq6ta8RGspn%^PcoRO%M>-UP$p?6q7hTvB$O$FX?{``$(Rhy zIa|#;m%}%dOsJ_DY-N2uXSUWVJ~iK?$Q0u8CO=l63MjSGDW^u5Gei_~Q(k@AWWr*} z5p<|R8EL9Em*OjPVj?oh^wYVQJoxkp@&ARW|0S3o_Mc z+7-}O;&PE?HYbm$`Ew?$jRH}RiSI2X%${7fAQJ@3=~?s(f!E`$G-urtZoZ=G11XqKWpWc4~uTBZ{Cnt2OHEwnWMq z;cEhsXf7knIQ*%oZc6SG&S{YkU#yn!Y9ceTcyOxeQ^Zt!UBUNyzI9!0^?&?hSFKd5 zWE!DNC&QPjP_ChmU6nJcGRD-!SSlkj>U;@t#_AJ=O=V%kQJxJaWC?++=_{yxAwyxV z>~`3S`bOS~I~$#jEAZ#4f#BT~0)2;w3*{5w%Q9 z8=-L18*z%oo`TBa)(I0yt5l-Nq-O$N`;;WA&f}XUn8_v!L9HaMdZU+08j&A*aUYvaz0XtEWTFbUp{!)ND19 zGMh_$YtXKW`wfYDWI7>FN2E?cM5WRwoHKe)&1y{t;z52>6jJ#DDvS$yuR>eX)&p7{ zKcPwlPOPhgR$X9`xmPo7d6;x1z&Yc!g2`B|aP-}KD{lhI-%XqoZYD@MIvCCq6gv6vWZ zO^4s2H_S}sb&@Gb$PjT`qozPnlC>J^4uwhONjO7Em9Nx@)PqxQS-Mu$OgRODfUTG{ z%+?%fCFY5$Cl-)S1#Ka3u^Q9IGP3eaP^*%<+_tHB-6fAS^r9SwPLDIEn>L1L3wC>4 zGgWU)h0XSv{Imrtq!~+4UCWf5Ili;0)zu2cq=H}aiL!17FgPW~`a8qnQiFmDA3Iz!%5LRi?DdbgAj4$2_Gd zSuC<5UnLD{JlX<25yJ+VQaLNMdt4ahwJ~XAskt_tDU_Vby0acE zPrKv(s??gUSEF8)-(s1X2@3r7DNAgoS+2WdVWs{|ot{*& zkjq%Yk&sBBOBY;aNuXA&T58d`urgE%dd0q?UGGWA>O!Y4Hmh@44M|@iIg78nvNse{ z#{>?MK{=gvE2hmsT}kBjhO2^-PF%Hx6ZW(>ug#Vu0!P(ej^?UytJENDCPKQxls22e zw}(SntxHvUMOCJ4xa?WIPSp&?rFls$Ynv-Nr&SV1*;9#2^c7X!R~I!MPMgT?vo$m! zF@IL9(qYaPk&z_rl`h-sazN{PtBHPVF3< zb!l_DG9$G+f^mn=6QAOj#V)s15J2B7qTQ#8@t83X@x_diS^o5F*(5E=XC2`=MOmbl z1>@dQBy6>5=8CHF6n}cI5y$)(pVBx=Cb_nWF9&%uQx%9^m=e^cs;{E6MDT$auLWd9 zOWADKXC>ldVmfB9TWUeK%w{)hMUkdISeFR|mAGG#!8e$+)R5)EzC_KPDy!2&hqnXoB0Hy4T* z<^HTFXPy*=FpCVpXhNQ|+ROxffpjERA zevxSWYfopuLUQ~>m1Lh-t7$Y& zwGLkc4mC+!oOvzYA)YYU^D0TM>5@RT617B%$zV|}lge~?rMsk*>+50XOvM8VkR+N5 zd}%Bs3+22;w^Pv&HDW1gI$Lds?Nhb1%0C;oWZkx$Rh^#=nL_e>Guv=AW~vT_Mq`*l z>$aEODSpLRkCv0p+Kf>c%$UXbWY9A=R~Gu?SYrgN;i+8Oqxg;14)4?n3u@?(S%Cbh*_qbCPP{+6<7rNT0@_o zR;a?Ux-yarDI*4lzo=KI8jzEiJW_{T=MKy$%T2dvYDTOvCaq?zIpoQNgf)Iml1W$f zky(j6Vb<6z5iQpJYIVqNx9QuG?XeN8=~tz(-Llw%)1MDoQxS<+?eJU;}m;+Vq?H~bnmGkvj@6*Qo~Wu^m;#Lvu32DHW zahW70lisG*i99)VtUl{EnREuHF~-+KMM-tIDH4=SDw8rJb(d>?c`RP_Oi9olYJOKO zJ(aGerb2q1TBY`cgLPrnth5?Sb$3NO7gH5g(MBp;E=Q#bi>M%SRWeP9*4hlYB0h5k zGGLd>IUCX`b1|DLB616o7C|WM@y%K4YSGkmblNRbD4{2C%(~S@H9sz$Q)k_&7<3B- zX>F#E2r0)#nu$uFmhx5na*N3*jQr*joz2HKsD$+eH9or3Q|t#;%_~kxVzYKrRIe8a zGmVNRThirH>FHE`s@cqY3}sD7W)ow+Oy(2`SrG!PxhPbix~kQ0kvo#^kiZ%c7BS^T z`DzG<8j+GVp~^>#bE)aD#bgO71tq=STeOKqQw}*kaxwghEjmpg?8o#iy-UgZ`{5 zAG0KCN|D;_OjSbaW<4nlyIn@bz2;TLN=~iAl8-v#g1p_5z>=UL zv0J@`a6lh2m*VC`VcJ*p=oGrxj9cld3ufo^aeXZV1*h7n*0cpATE9!^R_e_rgK^r0 z&o(|^U7n81V|sgC$FKWJ!da0yW^Bq7o>X4q%=!HapC)LJruYSsURzCQ^#Y^9pG(KR zvIKI@hfpRcOr@KG@|Yc!5nTlf*A8N{&*l)sK`y2(2bsmLN97g1)N5s0N<=V9@l;G_CSXSq2S-Mr~Kh`EFm#qKjmmmPl2q zpObqNWmi$^G}@9*TT|%HN9D0{IZzKYZSi`!CPp{Ynv3y5zNwAyy`iARnpb%1RjoXf zQ_6~>usAp6&{~~_P&{rCnxsylMNkS(Cp2b%D6eTkDHof<60uT<#HOOYy0K(PDz&|%EH7(z(FIxFg|BN-N zk;yIbh9n*gX<{=9^v$ZSsL$mimhhZ5t1ws63BPGtGo^&>0c;NDq9%s})-c%y2GCWtQ{J<361O__XAsmWmx*M)Y(ENaX%(|X~Yk}piSZP}P!C7+oQ zC{jAftYfAI{c1DgPv`0yd_z`+aV!NS8m-LX5;~)eLX#imtD3X6S-Du2ZY0Z6k08;k zC3MwT(AzZS(jx6FA6i)_-!rYxS#vY$84Vc>;FDq|Tl9i!wLzbC)#EjFL{Q=DY%q*qBKxRrY3FE44>q6{3N7ORA2C64P~a-H*@4x+OO!Y0RcA zv*uK7R#+128V+GPAa2OLA<=X!kLfd@$`&!tmbDd~Q*JH77Qv&DXH-68zHYHfXB(zm zFs!u7;>K!DBMOIg%7|4SaD;Tp=|sd;ifL6yrBG?WNF+uM*X&8V|!ir8~GwHFGv!!%C zp&(!u8iEd2UeWLi(yE}$Xtrr(+EQ7i;`6<>s6bG%MKscsLZF>h&XvPj(@ZLwwTALC z3<**T#&JW~R+36RhFCzTF@{ZwYFezz&iPdFY)F%x6$bq#X=Bb^x5RXOhq)xu7-KM} zQHc|?b;uzEx?mAkmD{aOdlD)qmD5V$|OkCp@&Q#o)l1kzBRzosTDCE=eOZ=*BRs}i!M*R|Mp8d{J zt8+?uvZS^t{rs%2W|@nb%VoJkp*r zkV9Clj$kC0%vbB?h}xwUXi|-!OBI)RYaWx`XwUMCwc=bzB&#MX_GyDAl4zv;g6U!@ zEfnib3cCwDWNNY*t0P|wr1Uy@BE@hoEDT59y-;`!)EN!ynig{~Emp0e@Q$};CYSx&X4RI(Uu-8mht#f)xo}I10 zCdpNoiG5OUxgv{Nttp)>jFowPTBB7=d8LpdR&0KM&?XnCB!RF@G$pV|Ly1|Dr*6r3 zX8h$`Q&&`#Li#||-VnQ|0s?t3sk4*hpI<5$)Kf`VR?URem6Ca8Dxh!FRJPY+Te11j zcI_JbMjdps?umx-Iy&fP-E(Z@^>on9x+m6_ucL!*);%GXe;plkv+fBM(d+1->>Aq` zwU=iDx@4#z4>wC?tkM(Oq*<9&dCJ8^uqL%7(H25>K_(;dyHlZQqc~di$?LYD*5>2O zJTbq{G_4Ni0wQG~DNHp_y!I_1b_vq!!P*J(8KYIhU(@(>_VSuWmrY zWUpI7+H6%EQVSa}X-OM=?pSEbNIYb#nUuXCw)@i6tiqE}&T5>RX@yy#_9vQBNm`hN zj5zCv$7(SpRz=fBNupFvPls&P@Qk`T0|iG@8>|$fx>PWbnzqbk)Y6zLTH|_`K4oB`D{kg1EMT!AoaI%Kbt;yM~h1rmKQN z%B_`@8*)!&x;o_-7hx2rDO&yhs@USLW5t@cC1=dCWWnkz^Ic?2>~n->t%9sVmy_GV zwN$7vosI+(np#?>wKrvIxl@|4$fdS9L1xa>%(=8qC%z^`MrEv_GYDn_5ab49;)1nW zbEteeSqif8Y*IH{wR1ejn+mKgo6}*J zG@er?!!fx?QE@tgshOrXrHXn@fha$j6UA#9d<>NBxsWTTGQ%RuDKE$3u0SCPQ(mkL zBO-;|p7ru8*#?A{759`+Hm6gC-LSVYigQ*&u9PX-MKWtvGMflOy=}86G!P$na#oL6 z-pJ$IQzD5MgjqN2IiWhx&m{}l65nez$YClOEE{Iz<$}?WZ_sL0?KCBF$lYwlToR`n z(m9b(BNw6^B6UMSQY`BV>4MNwPZ+F;WU^@}R#LWd(47j{vofz@Djj$DObM&rs`pm4 z+3DPrrz{N>1l1rYXzCVwOk@n2B!wBdTU|BkoP~_41k=EZpz1L=_!(`zlFl~k8lkRO z)J3ZKqCO3AOjZ%pYF*VCC^&+ppga&WiGxa!CRA~y#3E(d35!do*6S1K;!_T>N-3-B zJRXJ0E>xzxc}c?KklB0zt+tX9@FC)f>1!fS6`7G(E#Zd3A@_%(a%dPdbJbYL*f30) zXY~eiNaNL*%W0)hRMP1Rx= zvdmmGST)f=Xll-GYTA8TQ9FX*leZ3`db|$Rd7JBqS8fzrm1?6Zs)`7` zh3SS>RJK(OF`1`a6HcWvPG7W?5ZN5^Mlv4At8{@%4a=jj$>5uTrC(IznTy38V!@PW z8nTm+X;v$mn-#i@x{^0<(b{3)CW_SZTB}j%5bF)nnq*p2oSMVpMp=8wt@UUj?qLky zb}ygA{)1=m{#g$G*6zh~J-eIV+P(bN?&Y_3FaN)_d--)E<8OCW89F<=e!Hvcx4WwT zckHUd`s9N+CyLf9WUEWR8?9Y*IE$$BqxT~?)X|H>G{bnd;jqfj9R!`b+52N?-)G+h zkO|Uxjs*8|a2E$@?X^zgzpu=!^egZlYjt;ex zlN_BxpaXQ4pIxAHFGpt&+GCxgqXeA~b98qqz#9nb#lJ(v^MV0tc?Nf z{BH2?WOYM8Czl%oI<>X2f3<7s8vhQjD3NPIx@zd!kk#6`CZNOa=ESH&Z4$CtBi9ha z`Fvb$U}R!O@O$0oK`6OvO(u?x6w;BBNYp+M;@a~dFa$CWQ6dxVvGf6Yzs~P8=ifOG zg2rC@{if$ZbmF&TvHy>C-mg7};q~TMC6lhZ$Avrog1I)om_~l1^Dhd!+h~<6eLM1;u{?K`xqbyM9z(o!_s! zzvX`LPV1zXL8Ch!L`kc^Ys;PRz%FwL^P?Q_GZXDKNcZ^{o$?q*II)Mb&9D303p)Lq zgwhQse{i<9)pMM8qG!GrcP1R($D8bb-gbGyfxFuaeYmY1x2h+Y`nxAbaI-qS^-T7k zw_U!K3%?!Vyo6Z+x+pQLlz5=j9qWB(`&zxndrt5k z?n6#`PVsPm?;mdxv%f_#`*Hv90GHkg+)cb|`0%B^(eW1Dls)$Fw)u0o+jcAae~kXO z#*ud+oAZwzrjps-dh3hhxOZYpYs>sN@-d_v!Q05m2Q@txn2GJJH@~>$^w85!+&+Ta zHLNS6D2d4nTTb^sz2)T4qc`h@j}OED{j7h_`O*39t=%v7pWX&PIqNqFKilO_UbnXf zU)(Z34BAxkr?~WATNqs!ogaTGyzN@-MciTB&C5>~h?gf>UItkDdX|@-XSSTATQ1BT zKlgX>^UVd`#PETEQ^z$-YwHENKUsb0-9p>}ft!L?mj3Z7GkF;Ad%wh+KrPQRbSN-e zI<7*ybUwAvb9(DZX7N+Yl=pTXpIX?Mi&NLl#Rsp+#UHS__!yguKeHZ0uZk(lm7t-aetI6NpG~Gj+qvA%>%1L*OCj=PxXly+#tiCBrm--$oAgBu68)mdJAfG z;AG$NUbKhpx`E?EXt6JBih1WkJ2mPJBds?g9p2OZxAz18zq9x~7kIe!XYl-b`dheI zYxx~vd+SJRWPS^m-#g?^L?#v~o? zy`E=I_MT!E4ae39G>yYVsXY#lZAvMQlBUvm@F;KoaAM%(NMc+!baZp-P8OG`-#U5w`F0AUlecnj zyC!eu-gZvz;@);oZsXqeW7cTL=xxs$9KVwbeYk;(X$`E-9Sp}a!_FQ5*Okq3KZcf1 zxo0qUFlf^Qow?)WgP}p(={2-krtQ*PpPMIyG%^jgWL$0rm)|hDhn~rv3q2FO*4P5M z_QKT%SO0?T@<+KC`_T`3o+e&-A|6|^D@$Q;i20DKA%<&pxMK{|*%|OrX0dO%o2#|? ziM_pEgqHOjMgg`&`dh69+yF1^Jvp?m7c(JIU>0RpX$I}V4BC$x?wRO8dmE*GlMqk# zK96xE5d}X4d6zPCyrVq_&<0R`%;Mgzn309H{}B8~yZmQ3|55leUH(&?|2X_#er=6| zx1sg+Om6#Do7ygf{!>?|kV2KX*B#~7$_Tv&5A`-&e^4`c0X(whh|+s$ zMTmN4ao7=&D~l0~k<8-Hx~N|}V|T^?tQop{16yAMt%C~~YuKJZJ)cI154_qnLWnve z#5md$jSJhc66rnVJW8~B*>y=j*Rp8zTS&1=4JaRd;+{vfi%<08{RL3Dht! z3DPXn$CdbVEH0P#)e_%|eov*$VD>c)1OdP&EFN3T9Kk43-cvHgj;T^5*$Hz~6a9J$;#`5ICQA6+I3eRE~ z!fjn2`qlXS7To_ej2UwbZEefRcWIc#;djy7`xEcd^j_G45q(SRC9Ign(N^Dbp1JMt z<&RB(I#xP|FF$qwZ@9@XzsTSgzk|5NOM33{W%0rnUt+c$zQkZ(4RzN0y>0Vjpp1F<(y^nI+nueiFOc8RzA<17V}=^WZC@j2 zwxDk1T&$Zf5FZCPJ}C8JtktAQfAZV_?lm*xezLu|bC1E(cWz~AAL8v=pg1p$w|QTS z)6e1WV)0j&`hdG~@p`^cqK@vW!Eb-cpL#jW!^;nvnS zFB0!6j`v+>h$Wow*1)){@j}nMm%ZmK_6pr|);hbjHFkXT z#8&jgF|@8x^tp-2-tQ0`K!4jmF@Q40+;?E8HFA7peh4k#_nsR;dl)dE|S;gHvcKEWW7xmfuc4~nrjs3W#?%=}6W229MGI2iT)ujAjmur&(%Ra}ajE3Ede6Rc z+H0%c@AYB^>Mq^k)-YzzK9nxL^)ZvsR}C`(-}#Z%wO`Ue<0G>;w#?2|6N9b3g@j=M z-=eB@>#_IZ-de0ajt?2GF1>w)cZP>pSC^_Q%mKQY6?ZOP0M9tKbRSk`hm*{uOo8S^ z%=bwi)@dfZonz;|9(-l>p8N{jhXIE|v?4%wh?(yLPwzR4IrBKJ*%-`wkPf`So9Jmh zNGlx9X9z1g%-3w+YKJzuLbrB>66P^rzJHZYvs8$kmKpSvl&IY==q5|}Ok7=h;OgntY0wxu-=WmMN-1}B7-3JhQVRjli(d_Z z-obVBc5I;M*+B0vCXgo96IYiESBF@7nuShUPp*b3uMUFiz!~PYKYM221kLaL?eQBU z9Yb>*`o|FZ$H5Ksy{j~KU+rV*?^vZDSq&Sy+S{UB^r2L)F7d816Hm9Eo*zRQ9{U1% z!|gpS-f`vxGv9j@wKaLicc~>ab>U>+_u6l&$^I8QtNY&89;`okiILlovmU1wUmtL_ z<$yvZ!+lSJ4%YZQd@o~_j~?5{)$kvj1s(RAiDZwo9>#k0dzwqz(8q?cD(iWn2P4G$ z(bv&}Fv=3dcN**a4q87a+rCWlEu3!&zUZYa?%`G61oMC@WfXTHPVgs~Llev$rMEI~d)r$9nLC7HKLE~IelvdXeH)f$ca#oI z*o+3zo9IPYC!D*1JOO>(1YLT;OicLSjDzVX=-le$Y%&rm$0joQQ1spjhAyg$MMoH1 zNKpdpVB$`QT&P?r#wOZl_XCr|z*S6}{@w?9I%L(^U*Td+oY|axnS(zEl*0Yvoy=#Q zkeB0L$!Gr=em~sFoFO-UPm=pQhxaw$-35Oy@V*JZzX2Y(36I>L!6O2_hdBKA0bhXd zCxQP*@OwA#$xZm=E^v4$j_zLoF9*NbF1qCQ;DMStYXII+#NW}&JZpiU26*HqdgN9j zJPJ4NGJEzuxTOduH-(e?&3FW$GeKd1`?z%bfqyIfc6X&q?mj$}?&Tf0LlksU!28t> zhPku@cZhOy$^8?AXW)JS;XjA_M+hf3rAzJ~;GuNC4M^#p2mUC+rNI9?_2dW&pyocSzW#`*~E98JLQ=s0tR+(eh$ zyEwcbY-2wAQ?!ZR0p{5s;*!zlw=rkPO?c$~I>P@6?(GOa5BFCPPHqY(_c=TVk=|(z zPX@eC!0)LpJaRwA;XMEdT}!seK`9{dyA|=j1-f5A{2lNcL40ykI^?DcPzmpcTig7+ z3cMe0MR{&rbm@xa6)8w4c$`+&ayI*$!9&mM-K68PjMy5znDy9mPj_!#rq{{?^1 z5cBNQ@cY;pbB5f6NAAZE{sP=8gg*iIJi^IM;p9Gn@NdI?AHqKZ_lFQpZVD&27!OP~ zvipEX`lx${(azwv8+haHYCK)iP3g>sDSqo_Xf;3S~;`H^;hap&8!=iv8OBWw93_oujU z@bK)P!~JwuIJy0JZU>!19Q+Jybucn#KMqL!;@yC^z^D+T=3XsB4A1u6; zg99A=1(bIb{%sDTeX#EPIj97@4Rk&-(1t&R@{ahJ=b#;s(%r?uUqGQs^yqFs!Ygu6 z19%tQdpWlO%F_dIzZsD5z6nJmx&IQ7+(!Y44&CJ_hFgfck4XoL@$y+I{BW1?8FEuO zlY5lIrzwl#w*V@#RVGJ&dvHTfnFLf} ze+7Qefj@dbfp_AC-Y=srUqM`YKMUG)M>4(l0Pf@B0+sm&_x>5w>7(5HB;x)N7xy{T zora6+2R}lN{^v24{*-%{qtEqnIHxckNVvEsfMeotzKOVH@BuXT*L~+N+0S+S@9M&# zJFq+c2fE(Vpx^NibjAG_cy|1s?Rx(ZQtbFY+U5U`U2%WZMbpvs{@=RZF`ur|q5H8r zH0@oyHM-JzcUM}GF8@TAKi%)yq4Sw8oLjomrSJ~U(XP1vqs#x5E`Gky6?e@TgswMX zjj`IxoNEF$zvk?Ew}o{s{#t*x*Q)*4CdO*4b;??r>`kMn%M&DAy-#H|*_ zIs>{@-_^U4uXjD&#+&O_VM0zc2Y15!NDsCAzK)R}ba0ELG-6JlnpGZ#6%WO0gKrm5;Q& zHBQkJu>t>wPM3Rh#eo2i7WUL&DQCJ%VzNH!lWC9!tt*qeztgQ^Mo{kr>yWI~~oMTET> z%S5CY0~;MPtWE8(&d~rl(H z`cY0X*V|!Ta}Uw_JA{6M`1d37modL$xMqa3mL?iqzh7s|r9<2RXkab5?nm@Gzh7s| z^#t-y`F;R-=#Gb}e)V?;-Y{k3hXnB>Jgk+Om+=jOH8_kn@Er+HV#9%lengWVEOXdc z?f7tP@>>KQD#vSoBsu%e**#D5NN+ZL`11P>K{7LXMfZKkj_5gjx%_7MaB?t`g+Ye? z;!Ukx$G-u&_^$aK(2{M(v*Y9_B%$9}J_L!=WNY}u(8DWB7gk0gYaNFb#n>af~)>V```x| z+d}Vg=t)iuJ_Qc{GQX>PY&0|PPzAwJ-od@dcd>4JoZj1 zolc(mkzSjU{o=~So%6d}yP=i(45t$!$>j_<;Xy0KoA*P?yt2fsQ2oCLmTcd4p_Y4^ zI!>Ag4L3>Dc0h9sNf=6T=mPAu5@cbpvh+`|<6O`WK)o6^iz6;G3 zY5%^zJPwZ9nowr(zU6+>Qa|4ht(RDXrSy`Iy!XD_t?n63l{X^?7c%SYrvtj6~t}V5mM+WBKr+>qR!TEtx zhc7+nL|s8gv$8aSn%Dt}B9$uauwc8m2hv)~NALVd>j6j(q3cJTu3X%K+FHZv>%vNQ zVXYva?HU>Yt(RCEpf)YvIxNEJL0K$xVd&Rk2q&PSK1JG*?FJrK7GLece)Br)4!ytX z!g#|v3=vC@Vd*g(y(hb{2fDC(kax2DYOxxn53XyETcB5^(diq|iGG9Cg^xq4$Rx-H zbKqO;x5N7e;Oc!YznEr5TUoXhk_}Pc@xGH=PCbVElK@arzMTH?(J$DXmu3tnwE4= z7xwMzu-Q~j4Pz{tXthh6tifJbCdohbt+B3{>)YTcG|*#Qzx_k>AkIeaVaUqSgGiRV z3q6RlDOudrwu5_~?BGTqTP7YE_z()E4q zWEb|kyRc!|k|cfkcI1V38_{1`dQTT_rVDqCgA<8`{ro9N;vMx#}5J^#FJH=?M2!3_T9r6?F>l`lA%lqZaz~e#VXN!u91aH&BSB5SdqX6_CR30YqDmkz5p?0@>4mgx3TlJRKm~K=yN3RFnThfaIUz z-1l*A+8+v0TlQtheb7#_v=99-bwcR2WW9Q-;5zrw+D9Q-^7Nj^yQ&vNiI2cP2LV;rP%B)k>}AL8J9 zIe3hNbq;FO-lT4fjJfcJGjN05~&i~!W@D=h0jt~860q-R5wgYdPdk0{MC-NTvPL_NB zGH^Z(I^_R@K8E={yyK7kO?ABw0)ed^S-b9y(@0I%l~W_ zoxkn!|4x_xjxPWI+2y|`reS4sB;a9XLQ(dP<0F|QZqjVaTuGADwKbR(wzTh^UcLJI z+Tiw1vm@m^OY+*#cH|re;jR#ti*^VkhxuZ%oX8&8?0WGo#A2v+BwU%D#b9s*N#@!z z)@x*~EWg)W)V*0ASP~nBt8JF9=O51JGbGBw^aRly1ffUBfPfWlfsI0Ay==6Lbyn~g z3TI-(crtgbsI;AGG9=p&+{HTNYS+|aI~pt5Wbs1fBP4`l#gA0pT#dHT+8*7!$19;? zbW@U`a*cnfoG*5_7&NVammE(n6UncU<7HNbc%Zr2eo7jXnTd8^IfvKHet(Tg)dM_& zH0{uXZp8k66FJ@^m>?)VCAAk5-Z6@~UXFLe{gf2{O^Eyxq~HDP@IZcd;2CEF+Y>E? z(RjBP6YXt)XE8B-0-oLSGfemF+7Uw&>yNqbb^l0yauQ!Uds@4X-*jRR?0N_1=QX|O znTg%_dSYc)tcCyHR?iQaiO~Z?Pj7i<>?I|3?wCl9)EZt~8ExBE?mE|ZB5de|-0bgH zdhs2=gEe|Tz6HLy(%0qs+Z9;kpL~Ckxx1$|j8q0sURZv4{9PK7Dbc>Vj!dcV{NVig z<(HX3e3uQ<_u1qfUD$8Dz?)dcE`lc@vx0Rnb{+wf#V1J*EI}7P{R-^PS*hFJ)}OxE z4r3O#{i;KiH*pibqK+Z{j&)L-y{!+uNK%^}^Se*p1n%=IJI?HUT6jCGVi%B7>#NH{ zfF4L-DAhhd6CTgPOS*3?>+q&yzhKR<$#t#l!WZHY^1&=7UV)U0wSwQ<`u!Joaxy~j z%7z9Ix{nK;esRZXN^b}3b}6-8-NO7wwM9!KVHl1>N4395HsB+zBi5 z?Z>x6e&b5Mf8XG#?IC*Ki~TBp@(S@Wd|}7wtx^sXdN z^sW$6jHx1JfC-!B|I^%L>nqd%7rf5R^=4!6J2zjt*lw=XS2 z;>pFjxUfDyLN-5NX0hA(d473)e!htq?feX$l7iPyvAAtszYN^HtuL?`gQs?+DW@00 zlq(M~Pj+E`n#DW~ObX2)^pDukUD$om-r=+h?Ryli_6{j>wbMAk#{2-}P3^evMH$|~ zmSH>m-E8>V7uw}Cj&h|Gz6`7wAEmPL8r55y-cSkivN-$P#e(F+%um8EaJ)<1tP(~)D2o}Ym2Uk_{{X&)i%Di`~H)dNZTxz~Qd z#yH2oUU-7X*2v)lu%E=fpL1#W0rOv9q1`{v02BL{+1)F{*z$S@0AxSdo6`>I1GTTbLZcBZde8TP>ao`#{bBKcdZDx9>D{o9 zUcQaS0NQ;7`3ZJp^>8`<18&zi$t6jWe3ad-H4Z5=?MUv!u20&9*av%U+W*ajP~LMS zhozG1*f7$F`~I_S$x=Vc1htBti0vKJL$IUoMelFRcto#ZNj^CYPKi40DIIF17f9li zpteAE*Sdk#`1e1@TaCGkjY)YNYPnck>|h6H6bt+5VCmWeTW)f-cZ%W-^3YMVho!bG zhK(tsnDE~V|DSdF-_7|8(dIw%D)HD(=?&!1=H;g6coT;)KA*orOM0ku-iP@JmhRZq&TzZhQU6!a8c-Iz)w1Ys9a`X_j_*dRL(QTz z&@-N+{aGZ9TUk26##p}>tG~4aHPgr0>HgztytO@98~4foF}N9PjUL}}qW|GBZf+c< z(Sr0k4E3n3tqOP;IK8suze0OV2F`Dp=P5~d#6W7-f8Kt%Jrj+z_G3rz;Y+*c+Vbzi zm+mOy4O$DN@X|r-a}l2FdpLr5m6hy6zT1aq2olgkS4bkvOzy?J*AKZn_J8l&0!V3$ zVkgc3#)6fln}J2?5hpvZjLdIE*$hL{+VLA^{ocs&+H-|kJ_C6#%P*_dc@Q%&SuB%Q z=OfrrM>R|Pp!yfakk%HYaq(5!6}64)5AQphGVq?Ey6T!oOW4 z3whcZ^QNCN{f|M{!{F3{o(xJ3dOq~it@~OxAK!ao&%^t$E9T~T==SDsI=T1Mo<|=| z?l@sFY=@o(a};(Enb@5cn4_swv2*HOuabs|tfzM)2HNK8o}gP=njezi(7v01(caI( zV0X!r4x|c;b{ZXMXAP|bj-DHbRG)UH9cJa#?cFl&8_?dhfi`ixhn?*dH;A|V;$}P@ z*p#OimhWHq0oEmZ9(yXg=kb5Z?)j)Z2ft(AS&kk9eB$}##1qhJvV7mS$~Veoq4$x# z5BGlrx`kuVF+8!d^ow6zzmz_`DM#lHZ&pfejxylrV1Ccz+5Dc5{$;++(E}Vu$DUZf zPl;>)8#wyY8*ntcDMv@TINEday`r7R*J^LGy-wvDq#)an0?i@Jft}c&G};7VBHk7Oo}^t=0tg!ry?0e_Ob=B~T06$&TQ=ZxHVv zHpC;IvYYT^g?@1_`ivE=X#c{_#}1};KAuhO{ODh%;D=Up=-3Fy^W-Ye>st@>=dWD9 z<($~S$xh4#J6i$T5qW9LCLA3-2dyI8UJtIOxU%$r-XM*m8`5a^v;E>dkA7?U=R&kT zths)IK72oNyNFStv#+##1FEtORM|4*_M5ELD`qs7+X{Z_qX0kV>aT_u4Z=c3exB~G zT~^kseflZ4D1@2C;~IW zDitP(AF%!Fn1Prl2hx=i#6-kBiOm_t4*3Gf;eQO_IKc!U$;mCSd;bz-4q5E$u*1Uu zyLWQq_awP@;UT-^FG7$?`17!Te+J=OurJ~<_&oyqcXAUxxq}?u0Px;Ubb&VlzaHR` zoAAhe9zqJTdxrfvOScHS^#sCy0sJcba^j znKR@jzQ|ogILVlHBfJSW^h;;RP2uFW;vqfHcOWRD_VIB*$d6K1#@IFAusIn7)sOIby$i69`9XtHL;oM&YBzhm`+)r@s2RL_?bNe{= zt(<#=gI6J&Cp-Ti0}`F@15Utwj)NcL{67Ln`kox;_H)p}LDElAeC$VJ;W!6>0y!Gx z^V@(F{x!}`@-=cl0Z98sj&bfXAeEboa~lBn!@Zw#lQ5Cuy^Mdv&jKL1&vNi7K#I@V zceDEgDBREaldV0vK$g`<0R9{mN8#V*;O7CUo^pT(0FQFe#X%L2Nsn<4>g8MTqxT}- z1>AcJ^|{F5yu01@SRC48^ALC^J%$oxe;aV<{WNfrh)eHVL5IiT+=_N|mGcK+jGX_y zz)v79{@7o&>;1i5?|;%RCl=@Nu6H$jI&q)x!f$rr%yi-WQ`dX63+KTu|3|v$ko{qY zKK6F3zE5}Ie7WoW>8|&iyYN5SMdz=&-n;cP$GZHxY>6Yq%n|5^i#R2;eyv41nc%X% ztel=)EOs{@t1Y0Ab>{Ac7}O%rS+9xXSqc>U|1ksjRURof$!@I;aRa;C=&BlKo&7Q~ z)wWTNl8Pp~nP#TV_-vjlH*!**xrzOnTvEuI0Xos^s90c4%o_f;6)vyOIDIvH8%)c) zL)KVXtr%9((#df%R?O4p(jy&@)q2^?Vw`fa-f(+0t+rlfb1Fw>u|0Jyi9-4a?OVOp z7nRaB*xo>-?G3{XGQs|L>1)I?p`xv@S+%<^|2ln5ANmtB(e8r}p`UH`d+ab!fJYER z4*OsjVt>DhzUJe~c6=iLc@6d>QJU-ZHP_f(uRs6tG~&w;!rhfFeBC`(;39v#KUp--D2@wNIA9 z31ThY!#$jYjbylM61G8n-_Tcf534zXp%vsqJ}0NE34gdy{l z@_Jf7x`>l1IPFm<25FBDUs7&gS^6TYKO*@gaM>8$63W5Won$4*(P9>FU+z$a^a>V` z%;Me4WUaa#+>q?LmxX`L(rU|?NyhyUv|)p+1b7g#+RkZhBxMEYM2kwd;9=NcUydujjHkxz_$vaO+;G(h9V3mXO=;VhCD+9z^B_PD~H!NzIboY1;K zM$Ne_D|;Xlg-s|pyjHK*_rtb^X7|Y*$00*FPMRm{svhD^oEB@(e9z+TuR({v>8XC& zt;PB-h3-OVN3-$#i@b@p4rl!M_{rU{E8T;W#`fT=l5|g`bK7&Ob#%wN)4%q%zO<@& z+k-F8m8E~Z+R?p{EURyU`1;h(h9M_4vHCXBywPK2T_k-Y4IKI0j~XQ_={0TKS6O|^ z$a&)QOIOxwoZhoegNC%BLEFP>(Dp#~-Lt4>btF4jP0t=yfA%q!8tK%=pi|p(Y7$@A z^PI+pQuq*3*xQPy zC5C@F-)QUAvRzaoEY(9@8p8XbA-s>(s0F(6H+@b1cCO}c&nYW7)ppTTu{3*Fj6J8G zgGO!7spApK(?gJwJSFK_?B_H@#QSY5_RpX{>gXtm0~5=^-YyQdUcFJ0+q;)wR&vN2j1K{m$eVdI=foPSss=aX!lDi^1BavN9sJ&RY?;hkjh!ocfj z%_zkWy}H&HJjm1F(<9G}pKNRP-rJRzCL3FeyqrtXSy{U;?3riM!^p*R(Cp=LKE~Ju zI&q9Nds|V0+i?2P=*g{+!-o(y#I|NX(&}jTZe=xl)S5n2gzbJ;N_sY>HQgR@`Ias& zc?%ug-dWb_{5U%T@rJjxuutU#&S!df1UBafaZXj+I$-O%@p-&;8X5v-a_9LmXg;=b znvc;7+Drd>0J31%`s4hxr9qq%`k;n)zK1=#h&MR^ZRJ+>1lwO-8E^d|PHyd)EMYeQ zXiVn5+Yc?qFRt{T)?RvsqoKX@1@_#PrVeA{*1l(ON?NNIXT_kWEI?L_@qzZTkiO)( zE2K|C3E|wu_K9^*tSo)<)fbi@0~eF#JZ(lgkN1R3dt zUYsU$2&W0*9JW_Gda7qxJ(c#-(+?nzUHj3rm*(FApLP4u&Mmad@y>_up1-{{Ie!p5 zy-WX%a5Ln7E!E(bAM46JIh?rAZLg3sSE ze-OH?gDAV(kvldGNS7(>z~?E2Ki!Z5at-PKJm%fK3lm&w$Jo?5TA7ulH(rzKT5a6Z zdifu(O_S1@*)*Lua`YcqrH{Qkzgnwl%27A%zu7?hcI59)c4q$j8^n8hLpmC zF6I4Jj;DGTPk(j;+7E1?-R6nr+Yj6z-q8*5h^OD*l&3dvJe9k6`n?;_7H^>4<|zZ7 z)HjH?dqX_p>4%QZ%BkH(9$L8bvA&b_@{O#wVWG z&v9Q^<$k@ssI6`MD{hRW&k4r7Fn%c_J+iyVIv4M8G4kyKTLWgxogwn-mJb4@tIxOK|(|FL< zKs#6>&qETH)?`LQ4JvgUx$K$;pURnCLllIS+}Bs%)C zfOWzn+t`ytpSl5ejZL}3$M2;01>!5n@zpLp8p+%B#{BgsUgC{z)PAolWp9w0W}&#R+UGx)OE=k`KWK#8Oz$nfL26qzq;~u1gJEb8B3@%pC1-@yYRa>+Eg?kDc47Prtg9 zy8##4>u}NY%l8(U#V=o3H*F^{cpt+$~OV$THnDzBX**dsv#bS}};`g7LK zgHrEj0lsPSUOx?N?aX-r5CMz$rh`7MYO&3%!}kVw2y4TU>l~} z($ZY|znOa89Bvo2H8MXR(v!lcZ^Dr)i(vX8Y=WZPzc`P1A0hI%!`w>n2%}&8FFIHg&v- zA+9mM@0mLiS0J3Eef#-6*_ShC=FFKtcV_O)nVEBra?bg2G0moAn(?%0rk+=zZ^-5O z16N3MEKQpGR-{Q|kXX)Z)26we_y2Nf|6g3YoDFHx{1%@pCCUj&CQnnU+jzNdSL+eK zJpZ>>NOO^$eM_y|n^vR=;V4gYfQL}uUQRPr7r9usGgnCS@6)9D6RX%#66K^(O|08@ zc}QxS=vQoP74?OSX*ORW%{$Yi*|Q=|NTGR}x2H`rRU5XLX2BKG>`0U5>rJWUgyfi~ zxif8=bcdS0A*4rHocmnH`hV>qW^Ssl}Q5PH4{?bjTa# z5GC>Adp91YK3xbc9n`-!zf1X+c&UvG-P z@*4S(#{44c-#F{3J^zecte*{##R%t?d-XMGQ%oJ<#W$k6LW)nMNzs~;;&Pw<5%*6m zW4du9{|YINq)G8rnY4_{J=&W##dM>{3+$X~`dU?_NztE@;&Ok^Pn%-8F=X}%DSiN5 zEi2#S#bRk0mwWRuo|DvCO*euZyh4hn)1-JuN{Y*UxjAi$>Bf(JS4i>5cJCk!I4f)Q2|-e;?+HzbvE$FvrkHN*c=`${Zb_4(BAKEfD`cZa z!I2V-9i&-kGne1pgRvuz&kHbC+?#(GazXEUoDIc!c}NwZw*s>s+Vg5TlY4yK?B)5f zi*yQFd;b4$?zwTAE&L`FTtUtOnaoW2s{%y>8*5l-N$)TJh1^7$jYLTQ=l_t<*J|~tc z@4f=)(Aa?TU^O47m?mi9(Vd}m^1Qit8^R0fIiXT>;qMQL=_E=*yERoPNjcl;S>5); z(!BWrNf@a#(5JtmG|iCZLO1?)^b}qinqB4{F*fDVzMFh~{5xbvpy~kTU78D~wCS&| z#mn&{A@4sW!JM z6B6e$3)vY-{0RK0jJTsD-ZNMi-@@o~n=+ELa39Ilk%l8F9ZB=W^Y!AqG-3CKZo<%7 znbsndgB;AFF=u}Nwh*MrY}Q?mSvT!RHnIB@`AoAt*~7U!U-dyE&b4zHvh0cs?9q{( zykgMY>dlzddNmg=$;7vMdAa5-Y35-)BF?CP_?tx8q?%Vg&u-ad z&fW$c>W~y8rMr+0ohik!q!g}nvU=wk)ZuUj)6>5hve+iLO+IKDAHF>Q`~uy4%a|>b zU!H#s?#wgDc{~T{i}#Cuj@F&HmqU7t?uM?N;y7$?oQCa+WBbT0e8Jd5W-i zZNeK8UbqS^xXGJYRr1fdxJM=2p}laOL#Vt%i}zM3T$jV>g>#=~v{|4%?aht<0<}hb zv!Qz|!>c)$osn^&V2rNVE=m^J43` z8nl8>%x4~S-fY57mvHWV&@* zj+mmPWNl?DT0y}>LN!X01)XSnvd%$!@43HbxgdRJ`FJbJjQse&As-ZHC*Dl{k)0_F?Jwu9^OBmj0HbrAWUW z>C2J+{<)Hei@&t-k(D`E_n>f2`Fm*|s^@mHljW_uvYap9qspknczLgAS0$q{^J2!k^u?tcT*wWhrCcTKjU+7dq12$kjcx34 zXQG74%a~K(D_k%aGGzXOz9aj2I#sBlY`i<%eq=GSs>-Q6UPx)M2E$FSbB`=!RNyEm zzD_f^(V9K?&37}3GA z)GEsXou|k+i?0LoDWz`%&f#RU?-ogSHely>2H&tdz1gU@#rYp&zdQrA#=b?^InP2* z!g4PN??wWlNOm}IB8N`nP`kn|)12(Ya zzxb6*i%n~z+D^Fp{!eAY52J4WT(U$P5Y z>*N(XANn3{oyYiohw*d~+iy^^yP5g-EzbYbCE?tXKr!~R7_y3jhw|8-!+vOSBpE@~ z>GjZ2P>8Wlje3W&u7@*V2`ck}^^asdxQP9K%KzrMop=k2(A|cX_QFn9?@z*=gML(k z8pwcONnDuA1|5yYJL6-#Zs=A`$&sD+-m2Zk-dx9p`ElG29WQBGejhv8d6rK~-U)qE z618hQvs`O=D{9S)Jg5=A^GNy89k8?ckW7Xvz67$=K@T@bXvrXqRgi_QhwHHgm z?>!-ed)~5b7?HM|DgF93XgAo2y&ErX@Ml1m18F&IMg5e;pKIB|q}N+!cjK%Cjo4zW zQk*r}dSutp?Wns$aaxVieNWNOnlw%>;s~-*+`ruH)%-RqqvX);`0iQFg~z!xH6b6y ztP4FfAs=3x{~)n*UidfYTjl6mW$0U_b2s`Hy+82c>zb>%@TvUN-lVzEz5zZPey{)a zf^dSKpDmm@Q5mneS9W;!eY+mq`9L{(m>+N2d-`V!F3iYop4o|B{<8(^qxoklXWQkK z7-cXM!rRDvp&YHY9QBqV&#lTQi$Co9v;%dlJ(ruAe`rtqi?3C(mht7^Q;*t_?3N0>Tgm#SaPIHe+h+8vZ;Bz*H?L;>Sq!1RS&0@!J#zf_C~*3iOT5{HqncHYvLT`dg(WnvlT~nAKisk+i{s{lv=F}`d!7-h%}F?pcc7mMENhYU*QFsM~O3^ zt!y4eCm8oZpKJwYXuFYz80Ik%>_BD|ys{9Q+y3xXU!uJfv3;VKic? zOY=Jx%b>@AzKvx#aq;E3TjwfRUryv`FJ?*NsFe4L=-PQCv$mX%OT}2hrqAy~tMW@W zpeVmpJijvJ_ZH+ghIv8eLaPM4bF%=^i{AXX4@x{r&~V3(zNHqGsW zF5!wJvNdXeq;RSHNW1284II5B<(BB_+c7?rp4mQo63iaPW;N%(%lCV!rz^1&l!Kn0GpnMVpu%(CUxXb_`r1QVXNvBKyYY_K zu{rsB(CBbxL5^PVJGh#HIAP0l;jYvnu{i(WBF$G`{y@|rahtF<<*khJN1U=WgVvRz zwu$0|wh7Ey1aR{&(%)}!%J(FCDOOU#>NP081WJ6{=C(+$b8i5z* z|CHVB+<-YyLJI}m0bNHHfgy>hU^hBxAB}7*XF;FC;=Go{;I}lnmWp-p0!B&agqc1B zE9o{^tq?5tPX1F-NP0E$oIU||UH6&pW_wg{JCt1Scd?usB zY8=v{Z3xe1xtd?VJ3yZ#-vSnkX8tTMa>`4pz1)>^M(iPiTAUg06U)r+!cv*D6&cK) z@8bLqu}eTRJyB>WzrW6mK$l60Ydqt4`Z^Zia zWyRwBLkqC63yy_J-4rG9TI^Jn#1Fi-^c&hG*od6XoZE400W@@wL<8r#^Kh=aAR8ku zozc#Mo`Ot_yps!P1NgcU@2sPl4=rNp>w{#Y^c3YnaK1I}2Z zx5d^2ZakU|sR{Mj4AiqFZR~%YqdZ~6fqrq(0y?aZf&Blqh%F}shZvC-!$1ly#FNtf- z0y-6m77V!nTPZ%m>Hc!A4_d`Z$^khaRyJ%E$y!E9dwhl^`^4OVWY}#8+kiDMwPA`^GbiI=bVlN8Nl4|~=47n95$kzLSm_*D6Bjjxl)ygw zt8XS+5bFuNE@)LE-JMGGN}4w$dM4}#E(oM!1%DI0^wPY3iF#S;4egwGce1}xkI2Ev zSh25Og6=7zFXyAnx)&1uGWgS~Yb7VLiB4;LlC@!n9AAIx|J0L3&N9Y1^XR4drOWAZ zQk=}ma(U4wP~J?m)(l1dA*rnJuTErs9c5-WCD5XwtG$fhkjS|2(){z6Ni%l_()#h` z99HTaNk7Vu%jtec6O~Ae+gn)LfcLa>wE`R1+kT zSa+o3xBojsxR`NnJ)hf%=M7%L2rg>!o?&OIKYt=;540aak|632x-|b8W`TY^#-iok zosF@NzE1Q-p&Kw_&Q|LXy6Z$XN-ob6Pg0<-pg*r?UxZ8ZotKe+yqR?pzIpM#hWw7+ z1S}k<^uWCMUHJM^82LwDgtUCsXpk3=K{FB22(k4G6$P;7%=-Fn$Izc zl{G^BOFY>jzPme5WF*^}sJkiA&IGixql=`mNkBV$fN5S@4@t!G8_k6#oD6DbD3ACy zN%s-WYVu<1aGHenG)T)e?gT*-4s5cPIxJF>j{PAv1n8Y6|=5SjiIHT(zCqZ6KWNH*AKrfVH?>hBp5M z7pb(1StI6>G0Mx8C1WI|{~9~H-E`rd^3y42x0^1!ybC@lXSZkPO5?aQb+`n#Bbp#f zHsaj2`gGG+V9ZHKR&oN56cO~jlx$$%XTTkximI^M-Z(wp6 zitz@EF(=Dswn=Dxlf%}NveWCZp4@;Hhn%e^*JC}IgZ1P(tS2wc{|8%7CUU$7`sw`g zOY?K^Wu?T92bIzezh5Q%-kUj83_Vbrj$EGqRkHpvL6?o#V*S=)W=1RQrVBX|*~C7K z_}Q>9l0AD32)V>hhOW3npb>Tu1~VIf~9u}15IzLFqUP40ss+KPM_uyumqfJEhqsPu$FQnZZ7 z=tpWoRw_eT_76`C4!fO^gqD<4dY4SbG^!9e_vlz9E}E{ z*u@b>y;U(~Gcde0;djY`qY;_c5em73*X9e?9e`H(ENB=Z3&vet?J}L;N9yB6q{}^y zJMTaYqzNCeLwrSD(EdXDfv*mCy78JP-7X$Mr%4c_I#$t(etMtB2gUg^V#3T9gU*6X zcDh3oE+5lE1D`e&+z@p7LSFZHK+KWe5pk^aBQlK#dZIZE;nZdscd#LSJd_Ze32w5E zpnnRu-Ys$$akA1(wI|rUZmGr`8M7Y-lLDx-uuN=Lu2n=7Ht2R!g^N0Os?b?bCI_hu zx^@*g)bzu^fy_esfU0zsYh|ucv{iaB0Y}8?l|`XwS{6Y@kRG}O6z#w=!pe*x1&ZMu zg{d}Y#7}0VnNFU;DHatCG0b9WSWK#jKPX0`$kLG@isA;K)QH-E)Snq>B-7QT{)mXe zBR(`Vm(YR2j3-;8(-A~%p(gSuJISy8!Eujo2r82XVrNZOi&HE9`%%k4tb`p9vDVX788b?4<2(!4fsa#g&_Q*QBG_uLC%%IbEX|Da)j8H?2%b)`a zq$beC_cMl((NP&Q;Kw=gioa5pmdo)Gh_9UgkHFv~>!v48zuz7;QIu@;3a}!kbM)NOc2xrn_$bF z;0$cl5(I-c7|ayvp<96%I2p_po?wvt#NXr4-ynysox9Y+Dbk?;8^$N^f#2_zy~ z^jmLN{c`$*KhDG7LHJjJKOzYy+=7SF%>^WWk3g{n;kN@4{-RQ}Y5p8w zA8-Yr0`R#y)FEIWAXHcc$gp%H;4lIaHE;-!=r7j_08UP0hRC@rFR#{h}XA&ysaSPV$%K6?OqtpFo{L|+7G16+VI3WCoA zl79@4^4HAq?SLp^pa78a^E$4D5`Gqt@Mk#wJ&w6{9`MwL%PkoWnj2cX9ZV zObma5!@D?~0c=M6PLA*8aACKY{`uX)Dbh8Qh5TNC-#fd78T_v162ERvl3C9Vi_=NlMP`w=jr1GBKDZ*dw6i&TF@wN*mUxMG6 zox*X#DIVcZak?kUnLe_>XUc_BKS#byyM&XUgWq(yaGY?WCtS|yF7FUd{TTj#54ueF zUECoYC!FXAe-`1SAE$D!aPlWR1mPKk6HeiTKZx*5Gziyj;p9=^hY?OVg%duA2SZ6f z3A*(+3c^3igp+Fc$w5ar(Gk86;aR}{55lhlUWstRDV*@_cy0opbK8Ye8Gi!%N1%Ie zyCA&1T{uoS(GmU}!YO?P!hZ_ngN=geUSt_z673 z=PuB_1iI!*eE;BgJLm`}K7@~RK6il6B=Dew58*fAAwFfGdk*oAfloR7N6838%h`c=>yTlTX4A>ar-zDKg z_y8Wtj}mlGfX)j(YWT@PM>z2zyqxoS6?|mC%OrdVe`}k_=b3H7se2LcN8s};{C==a zI8He6A^b^%Q+})n|0eLSB0N#ggiqq3{8&NvSb zAHuWo5T94K3a3U8@AKgE`c^?WyHz+&IPoF;X@pa|G$8!Dz+qP;*-i<+8{w3{Aj0Fo z??8AWzl8VUp>!0W>jfP|9VhGIcK~#RQ#yo~aXznuPdV^X2_M4W*dp@z!4~0EJK|y7 zKKTs%{&tISoN(ep_!9`H^m`C~4EUo6PvnR25FW};E9i8fdlz&T_%(x$aNpp3D#7ci^G? z41(?&(0w0tL-6|)=m;l1gc~`ZZy~%LxL(4C@KQX)=bg>MsojWo?KSwGZpQa?vv8bn z;zRf^5l;EphwztxpFwz{eh7aQ5Am4>-6qh*LH8N>O@fYa;zRf$&gUq?UBGXa@F9FZ z9^#V&x^;**54wE#WrB`y;zRgLo5c22QH6QVCgg9^a{D6uQG`?eaPsox6Tlxvcp|@q zUnmjdXI(3tyjUU#=S!C36aHH~G|zY*bhAwu_YVjsUxeRJKu0)!j}acnL-`#C-H&b% z1T*+e!Y>Fq!ikRX0X+0wlyUlt#lorof$(pD{&F$$Q!E@OoahPvB_5(b3P}7Tp#N)x z@3>Al8G~O4^n?>V;TBF`%IV+Ph<=XnJ3)VbBg(T8{hZSi{v00S9|x=f|6$O35dJ>s zgYX*yJ>kTk@JdeiUXgIB2mS-q!pVgqK{!_=94DOU2!9$6@e6^@3V+N;Pe$P92OZ%= zNB9uJ+kn4<@L}MC2q&Dv3BMWP2Y~+s;fH|tA)IguCwwa&O6M);9xjLf{{7J9TZsM+ z-NS?v9pSIyq5073K8dcujG@Hg{C`fmaf{T*e`i4leaOPM zBy@y7j;9WEGl0~d?SOv@Tn0nq&vupjUQ zbR1JY=hS#_@OujMiF_0OI1hgZ;a>&*h$NiwLwJ ziT^w6U^fu>o9o1QzeBv=!Vk7Rlko`u3?8B%=I~R19f(J^KFR+Ez+T|HI25@5d)cs) z3;&k@iS8K=pXTr=hh!s^!iPBQ<50j2`>OV0Qd%86t$1jfbepElfxN6;`=ZlvYLHAhj(*$8;7@W z7~#;*p^L+tIka=w&Y_+|T2c^yu~NaRtds=oTeP^y*&Tkdgz|#{O^a`%*$>>1>M5)+=Lg}#@%nj{Y75J z8!%v%bN4a4h|h8UXTkqJKu`Lxhp?Xg3U|MOmja#Z%zvR8`sG1SG{407Mel&z3nKXQmUO2JqAl6 zOwIN|Ul_Z?WYRVfA*sZhX;){2&T(jAXIVrsXdg65oD5Fn(&ZjkBE*~6D|0uQ$$wlhjnIlniEG}N+!7$XFAN0EYA*S4Y(Cv!&QOh5q z5gu>aF&=gwWE$aD<}WfDLixFxcos;ABkXnt5WqadA{<=yAa&^?nvy|!nY`4#AgPyM z6)Ji&rt~I2%r+;Jgix-|-Vm9R53XSymWN8LmNfc9G58ECu_=-D2t7u z<{%v-k#whE_@EQJ(Nb?}W>U{Y?eXR%GDvu$OpKmcY)%bIz8=wRKoaH0Tu{pqW^J42 zhOt>4mPm-Fp2pSy6)%mqq(9LXdSbj@QK8FqcO^pw$-Gky(nvBvhX4R{XWdr1I4Gg9?4*&KTN%nzYnw1U_{wIjEJ9@5b-a= z^Bfj~6@d04$jjlm0dB0R*^g-GAwEcg>>924`yu$Gt75wMa!-myf`TGZ-%E&}wa@IG&5UGo&Ae^d^W_xMifj04Kr83ODKCkTE*|WpI@x zt#CiKl!ue>xo0TljY%uqh4Fcug(s`2bkkT26_QrC3*&Fit%qf1*x_Xw`N#@)4lK%k zn(@kKy#9S54=216R=5jsS7!Y&+#A4coSb_}Qx4e>z}*}NxycImh7Two>sZ`>MBKvo zcjgMXb$|joKh5*_{RMDkr`ZeRUs;ihy(|}MNiM#+A{Tcjb5X!-5>zr;G1WLr6?UtU zPvmcy z4*SB#D8Dy@=if+p?qNKO=I9K5;%#1qc%n6mLZ)FNp^t~!GS1moL?jlTzld8HnaNY@ zIBgG|0=R$v!U3FbH_DghKYKZIRv5+mC+Nqic7AtI#_tZ&>37m_gS)2C9pJr8Hv&ns zB;5$4llDwY<+&fgdI(vn?zephE~`q&V`-g>|;&mzsYsyHl2S?fphPf z)67nBIqYv#oz7x*iVJYJmff!fB)$8;T@>{*6~C|ncVpI}=e`CXx(k#$TLA4vlogu&H7b$!l^x%_Dou&C_7s+mFA+Mj+R))W`m`?lspRdq<|7G0z zOx)f3i;rYwm~5{+DxUs7e__9P`X6^4iki;fpacd@KzqG=aT|TV3fQ_o*I)0w-n;vO ztKwz%Zacj7zN=<8<5n^51HfYNwxe4=#Qt#c{Y&$mi*y1V=h%O}1#vI}CbgVykLSNe ze!1IAL9rQkb~eX_%BJ%ZT*DG_m9-h8lNF=g&8Jse@`VnIEAW1KZY6KZ^Hw%yL^%?7d&UWD63%DDpQxh_Dvy9>OiwQiZ+9&eo^TCtu>p)28L zmUh9r#)1v(enV9}?>@S3hMU=!s1~xgHG|xT$btcVk=EgELmuull(JqTe)F>DHb9GX z4%2hpb%mU7Se0|MEa-;W9^XFObp9#HjfLIG8w;`%Ct!o1>Qefv2eM9st=rILU;7F| zDg{n)cXdjx7$mH!CeG5+!XR%~LezfvoD} zEd1iwuOS@2#|ZDigE)aI(AB{|D?>QBAAWm5M>x?DPBsa#eIIxW6C8*+nT^Y>fDZ%5 z5vPC=koZ($e`Yu0y$?QQ=W-YJX9y=ggue}W8|FrVrvZun9_-6(K=?!^&XK_HF6_$? zPV|KLak^5_QNH(Q2`9_oR}8vDIS9|;;Wr>WA9$uDobZKg;nW3`;R4bjdz#p{IZimG zL-=>_U|JVA0f@O7v#Cii4je~50wL~y2oU1>Ks$#waDUpr!M1!L8|nNKe4j%;a^Z)` z=5fL)9l|eW38!ct`%Q$C{mlzm!g0bWobX@b!4?3swYd?{4xIAQ4oLaaa~$=+@O>Q5 z;rL}tLa}!dcoh({*TA;`DgGlI9tMOsJ-}@~x`V(WY7eyX@S6Z3e+?9HoF=uH3kSG7 z+Wk71VJ;l_At3SnF8)9S9-wsr;bd!$=!ZFO;ZV!rCJu7|iS7*)98UMM9R4jJ`Og62 zbq8pTPzcx#NOXGvWxz3o7MAePe#Olw`?Cln_YYCW7UY@a@nnDWEzpqrxA4cd19Q`! z*FS-t{AnNUr`#Vv*umr80{WXkga7PD`&bD#?QJF8`z7u>5I5ofki<><8wr2Zb<%x8 z64x!EX_e4?TjGvNXtqe={!Zeiy^cg$1QTwT#LeFge9$~4^hYIpW+d(hByp!DZhAKf z{>$rGh&fh?q!X+Aq;x68zGh;Lny{uR5o>;Y`m^lk)vc|V5jktAPxQW zU>IV*k0M8T3LgSK-U<(6uslvNKZYEI;&&p79&x2V3J?o0kUWKNb2>Q+zJc@|WAYY&v_CrAm>hp36p6K`QL^@Ye<|Zg zb}i}8gT2G0Osp((4<**3x8gpyFq@4P=<7=YbeJy9zY16mcot9(_^Tyj1+6?Y7c#I` z`eTc~q?_jw+>weK87`IrD_-2~E|Uw84&1kt$gvnV19>F>zfAgz zH`$>H5jV?8j)HPwmMzR?v9-DM*7&kk!lil7QW113k`2v4xR^EoLDWgJV{T(*@t*A2 zz0ec5G~czvup>%X!^xc^?I$ExGD5C2P?`PEUo0qO^j9le2TKm?W^?$e@($=3D}bJ{ z+|%NH{%qXfru8iJDWGn1uzJnL+`Ry^{#?mwW9JfC@T7I(VI~pF%ljH^mNns4c+-Wg zcF7v?LT>l+8nNU7QC?Q?Zk|AT>dWU2HD^KZODpVnl7_wwSOexlUiR6lb)aF*(|%UqeH~F{G72^02c^`jL5-nbXu zSr1-MOL%=Eg(~-$yaH62>+UUSUUxL}+)^g&-ASnTNvNAH{E$lvvML1`Vr4Oz4kSC} zryu=~f&!+;tOtBscY27P8;o5YM_$D&(R5Wmut+ z-W|LNq+NG8?^xmS4Y>clG=KeNXm_p3Jev=Bgnup{nlN%eer`5e?{;pI|U;qi7 z)gH^PD11^{*T0d_?vv0qUAVadrGvEUC&%5=}OauA_jB3E%aH!i({y3`fz|b0!0J06^}RP) z-!jzqrx){&6&)uT>C*hf;s#dV8_<&PLwnCdednRRi+FwKvHH$iQQx9gGHSiui>0!n z74@BeZ(f{IAW4!z!rv+356!&CW-5xF%t71E;cdG{LTg?@D{|WyL=-Xu}KP+q(aGP$q4TavkcPtNg-ce5dZEyjpf9$&vu@-W{2CFl&p zNS!sC2hAW&=ieSnw7ZNw*|NfS%ODGsoz7(P5P?QYlF7u$@+ghzG{#fRjJcJ%RI;D^ z+PisKP3LnldKMNy`oEA@Uhrb}+q?kfSEk&Shywc-ncD0@6l2q+OmS?Gj1a zxh(C3eia(Ezwy2$a4Sas+<4);kBZ~=`Ard1N~&|Ja$!l7NT*x2OTim|-#66rF|gs$0a*|xas$=%Skx$j6Gthox8 zD%e-AV)mMN)$2>Y*>$W6*0VbO82^9ILe5gij@K(@%g_hP*l12PWPj~-2}S-23VB7< zlUvY=xA0c{Qwi;RuchPmza$j@x`N`%;8qH5rJUPWB(y(Ep{+WGa*>AE?WA{dGrq%L zl+gZ9(C$DvcAy-BYzH)lHf=A~?~3o>r4vhk7$ZPL66;|}3WBUWzU$b=Jyc6d?4W%4 zgXLPf19au!Ue0Stq}mIrxP)p#LRBtFw;VOvC`r{JNtNCU)#xVF!KS0)H*b%GwrvG1 zqL_chGQ|sIirG@ofp+uR$kme~%*X1*nSxUKd}I z(Eh^;TCuI(EunaN1qIdY25{TJxlKxFACb`RgGPVM|1N&*-S(_q&?O6d#}|b?R~;{W zKYtK@MWWS1vKc{E4`rwKJX{H#pT_3AdmYWWhsQC;AYGRyblIx9zfBs-=0EB(Fx~bvxSMcC^1TXym<`?IULW z^XRz|;Tq_wBB?R#DMQCDwR)rhZOT-N%O7k9EYX+Un}c+(W`6HUT5P$b4wini6D{%T zqtb86s}kBA32hllbPeRf_osZ(3-Co3_3Rd6)XQLVsPBJ3Uxho_9>?;$7y77XNkh4! zsu}v-;vZxP@+u8;WeTdQ8_zENhW6Gl2UKJ~l=&x1^G82`u1(C6vSxGR!*irrD_5V% z`XbR~qNI09DEd<KmXzNlZEWp{4nQ5~>;rl}JOWS|k*^ zQYgw;sky#KjBqpyYr^UT6`Z!8k_Hl5$M zW%*0dbiQmWu$<56>%H~fmW5J(A=gVyv!C_%7tZECly@ZO-m&IEre~R2=Q^~>zk#J{ zs>$5hBIpZjIzKCb3+%x)o&P%jzOR2$*n<@F^4_26r?2go|DzzQ4YO&s`wcC!`{%L` zQ)>lBYU|h^CyQUS8}}pprEf6trf)D=(rG#$N|`s5qK#z5*Fn>KAxijX3)z2l4s(Ym z7rJ+Dh909LJbUnL6b{{P%(#6)n~`xP#YXvJpuwV-t<-D;nL7I&!y2FD^LOAL5v|oj zkpJHezuRz+h;aNKBRq(w3UqSN{VUvG2b~gdKj;W2I>PrM{8_+RgkJ|(iEzRxobXL} zuoidE;XV@aFN6FacaembaUUs>9^o(Y@O=pX74YXJ;e_9Vrvmvo1W5Y~Hv!53%een< zA#fpoI*UR6p97?Fx^ORv(zzefJ)$JA^O0P_`r7nDc)Ux z#AgsN1NC(yhoyi-_bTmi0OFnxqrV-H=v^FFb9^hH9R8OeJh}$(b--%@k6|B&%57aQ zoTNRVC$Nu`s0YH2^6*a~9Cvqw2PNTzyYNuHnn3qGyweEi^zge8bcEyg7~!-hL~?)H z4V&CVx2!9*&&%y6B_I(H^dcsfOA$mU`y)P^1DPPB+@52ticF-sCNw^*l@y!R_ z)8K=9PA7}tmjgP&i7(-_pHu;Urva&+9^v>n$2$S9hyNzPYC!B0vHMc5VxNZ6!~L+6 zuS1Y^7W*`b^a=kd58sdQGr*sdgcE)O50&FEryBy@gYdgYLPz-Rc&HrMFFJJs`Mw!+ zR`?k~M>v&(@B?_L9GQSrj@Ka&qqPE4+k<-1NH!^+@igF@7CJ z2AG@i5Zyn4-`{XPcflRyalZqY&3V2GcQtp1(B_K~pZGio|1fuFBM$+d)&=-eIf>@0 zfY0)DwFrNi(?1J;crzLq9JDV;^tZ$B5ztW>{hpGzrS~cLeK|(+MG4K9;FE~E07t_8 zqJ)O>k?=n)q2DO+|67T>0(nc&w<7-u_r0i-gq!+f!hN-br(Z(zp2Yv0gnyHS|3eZ! z*eg!*Y>>nqkobQ|!vCzqU%E&5C&*YLZ!w8mAxVqcZGvXKByY<*EwqP~+=0Mxb!;;^ z{5}_Sw=L5ILOz_H4oQ5l8z)9e+zyfMtfaC_oLt5}*)qq~sX{T@1P*DZP_cbI+M;2{ zm|X{P#ldmV?^|{GLrieh=HGHYQm=AQan{}eT#iMR@nN?*L~3@PnC={`y57M~<{ylV zvJ$Ke6(iG0j1?iNd2mcbyrbA8nqnuLeJ)&R@eTQ;S2b2wr=->ori;O8B%5*GRWV0$HwTXz=MAA1Cc7r5+5NnVt?{lm!Zt?}BHZj(o(}bb< z(wUbvu7Zf=VV6PDX9|U0PDfIcALUj^>Z@J89)d&J!PK4FRE#RZ=^aU%E*f-Ne^R`; z;%Z3Zusp#*+PG$yjFw}suG+NMKEzTW_Hs-~J)~UyNPCYXwH8wES|sY6Uu;OdJCWvE z1!bAHLGeOGg2C#tBznc_TM?-l;)BtLk8h6&bF_2(Dmje>+u-Adf z`^P?~uc+t8`o(klylBb8`hV#DvLADSS$s?g;{V6qU(Vt2>3fuobx9}S$Jt+|_=gbX z5pfDcvDpuw$K>zB_LsfjfzKm5#3YS}=}+=U-}z#OA(QwK9p;9@thiFr-mRot&gpK8;JRL6O$d6jFWI=N=5;!Z_7_BpA(3g5kh z?^N6(-C;f-lMm7ce!^7zvHjD*&|f>um< zR6_BmD=4TOMM$}br`#{0HKfok*Gr3prY?o1?AW8=R|tNEoL{Ykc4rE0ygkkGCN?N&%vx3Ybdt&kX#M7b=!mA^0XeRkq~3X)iF&n>@C%CAsKHT1j1 z?WPmo4_DBAi$?Rt!)6a!uGcs5Ha31<;E~NS^CHjzX&Shc0?ei=b zc`s~#@+#OYl;PF|?Ju)(!a`dGf^KU!0oB7Ele9I;Ewe*{9 z=ta9zg#Sd-acQLkyo^a+&bmVdwTix3KH?F zn~8YFtA@`X>0*OVT5JKMz+TTn@ZS5>7bemMq_p zPqKVRKz9zZg12xkJ&|w1pTk3P=!XFza|+x6h-nAYJ0t@nc_p1cKaa@}$(0`mB>5G| z7D+yJ7a-;^0Y4z|X#ylZy8uf7FJb;ea_MIQN&b2ikmw*sWOSq_i11w;zl2HDX5i-` z_bWxcY|n_vHQXxEpkYQ+^1ibC;M421p)=|L*Oer+Mfb zpx*_Lt)M5I=m{rz3(@}y9we_sdtmZPk^@qFIUvNtfhrDBM%pq6km%EivXMNn3GQ_u zCb=2O@vcH0k{kR;2N!b#2qf1df09?rxcd?K!^!+70ZA_t(U7dKgu92}j&Qdf#B^?* zXl{r9{{&9)>Guy3_g5rt74nmyk%2DZ{)L1_C-EPb`15-Q2!#$Gq??Fql<+($@qbqm z_jw7=hb1%)3C&v)8iT~2-a{fSl7%MRPfOf&5}wOzFv%hkM~rC|{@);?0_Ri_m1Iqu z6kn{65s{`3m=gF{vZX&>T7#UfC9UDrlgw{w9e$`NCb8(1$Pv~O!5}3jg86s{-qR%T z#|cPyf&V)NBs_^fPC$|<`0A$oq4E%({*?tCAo^Hh4apmZ7z#ZQdp$Qg#+}}q^4FAg zG_0YMK(&09{@}p_UHxXgp;^||(P=m6i7)B7qu*QjXyLoYAojl)G;uh{;ioyArijjJ27|Rcn8OS&+#(g#6Q6O@875OVU^m6zBhkwiA9Ea;MaU}Zv99lS>|?HO zAfj)Y5+?)FrOgA^OeI~Rd7L%g213&`6VW$)?$&N7JXZSL@fNYN3G+DVa~B?;OjCE< zcXjTT1Jcx8B5-x?5+SP_j3i_Yj;rgA;)qqWqNvLOYxBB7Nc!CIT1}0|Ci3Z3|Itmx z^jg^9doVcRmnfcNY$yU|*UM!|`mWxnVi!h{&oBn0P?%IEjynR9UX_fR*nv!Rq2&PS z=AP7djZClJdt-H<_G&C+7k2xH4pQ%4QJ{~i5-}ymEA_vn4NTP=$uq&~l$$e4eon-& zkFdZ>u69<|t+?x!W^bQwRi^BnvgDv?aD|4kq_=n(IHgQPoo3BQ-s~Riib_rTuU@{P zTk|*vQ}535|ME4S1-gm=0Y$Glg+4tS@n@q~Z67MBcL-Qt#a;#a+?<)GA!b*jqcu+>dwIgE)7 zq=j7$BGJwta?<8QP6(wYkQ^>j-)1UNx}#93MWnp`-#Vi}ywZs$|rTKVXkoU=c0}TNKQmqE|%QF3BqJ}@WWn)Kr;KaekU5mkTaYn zfkVXbvCp+g(@5}>_{~V%q>B=V1S3hWg9q(~K6?^PIu1$l2l30Azk}>d9^SJdV|xf z9c|Inb{jM?v%R~eG2GwRI_*?MJv}Ww(=MI1xiH^0rPbT)8h3M49y3pCROVq@%wo5x zEPAg4ep8~KDe3p$mj|uFtktw=r^NDVJcbr+*MwH9(fBk9lSXT{I@+c?wU%1Xq_=jk zy2cc!Z|k*p$&VVKF-g{XXT?gm0=a-_hSNZF9&&(T2_;m&0WoZ0sIr>*)yv{N@Hz zduO0IpqVy~b!bQRI&ILdanU<4+LVT7kF7h{EB6%Uw;D#Y)~U&McYF81q)|CC<(h1; z1f$VG58h3ud|2D!j1Kf`7@D}NY+X@m8!kiC z)@;_G?uXRT!hD^l-_$lbV45D58_*{84x1)A;4#HC<_>v((9+x1+N~Mt^K`XFT4U~5 zQ0WVKsz)Z3)4_>Om3&fFUzi_Jy5v^fgtAr<=+@O+g02SN^kl@KFcTMRZ7|qs8y-+= zdnZQ1)6F)0i&7np>2y<0U*lNF)n%S6%%9K=2i2iycgKiE+t;Qxhr^BXp=sTa&d?Dt zX+H6Z!hF_&(%t7OLyO4*YsWHcr>O@9?qzL;e%|Y>ayF~HOj8uDQ$m$OMh$6NWUTIsBUhsI#dx=zo*92rqPc#w>bm#+6INY zLEloC@ADdBkpWY^QXQ60yZWQ`V_mHc%E@tS*F>-0tr`n7)@jGWLp{dE@MJ_c-D~WX zhXS=Bd7E9UYaZ$zE6nc>PxRVN_Gqgq;0*dT;aZQQbD%D)=?yeEJGyc_&9-n< zXJcboiy_+DfibMptWl%FXcW_V%_csI*}LV@m{G5Bh-0DIZa^^xTbiewb(XNHxzq2g zvw1qZ%^sWF5H)(87L2xbbF{;5l4B&SH4kg#z3?>;Gry^%AN)UF9t^`8TOtp--q>Wn zqB-nnX`FWHwF73YIb}RU@8YAmCTcKhF8dFQd#E^BQ zWu(t;8}IC@ZB%%Cy}fN+_K9vyVZK6V?yRXEos2WIB+B^;Q z8mCX*FjPJ48IVUk1EXSXcFOHqjVY?pYg~o-(vhpXrNuwoXfrBYZk@(9?H}l?HuuXN zK|_Ob&2g(RfAuK$@y4yf{Ezy5N-?g-2s<>DHNTI!Al+bYCbk;Zyb6 zEb4ZDN1e;%t@WB?vHHlgr+v~cuQS_w+7w;jP^%c1w@=rN`)UHCU51clpm)qVJfbt} z42mIDT}z*{zkO_KXsWeS-k^5Y#4KIi-Ky%on7^TCKv}EoDa;>gai~U&lSWOa*6LLE zYfL?+G5w^`SZn)Z$0)PWiT7bJn5>2|!<1H`3F=0z?KO?vHT`n|52-za6DoDJ&C%(y z=pxPSeRU39>p*{~wL@jo_nTtIn!@~gUrm>#xz^P@u4wa_TgP3|+MenDQIv30JJoKF z)I?KCnSO})&{3gXk5OT;EjcRa|DPNcwAzn1Dj28583J0Tz1c60Ox?8>b7Ew&DPp04 zUX|RWH{qMxYuDJd9w#3OP1@yA(X7=*Ejo>+vrpxyk2xD_?Bned_6d`*#xT|}q4IZx zr~N&c2R07dI;M3E!~Ij;?RBbQpSm{Yv4jRSwVj@BXGc#>u(7ATvvb%VZkg`sv-*06 zm9FS$wcR+XY;l=QEe?#1nvuk8KxfuyqDC5pJLMf(ZNH(}II8JW4vf@vXk99(Ywc)g z4|J$)0js*kXKqolc=#wrJA>wyUQKgrZN#MOY}MG+<5P9M+Lpmsb*nizSUo+U9_?-$ z!APHWoTogf*=+R>8|Pbe=+id6)>hqG-9KVA*Xvh&Up$skjb7{53~Sp4Y_$z0Q-?1w z7#P*pOj#O6)r}K%T61B(-_sEu4tk??L#B?=c2n<^qPL?ZJW|u%(p+7wpPn4=oSv}w zG&I(@)IN8hwy#Us+ScH8469?K&QNz@etUG-Htbee^)1FBSDm*pVy#o#MuHQn!Pc>8 zSRQaG+B({dQ|=yl_a8ZvSso<@>%0MbY@n_tFkq^ioEm8e)pgfJwL{gtrqNKnSMMEZ zo^JI9+MQ!-j}krAy%XU+>yW&Ds$rzTr>%*#O*Bjl*vHMP9*jG3eKj+dQ#}|A9En3eA`kJq$F)G(;Y~9W9Ye?6>*KUz5c1>U6 zt8Zvd)4wIN4nx#DY`_e|Cb#G{QE}F>!f!Zz`fJa8K1%u?kHKfw$mv_zg*BCFuug9? zPi7r_;J)~}KnDqEV@)~cXzSkVAHH11Hp6M=QtS~>|vWM%# z5p_$m$K-G83kTG_?RBwHcfjr&@WxaPQIlL%H|=#fjUJ<1)i5wp?Nd4Z#^&iUbF_Ob zi1n39u8lUEBZkqSsXaQ;qp7wx_(Puh>1ubZtzWHEw%N4uV6(GftgYKHVl-kRWgW0K zI{eDv=-6ow%e-hacbo4LHUR?5Nt2Z?`$x1+f0_mfts$C#^IK6bzfj4Jl;KFm<$-2YqY+> zDQC5z))(v1$i0D}xo*_1w+^b>osAPg^|&RBb!MBTxmq(49v;>9O?9;NjOg5>=D|_r zU~|1THr3uSIOUiOMQhrvUX{b@(U_)!A%Fj1eS43_gY}iBWwr|F0%T!;qwxzefroU6I=(D$~Q4e};t50Vi9Z~5A2kN_~ z9UT_!w5!+H7wwG(e5y%Ltt%F6=#Pz?8(nhKaLlY|=(V(km0`WjJD|0VK=u(D4h)4A z&Ozm<)vxStv^NIa_E?R7(lyfAZz$hFF(c+p{Vuz)x;yMO*@Jv9NoHd>ypR3a$Z*K3<4fV!4{mo+< zld@qN?N4LV4HV`#3@8G+7QMyn9kw~Ewf#<4&@cB}`-WZmw)!6Vm=5LWaYwz~T4%4y zGtf5O)8KBb)`xmN&N{fWOY_Gsgf(hSqe?4R=~Y<8%ImeX5N@=&8e80&ardylwng9L zRruR`Y6p!GxzidM8uY5XHLB^Jkfz7c92$#sSa?MdyRjwOW*jzpBmSBib*#B9Ixt?>H>jHGP_=ej)tYW+ z#D;~iWl*ha_YX`>bnB{BicW(@6Y;uwJ>kCU23Ko`a>_9{-R-m~6!uVKYnNW`^|dSO zwEmIa{%%WKol7%{^~``j;0r~DgVR0sVNb0&7S?u6xdwc}-i~%{kGiJS=81J#M-@|g z<%D6#=TWG~1}ANbsKpeNhk_a`rCVabE=`AHdSo;Rxz*65bJ%1GSGNyX8a;i@-k7t) zTR-Ad+G?DQjoJoVufZN|Zy)LR3{+3oIvRWW8!;{zx*K#+U94ZHul6>2`|F#nfpD9= z#;;R$G&tOyZK3`#xqRGejfLxd4I!`39rM&XV)avYb3ijr^W4MWp3au3Kue1;I65TP_f7Zo4)|Q-&VklmyJe!q(AOvrYU|u?1?HjFzE(qX zZ`-K8uC30|?CffH8T-fU0_`m^YlE@T?zK65jXmKhXKbLYOEnUm)VA4bYWmINf##v8 zbwrKt#H8KbuWTDIJG#dw-3GT`73m$&H7Yy1%x#`nXT5XEP#eV1X}1OS9W8@HA&bSM zZHrB{4Vo;yqaCf7J@vK@XrlhGEm&=v*6E|6abH7qxTiMIRp-$f>bv_J9JW9(;PW|j zik>>-UJFQ?rpJR>tx9cC>4!U} z?WVSdaBHh-yt+|2ptb8lSUwImtJLZtxy9azQC{a(PL0P}T00y1GX2vV9~r>FRFmYi(`o9jNKEw6(f>rz5d0cVYfO?WD`@RP+yp^;(Uh z%P?72HyJa=6rS42u}D@yvt}eN4qRU}!^#xoVef0r*hfdozQj77i(WVOY z*~bl?)iv$GHu8P#IkAylSb^X!t$=0ZAY*6h84|FSf#w`ZBR~3`n zdfY?$&h};nuiothLSRj*+g04%2`>T-((>I9U_cD<;i@Udu@Ls4ft$ ztFca6BCg=1r(M}BpY}TRp*CH>k9CPvJsDFr8X6{5x~Wb}z@TrO9`Gnf>!Jbk*to5u zvCbN?Pk8DK6OE%ivD#^?&0K5gF;8h7is~UnqaNSv+Tes;=k9ZjHdY6HN>waYJ&XZV zuZxa%y1cE86Vn4zy86a?g|V)|Sg)^E1s#@2oxi!WHeBzgwMSuoaLhXDo5I>9Y=|}L z9QqdLm`xi}^#&l9!Sdvx|%Wx(jtn(--@yG?CF5mjM+Uv*0` z8u1v+Q@Z}Cson_;JZg`!bJ{TO>~E}|>TT=@sEpI0m~y&fqE~6L4tT73yQi%>qUh{u zujxnM97nq!9{0Fg`kg)Qmb#(pj-iNA8Ll6)4vsZMYBj0>Pj}ck*lyO2jWoa9|N);UJ@kYCbBbpI)pGV~y7I0_n!G_qF zu^N)^k%7_i+7WL{!=O$vVT$?&^>xlJzoKsh{UT~ns{LXApfNZ$=J1Ty_XTQ$mX59- zzgkyQKQh>A2%AIgUX6Qts58jm%7K=i&o7h{3Q8J z|4sXNGD*FKRtH|m>R|Z)*VTa{&FVnW`+rd;iPCmq?rH09B^keWlH{V8t7)}1jUKB3 ztA?a8wox725M4A|MjPvb)17tLc5$^j$9)6i8kJI|A60jS)%Awhpsjbp4i1nqnnKk| zw?pL!c8_=28m4Ne+{4O|z~q#|(iR>Kj52D;3_cFpLJ!|13VoeoTOPW4V&8?@Ty zHneU_q-(f(q9x{v_-xVM7WshRq!{%L*vG~q@;(pd82#;oZ4uAVsAa@r)YY~QOu7bJ z`z$T>nu#{MVg&2L2ev$}txMLy!F zk+=KC3^ucSsMays;#C=1G-_*MzPEqU;gff|mEPf&eqW7oV6?8j&*g1YPq|y$Y{uph zjk2b-#t@w{jCM3M4!UD%XV9T`He36~4VvL8$WV-SrL|t))!(a*On23`^(wS2zIKz& zRp(RIek)6`~R``F5qz;*O}mL zG${h4#D`2pq9h8SXhk3)2>0;vP*M_*mM4zZo*{NTHfcH=DUuV*PQ1>yP6Cj!-5{03nsp|?#0uyC>(;$}yU`#) znUin#TlYus+^So3>eQ*KQ>W^js%zY*9dGU$>+ufu6#hduNo|jouaYhAa@J0dcDaYU(VCv2-tp4HzOXA2t?u&9^g2szeY3rd z#Vvks-mG~(%Kbwu*|td64LiPnNT|8U6L+Se0y&USaq41l!M7HrO>CoOHBc3asw4het~$YuY?RmR8G1Q(!U{7#i?JyNf|XsIz&Z zz9?wx?igB5m3ySF+z-8$h82OJTHe`atb7W3OmYc1oJ zmWkonBDZ(e*V5NfGlBi#mX_vzUxj@%Q19rov=)SF3w$GO9pTz(r=_mZ-`HAQYKIM> zslU}3apn!!!p@P_!2s+I17+t#g*eu zEV`U^Vu3Z)ZXGNN^f!3?m6evl;hBlrk!Z!};85e>blvRiSX))h z*xU;HVIHlR^mf&jG=*Ay1>Ww$2&O!Lo)a5KGksBa&@twZga;dYYdy6-dqK3avOQ97 zwbV70V37;)Yptztb@#T6v=911wZo0!a8XOZRaDqB5Q~PbuDk(jb77yieR#xSi4OM_ z_Kvx2<4wNi8H=;FB4{0}X@+VvYMtnCPk4K}Mq0)KwZSR7#o5|CIN@{7PKRv0tu2v) z=83wo7AK~zj_`obGlZSUsk|zf2fZy-r6DNW^*tf4-9IweKkmo8KU-@X8h7?}HdhSV zN9}DDHLU}sla^SiXL`mTnVxEQ1ftFErrI%o(?G#kLv0W$!Awzuw|%^~yV6$^9jFP8 zH+DqYDoQH?ovrqk>4N@nzcYdlrejV)NV<>fhJjRPft z%7*ERyy=c;VZWs&P(52*+BP^=)I8eNRoda|Y48u`jaw?+lR`%05Gfg-oEn8mtEqL`S{aTO+U(u_R)^KwRuXnj+WLok8!D#j!SC+U zsBNaN)z)mEveb5sx&uDvX!i(|?e3c5sp-bN-pQ6qZ;Q3QZ??E%q+`@;A8eT!87>(v zDYjdCTPKUhCi+_fRW-dcO+AqL!(9X2qvI1L9!%)fZGEMcmf5=Q=IZJKtV^5QhYKu| z%@gjXaP!pYOku2ftjju89P@XN`|JH3BYCq!-dL}1aMs^88LF*?&}{3R^_C3BiebHQ zIUDRHd959R+KRrB=GwkVTV=SUJs4|=*qW>BL(TQGg{@=$l0YohJ>5N9KQJAevSOII zYa#>VW3%qQymnttt#_=neR|Se;v2OWM=ZV8(YhwLx4FtUFi>0Qu{9Ug7DRg*gRYt` z-{Yqf@4*o3EQN_Q{}Z+lnze?D#t@5J)`xtgQJxb1^&u` z>gL+2!72Z^ceJTDI%w-FEgthX+p1^n19$9v4UMNHQ_pb`6F@QY$IqG`4P8@`nT#nrVH-8~h9 z@K~rWb~Q|f3aa|+EpCUuF*Z19#gez$SydP-t{a)^9qjbDf_)v~Mq5oEHikMT8;V>t z!+n;CfVI1&tFmHv8auj$5qpEJt1nPLP&d+Pu{V00<2}>;!}f`$3g1L$kGHFFVAwVh z7>DV8D%j(OI^P*-otdd|Hw3-iR*N%O8tkp9bTw5Kd5e0YjZ^Nt_R5Gi&)?PQ^}C8o zY6oVD26}w1KxZk&=43^ra&)Y(wm0k^DXp0p3U+xKU3GT&CBPpc?Dx0|gW;Km*4diI z>h97>2Uhp4lJR!Gv&hwh6;CDjP~;u-bogzardsQCVFPkTTs57Im4#t@USY7cek4%o zDCz7hC>^XQ>Tl|tg6(y7xNB&1+J!abWZ?i*fg+c?xT&SE**`Nro9EAS%=Xv!mspF3 zWKRiZU*xs@^2YkWC z>6+;-EE}h5N5e%k{X@0=HG@cY$yU7p2jwi=bEA)9w0SXV-nu*{$#TcNlj4 zD;uJ|&W;Jc+c|?t+Es&91nulbD???KQ|yb{olM~#P^a)2Pg~`zceFUxH9FqnA8POR zx*QY5O*7co!R}&xNnyjFZOq;=(luOE+14{#?W=M*x@@(juDS-lYjAX6e4@Iv-)Hxf zL`nyynulyXwbd1Evtf6nwWFXNVhMx3sII#u*wziFo033BtEa-!J7k@)v@~HSED|do zf}9SvMf{BsXK718dq-i(xV>aBRya}Ns`pevm#ZJF=qN1ct|_eQX=)iOo#`qVa`Y5e z*VMa<-O-rCk(bwA?=L8b*7vz=gQW%TetS69>-KaG`bWIJv0{h>TP@^xRd0RNW^1bo zbQij+dp)I-L)MCsaED`H#OE66FYM{^*k;15)3t$$yr!C{#Z?`EtBu1N?4QOyL_tMQ z1fM`}@HRJuV2*M)>+@g(ca3+9HG~VpgYCr@*K~2D-RkP^$&Usqup|3mP@l+@*mlXreoi10)^jNcNwr|Ke+2QF4)E7**4wlYN7j?#} zYucP>3!#m-)>l?nI6DVit%aQvt;11AX>0qWuh`=AbyVa<^Cs*29oWa;XkS9hi*=UM zIchHnMVC4Qw8l^ z-GkHEhwyrvdiq8~W0TW0ea;qlfopK4r^PW))IQbbX{c@($%{-y!ahs!WN4zHvC7pK zoEhpWXpBUM3ayo%(uNk$Fg#V<>1`T|bPrZml=S&Kng?9Njgy|LnDTht&5d;>BmEQbS8ACqwszRsV-v-GuXnJbxEGrFbfe2%TGwvFF5*OeS65Gc zNr9uNySLa+)3w8Gon5if*@}oG>Z|PbH_TXD>$(d{dO{Tq-1*Oo#>Sm> zA$VPN`kWKdn$EiJ%9$xg{muAYq!(?eI`;JjXu9Evj&c(NG~MvLW9Q8b&~(ESy5&s_ z&~(ES+wwOtK+_FRn22s-fC?SE+TRfC@2&{>#!Gr{bL&wnMNNHQp-tTI5HI~+tI=h0iwxXfJ5$q9749@fn(O)GcoS380_gDY^)6rJ8gkVr_Ez8m@2KZ7e$KQ69WNPrQJJF*-|;^ zZ3QNg!JxmT zy`p-y6T02hP-Sy}xXKa= zMB`*#mo);1L081v)ir6YZJmb3I#wU*tSJtSdz)i$rDv zs>#t&Q9Ovf@sUtP|5RT6=wxkhW~!yd+ZPzAsA{qg*@Dd-u@QSy{diH&NQ0z#V73&x zu+LIj(lFAVH!(7U&C7|_x{l&-g`>9>zBtv^QE$~~bU4yrDfW&O^#^-k z-mY&5y0CrFHtKD&mduP{?O9YbFkU#)3SUo{4l2W;@sVg=ySJ(YZj?Q-s?L(wcy-m- z47F8fvnM!;+Vv0DM6E+Jwy>qpRZ<8(^i5Zd7e!(f<3r^t%^(x*2j8U z2fG_airY);h6b8CJV9@zx3YcGJ<>Q@*A}z+#tSBUfWb9g+Yqo+_jroNJ4;%flhqZ? z2zKNDWtHnOl3~$V4cY8-c#Xwz?)nPB5u4rp3bu<*(2iwPrf^AL3^&Q=A_rzd9 z9=3P_l~b0sNmQoDTiZKR+Emiz^OwNF;0jL$eAP2mbv6B!RW&|WyQ?NPWG}QtD=Nk- zeBFJv0dHYp7uFi3!&MV5Ph-!}bZz%=G+NvosUDwbtQ>aqOtr^~Ya&%%m%rOr7jE#( zHgvcxMst-)Vbgoj}*IrU>_1c})4!@(XuzkF7#%qbyPgVtr z+hS9Nb%Vpr9sX$0Qr}cE6B_6qb5wLsOhG;B^;C6q!VA#vY6}MjnydwNZH?GF@p<~) zmT-SzOLaxGeXQ2q0OvPL-_)4fTWxQ$R#w@jiW*&!x-gU*`-E*K)?HYY*D>rH9V{Lm zDQfeLd0IQFEO`x`O*4&cp{c-RO{KfKZmM;9a(F0Y>#uMon{LxjMAF~oKHQ1G-+#y5 z2mEP%F<<7v5d6L*SJ*@?7n1Ru3u|ue%iC-(|pXPWOup^U$gM{d_%SkwX`S>ILIhmgKyfeMl z4zEajg);wZOpo`4GCl4!72&6Ou_t~XlK4Fm|3k!wzvpE7Kb83Z3iar- z>@xkF#2-GOrpJA%qP!-Fe;(1qukouu=HDyx^Bw7(mg#wC9mAROeV5F?Aj4mf>9xbc zS7rJpN#8G+9{HPO`g%#<58kiR_n#$wL0R72691x1-zxF*jxhfIt;F9Y@&5thh`&pw zXXjz~)97UUJtgsvOZ+axv5qHY`e!BnE6B&+pGy4Y68|N{5ns7XUnKE=u#;5aQY^c~4PF zY+w3|qI}8c|8)eL-guRYHvR2shKp@f3s#Us}9~)pE0oU_O>vj{i6{81KtqJpcI9pc>lx z|IBC9o3u8$+4itlOKo;>8;km_AbGutlCC{Yu+SWpMoy1$^)c=L{s-0QIaxt1thEQG zJ@MOWdwly)0w43fby!h8&Zuq4?ScDM+04nN4rL`?UGYyBC#H3+C*#l|9P(rCrMU z@}Bbb)8^xAhm`Vl^q$wVw<+)ZrlPdPAAk1F#f#bJK+gU}yw5b1uVjpjxeR9Czp@*+kZ27FYi#+jkquGkofVPT2VjZ-;t=_ zrugSG&|X<*-gRf3dM;zGW!3zEmF;$V{(-d@%nz)+IDc?$Vg9MLEQS1(aQ?|P$Oge* z-1@(ieL=R%u-Yzvr|~kYe0_2L{(_|6I#y^Al_2*@FAvIgFQL@$NGSZ(0{TiP0YoWMhRfTL|u*5$w89j+7JPn_AGFj9!%HFPyHTFUFaqLyxkpFC-RQ}Hy`gpQz zs5x_OK0}ph^OWV=Asb9WmQyBB=A;|*UeeBY81wPFAv^C@<)${~#((hsX!D~5xxXJ5nXWoVE)8y|Z@a&RXId%B9xfb$WtH*M-l<{Mb@!1I(Pd;k% zCFd~8+PF4PV1BqH>1Te>WQ!v&`w;fO68Vsh^2>?#Vc%Ldm%p-No_&S#hWyE0Q5@s} zpK}fPiycCE!)(;fgcY&_~a69yahX4&GhfalbyFk)IkLFPSsXvb@cB`83K} z1g&D;!rTvDzK*e{>MT#I{WgL$qR)a>@>#1R^_MvKm?d=(wj0A*Ki;g&r&uP(5X!^c zt?D3v>2#1A(N<@`CG@EoC0xEOMW3=L;RSO_T(c5}+-=k75P9pB@QI9+xNaqUK2<*p zD;ssTJEU&#A(dy)OVu{?VZ54Eo}r9n{SD(v)87Q|5WW%b_5d%wJpMhcy{;fn4Rp9w zK+2%A;A7PhV9m0h{e1UF56yX)*XE|bQ?NfD~<&<)oQBG1iZ5@!3t~xcHB|SdM*d%<;^y!LNKky?v zOL^xq^)e%^&FS;}y3CWArMyWVvOj2ih7JdQmA^tBlV2Br)3a-?MeFaJFSAWMhfH!z z8v6_B$lR{t6G0500jgQZ(eI*BFY5kcpjoH9x z3mUY!?bFG9c^~T!{YT6}=nL#OSJ0npwku+Nb_DoDI16JN?^4J6&5ZNQ;Qd=%vjPux zLO2I~HGWO4!(*UB^lg-V3A_|EYir7Hf@Z^-5?f8851^h)#||jr(~zs`eEMN588G*l zQ3m7_@auCNmi7B7XE+aD!aM31X030d9E`=KWsW1nFUvWMWuC#9+RyS3&-&+@ly%BP z&J&{iyHq)>g)v_j^Ogb=L|oHad`#xaGNrZ3f@5X17B=huTWk*2t3roIG<~Clc;A_V%}v~*Ecm8q_q+7 zohQC8qK$x4Tl;a{&oQCV$9dz3Y3K7CV<^9E@nw}Sn~sI~+ur=e*ga?7efj|OGD$)|4(BTU{c4vG_S^5&L6e4e8F&{= z3O>!3phM{5XlwRi$iS1&VjY_SdbB*0S;q9~(y*)>(R^YHG+%od^>`RO1kFeGsr9}D zJ~A%*UGqC`^bw9(Jc>0VIuH*cM=j?Y);bqQkd^Tl->$Ui2GQw9F ze>e1O^qnif&wdCVIN$=fKaRLn(E1Uch~jAF#cVj=Wh#d=_+_V@Rj9 z@9K4UdLv%p8)P?ZU-q@E707h-Wn(|=AYG!*lJ>0EuRv~HL7!Qk!d`^vkBr9{ggj!u zTE1IZx&U4*-(9}+?$h08elgaCb<%A@zh@t~c9CnP+s?c@pI9q#uZnUR`+Mt@pTGef z1p67=&`xv8I~W_#X;pcLy%Ke9-37f1&w`JT9bBti!?+P+2K|<_d}{~V1oaA1eTFkefHI9SZ#kjm(jLU_K2eHqEy)KN)#fx7!$2G5UTvBdYL67!M zj7#uEgh7uOm*AJEKWGsB2=zbD_5wYkewZJK^91HDG3I1FQpem@Xc6;~r1N^Ta9(0v zw7zl{^-%TIsxxSNb)9E6qYv!DK6A#YMd%}0khPjFBK9r8o0sMfp8H)h_Ak*d7O>~Y zez7orAJ%mDA^gjx^sO6?TfMS)n&wqyyy>HS8IKi`z4}3fd7;s z91~}l9?v2@`b$!Jt^c53aGp839XcB3jjNC~p)6%R$Ucm|gz=-xa?UMSvw#-rI6Kc? z#(YBDZB1Tp>_c_fvp1`K2>nLeb5Yw=-S^h^33OQk8KJF#xQBvu z>!}PweYT4+xm}$rp$kEuQ0K}$nExPGQrmkc_#Kz;#5e$c5e5(0-qihXq<_T^tM(O5 z2b>c+pr}DFyq>iWaoZI&4&Qv{8Zqk*@P%ozWH?KP z?~q~i9r1pj45L4b@Liw_>&ADVc47Q0YTL~#Z<3}J(g@t#ljJ%ki}nap))4fOHnfv9 zj`aj|U9m>Z0=_uXKvpkd&wR*9IZnDzu80R@yfH8LzD1gpye902q|2-0MBM~Vz*L-p zO>kb=1gBnB3QoN&@Kuxrm|7O*q_p%u19_f~ew~JtvUD0!%F<~-dkY!>Q)xJ|2@Ou_ zQEB+E)0RSmPFo5MI&CR5=(M4K3fcfuX`^0$4Sj@rDAzC+&ZpS&ZZytTFitqXY&On* zG4>6t4NO=YD5tKO?|gG%{(*Ctht4fvydsZoqv4+5GRh|&LfBqU{Z zLRgf8eeebMQ)0ftT#30Q1=oGb(jwk3UVPwO8S1xuI7`I~_)Fo1UZ&xF7$>o>=jF%4`<#7T}{Y**rC^lp_e~m!W;;EnHQ91JsoV$Ovkb_xi145_Sew4 zHuOWxPu!=0EMJcwV_j7__bS(6E6=v9B8+{XrQ@bdRc0MSKW~(4F}$O^J;Su}nfs7} zewhyIxBcQB#*Lnib;9! z&b$x(I2^zGi}z;2zMC0V_OV~QjWJ?ubFL+!*Y1zYJ|N^D`pj}8k(D)_`<6i`cvuMCd* zViS=-j`}q?q?9RkDj$LnD~HQ-Ou`@_Y`Xb=zfeshX9FZT7_jN0Ewp!@LwTclM0{o0v3;A7u zn7i_G0rTIuJmC-etO$G2 zIQ(sAdBFLnht%-fe2?(=WcV*-_%CGm|CHgsl;QtfhW|>2KPAIImEmV)cvXfMWO!MI zpO)b(GQ3~X^Y=3RPxAf$Bg5F&6!h(UP^EWP)^`!|gTF-?4&JMV|4gR;HJSeFGHj9I zGcxRu;eRK?kIOK>H*e(s_knhgNl|`={?1=*h8k`{9Djca$oFe%Q1~h`{3DD5@dG}F z?dXU6Js{J61(3f(5}z7Uls}i@w=holdqIX@#yH{+8>s@{w=oX*tC9F#hJ54?eN4RH z3wg}nD*jl$AM%AivrHd^T;orixj@{v(OLQP;E(B_ko^4s%12QD@jQkx{3z;Y3`bMK zxhdfY=r^W^E|V1gIbIsybF<1A{x_h+7=9t;{go7a*z-wB-| zQI(sN7wJEjz1df%wGT)qe(TZmGr_W-O2XOdL`3kuA_@nTWPAQe=R+2x~9T@2w8Be4#@*@3d znhoc5be<%g@6ls>LowA`d$X^dZ~PFto;UI8`0;4W*Ee*$FF16ZYH)&L!A-J2`zkGx zj^e8H(O5rIr%4E`iCAMN}2a+fD=$`9%3_m2@9y)_Q#Z1Q!U2OdyG0f5w+=$3_HJ<@mse z`gM1`K7A9BNMJN}T#ZiZ++>jqVxw#krt&tSgcxs3(lqTT#i*cX_JHB zjlQ#6svQHtxg6PP0^pB!93<^|5TOs`s8XF%uiYrL)oA_y8L5kWSEkXzR5ADm5ifpQ zJr5FuuFW6uVY*YiSUWtzh>hn#QogsF{C!*v&p9H&&kmi1w7iTp4AvqWem6Q_k|TAf zZdp%F2h$MAVzl6<=ZA*xg5HKyw?jvKKjvGi%1tsCbaU$GT#InMBF>or+|=)ydk6e2 z?!%ty{qU9DaVq{|#;H~8^TVd}J(P8F2>WjQ1DkcfiK^^S7pH`OMt}9=E z+pXXa@R$mh@q9H;S-%3i8TNeFSFzvrHf&`e?lZ!cZBm|(KZbV?m#@c5`5t>P1Ip4B z?896szx)aAaeD5p>45Ps92lFZR+-t%BxjD3i87;>G%;SjQVSg`eRbk)eEaFcHQc<0Z8?Jcx1)~csy17JPa_F6mBUJ219{CVihKzfhdMLQ^XET6G&a7y^Y z0T1)jHo6QNRiA(x`_NxwUqjzx9@Z&nR=&#i&}d{_2I@&@-mb!Jpn>7-`_wXNpP5tE zO5)iV&nO=<8$P^qVy|D=Y*B`2W8@M3S19YpvfZ_EG@hs8!W@(qmx_=6>nblZ;1?$N zmqH7+XVT`U?P3)?r*Gf}f8Y5;JLcjXk+B^wWBh9E2%9j*v#^m|HDS-3eiN4v25lz~ z$@4|!8A>r})##*+{IYB-$O4sb@Z}-jLZtO>@C|$td;@;w#WX1T;8t*SZGwY%jC8Q? zT?Va!XDM`4Uk8Uy187W_7xQb{IqOrF{!?ulwm?1$oA3vLA5gIqqS^S)_>Db#s^V`=0}gS zqHpd5u4C_H+ga~S&W|YbM!e6vPP-xh#&Md$d+c3q+HX`@nvj|7w{L0kG6m0jYD0ss zi`Itpb4itr&tdK`jv<~KNGEf!WtLv%ke>%AJE2!`4!NETGE)X^JS%(+ZO68tZXoQh zki{8nBjCz}JT{~K1WlOlg-oWu4P?uwNz)$47PFKsz{9#|_0jPG2k@oE@saD`p#4pw zOCMh;G>mSNU#kag%SWIOk|x-pb$sdS^Y|vX($z`KU*HetuXMPu*SIC#WNeaO$h=K> z8^^i58}UWRyiM|Jc`u>e($Owt-X?i9dCRultWCstNs~X0@{(m1G2SuGQ21Hmeu@sBo7fSUf0$ndBV3&n={=5{4I5fKHnZ`-D{ zHYfw3Nqj$m)otH)RH<%IxJw=K4M!2qQ^uo#3IEvW%m_kGWgsvbh=^(%kw2pN$3X0; zdu(KUY!q9BO4e`v`X_$-zdhnN9Z)LVZx!r_SicDS{Y!uh`(^n3fRzaU5S_Lh z@RNXi?*()LW&-kk44ne~H2-JlG_d#QF9I@M5RmEi0%HB0{|GuQ5|NBjI6fY7IgUsd6gKZ1~9J}M3#z#oEFcocTmGQe?!8ILuS$d{|a zCv#+&<}l!U@^iok`}J<;InEZu_arbutiSIlhr4Xe3l=$7T2c8wcShWf=ON2>WFCOENqt!)_U#l;JyNct(a-WO*N!;r~O1KO@7xEyJIc z;b9s6ybSM=^!$Mg|4`!px(uI|;n!q%P=>!F!wwn#zh#(mf%W?v8UDXyc~@lkD>D3d zGEDm})Bg_{?v>$xmf`J^KFkB+_ootnrVM{phWErPEO#3e1yJh%OGTbS{9Wwm53_m2pLo)nxiGNat zKQ7;E{rRWh0{sK#5YJyD{utJNg)(fH<6}gI?*||G`%g&A^syak*pFvJcBLgH%&}#B z&u3%Uk@EiEq`ptV_t}*2q112+zDUaZ|D1yVPgCCiP0ITNDer%f@;+fJ69!UR*@R)v ze;g(?-|^v4RI`86oM*T`QW%z|A|cq_a0y#rGzyg|^|iDI$HoN8)VFHpQ79-;X#qUP|AduUr1Qm&(;zBL!DM?<&D97a?b5!QhSR{3QdBfH7BO}l&7@hRTUV|6 zlSO~hABuF_t5tup=ui4Xk#3o_>Q5H^Nq;EPt+iJDDUB)Drdx1}^e3zSl*Z6&)9t%O z`jb_EN@E7L>DJ#O{mH678I8p1jf~RpYtv1|Mf#Iff7;ZLY|{l`dY`HbKKt3v7efOZ*eKstSAacZAL5omJf1mSopN+DyEQ zgZ6j0zlv}c@~+axEZ<@M^tEN&6=Jf@eUD}HoMp}%YF(8#%Gb}Mp4u6F?arnW)R*}c z;AS2T7t0|o{cgDV``6~Ajh1_^xyUEZPR{eptZMIL{?nJ0H(!9glJ_-y1Mi6Mfh_Ld zKehJHczzZ8!@Sq+8wh8b9#GG?nx9x(#-8o6*>pB>HuvB;&}-A_El}@c!2Uh<^Pj|7 z-Y3@10uRp0!xo!$6=~bFw2L29(_X`JiFeFt^oaZ9Ktt|bxEl=lNiWYYD>(nF<&C49 zGq6X(MkVft{5y$*dC#C+*d%nC#oYkdqZalJ;@zj>Wt}rFsAsx}KL__5kd7D8k65mF zzmj-wtfx5F4gP+Y`?kQtHiqqbUzP(?LX4yK=PN(n;eh$wIT27nNmaWzKw+;COZ!HGi<{Nl> zI^(){o{@NTUYpE%`en2=?^$5Cdk$pa0dDwdqG-n<{-ovWB&PQJo_NRwndwZDj2YnmwiDwS|TAYI~P}7=( z-S6?Wph@}a0?uHs6qT>PfOGOpYb-DRXKG)ATo>b0=gEZxPmJj`o??!`c|eZC&3S?O z#c+p>7k(5Q&wSH&VqyL`?gCI@IpkUc@?lC7wnF7KwSL0BSdThG*7Gd;tEiW_6A#aj z*&s|B7fAP?pW+JlJ4bjRHH_)L45uo0oJi}$dj>1VMG&pIBo zYcBE=r-Elf6WW+O*5b5h&KHZQBjY{m*S^Lx)eLifVB8}7qX_kMkmFj}oEOO>oGrUL zhcUsh_D+PhC1?oXSipNe|smGfH$$`N-GppMI^izeGC>v={q-ML$~34Mon zcd%|B0-so?Wz3Tc7{B!O;hn6IGvb^kXk4Oi2=t=;@ngw%F(vnhgq;WXFM`(OJ1$lI z0QE%qEL$iC7d}`?-x|d!@WxD9?ZS$U*dT?=VA4p z!7GU4eKPESg3o9l=Ffm1kX9dKS=dKa@4wR08Rj=*x}4N>hY~X1m=5Z#PPa4iG*PZ?b*p zv$GR@>^E75J--3}je|UHChnWSUhqlCew_POPG$%=_r0HBjJ$|^^kv}rZ$*v~j)ge< zhT^=V0W@(OoJBb`@bx%jeqc?6kq_bL&tPn5eN*$H;y61`y-?Dsjje3Zf)xh*aLSin zP4k{}4ckl0C-iTm1syosj4=fo=s&XhS?Jw}i<`@rp8LlgrNoCZZ)4wLpCdg+eK&EZ zV){M@{HHE~R;}N$FY9tp_;-Mx(npH?6!nFD`Vz(&c}71fj0xO#A;WlPyp~7x?=s3Y z+>e3rK;J-?C4Aq|x3kcWtB3<{gpVM?r|543+3DbYVY)1yPuvR*9{m>SPP!8u^-tWX zb3dM`|34x8{a&1ZaxGL?zC@qSE2y`7yRz;wCGLO0T|Ky4EKA%8Ao_#*;5l(;H}5fW ze*t&osPpihB?`XKJe!5!iZqg?h$-jSo;;iA&Pc0~K7y+e%mgx{#V z$t{$p)p-&1&Cqn(E#N-B1>C81IfF8ep27Khz`QT3@R2`MVgA=t_~?=f3;rwCgXTSF ze}?*J-K)UIVfWdrUn9KZY}TEGx1Y`0O}Oi9)=t8mXR~fo)?pt@x}!(C|7|P$f=}#C zw~wgP1(oK!KT_c%uc#K)^4yY5g*Qv1{|Gd}*~7UL7H@ZVhiKr zvs=JztPAmTeN4EsScSVBD!jc+g?BhrxVsV%M!U&pM(rH*6o*-V-;H{Uu!2J$5wc6{gZ3vPdRb- z(vxf3KB2aC+7n>5BZgy4@E=K=tLlrLko|HWn3&6isnp= z^W2=8ve4$w$0a4|e>r^mfc_sdjKa!yQyE$UlVd{xzwv&P=m&^Nb$QAe6+TZN$Wd}4 zNZBWxk8(&4$i5LVya@%UC!(;Gv7U6rP?Qg1A0J!h`6uBBLdd%;;8P;*vcOtG++_h+ z=0!YwV)B1@r~3Z8fP3)%4HcGk$#|Ya!{aumvV`dXj@-a-|Y4WrP*h~En+@&Q7B_ij^R z*#Zh>{7Jw}#D7wSWj{ip@U6-Jb3n+C{BHw-CHV`0=;Qf*K&&nE?+3)1ARjJc0=@-e z82)oWzCQ_g2yhw@`v%^a3d_a;q33&f7Y1ON9WV#!=+i}h+X1l-%s&reVZzA&B;a;H zKj2Zo4+26C=6@GNGySlH-$fzt4a)x<-~qrcK-S}ffUL(aP#D8M17!FO89pz=&&u$$ z442FB+bA4Om;b7SyaX^8;m^r1eZlha?}UW8GX5UG_alB8g)#p*310$)IY#)1G2V|b z_E7T6<@>#WtS59#kq>)0BD^TWp9B1LybsE77a;lYhz!%#a|B_m0Y(0=O864s`w{;v zAoQDjn~dl8MVWsMk)-Dh3BL}=_!!_lfL=hhhYb)zL)-zv^hCz^-@({<6!2LIhb7Dc zJx1T9a-?VYWwZ-_-^U-rIcP`z3h>7;efs$ON11*N{fs{Z)$|~OzaQg|{uPVT{zm39 zd_jia!85}@lwtCP;lGvPzmZ`RIxT-ckYTF~3*Q#R^~tdCRYLefGW=g;`cKR7D>D2| z8Qvr5`MwPQ5BXlBm%c^xCE1Jq#@`V;xPr;9| zom5_FO8$$nbGEn?&&SPkdoe_cjr3 z6g;~wV)c+nZA_#j4JzlX?4 z+SD`te!A7rjm3D2gr0_X3`q7d3t1%fkd(^ujj909QO4*NBSQ4d5tljK+~p2>Ew6iN zLxL2&eS~w2R^!<~WQ;enB{#Ruf|PjHB>Cb4oeI^LMnkJJNo8a|?siL{8Xr2&OW%&C z#G+Bu3lBCRQKS2|dWC`R0HZs$=ngBoBTDLp1oHcn#%l=P(>(-57JH!$+GS3{4)7k%NJWALYe!7_*!Ga0kEmQ4a8@g*iR(57V*uZPgFN)2OB=K7q1FQRuG+M04sJ z^?%$Oka7<}vLA?sr&wkRHYa>ijCi!?8{I?jVM*6MIq!Y}_>4bUeLZR;eaZJEoa|7O z(g&NruXL&RB%JFP`hgm0`2Qh1LuJJe3LJhc4|;{tHJ~Uj0zMa3lm*ObPzQBCm0mpa zkNG0_v*7P$f5z`taV@CrxAKf0*O1FtlWI1?V4A&qH>!gws{27${|SGR9nzl!;mm!` z#GVl1xt|@!b$(ozYIvE3w#UE69t7jLry~4HWd7$gzmiI6mqC2aUX%Krl)cXNIfGva z_u-AW72pO>KEpVzoMk+751r?Q`ED8Kn!#`zXcONg5o=;R=k7C!^)uJEn*D=#G&`hr zCL3*Ku=!rc9trxn|G+)*>)Im?zC&W4jlMt^;R|%wbn5N-~cvyFubcCHh%5wE$PPEBFP@TAn2o=8u8eVf$pS# z@1_$t#a_8i zrNtdzyMVSJ4@6rV>`ze6Y+C(NeSNHw$4T`B&PCu6do0q|N7NO2hr}=FzL2n)q8|%i zAN?Kn)yQ|FAJAp=A^p8GVIMsYJCjD6X4kqyv=i=5$Cx}K{eV~|!^d!U?sp9BrTGD& zj{8?o2Gc3PFKBdT3TSRt;Wl5UPFK2e{~lv1)pttNyG*UOR;TOn^RFciji2-b614b| z{dZF9{N1E{_)8|v`RAZ=9rJ+uTl6_!O@q9wiA=@8*U<+t}V}CHg{!IEV!@jEbF<%0w=4+IS zHwwI*M|51*#hsnNZSdLI4EGbMxY2Jf82q7LU_X^(WHTIf8V-zkqyLXy59tf#L^{_0 z66Ez|$ZN_d+6c)Dt&H<&##xc9duD$5`f9dnZ>R4Q`JrHse&sNIX&|HUo_OZq`xGxl z+B`L_3H4z(i2kws7}6KOhKn%M8p})P`y}wL?6__phTgHk_bIjR$@8GW_vs>i0@Uy3 zz#fe=+Xa=y!*9sdsN{Hu+ENgkOkTm7|2%_c?jNtio>z2!Dga zn!mvV@HcqiEX!XmfbAUqxaDjs=o9>|jj$oZ&p?Dhr?4Tz&p_xcpZ<+ISCO86fzN=> zIG$;PW}l+ZgZAzO`h`vp@Y0v{yjgjD0eGobd;@q9eja!JV~%{1K10O<7x+y3b0)u! z0e-&6uo=`+QAf0$z#-y*i}l9V(Ej+}tG;?0zr&O8s{!u+Px&|`eVgIpt~XJ4 z@vVhS`cdKe2q6FHf3iFVUy32vh5ihEX$U$qd@DrXf__e)K=2FqcHvuSKUJ1o;1_wj ztm(DTL6&cWJa`c{V&tVRc%&WQy92*!wkz=UN!Z=5n(wyK28nOSwa`E05}tK`q(4@c zuKscP((}C2|BvUEvQ3%q%!~esazPjS?#e~<8I(iXvbQM~(LYER-rp_h0u3{nckI72 z`%rnf9Qpa(uodK49+P_b>!{=FJxJLfO%I%WJ$1L?kYkv{vo@ogHj@FikKe+Y+ zbifxO+v!hmX8vBx3)E-%ohRyL_pW7aQ*aa%J}mP+NT2SzPWPdoKQ6z~^!amVkcR6F zjkk;D2hM#fgJVT~r^*g~qX}W)RAtA#D2wG9zBz<^*w>c&ty;FKFFdiv^_l*iB=iBy z7wLU3F5Z~7&u@V?WBp0PD*9foq09{QH}ZaA3+3UQy7JDyan91vMvX#_tbMK)} zzl<#S&=$%|>T_Zp`ox;~E*JchpIFQ1^$nB7cPc+zr}oVF+t8;LpT5YGM9> z?z8U9fY1AU_uBGfn3FlbLPyu+-W>HH&I6F!Rje0q7~7w|BxixM7C4tnnIAqvMauf+ z0_^wXK|g^14sl&FD`%I@8E2^vanED52>JwM{FOX@dn_U6DRY;xHduKWKF3%mXms3Y zE`o2@4f`$Yo^=8JFsr;o)oYT!`Kq-E&rW>_X@~#Fx%5SRKPD63eii)z^uni4pOccm zJ9%Sy@!z2<+-PhG8eell&sM_q_@0lE*V;Smbu`lli@K6gPttryx5~5cZGj%@Y(giN zyvy32tNP4Iz2TRgH~(-8G%WPtY?#|5`fkQEx5>5OedmmQ^NT5T9@##3OX>XhP12cl zq1y4Fyql8a*GOwDh1RU?dv7VN+*7zwKTG22cbrRFpE1%|yMfNGTS}+(X6bZl`vA%O z%#m~&#|mse$^LU&nET*fb3?wR(`Rx2C)bGjI_b>3x+lL}tt_3!T4EW#rtd!8fbTS_ z=dH+V+BP&91i$4&HxqjZfb?x$ zHH$s7=Xpkediq7V2IBb$$P!1qQCa#|s9(DD)ZODK?;6%*@SPX9h~owB+c3O?=c?2* z4sqav+&+c#x0KrszQ!&D4VSRDm_Pc8y5>~<@iBLZ zdS~8I4hWw>uH8WoWWR&!P3}!me`nk(c*o~!s5kCm*1zMGY*S*Jspk)bAAj@#yShIE zUZZ~M9#VquFGQcRXKb^JF+e*F&#!Q=WHVg>?Ya~{jC~UEy}7w1wnfq!3i}BEgKctH zeJ9!h<%%%yljp3b)=y}YS_BQ5+X`YTg8WS?}>(-Tgr#ez9$;)xurBr zz9$;g`Qui#Mf-cAA@i2Ew|6sdKkl4&4X+`KII$Xt>pK=%!_%pyAfap_`V4f`(fw zhi+OH3L0*$9J*;)C}_B~a_FXIp`hW`%AuQc=~Un&bPCTwsU zWFhQEx-5i_sq19WS9$L~^)%{8l)a1FaR&kS`teL1n`;>jAMb48`ha`#E6`afpLqvF zI(tK6-xoG1*n+6PEnfV>Ioc>v^*7oNw0A;(1C1h#a)kZ{I&~T(okD*F-QTDF3Y_|! zfjk@Mj4G@f)Njxl&*f`4^*IB4dJ#4(@<-^dm_NjN0p(LS<{BXm{;)n=BOEos4q@84 z(*ye({JX?{Jo&Z)zKHWxNJIVodi+_=gMOPQ_1iq?u*jRrpAycY@}1xhdB8Br68vHN zp{y*>a~8DWY;)}y)I-qh#JU3Xe;0fr-LIMzn`lELoty00Z-ur!TcAzseSnv&+r~3f zhI7sH%A2{$$rkc_We@mb#=3)f&O32NdT%MeV@*E8XX;MW9p8d3U#c}_*5W+UPMken zx{9v8RzRS~r1ZpsPR0nx6)-wiaN&g!{R zJZJ6`>(8V+se)#ugnkQ|hrk1*IU>?zT|K1vOgyC4#dH_P8vG`Z4)ys=4sG#BuUt^; zhW56RFQgT&pK4uLrbXrRk5HF{ZfQ8@o=&%%hhGEg^aAX*mocW^Lfw9hI{jn^<+@J8RNiCKq`QekW{^8L&kr{4#k*$cys_*IqIoT>IVm z``3QYeE-_-!}si3ow9Tddm-E-;Q7htXcv}kpm5)Io@d(??0rAEmb*v2zeSuKhRj|- z9C?HBEO^EJ+t;uMDfo-MK;onf^=w1`0~Gx(PnARTJ7Iptv;SN|JaLtyfBYKzoJ^mc zrM&Z++@r`uI>@4#+CTbO3&!Tq6`mKyI{r_PhqyR*XgGxJmpJY~dw>ppubwy;Q9ss+ zGVO@z0c#fOrrE#6{X;wG`+@$xqx_XCn1l5Gj&UveJK{ut2i&y3BQ1SA+21p_q2C}a z`{Jsh?&5AD^s&>R+gSH|Sa+G8bzf!O8AjR-b;oz%ugJPHjmf9>P4W=OUerFxya&Jo zv={w0m@XX;5_`$;8-l%nd|ZAQel_#p>%-+s3@^~$p!05@;GOnf9V^mbD=FPxk&b6u zAsg4hm-SqHvxDQ6^Wh4@t9A5UQNM|G7(BZq{T`F*fpo$T7dXWJ6T+~)epSQ4Z|CqH zhqr+1$Jo>RJ<$34X4uo=M}_tj{Q}=q6Z=hb9J|A^jZ27-(ngUjWmJ> zFM`gOKvXi<4?3yqvCf(w(tD}%PTz(3Cx z{~J~ICi`R6LdVHCb>4jZ2iG8jm(h<_FrGN~h<#7c%kM4WJl*;=>I;xh+T8NsZRooU zr|eN;4ix&uF5JsfYuZ(N<+$Rwavaa-w>h9Kj_2%Wl&}-uZ%WO7{9~r@RnE03c#p4| z!e8cCNsZrb3hzo6A2Nl#z=OSLG4JDhb4wgE%%90UQ`F@<7%$flzl?9^q3${lQojMi zZ%(mIM7x0xLdS*gZ}#oVJAJZjDZ3oU&cKII(l6q+mphIvDd7`{<9tyF8u*PH&Nbu{ zb+${yfv~E7aLp+FwezC5PcZ3D~z#+y7cu$#*@h0X~Azy%(Z9<)ix*m1O zBe-XUWnD1PtAGz27fdVe!V|oq+*7|r1Db`7Kz}O@f4X~JC{H!ri+Y!78+0S+11PgO z^U!Pe=HgUh5dDujkA{nS6!zPf^!r^>=Ks?dA2`Qz@24+5b?(?U^?QJec+NhcgioUm zEQjs!4bcB8%KB%>lx*dJt9_Es?>EqV2+tz#KIkiWFP`DgH>W+*?-Tj~d7TAbWt!OE z@hw2u`B(<@aO*CmeCaB55AthQR{7G~C=+K`n`;lfaql4X$U)SP?aOx3c%{`fq3;;< zgp~SH-?;?eeCP*DqOYCEIK@5gL(qRn18B8rcneSlc}`sjbDp?Yi2XVXK0Nfj#yD%k zSQYO)^v{D|QzoF0fvBI>C)gjH;3ea!9})-WK87`)_j2?BfeZDGQ--h{*k&P5;8&^k zIr@Mip7Wt?1>Yn}UIVIWl4Xv85AJRFe&!y0KXWhcMBR33k!=9IW+!YqwP*+a0l)qo z%`ZWRqW%1|`2cjLd)6+yp-+8OS^DwQ%F<6BQ`Uc4im_D$S@pQGw0anN3vBBO{IIV; z?vsxTtixj{L+A&JoV$<)KHD4L-!0xRyTKFSG3|3LZA^1#a+i*BLPas~YL3xNb z5h9%7P|KY|+s8Wvj%MOunk;EI$NjtLPipuI(p-I-Ypq>%z&pf#iL=i8UqYP(e(;LW z1YZm0$$(zMuo*ldFP4iSBQOr%x*I+X&{f13*`tAMI$1KQ7)`;}|cbQ5y$|ckutj zJNl5n3LopseYnRH&)_q3+wQeh^rZ*UmlV^nA1oi|_s@XyICL-fz2`LlPS%Zi7Li}i zJKw!_33)GrzI1srkw@eMeXB@w6yp_Z^P{=o>o@Pg5tXD!7vK*1;Udpj*v;k=`$}v5Slw(>N^jY$2f$gcM zQRSGRLz7#1sCypz2FHS)PL*$V&@AK^-ivbYQlTcla1RvrB)ZoQ?RPD`VD4UX<-m^# zYgO$WU2@s#IN6fyKzZx2>9cta! zH}&ym#&|jwV4i2A(+{<41C zQNN#{Y|4ZyvVK=~z#rn;wa=!j<5AGHAAcIZP6OY2eB0T>9JecRHkE`@N{ff2@A{2W*e7^&{mwO4uXZ=p% zzq&UbBtL>$My;HA(Jva#krz83ts;cjD`@nxKTx3QKEdj?t^ z-qYR2hIItw+9~sXj=}7WcNI%Maeh2uxa;dQ=1TGux}vzNnCE_|%X7_wdyYiE$uv=p zi1nnn+l%WHO~+!riSxXeCz9`w#hjYRzem+$Fecg-z3KKLjBA2KpN0;G`#|~4Y4vQ_ zCG^wFSSyhRaaJ4k(!SNsGaiDDkAe=Yi?EL`?#e%8qyv2h>*D9x4mu9>dr=SM2YoiK zsaSvGUW|4Iie(tn80$z|5_J%~Z(GD&?!=M2?lJfv7~0L)UZ|V8{(~PHdCYs>e89)G z#KcspF4(x-1W6>30C9-S?hP+|PPhe0x}JFYVhF+J2TRNAn>S-yg8iwq(4Q z`fo`G;z-jKJev%3Y5eWIPifQ6VROz|mEXjm|FbyDemBUQ0meAW9 zb3E4usnkM+TiMA3EUar{q^vE z%}}5C!{9O252^eW_XNr|<{l33|NTvl(=Vxg>LuW~^nLoyaSSBRkFt$5ex7Iglsf%8 z3&|v>E$$VDIdyHS;0OFZQ7HGgkZVV@S`vzN9>s^l6!n_Q|BQ z&h%-Sj&eCEt?rkdOas$#j3=eNkRC77aj!JKN98y7bRHCK0{sAEUmJVI_D+^~18dl@n}8|zW-6%h&=AwOvw*dWi*2aNLE4cf$9YoN;~W#k9(PRC`C>&x5+gIuSq zxq!6k((pajG3s6Dc-H2RhshV<$}-7)bnLTm4;+12?!P4SNTcO|krvdGV?v*!QtBl9 zpD{i*oq1@cjwKPiu?ZybVuJnvJco+ZYr zkR{+hWWP3c&!>?If){Kv$fVx@AA@oX9};cC`46%dHUuG;?}Ltxw3Wwvbu+#xg0(pM zX@VC9pAEwtOIdE5XW9N~br`k_=1#5cskc)<;$A-1PG8gNo80#ey30KIuYSKFKCj)k zZ=4IC0{@fsm+SF6D)_4Q3-&qcF6qW%2;klQbI``4vBu-tE zdN%je_uQRNxh7;`Rs_!HyDK%X0T z_Je0DD0dlUT?38hX(znM@2O$YxJ}ZIZcKv>a<%*w^b4ff3CQxvH;qQ_#|v5xpq{8V(+S%<>VG~- z2DxBU-JDm#Hwk;PN7V73fpKMu>V-&SEaxx{c7C_;w!TvVP_V z?P9naf#>k=#W$X?2EcySg|VMVMb7G)i^a+*-ii-%!H zIxNe=KCGa7pGp_^Z@C|N=#$Q+OQ2Qk!(z>(?MozR+AGR@3AjYLpo!4*8t@?>?Hdf6 zK~EfIZN+}W^tWA5>DlpLnJ2ydWxZj5Oc|Y*AYuEPh zj~7NSBa+X*z%#=qRKPo{#jpJ!G<^J&vZyt&kJQP)Sx&sk@ zsJD-|i}RlGQQmJF^5JX30so<$%0tmUBzV+tRk?auIo~AR4xYo`2XMW2>Luoh_~=CM zV4yFi-EN+o-k*~rZbD~rUWb08d&L9OJ9E%C4IwM zMOCJ#Y>dr}^AdOQQ{#sMGq@bxH=svLCh`vVbVT zCGpYV*u=0uXLKx<6ZDOb2S$(VRE|EXv~PpBeIy6DT3fw2?%@zFn3aLnKm?b+B2YQv z3k?G{s!i02Tif|@QM2@(Z0}lFc2A0DXPGCtW)Ed%sGH>UCT5Kv(F0bK*M|VSr8sIY&ngi z!!rn11XS#5_}H;yh(iOm1p~&L?sF#5+5Mr|40smJQM;9YLn6NG4Ft$=^{)I}3>MVM z$E*I2Y)I}N8yUgd2HxYJ>uxxb;~zs`Wy6g4Vtv7!DSRb6Ck8@L9)<)i$agnvK!OsO zqi-w{`Je5b4U|>YmFI5(#zIKMSc%vJ`Vf#pcuGNmpxjV~GNQgj1RP0+N&!`9p(T`5 zp%_Rk15s>A2ht?L4t7wS#4 zbQ12;C3O#WZ?3otnp>8v;$B<6!qxD;)o%2t!>o2Ph@A|&$K5%p##Os=>-aG4BX99M z=rOK~QopR8q1Ep+E1K0T3v@f@b5KF+3g=VnGS}ZU%IXzM>gtv?wa9?D##_Vn#d^KB zM04-VU}im2zU=<288=OA@#V=A{5UanC1Po zC>eQt_S7dl?go{AIjHg-3O&6Ed<6;e{ana(j=G;v|K#{W&gj2-qK{`qF8c=j4NE2pDL5-8cEdJ0q zX$2`_b}^`NG6vK*83a;_-{|~_1pof9*v;t zF%wihhJy@^>}doU;&%uXzs=wylz)@Qnhi#`8eIj}5pNKvd^T11dY6I>rR+|W1AMb) z1CXZ8mfa8p&&xmS+kX+r(8>-1)epNTdjG|s=;5HN=LBnS@EQEKfpledE-1dkK;=Ia zycs()r5?j=*ZFu0K*f_rQTcBi&*mR+4%kTiYLDT$a$oP0p!j7BM}TyBZn($r$T%N9 z{n{XCA>JgAuFg&L7;Ycy{kMX2X>PN}Fay$cxe*@2gJYb%oZJDA;W|+KT0puk*W@vr z1JXsgYLDSea6R$PjCRk0+-Z;DtKcZ&?e-YfgW|Ucq>FM3J%*Efcy6M{u>Bez?=VQ$ zJwfDDz~evjdHkSMur9>W|ce$^mDCs*Y$9PYz&Wgf!=SNnMT zK!!?gug7pJD1MtghSi|>%>)@bx#=FmlUMn6@A4S#0+nv3$8aI2baO$5Rxal;9OJ`t z8IR$ikv`r*kfD`3;4$0*ir;pR;apJs=70>nT(!q=gb&XR_ZS`=;p6QG8H%}m9>Z;* z_-*wV&H=@*3S=neW_k?Ee0Xk{$8i6@@$vS847uDMkKtxe{5E+Et3dIa4l<;2l^(;P zK0H_IG2HumKHjS!LnXJ{V^|N;HMzwe!%|TE2YC!Thx_n$kKti(HTmrZH9xg^teFG4 zdVzFRZl=eu45Z1kTGXlV-5^btYx5X3f>b#>%)(1SikutdG2H)gZ#SzRRQg5Wm4q+! z7!C)?BD?ovRzHxWx!oSa>E=HXBxUTcFqQqj|vBdhbhc=2!9p)6L2diezJQ8)@(F-gVDpm$A~u!ECp4W z2Ji@l-vnmBuP7W`4(=rr(F?(+z$)-!@|XQHFq{s42)fc^I1zl3cq-g-@GzOY0Lo69 z;vMuDR)O{Sk1!kxZiPMxQ~9@p+rd{2*O`AKxEcRyqemE`3t`DN`H_jz?*|8g>x^zN zdW_L!;8zJhLL$XK2!0*hYV-#1ap;9c&jANQml}Nr=8As+RC?J}Q~XUvuLHjUJ;!J* z2B?P~1giXD)2CYkAmAkg*O^50u^s4_#Ak;#N!deR7e>M0Qt*y20?HixEmB-g)iY&DF+vW!@*jx6#P7RhIln#7q|#K41Nwg0RBF>2mCC! z3tR|p1MdYlg8vp=1KtBRfD1t41oOc;;5=|TcsE!M&IN~qcY&qgXTU{_L)l@Au3yo9 zqPLpgFQ~uhU7?Th6WpTLeZtc(FfK$dp5^Hcfapn8o_<&HY3nbNsjm6T5Bgc7ziatb za-ZmuJvfDb-@^Z#aW49GqgNUI*GAuH^gkH=_f$;rFQKx!{>c^dZY{2!mPI*Nnc}Xq26< zzblNs(&%cVAF=W*G6@jtADTt72<&>f!sV~an+=m~be=5juKtmVJe=ufNu{AO1B z@bxzS_T1{}c}DO5l&8OG<9qsTo*r#<{q3H9+VY=sr>8Gdd*V08+Uq}CdqnfgTG5I2 z|BCfboAu8fM!#e9rABMg)YWMHb*s^%jDFnczq0(kXY?~h?>G7mqmLMUkjy?x8~yk6m+VqDjq~AcMz>w->5+^Vh3~rA(?6nbL=WZtOV`J7i(bS}*KUj7 zRPN~?&{qntCtqE&EWM|Ar?>p}P)}WdO4$`(c4l>*=67jgJn&3&^g|WsKFj!1_%;h)OMXfdT~DXzZ>8wDDf(XWPp1D#ivB+YCd2Peh3`-C zn~|b_M8T5jWrs9LucCdE^r95~cq+fmsqlK*Bboj!`XfmXN`+UZ_+^QljDIcdouogN zihn8<{*x5{yHfPbRC)B6O!9vyMK4d4r#;nP-%Q0nmdbBwD*mTZ?R8m-ems@FG*!RH zQ{{O!MZcBe*On?@Q;OfLRQi)C`h1GMEk$3Ps^8C3;dyJ6W~$N|?_7T0WBCBgRC?=` zXrh}|FGXEq);^n7t(56XjCL-od$88|r%YD1)JAb+LcD;bSK)OtrfTL@3;4uFR||Y) zf3tRZGi7T|aE`5eI_s-(oqQ3ghV;T|8=v`7)-Stn$?C>pF$!(BCak$GdkDLwK`nYl z{>N58ownbbiuBt4RHpSSWGA&bn$+e!WKPwS1qG~I6^&EO=gRzSx6p)DT8$rC zsu>k?J|d%9{w&X6sfBAPhY_E6968@qO)v|aXB5X=x^gAn7_V(XB`r&~wfAWWL}AgC zr|;$uU;|gR_wB5uBKaKhMPbp28x#33R|VzHFe-Zg(jYDB+J{r%mMZ#%{)cPNWV z;vQPL+-K@iGhx+gbxq=~TG3o9ZG6&O!z}3;wVn+x&mi)oPAIV-#&Oxzf|^NI zYfXhUqbqo^02Qog5M$L)!(KxEFfg?7gyKKkC#wQZ=!=)ZU;udxuroCg8~E`>{E*?OtdcLvfQb>gYw z&E=;{pX~baiRRL(tuFN9JX`i|c$=H7*Y|s8M{6%>eveYTkJiq=(jJ|c%=UAGkUb+C zwZ{Cs-(y36xjlE3WotY8a%6Y%x9rQ}EU1^AANz52hFq)CU@KC4c>V`z2I@>;{G+|W zihJ}$Y&NoYqJur(za>n2bFLa3oYj6Wch;Bon&AIi?f)vd>Y3==0=_%h|5L)5U8OG1 zXkYIR(u=QbDl6YVCttVM>~i+_z=wUNKh}PdeTe&`xRHJ7SBTr5D39`Wdssh4-AFIK z$|qpIK$JFZyZL$Jp|rb{5u%yuK(!|?KRZdp>F@zVBfdeU!*;D8du`&`r?V+%Tx~U zqwrPSfVeKrEdw16yxZfTC6R5rk$aN;+4Vy|F0Zii#d#j>Jx}HZcZRC=1okw3nLf($ z`??bQBH54g-r5q*KMHh)?7U+`*1qEIMeZ%_Ns8_v-BYrK8K2RY*!LBkHB!Yrt@`g; zPu;EWockevf5=^W3;R2UaNn{Y=|FV82yXU@`Tcc?{Z!GO6YW)s-0nON@u82<`@QP; z;}*u}a43KL0?i@RM`2O=_tqx%A`R61H}IwR-t=?c(M#DUMA>xz9=(*ae<+uD=uC?p z+6Tm*4(%D{K6d-F*wg0r-SVs{>zY-#SG2Ibi|+|d&a=vMM=$g0RPta?&lZ(u2XiXV zq<114zNJCc4CY|U_hsg_k$ZS-xwxgMN=i!9ufgU44zWSJKC(eviVfoY{HVEv{@`p~ z>P~w{b=REM3h!vHxja!0jVB&a>=Xa8J1;>tiTBYqQ8}YDJfq6QH#xWOAg$jUme^yM z=nwXY{Z85IJzuaNt@Z0X$>V)!Jg4LH3twKZJ!yruVPEEq*q7O-rZXj8#x`uy{@n|l zF>vRks@J`(-C)boLBZJvg1qg!A-ZSH4)1aHxw-N2W*;{2W?!}EKhP(A*(TFG5S8Tv z*_R`~Kj}w)abDDUK>Q5pyDm@lgZDpYT^{U5eg$=L&jIX8{*1kb)NRl^9xt+au}`~_ zv>&>cKKpCO=gh7ob8kC)4x>5m=#a->(cZfD3EnR{gSx;T9(ibv*#(beTg7%I#dDm} zb56i$_ENHclCw12`M?@;$I^Bs+4DE}BKAGNZh}vU2aP8xGuJFw5h|W~&$9Vln zKkDDjCLDFzF}nwwaGVFDd7QFz+oxB2%Ux#Pt#{vZ>-+^hZ@nvw!S1E`^AcO@v;!?* z^I5cqOp>2yQ=M(VSgkENkssUED)Zacm_vdx9`ww=*^>}us8hQ<)@%UzM94OQ%=J0x zS;24)I1>MJOh(s&oghmYvKzp0;4o0>NJG^nILm`Zo0?t5Rv7- z4@3o%+v_pZ`X-gD!DG#0qZb){3ML;XT^Gpn(XDslS(SYi`f6|uNIz#6fmedkKM6DD zKL}(UVfG}MGM;i>9>Y!$)k?12WB4kFt|~hQY;vQ1LQGOJ6JhPEh`=LDRQkwh8c zPti+K^pq6+HTWgdzmTG}z9JdUy;wlMmg1-Jkc@vvDn8Hbg77b;;*Uu2`*n(z{y)iI z?j&8Gq90DBACgM{d@B5@6s_@>5R94tuCgX%A-;EVKi1?k?ePOf=XQYTlyvW_qbB_pRxN4nRujw&q zy-cr#Ry3lTS2UrYY`M?V1tm~+eQ2G!#pl75@3pvR3RFuy=!v4H$S1#WMM=b?wl@_> zL7COcDJ{VT=?&_B~1hBy+To)=wol!YuTE<;oj{4{-GzGON zfJ~VB-~RD`{+4;&-AekW>2R?e8Gc+mLwl8@KFPyDSF7W|8fc?6&FaT(@2>vJQ7aSt zlveBizbFnDC`XO>%yYT(am>Rzc}3-l{CEZzm7|{GW#AKpz0J$dX`T&w+(dFzx%K0H zM(;|&D1H}uArnc-P}UWdp&aA8`jZ*X$#L?@0WXse=MQrx2>!fU@gACxuOxW3n=FR@ zbl?AqAM8uG+Y{~`B`(g50p5^@*G@?@Xt7-OV^a}inNclKSSS&vMO zu_gOdI{&nTGx0iUk9XrXFD~PfOmTck>rY?4EqI6fEVkXie6@K~N!3~X+9VU^@|SItr2gSoltp!yT&YX#KLL5%dnFHlHEOf0ukPj~( zaOOtFXIXn)u;qEmz_;(~;=#8peRyVC7vF!J|EeXlWnJT1Uq4PeI$1DzD_!(cdcJWd zi$}5aQ~QzL7B@aWX*W9&C8G&Z9qEUr2^{ z2kk6-ccmpmeq4?G`(518d5b$}6YM<}KjVh+@5U|T|Gl+&`JLM3+{(Y;Jbf=uK0kZZ zJL>;04|w9I$2p^vZoXD8g9*@9ga>-WL#{8pXk?b@3*I0_Hx8V1-| zMaee6&d2MsduW3$(oy%HULyX~aXj^{LawiSrWC&ccl$owIDj+Uh&vv?@%SC5ERt2L z{grnl6HVvaXWwzgs?rzhJC*xF`tAgLq$j(>>Qb!l+*wPUous}m<^IwyIs;I1*BhF1 z=sWsni{{F6EC1uJeVpa?uhxI)xzhKL+F|McqyDSzAz$75?%o@CWv~5L*+=>hGUnxG%dVAhR83bMF1L;r%>gOM{1(sQsD8y6`*p z;(#q3>yZZ&)ucPcr+xbxvu@0fES^8|%wE&0@7&nCmwNGI&g6Y~@XN>0z38lC*|AZ* z-1&-^D~!463Us&VRXSJ;(24G)SiO0H?KR)H4@cQ|WooRw(L?%Z9K`84U$j{M-;2_x z#=wR4-*+NDsqq-i8Kr&Pdtd7#y=!}T7pp^SA8GpW*VFR=HCXY!QQc_I{p6@7U*O>pf`@HV$RC z$*;9L#{G-EkF&Bb+RnXO8tj{K^?%{Hdoj;l=)o85n=$K+;NhdPvnqNp^v{Ba*@L`5 z?H;YKP}qRMd?#JX*{g%?TlEV2*5#XB?HMh&&w`?57~cbr{*)h4V9({hcqHe-_g;R!VS7pM$Hz;w zv6r#r&*Cq5hr77yo%8ECH+NvmE5~`4>-D>M9P>Q$zUKT6=KN0Pd`^!&+dhu=VSewt zg8N0!1jgkF?hV&x@VewkdS6CD?A8L6fPc%ovbzV#pLK3qP9XazW&I=X z7|(Rz?i|g%&vPWtkGaG6N#1oHzU}uG-UIPBChxXK^^M80Xt3r8 z$oR_c2D!I$Z64iuF|A@E&WrF6LOR83 z0;huIpyDGFaq-(g(Tzq=0%t%E0w;loE^+5%WjBIqPpwl>f2=cljnR`ps-7(aQO)Lb zehV0CKmQo~H-ida10uf9wRjA5u8YF8Zb9v<^IDY8A&)f&K&9ITq7%t&^%&}$hwJb! z2UYKrR918wD0%}p4b*I z91A^$6G7#x^$f~)Kd5}AzgE7BLFGFgRKArSYbF|9ZgeTAeA}s{;vMl=^ERk_cYxfp zx$PdqCQ$iK0+sJ63N;qo4PFa2f-Yast1>qde>2QSf!Z%CtOhmCDh;(y zHp|~$a5}ijaC_jCR@u$qHTZ8ZTw~Y>UXMR%f*Zgwpw_SaFY23Ix3HXgh;AcX*Vl1t zT|%TkdROtGb#9cd14hp@`iDkW8T|vJtBwAt@t?$ftn1G#{4*B5)943{e#hu2f9dJ9 z4q@>nKK;Ffi(cT#;4qk6r*J*(DtZj_jjm^Li$2JB(WSbI);T-6w9Z2GK2X=A{6uSg zh^`@)-*%%X8(qqMqw5Olr}#rH{0m0!v+x!x&p`{HOB%(WXtdUexb*PV)nVxyEnJ}R z;a0w9t-L2)>>&6q{4J{U`F@ICnxel#KFRpsOocxOmt=T)U-n<8;@_U4_odQ*JQe;% zipFM5L4J2r|78B#QssRu6+SkVUvnz{=~Vb{Qu*JO%KwEF|Mybi+_MGcTapU@@2UKc zrow-p$|dV}bBbP*qGzPaqjg5f^g1&mN#~aYXjMn7?Pjko>mlqs?|htxnwGP5w5f2D zyiXMEkWVfFC}bCH+hjpUo@4i1IV^iMJ5&o|xz!F@OW^i!*4MJldr2)P>nB#9xF|lu zZi`j&Jw{~VzccQ>#c>B ztZw04X%1RLp*YsGSn|GOml4r~CH!Xv45@sSZD| zJ?|0M!ip->qFdj6ExNBz^8S6VQ7UYO!u{q^QEbgppIggSWE*OJQ+dRodtIWtqWjM9 z!UEZx)K|0~wruBl6)uO;^wZ<6>8Q|bkhT?2@y^|TEQN}9LN_-o>9#ZV{j7_cS~0cQ zx~O=Q=?7gGrSBG9t@dz=Xg&w@eRRR=qRJEec%%lUd{6P7eZlLZB0h_imTMQ^Tggkj zlb7Bv_+;erFLVkY&aaE_ymGLCz@0pU#YXRTy7)A5KNVT8y~q$Q`0BPU3L9;b{k2QR zg?uU2WeiO1EnA;oPZh-tSbswSSbKv^VzGD2=9{DOPp|p;XJ6wqtdBKJ?8%AOFr~_W zl=``HY7NmqFHJvLphvl!)34r(Tn>HeF?4Ai$gMkXqyKN_cLTo({E*p=FG078>{$g{b`2kh!%CI$ zJAI_@t(`abk+!dUg!!&$KdZjMWnS;;^mnvVbgw8(Yq8p$e$MZ`ZJ)*bIV-is0zb9$ zyQ9(dbzI|geR03RV-)=V7CqT7Z_CgB?X*pX{kz9HO15;oS+Yeum0yXKMd5Cawt0r< zd|B6g`s^;(kI%6F>TLUZpWjjZkD+(#K==3VxZ-_R71bZTmz$@U^VDyer(`Gb1U$Ow z|Crw<6DQXH5f}U3`EjH&Kp#!E8T<>z70*MJ)0MG@`R~f8Y{kYEX@@f3{*ayM3#TM$C{m>_ATlhR>o$w3gn$Sdw`D!$=^4El51<<IAXLAD9&7d+E%`J4H9BXRPn&E#NRr%QkD>GeYz4`- zGf^m9@?^YnoI4;4+dzdkfTKa3=RQVs;N*jD|03TZS$(4j2@6oUWuGIHq(0yQn2BCP zxURSON&X*wH*HmX=!y0{_7$V28Lj=C3a>J{+300P|Dn+lzoFzM`Svc-=u$h0p6*GV zIqzsAgDn<+IO9dvIHSu!T>_;)?5H64C-{n%TveCk=%V*{GFWT$Fw6fhjXq=He?eSJ z>U`AhNm}imq-Rq8B%L8ulKz`i{Mo7S$5P>+OYxgW`I7wZN`-4fMKb(Mir>#t`MsEm zukn*i|97eQxm5T!Q{mE|B-6i|qHjv&mzQfLq&aLflVs{&Kx7Q(LXmMoxD?9~)6!gj zVAcDP^?q>aDFyCHdTOl{7rU@2`xK2v0;z9HDk^!fb+UZ}hKmVfVpMsN~dBYsc6A*akP zt1n-1?x<7q&zhWdpR(fN6K)2B|&$;qEOWjX+!C8J79 z&%Er5#YLgHIhS3sa8alTd;{Hw^EVJ!G9wT;R$#usc>c1m0<%YI_Zb4i0!sz15_lWn;>{U>p9_3K;Ohd1 zjMDhy1m+2xFR)7Bjet2&`bL4<1U@bBRe=KnM<0eX95o~`QQ%yGO9Z|*8u-wVz$$UK z3;dzL#{|A6a46})Z>+#vffoq;lE7;PepBEkfsYD&QD6`@AN%%@!07_#2)tb28iBV9 z+$8X~0^blg@(9gmn!qm$Y!vuyfe!=b>=+VwMqonV#{z>vjh`s+0)bZwTrKccfj<)X zYk`jod`sYnY|Zaff#(RkSl}{&*8wgVH8k*Tfj<@a8-cq8{#9V+k(&NwfinbNDsTnh z`YA&LHwe5--~$4GD{zm%eFBd>N{5>yFeI=P@XpZCK!d>B1U{4ldss3&@FQ_QEbs+^ zZwVaw86EyOfina?F5&+u@XPQYSTQuPO5isI-Yamsz}Ez3j?wfJ1QrM^5m+Pe7J>H& z+$!*{V^HoslNs18?!O8gahkM#{}*c*eCEKfrnF0qPy}7Xlv>xLe@s0{8MMFT`#FI#1zs$$T;LjkHw(N+;8uZGjtc~` z6T<@63H*-02LwJZ@NWW-I7!pz3JeQeF7PIScL{t{V6VUr1Ri~IAkg=@;epQyoGEaj zz-queWXAOZza?;!z^wv%1imV8K;Yr1PZ|ER0_O;P@RUGc?DpY-Cj`a?ekAbN&uaV( zffq}-B?7-LFe>o-0vCaP{U^f%H3HiN{y^Y%fhQoI6*mnJOc!{ez^eck|8RJqMc{V@ z?vQ%t4+y__+=#&61dcdWyH64LCzKbK|C!>xRA9A0OW@rC--Fz2x37jpE=#CTjnF8ku zTq1C_z*k`}@%u9aKY*M1cv#?b0{<#-#6*ohMc^HP;b>N17T}5-vjSHLY!LV>!0fxT z0>2gbXMrCG9Qk>TKSkgSz|xgVD=QkS8%oP68%oRTuc>P+Eniyh>%DAg{^S{HF#i6H z^?u})WrN4N@v6#eN)eZvT=^q9 zhks3#Xu~Zn5X;L~mac57c18gI6=e;j4NY}*we=oURn4l(`i9CiYis>@R@K-u#fVm2S>qG`%DO5a z--gPon_woDrM1g^u#IJIX&V}A>jzQZ>iVk2O6sN-FDq7-R#jBiG*&IEs2}2}SZ|^=qN;3Ksjn^t?a_+%_v%Iado`o|eKJxbYRem80fR_TTUFtkqB`V%W7*Q` z%E1EHm#r>c+O%w08l5@vWNBGL<@Bkn0BS32m56vFWBt5+N)l91T2@g}TDG(yCAjf) zSefy3D2<-TONWB#SH7~&%aWcRmh|+nEU&Gz)huLKQMJk&mY$xlm21GT)|L$nzO1Uc zy0pHmrlNMGGnvjRh@{KQU1673)|4XuR@&68=wJy*x|7}V`r6e_A7_QefT%sa0#-Hn z#Zld0Yg`z%8uhD_Ka%QI3_U^aqHL=6p@gT0vc9sc0%@x$t9RvsLO_=;RVZ(Fsi3$G zWy>l{%WF|5mo+q0Ew|N9PHe;KGFwfqaNc%Ld;2K8VMW!l#!_1~sVJ4Ft@hELD2G=$ z)zVP)bysp4nwENvm!2Nur6>5h7TsTJ;A&GOAlccxPx|80z7m$j+94&Hnbyb<4;BK6&W9CNNC3oQ*k|%La z$&=nr$&=nbRiq8)?R2@3j-FRJx>jXPjVoA9vomT_2rwX3Jyg_6rH;Ct!CX?q$0aa) z{A5+$6w?-0Ro#lp`gDTWkRp&LWciB9@~d1T>R|3vXuB+GcJ0KozS2>-iZA?1t5$guL+?5?oaolE zGWQDRDFQk<@V0kaC6cB(^j5t*v^UykPxQKea9WLyprVrMZ>*}VvFoC-zO2kMO z8E=l(ho6+H%dffJzD-!M|UC_sh_!<=$IV`3XKe_ zudJvlr*2A-+34Pvp#$tAJh{;tFp5BxUs(^+@}cr%nh{2_O@((>?a8!A{mvMi6cv>X zQ~YX4o4=!)Q~u79rM#Rus=Sb@$(})@1LLT?3}#B&Fbd-ilSX*)cFXQENW|%?=jcNL zbREREx-yI~Y}K2SVs&Mit$jB*W~g5{ACqDbkRzs4mZ$ujBW|0&QwH;QZ=S_WnB}-g$*mpQ1nuwDWp>o%1d>%T`>znWuQYJ3gOh9^72)l z4dch(R~agduQq^bD0Ahc@k3Jv@b%#Hr3l|C>_Gt zlTP`;IBi`F?T?9?s%17)*1l5xq>I3XcJr;1(uhIPDp!J%D0Ga8wr9Bw=MCi;@Ku(B zwyAzqC5ndW9xSiN;L%}1UK&pPxMFm1;oP7<7iX7%63`euf{Ld*dy~{elyVgAlmp|! zCdlharS^B11aMRIZquMYwcwhXqOcf0e!a53))_0LSMqrI8;mywOa(fbz{AnRGq$=~ zw2K_%J4v;-H#Y6>jZ6D0V|NdZQnBc=;OZQv(Arl0g8Noib*$WdR7Jy3F)7VEla<6N zdA&F-LYjaY=@U|CadoY|cW1gVoRMj$ZK}8TP7KbaUgQ!i6?!J$52R>;_dLDWvD2xuEhYOuGT(%T321xxU9CG!zA4) zbfPg@sI0HAwWW>o*#3hpV$uw?h;k2Cl%Hd2o<2^M(Z@$!+S}QAP=1YN^^LZsoPO@^ z7+YJ4$wy{mA1xcWko4$xW-oL!^hd>QXbB6F})mi1`nd zpsK5{Ew5~_6(snfKDUpk>Eo5(EBZ8hOw+vCH_b2R zSJY{qih(?-=aj(pRdtmsEApr3x%|=1&i8svp3G%6dw9@Io;Ka zD81CAp|hV1?~2N$O}3>)<>Q(~gr8?75`NC22M<=2?zJcJcGjTc=~Bj3%BsN@12!L& zebx{RT(ykxDXqt7t<1i7PK;xv10L={SkjA`l*)BIHggtL%)Fu;`1oPm?erB%e0-gB zVsjNJDXYpj7nTwrWsZJ+9L49Ca^>BzbAo|T=`F2nnCuKi&#NkyO?EX(n%<{AgjU!a zcD0-E)pHxrgPniM*V)b{>Fd-u-#LQwL8b|fl^rl}$Egbda|G&hNRz^#p!i_YGSi4O z`~>M>nXLR%u_V3R%~%TI?&R7qjwUVT@2nS6{+>2Ch4RT%8`9M(r!elunU*ZohkJ&> zhVslXIB<@fQy9nCn?BA8g+87UKRsP~fR8FB$T3&FMPiNeR9`8Svu;TFyQ>I=Q6<#Y z{wYt_^cDT^k6FvwvdTJtscd*((KKGmzAAs(U`$d(={Pkc)j(F>^dd4RiC@wUQ3EDp z9knSCOs?VpYsdwi}zil*{(bd9%Lc-?2TH;h8*mjDv`CqZGniJ-SnGSK~W zB!k^iZ!+lXlLN}zoeX+ZwVQ8#c$)!W(Yo8ex zfA(!EDyz$EO`Z*dS9|j#nB+`KN?(HUNk9_gi3eq-fh%NcB-(@xm9~b?j&paiy|~h4 zjty~!Kv(U{DqVBi==b~X53u<=R*#gwvkq5Y&a72lKIs>K4ju8}Tw(rXoDwvTIafF> z&AGzK=mD8?g{XSZtR)jXPk;1RZkNv(iuVlsXX1b35d7re9}kXR1SZg(=E+{B5iz0Z zzCgRdQyr8XF5ybCB@{i!FuB^PVw5et_w~Us~FG^t%{ygo9Ny1vr*N0SR%nt-` zY>kgY#M08r73fcJ`9VEy`C3GmVF^`$*hExCkE4DobV&U>9stMA0)fLuDGvt2ai72@ z#6JbF_mV(hHW(mWU;+O5;24Yg$1y){9S;y5>QfT7{t}Mt&CdUzBL_*hc7(e+_u~m$ z%>&_R^FSXNhOJP4II=VQ%E#6ldWDZP4+Mg(*ti}@;HX$YbJ!J*77v82r*%jbYT2?g zgD0;er+^Ai-d0n8INC(m7mk9x)ftX-BHCia1g`6_#~ho*Lwy>N0Yu*}#M1-Wu6)eJ zFS2(5UgR_Nozj!g25gA6jq zf$mHUo7o+Vd|i8V#)nujs54s97u=FLD%uq9e0@k{SBCY0^^W$OI;!*atdac&GsKC> zPGN>RF=G`*ap|=(Z${*iScVmfCz_BvCMud`JrQ|xlvTXbDv1TxQB$JYosquLR%mN* z-Eq)m%I^p()Dc|A1I>xQz`7+>k>>cQVB}4N4!6^~0B{7AdM)XVPL4Lmt&gTmy&anC zjb1al^X;s)Z|n!w+HZXr+%h{W|C1yp+llFX!;T#5MrJ2Nx-nyk3H4fa*#yzLOoA!e zWz~(*p2#eEDwkC^R(p=tp2}s_otRV^MTEh_1d4kTqiG#~ff7>b&k9DyKvM@!|CqGt z2PS>`flQzNF=^8;sgm@YR5{XrB3)KpjwAibWz~(>o=S^Tw9BfSpgon|rf8Q{cZOS2 zW0j^}`vjW$4HT2o)QDi@M+c>;6Vqx6nDm+gGQFlw^wm^xuXQz24D-Ainkw#{qFvV2 zNIyMcDfCn>>uRK*p0E^pDwlQj8QK$?qLH8BjKeJD$A#6msL00opm`X>n>&1u@s{^B#4GSMw_w#l{p?q`%rlK zW#P4Z7i6)(>*60}6V%t$`tm+h>}1i}i#OzYVC^>Lhu2{HYPj=b53>f2ZXiLp{2^kk zJ06PvWB>l>20GwJ6#W1+U3440I^W1BiYms1YvV0oQpoB!)S2Iv|IymlR1KrJMwJ+> z`P56|8kAl?(IQH;QNi}FrsN8@*POJL0Htbfq;&10`8PRR(W&eng zNxh`-QzQg68dc%`6+%SbEq4k=@e12|B=tpYnfcm0lwUis@XK=R`d-*@Dy!|b_XJum zS7oiUI@~^uc@l1)LlDZ36)FRrud(yX|AR((L2%27$6NoQbf$hg{|r-5*LZ!5EA3A6xrpWeop8ox@-im}2afs3NPi$A*il

(knib0LE=szxwTqO%jfHD| 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

u8&qWd+M{{C2!Kz-bz{T*{0}tF{$Ud?=#rhx4 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[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 H=r{gsN~dBX)O??v&YO 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