From f3ac1f548074b305a9beacebc2d042b16c55e240 Mon Sep 17 00:00:00 2001 From: Lukas Herman Date: Mon, 14 Dec 2020 22:00:51 -0800 Subject: [PATCH] Add static-linked opus option Changes: * Remove hraban/opus dependency * Add multiple static-linked libopus binaries --- dockerfiles/darwin-x64.Dockerfile | 3 + dockerfiles/darwin-x64.cmake | 8 + go.mod | 1 - go.sum | 2 - pkg/codec/opus/.gitignore | 1 + pkg/codec/opus/LICENSE | 44 + pkg/codec/opus/build.sh | 19 + pkg/codec/opus/include/opus.h | 981 ++++++++++++++++++++++ pkg/codec/opus/include/opus_custom.h | 342 ++++++++ pkg/codec/opus/include/opus_defines.h | 799 ++++++++++++++++++ pkg/codec/opus/include/opus_multistream.h | 660 +++++++++++++++ pkg/codec/opus/include/opus_projection.h | 568 +++++++++++++ pkg/codec/opus/include/opus_types.h | 166 ++++ pkg/codec/opus/lib/libopus_darwin_x64.a | Bin 0 -> 649072 bytes pkg/codec/opus/lib/libopus_linux_arm64.a | Bin 0 -> 797950 bytes pkg/codec/opus/lib/libopus_linux_armv7.a | Bin 0 -> 558574 bytes pkg/codec/opus/lib/libopus_linux_x64.a | Bin 0 -> 975712 bytes pkg/codec/opus/lib/libopus_windows_x64.a | Bin 0 -> 781086 bytes pkg/codec/opus/opus.go | 76 +- pkg/codec/opus/opus_pkgconfig.go | 6 + pkg/codec/opus/opus_static.go | 12 + 21 files changed, 3670 insertions(+), 18 deletions(-) create mode 100644 dockerfiles/darwin-x64.cmake create mode 100644 pkg/codec/opus/.gitignore create mode 100644 pkg/codec/opus/LICENSE create mode 100755 pkg/codec/opus/build.sh create mode 100644 pkg/codec/opus/include/opus.h create mode 100644 pkg/codec/opus/include/opus_custom.h create mode 100644 pkg/codec/opus/include/opus_defines.h create mode 100644 pkg/codec/opus/include/opus_multistream.h create mode 100644 pkg/codec/opus/include/opus_projection.h create mode 100644 pkg/codec/opus/include/opus_types.h create mode 100644 pkg/codec/opus/lib/libopus_darwin_x64.a create mode 100644 pkg/codec/opus/lib/libopus_linux_arm64.a create mode 100644 pkg/codec/opus/lib/libopus_linux_armv7.a create mode 100644 pkg/codec/opus/lib/libopus_linux_x64.a create mode 100644 pkg/codec/opus/lib/libopus_windows_x64.a create mode 100644 pkg/codec/opus/opus_pkgconfig.go create mode 100644 pkg/codec/opus/opus_static.go diff --git a/dockerfiles/darwin-x64.Dockerfile b/dockerfiles/darwin-x64.Dockerfile index 85ea2f2c..b8fd6ced 100644 --- a/dockerfiles/darwin-x64.Dockerfile +++ b/dockerfiles/darwin-x64.Dockerfile @@ -15,6 +15,9 @@ ENV CC=x86_64-apple-darwin14-clang \ AS=x86_64-apple-darwin14-as \ LD=x86_64-apple-darwin14-ld +COPY darwin-x64.cmake ${OSX_CROSS_PATH}/ +ENV CMAKE_TOOLCHAIN_FILE ${OSX_CROSS_PATH}/darwin-x64.cmake + ARG IMAGE=lherman/cross-darwin-x64 ARG VERSION=latest ENV DEFAULT_DOCKCROSS_IMAGE ${IMAGE}:${VERSION} diff --git a/dockerfiles/darwin-x64.cmake b/dockerfiles/darwin-x64.cmake new file mode 100644 index 00000000..d31f206b --- /dev/null +++ b/dockerfiles/darwin-x64.cmake @@ -0,0 +1,8 @@ +set(CMAKE_SYSTEM_NAME Darwin) +set(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_SYSTEM_PROCESSOR x86_64) + +set(CMAKE_C_COMPILER $ENV{CC}) +set(CMAKE_CXX_COMPILER $ENV{CXX}) +set(CMAKE_AR $ENV{AR}) +set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) diff --git a/go.mod b/go.mod index 7b657b3a..f7bd93a1 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,6 @@ require ( github.com/gen2brain/malgo v0.10.27 github.com/gen2brain/shm v0.0.0-20200228170931-49f9650110c5 // indirect github.com/kbinani/screenshot v0.0.0-20191211154542-3a185f1ce18f - github.com/lherman-cs/opus v0.0.2 github.com/lxn/win v0.0.0-20201111105847-2a20daff6a55 // indirect github.com/pion/logging v0.2.2 github.com/pion/rtp v1.6.2 diff --git a/go.sum b/go.sum index 03468648..4afad564 100644 --- a/go.sum +++ b/go.sum @@ -28,8 +28,6 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lherman-cs/opus v0.0.2 h1:fE9Du3NKXDBztqvoTd6P2y9eJ9vgIHahGK8yQostnhA= -github.com/lherman-cs/opus v0.0.2/go.mod h1:v9KQvlDYMuvlwniumBVMlrB0VHQvyTgxNvaXjPmTmps= github.com/lucas-clemente/quic-go v0.7.1-0.20190401152353-907071221cf9 h1:tbuodUh2vuhOVZAdW3NEUvosFHUMJwUNl7jk/VSEiwc= github.com/lucas-clemente/quic-go v0.7.1-0.20190401152353-907071221cf9/go.mod h1:PpMmPfPKO9nKJ/psF49ESTAGQSdfXxlg1otPbEB2nOw= github.com/lxn/win v0.0.0-20201111105847-2a20daff6a55 h1:4BxFx5XCtXc+nFtXDGDW+Uu5sPtsAbvPh6RObj3fG9o= diff --git a/pkg/codec/opus/.gitignore b/pkg/codec/opus/.gitignore new file mode 100644 index 00000000..85de9cf9 --- /dev/null +++ b/pkg/codec/opus/.gitignore @@ -0,0 +1 @@ +src diff --git a/pkg/codec/opus/LICENSE b/pkg/codec/opus/LICENSE new file mode 100644 index 00000000..9c739c34 --- /dev/null +++ b/pkg/codec/opus/LICENSE @@ -0,0 +1,44 @@ +Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic, + Jean-Marc Valin, Timothy B. Terriberry, + CSIRO, Gregory Maxwell, Mark Borgerding, + Erik de Castro Lopo + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of Internet Society, IETF or IETF Trust, nor the +names of specific contributors, may be used to endorse or promote +products derived from this software without specific prior written +permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Opus is subject to the royalty-free patent licenses which are +specified at: + +Xiph.Org Foundation: +https://datatracker.ietf.org/ipr/1524/ + +Microsoft Corporation: +https://datatracker.ietf.org/ipr/1914/ + +Broadcom Corporation: +https://datatracker.ietf.org/ipr/1526/ diff --git a/pkg/codec/opus/build.sh b/pkg/codec/opus/build.sh new file mode 100755 index 00000000..60410ff4 --- /dev/null +++ b/pkg/codec/opus/build.sh @@ -0,0 +1,19 @@ +GIT_URL=https://github.com/xiph/opus.git +VERSION=v1.3.1 +SRC_DIR=src +LIB_DIR=lib +INCLUDE_DIR=include +ROOT_DIR=${PWD} +LIB_PREFIX=libopus + +mkdir -p ${LIB_DIR} ${INCLUDE_DIR} + +git clone --depth=1 --branch=${VERSION} ${GIT_URL} ${SRC_DIR} +cd ${SRC_DIR} +${MEDIADEVICES_TOOLCHAIN_BIN} cmake . +${MEDIADEVICES_TOOLCHAIN_BIN} make -j2 +mv ${LIB_PREFIX}.a ${ROOT_DIR}/${LIB_DIR}/${LIB_PREFIX}_${MEDIADEVICES_TARGET_PLATFORM}.a +mkdir -p ${ROOT_DIR}/${INCLUDE_DIR} +cp include/*.h ${ROOT_DIR}/${INCLUDE_DIR} +git clean -dfx +git reset --hard diff --git a/pkg/codec/opus/include/opus.h b/pkg/codec/opus/include/opus.h new file mode 100644 index 00000000..d282f21d --- /dev/null +++ b/pkg/codec/opus/include/opus.h @@ -0,0 +1,981 @@ +/* Copyright (c) 2010-2011 Xiph.Org Foundation, Skype Limited + Written by Jean-Marc Valin and Koen Vos */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus.h + * @brief Opus reference implementation API + */ + +#ifndef OPUS_H +#define OPUS_H + +#include "opus_types.h" +#include "opus_defines.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @mainpage Opus + * + * The Opus codec is designed for interactive speech and audio transmission over the Internet. + * It is designed by the IETF Codec Working Group and incorporates technology from + * Skype's SILK codec and Xiph.Org's CELT codec. + * + * The Opus codec is designed to handle a wide range of interactive audio applications, + * including Voice over IP, videoconferencing, in-game chat, and even remote live music + * performances. It can scale from low bit-rate narrowband speech to very high quality + * stereo music. Its main features are: + + * @li Sampling rates from 8 to 48 kHz + * @li Bit-rates from 6 kb/s to 510 kb/s + * @li Support for both constant bit-rate (CBR) and variable bit-rate (VBR) + * @li Audio bandwidth from narrowband to full-band + * @li Support for speech and music + * @li Support for mono and stereo + * @li Support for multichannel (up to 255 channels) + * @li Frame sizes from 2.5 ms to 60 ms + * @li Good loss robustness and packet loss concealment (PLC) + * @li Floating point and fixed-point implementation + * + * Documentation sections: + * @li @ref opus_encoder + * @li @ref opus_decoder + * @li @ref opus_repacketizer + * @li @ref opus_multistream + * @li @ref opus_libinfo + * @li @ref opus_custom + */ + +/** @defgroup opus_encoder Opus Encoder + * @{ + * + * @brief This page describes the process and functions used to encode Opus. + * + * Since Opus is a stateful codec, the encoding process starts with creating an encoder + * state. This can be done with: + * + * @code + * int error; + * OpusEncoder *enc; + * enc = opus_encoder_create(Fs, channels, application, &error); + * @endcode + * + * From this point, @c enc can be used for encoding an audio stream. An encoder state + * @b must @b not be used for more than one stream at the same time. Similarly, the encoder + * state @b must @b not be re-initialized for each frame. + * + * While opus_encoder_create() allocates memory for the state, it's also possible + * to initialize pre-allocated memory: + * + * @code + * int size; + * int error; + * OpusEncoder *enc; + * size = opus_encoder_get_size(channels); + * enc = malloc(size); + * error = opus_encoder_init(enc, Fs, channels, application); + * @endcode + * + * where opus_encoder_get_size() returns the required size for the encoder state. Note that + * future versions of this code may change the size, so no assuptions should be made about it. + * + * The encoder state is always continuous in memory and only a shallow copy is sufficient + * to copy it (e.g. memcpy()) + * + * It is possible to change some of the encoder's settings using the opus_encoder_ctl() + * interface. All these settings already default to the recommended value, so they should + * only be changed when necessary. The most common settings one may want to change are: + * + * @code + * opus_encoder_ctl(enc, OPUS_SET_BITRATE(bitrate)); + * opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(complexity)); + * opus_encoder_ctl(enc, OPUS_SET_SIGNAL(signal_type)); + * @endcode + * + * where + * + * @arg bitrate is in bits per second (b/s) + * @arg complexity is a value from 1 to 10, where 1 is the lowest complexity and 10 is the highest + * @arg signal_type is either OPUS_AUTO (default), OPUS_SIGNAL_VOICE, or OPUS_SIGNAL_MUSIC + * + * See @ref opus_encoderctls and @ref opus_genericctls for a complete list of parameters that can be set or queried. Most parameters can be set or changed at any time during a stream. + * + * To encode a frame, opus_encode() or opus_encode_float() must be called with exactly one frame (2.5, 5, 10, 20, 40 or 60 ms) of audio data: + * @code + * len = opus_encode(enc, audio_frame, frame_size, packet, max_packet); + * @endcode + * + * where + * + * + * opus_encode() and opus_encode_float() return the number of bytes actually written to the packet. + * The return value can be negative, which indicates that an error has occurred. If the return value + * is 2 bytes or less, then the packet does not need to be transmitted (DTX). + * + * Once the encoder state if no longer needed, it can be destroyed with + * + * @code + * opus_encoder_destroy(enc); + * @endcode + * + * If the encoder was created with opus_encoder_init() rather than opus_encoder_create(), + * then no action is required aside from potentially freeing the memory that was manually + * allocated for it (calling free(enc) for the example above) + * + */ + +/** Opus encoder state. + * This contains the complete state of an Opus encoder. + * It is position independent and can be freely copied. + * @see opus_encoder_create,opus_encoder_init + */ +typedef struct OpusEncoder OpusEncoder; + +/** Gets the size of an OpusEncoder structure. + * @param[in] channels int: Number of channels. + * This must be 1 or 2. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_encoder_get_size(int channels); + +/** + */ + +/** Allocates and initializes an encoder state. + * There are three coding modes: + * + * @ref OPUS_APPLICATION_VOIP gives best quality at a given bitrate for voice + * signals. It enhances the input signal by high-pass filtering and + * emphasizing formants and harmonics. Optionally it includes in-band + * forward error correction to protect against packet loss. Use this + * mode for typical VoIP applications. Because of the enhancement, + * even at high bitrates the output may sound different from the input. + * + * @ref OPUS_APPLICATION_AUDIO gives best quality at a given bitrate for most + * non-voice signals like music. Use this mode for music and mixed + * (music/voice) content, broadcast, and applications requiring less + * than 15 ms of coding delay. + * + * @ref OPUS_APPLICATION_RESTRICTED_LOWDELAY configures low-delay mode that + * disables the speech-optimized mode in exchange for slightly reduced delay. + * This mode can only be set on an newly initialized or freshly reset encoder + * because it changes the codec delay. + * + * This is useful when the caller knows that the speech-optimized modes will not be needed (use with caution). + * @param [in] Fs opus_int32: Sampling rate of input signal (Hz) + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels int: Number of channels (1 or 2) in input signal + * @param [in] application int: Coding mode (@ref OPUS_APPLICATION_VOIP/@ref OPUS_APPLICATION_AUDIO/@ref OPUS_APPLICATION_RESTRICTED_LOWDELAY) + * @param [out] error int*: @ref opus_errorcodes + * @note Regardless of the sampling rate and number channels selected, the Opus encoder + * can switch to a lower audio bandwidth or number of channels if the bitrate + * selected is too low. This also means that it is safe to always use 48 kHz stereo input + * and let the encoder optimize the encoding. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusEncoder *opus_encoder_create( + opus_int32 Fs, + int channels, + int application, + int *error +); + +/** Initializes a previously allocated encoder state + * The memory pointed to by st must be at least the size returned by opus_encoder_get_size(). + * This is intended for applications which use their own allocator instead of malloc. + * @see opus_encoder_create(),opus_encoder_get_size() + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @param [in] st OpusEncoder*: Encoder state + * @param [in] Fs opus_int32: Sampling rate of input signal (Hz) + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels int: Number of channels (1 or 2) in input signal + * @param [in] application int: Coding mode (OPUS_APPLICATION_VOIP/OPUS_APPLICATION_AUDIO/OPUS_APPLICATION_RESTRICTED_LOWDELAY) + * @retval #OPUS_OK Success or @ref opus_errorcodes + */ +OPUS_EXPORT int opus_encoder_init( + OpusEncoder *st, + opus_int32 Fs, + int channels, + int application +) OPUS_ARG_NONNULL(1); + +/** Encodes an Opus frame. + * @param [in] st OpusEncoder*: Encoder state + * @param [in] pcm opus_int16*: Input signal (interleaved if 2 channels). length is frame_size*channels*sizeof(opus_int16) + * @param [in] frame_size int: Number of samples per channel in the + * input signal. + * This must be an Opus frame size for + * the encoder's sampling rate. + * For example, at 48 kHz the permitted + * values are 120, 240, 480, 960, 1920, + * and 2880. + * Passing in a duration of less than + * 10 ms (480 samples at 48 kHz) will + * prevent the encoder from using the LPC + * or hybrid modes. + * @param [out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_encode( + OpusEncoder *st, + const opus_int16 *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Encodes an Opus frame from floating point input. + * @param [in] st OpusEncoder*: Encoder state + * @param [in] pcm float*: Input in float format (interleaved if 2 channels), with a normal range of +/-1.0. + * Samples with a range beyond +/-1.0 are supported but will + * be clipped by decoders using the integer API and should + * only be used if it is known that the far end supports + * extended dynamic range. + * length is frame_size*channels*sizeof(float) + * @param [in] frame_size int: Number of samples per channel in the + * input signal. + * This must be an Opus frame size for + * the encoder's sampling rate. + * For example, at 48 kHz the permitted + * values are 120, 240, 480, 960, 1920, + * and 2880. + * Passing in a duration of less than + * 10 ms (480 samples at 48 kHz) will + * prevent the encoder from using the LPC + * or hybrid modes. + * @param [out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_encode_float( + OpusEncoder *st, + const float *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Frees an OpusEncoder allocated by opus_encoder_create(). + * @param[in] st OpusEncoder*: State to be freed. + */ +OPUS_EXPORT void opus_encoder_destroy(OpusEncoder *st); + +/** Perform a CTL function on an Opus encoder. + * + * Generally the request and subsequent arguments are generated + * by a convenience macro. + * @param st OpusEncoder*: Encoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls or + * @ref opus_encoderctls. + * @see opus_genericctls + * @see opus_encoderctls + */ +OPUS_EXPORT int opus_encoder_ctl(OpusEncoder *st, int request, ...) OPUS_ARG_NONNULL(1); +/**@}*/ + +/** @defgroup opus_decoder Opus Decoder + * @{ + * + * @brief This page describes the process and functions used to decode Opus. + * + * The decoding process also starts with creating a decoder + * state. This can be done with: + * @code + * int error; + * OpusDecoder *dec; + * dec = opus_decoder_create(Fs, channels, &error); + * @endcode + * where + * @li Fs is the sampling rate and must be 8000, 12000, 16000, 24000, or 48000 + * @li channels is the number of channels (1 or 2) + * @li error will hold the error code in case of failure (or #OPUS_OK on success) + * @li the return value is a newly created decoder state to be used for decoding + * + * While opus_decoder_create() allocates memory for the state, it's also possible + * to initialize pre-allocated memory: + * @code + * int size; + * int error; + * OpusDecoder *dec; + * size = opus_decoder_get_size(channels); + * dec = malloc(size); + * error = opus_decoder_init(dec, Fs, channels); + * @endcode + * where opus_decoder_get_size() returns the required size for the decoder state. Note that + * future versions of this code may change the size, so no assuptions should be made about it. + * + * The decoder state is always continuous in memory and only a shallow copy is sufficient + * to copy it (e.g. memcpy()) + * + * To decode a frame, opus_decode() or opus_decode_float() must be called with a packet of compressed audio data: + * @code + * frame_size = opus_decode(dec, packet, len, decoded, max_size, 0); + * @endcode + * where + * + * @li packet is the byte array containing the compressed data + * @li len is the exact number of bytes contained in the packet + * @li decoded is the decoded audio data in opus_int16 (or float for opus_decode_float()) + * @li max_size is the max duration of the frame in samples (per channel) that can fit into the decoded_frame array + * + * opus_decode() and opus_decode_float() return the number of samples (per channel) decoded from the packet. + * If that value is negative, then an error has occurred. This can occur if the packet is corrupted or if the audio + * buffer is too small to hold the decoded audio. + * + * Opus is a stateful codec with overlapping blocks and as a result Opus + * packets are not coded independently of each other. Packets must be + * passed into the decoder serially and in the correct order for a correct + * decode. Lost packets can be replaced with loss concealment by calling + * the decoder with a null pointer and zero length for the missing packet. + * + * A single codec state may only be accessed from a single thread at + * a time and any required locking must be performed by the caller. Separate + * streams must be decoded with separate decoder states and can be decoded + * in parallel unless the library was compiled with NONTHREADSAFE_PSEUDOSTACK + * defined. + * + */ + +/** Opus decoder state. + * This contains the complete state of an Opus decoder. + * It is position independent and can be freely copied. + * @see opus_decoder_create,opus_decoder_init + */ +typedef struct OpusDecoder OpusDecoder; + +/** Gets the size of an OpusDecoder structure. + * @param [in] channels int: Number of channels. + * This must be 1 or 2. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_size(int channels); + +/** Allocates and initializes a decoder state. + * @param [in] Fs opus_int32: Sample rate to decode at (Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels int: Number of channels (1 or 2) to decode + * @param [out] error int*: #OPUS_OK Success or @ref opus_errorcodes + * + * Internally Opus stores data at 48000 Hz, so that should be the default + * value for Fs. However, the decoder can efficiently decode to buffers + * at 8, 12, 16, and 24 kHz so if for some reason the caller cannot use + * data at the full sample rate, or knows the compressed data doesn't + * use the full frequency range, it can request decoding at a reduced + * rate. Likewise, the decoder is capable of filling in either mono or + * interleaved stereo pcm buffers, at the caller's request. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusDecoder *opus_decoder_create( + opus_int32 Fs, + int channels, + int *error +); + +/** Initializes a previously allocated decoder state. + * The state must be at least the size returned by opus_decoder_get_size(). + * This is intended for applications which use their own allocator instead of malloc. @see opus_decoder_create,opus_decoder_get_size + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @param [in] st OpusDecoder*: Decoder state. + * @param [in] Fs opus_int32: Sampling rate to decode to (Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels int: Number of channels (1 or 2) to decode + * @retval #OPUS_OK Success or @ref opus_errorcodes + */ +OPUS_EXPORT int opus_decoder_init( + OpusDecoder *st, + opus_int32 Fs, + int channels +) OPUS_ARG_NONNULL(1); + +/** Decode an Opus packet. + * @param [in] st OpusDecoder*: Decoder state + * @param [in] data char*: Input payload. Use a NULL pointer to indicate packet loss + * @param [in] len opus_int32: Number of bytes in payload* + * @param [out] pcm opus_int16*: Output signal (interleaved if 2 channels). length + * is frame_size*channels*sizeof(opus_int16) + * @param [in] frame_size Number of samples per channel of available space in \a pcm. + * If this is less than the maximum packet duration (120ms; 5760 for 48kHz), this function will + * not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1), + * then frame_size needs to be exactly the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the next incoming packet. For the PLC and + * FEC cases, frame_size must be a multiple of 2.5 ms. + * @param [in] decode_fec int: Flag (0 or 1) to request that any in-band forward error correction data be + * decoded. If no such data is available, the frame is decoded as if it were lost. + * @returns Number of decoded samples or @ref opus_errorcodes + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decode( + OpusDecoder *st, + const unsigned char *data, + opus_int32 len, + opus_int16 *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Decode an Opus packet with floating point output. + * @param [in] st OpusDecoder*: Decoder state + * @param [in] data char*: Input payload. Use a NULL pointer to indicate packet loss + * @param [in] len opus_int32: Number of bytes in payload + * @param [out] pcm float*: Output signal (interleaved if 2 channels). length + * is frame_size*channels*sizeof(float) + * @param [in] frame_size Number of samples per channel of available space in \a pcm. + * If this is less than the maximum packet duration (120ms; 5760 for 48kHz), this function will + * not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1), + * then frame_size needs to be exactly the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the next incoming packet. For the PLC and + * FEC cases, frame_size must be a multiple of 2.5 ms. + * @param [in] decode_fec int: Flag (0 or 1) to request that any in-band forward error correction data be + * decoded. If no such data is available the frame is decoded as if it were lost. + * @returns Number of decoded samples or @ref opus_errorcodes + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decode_float( + OpusDecoder *st, + const unsigned char *data, + opus_int32 len, + float *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Perform a CTL function on an Opus decoder. + * + * Generally the request and subsequent arguments are generated + * by a convenience macro. + * @param st OpusDecoder*: Decoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls or + * @ref opus_decoderctls. + * @see opus_genericctls + * @see opus_decoderctls + */ +OPUS_EXPORT int opus_decoder_ctl(OpusDecoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/** Frees an OpusDecoder allocated by opus_decoder_create(). + * @param[in] st OpusDecoder*: State to be freed. + */ +OPUS_EXPORT void opus_decoder_destroy(OpusDecoder *st); + +/** Parse an opus packet into one or more frames. + * Opus_decode will perform this operation internally so most applications do + * not need to use this function. + * This function does not copy the frames, the returned pointers are pointers into + * the input packet. + * @param [in] data char*: Opus packet to be parsed + * @param [in] len opus_int32: size of data + * @param [out] out_toc char*: TOC pointer + * @param [out] frames char*[48] encapsulated frames + * @param [out] size opus_int16[48] sizes of the encapsulated frames + * @param [out] payload_offset int*: returns the position of the payload within the packet (in bytes) + * @returns number of frames + */ +OPUS_EXPORT int opus_packet_parse( + const unsigned char *data, + opus_int32 len, + unsigned char *out_toc, + const unsigned char *frames[48], + opus_int16 size[48], + int *payload_offset +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5); + +/** Gets the bandwidth of an Opus packet. + * @param [in] data char*: Opus packet + * @retval OPUS_BANDWIDTH_NARROWBAND Narrowband (4kHz bandpass) + * @retval OPUS_BANDWIDTH_MEDIUMBAND Mediumband (6kHz bandpass) + * @retval OPUS_BANDWIDTH_WIDEBAND Wideband (8kHz bandpass) + * @retval OPUS_BANDWIDTH_SUPERWIDEBAND Superwideband (12kHz bandpass) + * @retval OPUS_BANDWIDTH_FULLBAND Fullband (20kHz bandpass) + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_bandwidth(const unsigned char *data) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples per frame from an Opus packet. + * @param [in] data char*: Opus packet. + * This must contain at least one byte of + * data. + * @param [in] Fs opus_int32: Sampling rate in Hz. + * This must be a multiple of 400, or + * inaccurate results will be returned. + * @returns Number of samples per frame. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_samples_per_frame(const unsigned char *data, opus_int32 Fs) OPUS_ARG_NONNULL(1); + +/** Gets the number of channels from an Opus packet. + * @param [in] data char*: Opus packet + * @returns Number of channels + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_channels(const unsigned char *data) OPUS_ARG_NONNULL(1); + +/** Gets the number of frames in an Opus packet. + * @param [in] packet char*: Opus packet + * @param [in] len opus_int32: Length of packet + * @returns Number of frames + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_frames(const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples of an Opus packet. + * @param [in] packet char*: Opus packet + * @param [in] len opus_int32: Length of packet + * @param [in] Fs opus_int32: Sampling rate in Hz. + * This must be a multiple of 400, or + * inaccurate results will be returned. + * @returns Number of samples + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_samples(const unsigned char packet[], opus_int32 len, opus_int32 Fs) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples of an Opus packet. + * @param [in] dec OpusDecoder*: Decoder state + * @param [in] packet char*: Opus packet + * @param [in] len opus_int32: Length of packet + * @returns Number of samples + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_nb_samples(const OpusDecoder *dec, const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2); + +/** Applies soft-clipping to bring a float signal within the [-1,1] range. If + * the signal is already in that range, nothing is done. If there are values + * outside of [-1,1], then the signal is clipped as smoothly as possible to + * both fit in the range and avoid creating excessive distortion in the + * process. + * @param [in,out] pcm float*: Input PCM and modified PCM + * @param [in] frame_size int Number of samples per channel to process + * @param [in] channels int: Number of channels + * @param [in,out] softclip_mem float*: State memory for the soft clipping process (one float per channel, initialized to zero) + */ +OPUS_EXPORT void opus_pcm_soft_clip(float *pcm, int frame_size, int channels, float *softclip_mem); + + +/**@}*/ + +/** @defgroup opus_repacketizer Repacketizer + * @{ + * + * The repacketizer can be used to merge multiple Opus packets into a single + * packet or alternatively to split Opus packets that have previously been + * merged. Splitting valid Opus packets is always guaranteed to succeed, + * whereas merging valid packets only succeeds if all frames have the same + * mode, bandwidth, and frame size, and when the total duration of the merged + * packet is no more than 120 ms. The 120 ms limit comes from the + * specification and limits decoder memory requirements at a point where + * framing overhead becomes negligible. + * + * The repacketizer currently only operates on elementary Opus + * streams. It will not manipualte multistream packets successfully, except in + * the degenerate case where they consist of data from a single stream. + * + * The repacketizing process starts with creating a repacketizer state, either + * by calling opus_repacketizer_create() or by allocating the memory yourself, + * e.g., + * @code + * OpusRepacketizer *rp; + * rp = (OpusRepacketizer*)malloc(opus_repacketizer_get_size()); + * if (rp != NULL) + * opus_repacketizer_init(rp); + * @endcode + * + * Then the application should submit packets with opus_repacketizer_cat(), + * extract new packets with opus_repacketizer_out() or + * opus_repacketizer_out_range(), and then reset the state for the next set of + * input packets via opus_repacketizer_init(). + * + * For example, to split a sequence of packets into individual frames: + * @code + * unsigned char *data; + * int len; + * while (get_next_packet(&data, &len)) + * { + * unsigned char out[1276]; + * opus_int32 out_len; + * int nb_frames; + * int err; + * int i; + * err = opus_repacketizer_cat(rp, data, len); + * if (err != OPUS_OK) + * { + * release_packet(data); + * return err; + * } + * nb_frames = opus_repacketizer_get_nb_frames(rp); + * for (i = 0; i < nb_frames; i++) + * { + * out_len = opus_repacketizer_out_range(rp, i, i+1, out, sizeof(out)); + * if (out_len < 0) + * { + * release_packet(data); + * return (int)out_len; + * } + * output_next_packet(out, out_len); + * } + * opus_repacketizer_init(rp); + * release_packet(data); + * } + * @endcode + * + * Alternatively, to combine a sequence of frames into packets that each + * contain up to TARGET_DURATION_MS milliseconds of data: + * @code + * // The maximum number of packets with duration TARGET_DURATION_MS occurs + * // when the frame size is 2.5 ms, for a total of (TARGET_DURATION_MS*2/5) + * // packets. + * unsigned char *data[(TARGET_DURATION_MS*2/5)+1]; + * opus_int32 len[(TARGET_DURATION_MS*2/5)+1]; + * int nb_packets; + * unsigned char out[1277*(TARGET_DURATION_MS*2/2)]; + * opus_int32 out_len; + * int prev_toc; + * nb_packets = 0; + * while (get_next_packet(data+nb_packets, len+nb_packets)) + * { + * int nb_frames; + * int err; + * nb_frames = opus_packet_get_nb_frames(data[nb_packets], len[nb_packets]); + * if (nb_frames < 1) + * { + * release_packets(data, nb_packets+1); + * return nb_frames; + * } + * nb_frames += opus_repacketizer_get_nb_frames(rp); + * // If adding the next packet would exceed our target, or it has an + * // incompatible TOC sequence, output the packets we already have before + * // submitting it. + * // N.B., The nb_packets > 0 check ensures we've submitted at least one + * // packet since the last call to opus_repacketizer_init(). Otherwise a + * // single packet longer than TARGET_DURATION_MS would cause us to try to + * // output an (invalid) empty packet. It also ensures that prev_toc has + * // been set to a valid value. Additionally, len[nb_packets] > 0 is + * // guaranteed by the call to opus_packet_get_nb_frames() above, so the + * // reference to data[nb_packets][0] should be valid. + * if (nb_packets > 0 && ( + * ((prev_toc & 0xFC) != (data[nb_packets][0] & 0xFC)) || + * opus_packet_get_samples_per_frame(data[nb_packets], 48000)*nb_frames > + * TARGET_DURATION_MS*48)) + * { + * out_len = opus_repacketizer_out(rp, out, sizeof(out)); + * if (out_len < 0) + * { + * release_packets(data, nb_packets+1); + * return (int)out_len; + * } + * output_next_packet(out, out_len); + * opus_repacketizer_init(rp); + * release_packets(data, nb_packets); + * data[0] = data[nb_packets]; + * len[0] = len[nb_packets]; + * nb_packets = 0; + * } + * err = opus_repacketizer_cat(rp, data[nb_packets], len[nb_packets]); + * if (err != OPUS_OK) + * { + * release_packets(data, nb_packets+1); + * return err; + * } + * prev_toc = data[nb_packets][0]; + * nb_packets++; + * } + * // Output the final, partial packet. + * if (nb_packets > 0) + * { + * out_len = opus_repacketizer_out(rp, out, sizeof(out)); + * release_packets(data, nb_packets); + * if (out_len < 0) + * return (int)out_len; + * output_next_packet(out, out_len); + * } + * @endcode + * + * An alternate way of merging packets is to simply call opus_repacketizer_cat() + * unconditionally until it fails. At that point, the merged packet can be + * obtained with opus_repacketizer_out() and the input packet for which + * opus_repacketizer_cat() needs to be re-added to a newly reinitialized + * repacketizer state. + */ + +typedef struct OpusRepacketizer OpusRepacketizer; + +/** Gets the size of an OpusRepacketizer structure. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_repacketizer_get_size(void); + +/** (Re)initializes a previously allocated repacketizer state. + * The state must be at least the size returned by opus_repacketizer_get_size(). + * This can be used for applications which use their own allocator instead of + * malloc(). + * It must also be called to reset the queue of packets waiting to be + * repacketized, which is necessary if the maximum packet duration of 120 ms + * is reached or if you wish to submit packets with a different Opus + * configuration (coding mode, audio bandwidth, frame size, or channel count). + * Failure to do so will prevent a new packet from being added with + * opus_repacketizer_cat(). + * @see opus_repacketizer_create + * @see opus_repacketizer_get_size + * @see opus_repacketizer_cat + * @param rp OpusRepacketizer*: The repacketizer state to + * (re)initialize. + * @returns A pointer to the same repacketizer state that was passed in. + */ +OPUS_EXPORT OpusRepacketizer *opus_repacketizer_init(OpusRepacketizer *rp) OPUS_ARG_NONNULL(1); + +/** Allocates memory and initializes the new repacketizer with + * opus_repacketizer_init(). + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusRepacketizer *opus_repacketizer_create(void); + +/** Frees an OpusRepacketizer allocated by + * opus_repacketizer_create(). + * @param[in] rp OpusRepacketizer*: State to be freed. + */ +OPUS_EXPORT void opus_repacketizer_destroy(OpusRepacketizer *rp); + +/** Add a packet to the current repacketizer state. + * This packet must match the configuration of any packets already submitted + * for repacketization since the last call to opus_repacketizer_init(). + * This means that it must have the same coding mode, audio bandwidth, frame + * size, and channel count. + * This can be checked in advance by examining the top 6 bits of the first + * byte of the packet, and ensuring they match the top 6 bits of the first + * byte of any previously submitted packet. + * The total duration of audio in the repacketizer state also must not exceed + * 120 ms, the maximum duration of a single packet, after adding this packet. + * + * The contents of the current repacketizer state can be extracted into new + * packets using opus_repacketizer_out() or opus_repacketizer_out_range(). + * + * In order to add a packet with a different configuration or to add more + * audio beyond 120 ms, you must clear the repacketizer state by calling + * opus_repacketizer_init(). + * If a packet is too large to add to the current repacketizer state, no part + * of it is added, even if it contains multiple frames, some of which might + * fit. + * If you wish to be able to add parts of such packets, you should first use + * another repacketizer to split the packet into pieces and add them + * individually. + * @see opus_repacketizer_out_range + * @see opus_repacketizer_out + * @see opus_repacketizer_init + * @param rp OpusRepacketizer*: The repacketizer state to which to + * add the packet. + * @param[in] data const unsigned char*: The packet data. + * The application must ensure + * this pointer remains valid + * until the next call to + * opus_repacketizer_init() or + * opus_repacketizer_destroy(). + * @param len opus_int32: The number of bytes in the packet data. + * @returns An error code indicating whether or not the operation succeeded. + * @retval #OPUS_OK The packet's contents have been added to the repacketizer + * state. + * @retval #OPUS_INVALID_PACKET The packet did not have a valid TOC sequence, + * the packet's TOC sequence was not compatible + * with previously submitted packets (because + * the coding mode, audio bandwidth, frame size, + * or channel count did not match), or adding + * this packet would increase the total amount of + * audio stored in the repacketizer state to more + * than 120 ms. + */ +OPUS_EXPORT int opus_repacketizer_cat(OpusRepacketizer *rp, const unsigned char *data, opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2); + + +/** Construct a new packet from data previously submitted to the repacketizer + * state via opus_repacketizer_cat(). + * @param rp OpusRepacketizer*: The repacketizer state from which to + * construct the new packet. + * @param begin int: The index of the first frame in the current + * repacketizer state to include in the output. + * @param end int: One past the index of the last frame in the + * current repacketizer state to include in the + * output. + * @param[out] data const unsigned char*: The buffer in which to + * store the output packet. + * @param maxlen opus_int32: The maximum number of bytes to store in + * the output buffer. In order to guarantee + * success, this should be at least + * 1276 for a single frame, + * or for multiple frames, + * 1277*(end-begin). + * However, 1*(end-begin) plus + * the size of all packet data submitted to + * the repacketizer since the last call to + * opus_repacketizer_init() or + * opus_repacketizer_create() is also + * sufficient, and possibly much smaller. + * @returns The total size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BAD_ARG [begin,end) was an invalid range of + * frames (begin < 0, begin >= end, or end > + * opus_repacketizer_get_nb_frames()). + * @retval #OPUS_BUFFER_TOO_SMALL \a maxlen was insufficient to contain the + * complete output packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out_range(OpusRepacketizer *rp, int begin, int end, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Return the total number of frames contained in packet data submitted to + * the repacketizer state so far via opus_repacketizer_cat() since the last + * call to opus_repacketizer_init() or opus_repacketizer_create(). + * This defines the valid range of packets that can be extracted with + * opus_repacketizer_out_range() or opus_repacketizer_out(). + * @param rp OpusRepacketizer*: The repacketizer state containing the + * frames. + * @returns The total number of frames contained in the packet data submitted + * to the repacketizer state. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_repacketizer_get_nb_frames(OpusRepacketizer *rp) OPUS_ARG_NONNULL(1); + +/** Construct a new packet from data previously submitted to the repacketizer + * state via opus_repacketizer_cat(). + * This is a convenience routine that returns all the data submitted so far + * in a single packet. + * It is equivalent to calling + * @code + * opus_repacketizer_out_range(rp, 0, opus_repacketizer_get_nb_frames(rp), + * data, maxlen) + * @endcode + * @param rp OpusRepacketizer*: The repacketizer state from which to + * construct the new packet. + * @param[out] data const unsigned char*: The buffer in which to + * store the output packet. + * @param maxlen opus_int32: The maximum number of bytes to store in + * the output buffer. In order to guarantee + * success, this should be at least + * 1277*opus_repacketizer_get_nb_frames(rp). + * However, + * 1*opus_repacketizer_get_nb_frames(rp) + * plus the size of all packet data + * submitted to the repacketizer since the + * last call to opus_repacketizer_init() or + * opus_repacketizer_create() is also + * sufficient, and possibly much smaller. + * @returns The total size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BUFFER_TOO_SMALL \a maxlen was insufficient to contain the + * complete output packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out(OpusRepacketizer *rp, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1); + +/** Pads a given Opus packet to a larger size (possibly changing the TOC sequence). + * @param[in,out] data const unsigned char*: The buffer containing the + * packet to pad. + * @param len opus_int32: The size of the packet. + * This must be at least 1. + * @param new_len opus_int32: The desired size of the packet after padding. + * This must be at least as large as len. + * @returns an error code + * @retval #OPUS_OK \a on success. + * @retval #OPUS_BAD_ARG \a len was less than 1 or new_len was less than len. + * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet. + */ +OPUS_EXPORT int opus_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len); + +/** Remove all padding from a given Opus packet and rewrite the TOC sequence to + * minimize space usage. + * @param[in,out] data const unsigned char*: The buffer containing the + * packet to strip. + * @param len opus_int32: The size of the packet. + * This must be at least 1. + * @returns The new size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BAD_ARG \a len was less than 1. + * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_packet_unpad(unsigned char *data, opus_int32 len); + +/** Pads a given Opus multi-stream packet to a larger size (possibly changing the TOC sequence). + * @param[in,out] data const unsigned char*: The buffer containing the + * packet to pad. + * @param len opus_int32: The size of the packet. + * This must be at least 1. + * @param new_len opus_int32: The desired size of the packet after padding. + * This must be at least 1. + * @param nb_streams opus_int32: The number of streams (not channels) in the packet. + * This must be at least as large as len. + * @returns an error code + * @retval #OPUS_OK \a on success. + * @retval #OPUS_BAD_ARG \a len was less than 1. + * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet. + */ +OPUS_EXPORT int opus_multistream_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len, int nb_streams); + +/** Remove all padding from a given Opus multi-stream packet and rewrite the TOC sequence to + * minimize space usage. + * @param[in,out] data const unsigned char*: The buffer containing the + * packet to strip. + * @param len opus_int32: The size of the packet. + * This must be at least 1. + * @param nb_streams opus_int32: The number of streams (not channels) in the packet. + * This must be at least 1. + * @returns The new size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BAD_ARG \a len was less than 1 or new_len was less than len. + * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_packet_unpad(unsigned char *data, opus_int32 len, int nb_streams); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_H */ diff --git a/pkg/codec/opus/include/opus_custom.h b/pkg/codec/opus/include/opus_custom.h new file mode 100644 index 00000000..41f36bf2 --- /dev/null +++ b/pkg/codec/opus/include/opus_custom.h @@ -0,0 +1,342 @@ +/* Copyright (c) 2007-2008 CSIRO + Copyright (c) 2007-2009 Xiph.Org Foundation + Copyright (c) 2008-2012 Gregory Maxwell + Written by Jean-Marc Valin and Gregory Maxwell */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + @file opus_custom.h + @brief Opus-Custom reference implementation API + */ + +#ifndef OPUS_CUSTOM_H +#define OPUS_CUSTOM_H + +#include "opus_defines.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef CUSTOM_MODES +# define OPUS_CUSTOM_EXPORT OPUS_EXPORT +# define OPUS_CUSTOM_EXPORT_STATIC OPUS_EXPORT +#else +# define OPUS_CUSTOM_EXPORT +# ifdef OPUS_BUILD +# define OPUS_CUSTOM_EXPORT_STATIC static OPUS_INLINE +# else +# define OPUS_CUSTOM_EXPORT_STATIC +# endif +#endif + +/** @defgroup opus_custom Opus Custom + * @{ + * Opus Custom is an optional part of the Opus specification and + * reference implementation which uses a distinct API from the regular + * API and supports frame sizes that are not normally supported.\ Use + * of Opus Custom is discouraged for all but very special applications + * for which a frame size different from 2.5, 5, 10, or 20 ms is needed + * (for either complexity or latency reasons) and where interoperability + * is less important. + * + * In addition to the interoperability limitations the use of Opus custom + * disables a substantial chunk of the codec and generally lowers the + * quality available at a given bitrate. Normally when an application needs + * a different frame size from the codec it should buffer to match the + * sizes but this adds a small amount of delay which may be important + * in some very low latency applications. Some transports (especially + * constant rate RF transports) may also work best with frames of + * particular durations. + * + * Libopus only supports custom modes if they are enabled at compile time. + * + * The Opus Custom API is similar to the regular API but the + * @ref opus_encoder_create and @ref opus_decoder_create calls take + * an additional mode parameter which is a structure produced by + * a call to @ref opus_custom_mode_create. Both the encoder and decoder + * must create a mode using the same sample rate (fs) and frame size + * (frame size) so these parameters must either be signaled out of band + * or fixed in a particular implementation. + * + * Similar to regular Opus the custom modes support on the fly frame size + * switching, but the sizes available depend on the particular frame size in + * use. For some initial frame sizes on a single on the fly size is available. + */ + +/** Contains the state of an encoder. One encoder state is needed + for each stream. It is initialized once at the beginning of the + stream. Do *not* re-initialize the state for every frame. + @brief Encoder state + */ +typedef struct OpusCustomEncoder OpusCustomEncoder; + +/** State of the decoder. One decoder state is needed for each stream. + It is initialized once at the beginning of the stream. Do *not* + re-initialize the state for every frame. + @brief Decoder state + */ +typedef struct OpusCustomDecoder OpusCustomDecoder; + +/** The mode contains all the information necessary to create an + encoder. Both the encoder and decoder need to be initialized + with exactly the same mode, otherwise the output will be + corrupted. + @brief Mode configuration + */ +typedef struct OpusCustomMode OpusCustomMode; + +/** Creates a new mode struct. This will be passed to an encoder or + * decoder. The mode MUST NOT BE DESTROYED until the encoders and + * decoders that use it are destroyed as well. + * @param [in] Fs int: Sampling rate (8000 to 96000 Hz) + * @param [in] frame_size int: Number of samples (per channel) to encode in each + * packet (64 - 1024, prime factorization must contain zero or more 2s, 3s, or 5s and no other primes) + * @param [out] error int*: Returned error code (if NULL, no error will be returned) + * @return A newly created mode + */ +OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT OpusCustomMode *opus_custom_mode_create(opus_int32 Fs, int frame_size, int *error); + +/** Destroys a mode struct. Only call this after all encoders and + * decoders using this mode are destroyed as well. + * @param [in] mode OpusCustomMode*: Mode to be freed. + */ +OPUS_CUSTOM_EXPORT void opus_custom_mode_destroy(OpusCustomMode *mode); + + +#if !defined(OPUS_BUILD) || defined(CELT_ENCODER_C) + +/* Encoder */ +/** Gets the size of an OpusCustomEncoder structure. + * @param [in] mode OpusCustomMode *: Mode configuration + * @param [in] channels int: Number of channels + * @returns size + */ +OPUS_CUSTOM_EXPORT_STATIC OPUS_WARN_UNUSED_RESULT int opus_custom_encoder_get_size( + const OpusCustomMode *mode, + int channels +) OPUS_ARG_NONNULL(1); + +# ifdef CUSTOM_MODES +/** Initializes a previously allocated encoder state + * The memory pointed to by st must be the size returned by opus_custom_encoder_get_size. + * This is intended for applications which use their own allocator instead of malloc. + * @see opus_custom_encoder_create(),opus_custom_encoder_get_size() + * To reset a previously initialized state use the OPUS_RESET_STATE CTL. + * @param [in] st OpusCustomEncoder*: Encoder state + * @param [in] mode OpusCustomMode *: Contains all the information about the characteristics of + * the stream (must be the same characteristics as used for the + * decoder) + * @param [in] channels int: Number of channels + * @return OPUS_OK Success or @ref opus_errorcodes + */ +OPUS_CUSTOM_EXPORT int opus_custom_encoder_init( + OpusCustomEncoder *st, + const OpusCustomMode *mode, + int channels +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2); +# endif +#endif + + +/** Creates a new encoder state. Each stream needs its own encoder + * state (can't be shared across simultaneous streams). + * @param [in] mode OpusCustomMode*: Contains all the information about the characteristics of + * the stream (must be the same characteristics as used for the + * decoder) + * @param [in] channels int: Number of channels + * @param [out] error int*: Returns an error code + * @return Newly created encoder state. +*/ +OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT OpusCustomEncoder *opus_custom_encoder_create( + const OpusCustomMode *mode, + int channels, + int *error +) OPUS_ARG_NONNULL(1); + + +/** Destroys a an encoder state. + * @param[in] st OpusCustomEncoder*: State to be freed. + */ +OPUS_CUSTOM_EXPORT void opus_custom_encoder_destroy(OpusCustomEncoder *st); + +/** Encodes a frame of audio. + * @param [in] st OpusCustomEncoder*: Encoder state + * @param [in] pcm float*: PCM audio in float format, with a normal range of +/-1.0. + * Samples with a range beyond +/-1.0 are supported but will + * be clipped by decoders using the integer API and should + * only be used if it is known that the far end supports + * extended dynamic range. There must be exactly + * frame_size samples per channel. + * @param [in] frame_size int: Number of samples per frame of input signal + * @param [out] compressed char *: The compressed data is written here. This may not alias pcm and must be at least maxCompressedBytes long. + * @param [in] maxCompressedBytes int: Maximum number of bytes to use for compressing the frame + * (can change from one frame to another) + * @return Number of bytes written to "compressed". + * If negative, an error has occurred (see error codes). It is IMPORTANT that + * the length returned be somehow transmitted to the decoder. Otherwise, no + * decoding is possible. + */ +OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT int opus_custom_encode_float( + OpusCustomEncoder *st, + const float *pcm, + int frame_size, + unsigned char *compressed, + int maxCompressedBytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Encodes a frame of audio. + * @param [in] st OpusCustomEncoder*: Encoder state + * @param [in] pcm opus_int16*: PCM audio in signed 16-bit format (native endian). + * There must be exactly frame_size samples per channel. + * @param [in] frame_size int: Number of samples per frame of input signal + * @param [out] compressed char *: The compressed data is written here. This may not alias pcm and must be at least maxCompressedBytes long. + * @param [in] maxCompressedBytes int: Maximum number of bytes to use for compressing the frame + * (can change from one frame to another) + * @return Number of bytes written to "compressed". + * If negative, an error has occurred (see error codes). It is IMPORTANT that + * the length returned be somehow transmitted to the decoder. Otherwise, no + * decoding is possible. + */ +OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT int opus_custom_encode( + OpusCustomEncoder *st, + const opus_int16 *pcm, + int frame_size, + unsigned char *compressed, + int maxCompressedBytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Perform a CTL function on an Opus custom encoder. + * + * Generally the request and subsequent arguments are generated + * by a convenience macro. + * @see opus_encoderctls + */ +OPUS_CUSTOM_EXPORT int opus_custom_encoder_ctl(OpusCustomEncoder * OPUS_RESTRICT st, int request, ...) OPUS_ARG_NONNULL(1); + + +#if !defined(OPUS_BUILD) || defined(CELT_DECODER_C) +/* Decoder */ + +/** Gets the size of an OpusCustomDecoder structure. + * @param [in] mode OpusCustomMode *: Mode configuration + * @param [in] channels int: Number of channels + * @returns size + */ +OPUS_CUSTOM_EXPORT_STATIC OPUS_WARN_UNUSED_RESULT int opus_custom_decoder_get_size( + const OpusCustomMode *mode, + int channels +) OPUS_ARG_NONNULL(1); + +/** Initializes a previously allocated decoder state + * The memory pointed to by st must be the size returned by opus_custom_decoder_get_size. + * This is intended for applications which use their own allocator instead of malloc. + * @see opus_custom_decoder_create(),opus_custom_decoder_get_size() + * To reset a previously initialized state use the OPUS_RESET_STATE CTL. + * @param [in] st OpusCustomDecoder*: Decoder state + * @param [in] mode OpusCustomMode *: Contains all the information about the characteristics of + * the stream (must be the same characteristics as used for the + * encoder) + * @param [in] channels int: Number of channels + * @return OPUS_OK Success or @ref opus_errorcodes + */ +OPUS_CUSTOM_EXPORT_STATIC int opus_custom_decoder_init( + OpusCustomDecoder *st, + const OpusCustomMode *mode, + int channels +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2); + +#endif + + +/** Creates a new decoder state. Each stream needs its own decoder state (can't + * be shared across simultaneous streams). + * @param [in] mode OpusCustomMode: Contains all the information about the characteristics of the + * stream (must be the same characteristics as used for the encoder) + * @param [in] channels int: Number of channels + * @param [out] error int*: Returns an error code + * @return Newly created decoder state. + */ +OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT OpusCustomDecoder *opus_custom_decoder_create( + const OpusCustomMode *mode, + int channels, + int *error +) OPUS_ARG_NONNULL(1); + +/** Destroys a an decoder state. + * @param[in] st OpusCustomDecoder*: State to be freed. + */ +OPUS_CUSTOM_EXPORT void opus_custom_decoder_destroy(OpusCustomDecoder *st); + +/** Decode an opus custom frame with floating point output + * @param [in] st OpusCustomDecoder*: Decoder state + * @param [in] data char*: Input payload. Use a NULL pointer to indicate packet loss + * @param [in] len int: Number of bytes in payload + * @param [out] pcm float*: Output signal (interleaved if 2 channels). length + * is frame_size*channels*sizeof(float) + * @param [in] frame_size Number of samples per channel of available space in *pcm. + * @returns Number of decoded samples or @ref opus_errorcodes + */ +OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT int opus_custom_decode_float( + OpusCustomDecoder *st, + const unsigned char *data, + int len, + float *pcm, + int frame_size +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Decode an opus custom frame + * @param [in] st OpusCustomDecoder*: Decoder state + * @param [in] data char*: Input payload. Use a NULL pointer to indicate packet loss + * @param [in] len int: Number of bytes in payload + * @param [out] pcm opus_int16*: Output signal (interleaved if 2 channels). length + * is frame_size*channels*sizeof(opus_int16) + * @param [in] frame_size Number of samples per channel of available space in *pcm. + * @returns Number of decoded samples or @ref opus_errorcodes + */ +OPUS_CUSTOM_EXPORT OPUS_WARN_UNUSED_RESULT int opus_custom_decode( + OpusCustomDecoder *st, + const unsigned char *data, + int len, + opus_int16 *pcm, + int frame_size +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Perform a CTL function on an Opus custom decoder. + * + * Generally the request and subsequent arguments are generated + * by a convenience macro. + * @see opus_genericctls + */ +OPUS_CUSTOM_EXPORT int opus_custom_decoder_ctl(OpusCustomDecoder * OPUS_RESTRICT st, int request, ...) OPUS_ARG_NONNULL(1); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_CUSTOM_H */ diff --git a/pkg/codec/opus/include/opus_defines.h b/pkg/codec/opus/include/opus_defines.h new file mode 100644 index 00000000..d141418b --- /dev/null +++ b/pkg/codec/opus/include/opus_defines.h @@ -0,0 +1,799 @@ +/* Copyright (c) 2010-2011 Xiph.Org Foundation, Skype Limited + Written by Jean-Marc Valin and Koen Vos */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus_defines.h + * @brief Opus reference implementation constants + */ + +#ifndef OPUS_DEFINES_H +#define OPUS_DEFINES_H + +#include "opus_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @defgroup opus_errorcodes Error codes + * @{ + */ +/** No error @hideinitializer*/ +#define OPUS_OK 0 +/** One or more invalid/out of range arguments @hideinitializer*/ +#define OPUS_BAD_ARG -1 +/** Not enough bytes allocated in the buffer @hideinitializer*/ +#define OPUS_BUFFER_TOO_SMALL -2 +/** An internal error was detected @hideinitializer*/ +#define OPUS_INTERNAL_ERROR -3 +/** The compressed data passed is corrupted @hideinitializer*/ +#define OPUS_INVALID_PACKET -4 +/** Invalid/unsupported request number @hideinitializer*/ +#define OPUS_UNIMPLEMENTED -5 +/** An encoder or decoder structure is invalid or already freed @hideinitializer*/ +#define OPUS_INVALID_STATE -6 +/** Memory allocation has failed @hideinitializer*/ +#define OPUS_ALLOC_FAIL -7 +/**@}*/ + +/** @cond OPUS_INTERNAL_DOC */ +/**Export control for opus functions */ + +#ifndef OPUS_EXPORT +# if defined(WIN32) +# if defined(OPUS_BUILD) && defined(DLL_EXPORT) +# define OPUS_EXPORT __declspec(dllexport) +# else +# define OPUS_EXPORT +# endif +# elif defined(__GNUC__) && defined(OPUS_BUILD) +# define OPUS_EXPORT __attribute__ ((visibility ("default"))) +# else +# define OPUS_EXPORT +# endif +#endif + +# if !defined(OPUS_GNUC_PREREQ) +# if defined(__GNUC__)&&defined(__GNUC_MINOR__) +# define OPUS_GNUC_PREREQ(_maj,_min) \ + ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) +# else +# define OPUS_GNUC_PREREQ(_maj,_min) 0 +# endif +# endif + +#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ) +# if OPUS_GNUC_PREREQ(3,0) +# define OPUS_RESTRICT __restrict__ +# elif (defined(_MSC_VER) && _MSC_VER >= 1400) +# define OPUS_RESTRICT __restrict +# else +# define OPUS_RESTRICT +# endif +#else +# define OPUS_RESTRICT restrict +#endif + +#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ) +# if OPUS_GNUC_PREREQ(2,7) +# define OPUS_INLINE __inline__ +# elif (defined(_MSC_VER)) +# define OPUS_INLINE __inline +# else +# define OPUS_INLINE +# endif +#else +# define OPUS_INLINE inline +#endif + +/**Warning attributes for opus functions + * NONNULL is not used in OPUS_BUILD to avoid the compiler optimizing out + * some paranoid null checks. */ +#if defined(__GNUC__) && OPUS_GNUC_PREREQ(3, 4) +# define OPUS_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) +#else +# define OPUS_WARN_UNUSED_RESULT +#endif +#if !defined(OPUS_BUILD) && defined(__GNUC__) && OPUS_GNUC_PREREQ(3, 4) +# define OPUS_ARG_NONNULL(_x) __attribute__ ((__nonnull__(_x))) +#else +# define OPUS_ARG_NONNULL(_x) +#endif + +/** These are the actual Encoder CTL ID numbers. + * They should not be used directly by applications. + * In general, SETs should be even and GETs should be odd.*/ +#define OPUS_SET_APPLICATION_REQUEST 4000 +#define OPUS_GET_APPLICATION_REQUEST 4001 +#define OPUS_SET_BITRATE_REQUEST 4002 +#define OPUS_GET_BITRATE_REQUEST 4003 +#define OPUS_SET_MAX_BANDWIDTH_REQUEST 4004 +#define OPUS_GET_MAX_BANDWIDTH_REQUEST 4005 +#define OPUS_SET_VBR_REQUEST 4006 +#define OPUS_GET_VBR_REQUEST 4007 +#define OPUS_SET_BANDWIDTH_REQUEST 4008 +#define OPUS_GET_BANDWIDTH_REQUEST 4009 +#define OPUS_SET_COMPLEXITY_REQUEST 4010 +#define OPUS_GET_COMPLEXITY_REQUEST 4011 +#define OPUS_SET_INBAND_FEC_REQUEST 4012 +#define OPUS_GET_INBAND_FEC_REQUEST 4013 +#define OPUS_SET_PACKET_LOSS_PERC_REQUEST 4014 +#define OPUS_GET_PACKET_LOSS_PERC_REQUEST 4015 +#define OPUS_SET_DTX_REQUEST 4016 +#define OPUS_GET_DTX_REQUEST 4017 +#define OPUS_SET_VBR_CONSTRAINT_REQUEST 4020 +#define OPUS_GET_VBR_CONSTRAINT_REQUEST 4021 +#define OPUS_SET_FORCE_CHANNELS_REQUEST 4022 +#define OPUS_GET_FORCE_CHANNELS_REQUEST 4023 +#define OPUS_SET_SIGNAL_REQUEST 4024 +#define OPUS_GET_SIGNAL_REQUEST 4025 +#define OPUS_GET_LOOKAHEAD_REQUEST 4027 +/* #define OPUS_RESET_STATE 4028 */ +#define OPUS_GET_SAMPLE_RATE_REQUEST 4029 +#define OPUS_GET_FINAL_RANGE_REQUEST 4031 +#define OPUS_GET_PITCH_REQUEST 4033 +#define OPUS_SET_GAIN_REQUEST 4034 +#define OPUS_GET_GAIN_REQUEST 4045 /* Should have been 4035 */ +#define OPUS_SET_LSB_DEPTH_REQUEST 4036 +#define OPUS_GET_LSB_DEPTH_REQUEST 4037 +#define OPUS_GET_LAST_PACKET_DURATION_REQUEST 4039 +#define OPUS_SET_EXPERT_FRAME_DURATION_REQUEST 4040 +#define OPUS_GET_EXPERT_FRAME_DURATION_REQUEST 4041 +#define OPUS_SET_PREDICTION_DISABLED_REQUEST 4042 +#define OPUS_GET_PREDICTION_DISABLED_REQUEST 4043 +/* Don't use 4045, it's already taken by OPUS_GET_GAIN_REQUEST */ +#define OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST 4046 +#define OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST 4047 +#define OPUS_GET_IN_DTX_REQUEST 4049 + +/** Defines for the presence of extended APIs. */ +#define OPUS_HAVE_OPUS_PROJECTION_H + +/* Macros to trigger compilation errors when the wrong types are provided to a CTL */ +#define __opus_check_int(x) (((void)((x) == (opus_int32)0)), (opus_int32)(x)) +#define __opus_check_int_ptr(ptr) ((ptr) + ((ptr) - (opus_int32*)(ptr))) +#define __opus_check_uint_ptr(ptr) ((ptr) + ((ptr) - (opus_uint32*)(ptr))) +#define __opus_check_val16_ptr(ptr) ((ptr) + ((ptr) - (opus_val16*)(ptr))) +/** @endcond */ + +/** @defgroup opus_ctlvalues Pre-defined values for CTL interface + * @see opus_genericctls, opus_encoderctls + * @{ + */ +/* Values for the various encoder CTLs */ +#define OPUS_AUTO -1000 /**opus_int32: Allowed values: 0-10, inclusive. + * + * @hideinitializer */ +#define OPUS_SET_COMPLEXITY(x) OPUS_SET_COMPLEXITY_REQUEST, __opus_check_int(x) +/** Gets the encoder's complexity configuration. + * @see OPUS_SET_COMPLEXITY + * @param[out] x opus_int32 *: Returns a value in the range 0-10, + * inclusive. + * @hideinitializer */ +#define OPUS_GET_COMPLEXITY(x) OPUS_GET_COMPLEXITY_REQUEST, __opus_check_int_ptr(x) + +/** Configures the bitrate in the encoder. + * Rates from 500 to 512000 bits per second are meaningful, as well as the + * special values #OPUS_AUTO and #OPUS_BITRATE_MAX. + * The value #OPUS_BITRATE_MAX can be used to cause the codec to use as much + * rate as it can, which is useful for controlling the rate by adjusting the + * output buffer size. + * @see OPUS_GET_BITRATE + * @param[in] x opus_int32: Bitrate in bits per second. The default + * is determined based on the number of + * channels and the input sampling rate. + * @hideinitializer */ +#define OPUS_SET_BITRATE(x) OPUS_SET_BITRATE_REQUEST, __opus_check_int(x) +/** Gets the encoder's bitrate configuration. + * @see OPUS_SET_BITRATE + * @param[out] x opus_int32 *: Returns the bitrate in bits per second. + * The default is determined based on the + * number of channels and the input + * sampling rate. + * @hideinitializer */ +#define OPUS_GET_BITRATE(x) OPUS_GET_BITRATE_REQUEST, __opus_check_int_ptr(x) + +/** Enables or disables variable bitrate (VBR) in the encoder. + * The configured bitrate may not be met exactly because frames must + * be an integer number of bytes in length. + * @see OPUS_GET_VBR + * @see OPUS_SET_VBR_CONSTRAINT + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Hard CBR. For LPC/hybrid modes at very low bit-rate, this can + * cause noticeable quality degradation.
+ *
1
VBR (default). The exact type of VBR is controlled by + * #OPUS_SET_VBR_CONSTRAINT.
+ *
+ * @hideinitializer */ +#define OPUS_SET_VBR(x) OPUS_SET_VBR_REQUEST, __opus_check_int(x) +/** Determine if variable bitrate (VBR) is enabled in the encoder. + * @see OPUS_SET_VBR + * @see OPUS_GET_VBR_CONSTRAINT + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Hard CBR.
+ *
1
VBR (default). The exact type of VBR may be retrieved via + * #OPUS_GET_VBR_CONSTRAINT.
+ *
+ * @hideinitializer */ +#define OPUS_GET_VBR(x) OPUS_GET_VBR_REQUEST, __opus_check_int_ptr(x) + +/** Enables or disables constrained VBR in the encoder. + * This setting is ignored when the encoder is in CBR mode. + * @warning Only the MDCT mode of Opus currently heeds the constraint. + * Speech mode ignores it completely, hybrid mode may fail to obey it + * if the LPC layer uses more bitrate than the constraint would have + * permitted. + * @see OPUS_GET_VBR_CONSTRAINT + * @see OPUS_SET_VBR + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Unconstrained VBR.
+ *
1
Constrained VBR (default). This creates a maximum of one + * frame of buffering delay assuming a transport with a + * serialization speed of the nominal bitrate.
+ *
+ * @hideinitializer */ +#define OPUS_SET_VBR_CONSTRAINT(x) OPUS_SET_VBR_CONSTRAINT_REQUEST, __opus_check_int(x) +/** Determine if constrained VBR is enabled in the encoder. + * @see OPUS_SET_VBR_CONSTRAINT + * @see OPUS_GET_VBR + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Unconstrained VBR.
+ *
1
Constrained VBR (default).
+ *
+ * @hideinitializer */ +#define OPUS_GET_VBR_CONSTRAINT(x) OPUS_GET_VBR_CONSTRAINT_REQUEST, __opus_check_int_ptr(x) + +/** Configures mono/stereo forcing in the encoder. + * This can force the encoder to produce packets encoded as either mono or + * stereo, regardless of the format of the input audio. This is useful when + * the caller knows that the input signal is currently a mono source embedded + * in a stereo stream. + * @see OPUS_GET_FORCE_CHANNELS + * @param[in] x opus_int32: Allowed values: + *
+ *
#OPUS_AUTO
Not forced (default)
+ *
1
Forced mono
+ *
2
Forced stereo
+ *
+ * @hideinitializer */ +#define OPUS_SET_FORCE_CHANNELS(x) OPUS_SET_FORCE_CHANNELS_REQUEST, __opus_check_int(x) +/** Gets the encoder's forced channel configuration. + * @see OPUS_SET_FORCE_CHANNELS + * @param[out] x opus_int32 *: + *
+ *
#OPUS_AUTO
Not forced (default)
+ *
1
Forced mono
+ *
2
Forced stereo
+ *
+ * @hideinitializer */ +#define OPUS_GET_FORCE_CHANNELS(x) OPUS_GET_FORCE_CHANNELS_REQUEST, __opus_check_int_ptr(x) + +/** Configures the maximum bandpass that the encoder will select automatically. + * Applications should normally use this instead of #OPUS_SET_BANDWIDTH + * (leaving that set to the default, #OPUS_AUTO). This allows the + * application to set an upper bound based on the type of input it is + * providing, but still gives the encoder the freedom to reduce the bandpass + * when the bitrate becomes too low, for better overall quality. + * @see OPUS_GET_MAX_BANDWIDTH + * @param[in] x opus_int32: Allowed values: + *
+ *
OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
OPUS_BANDWIDTH_FULLBAND
20 kHz passband (default)
+ *
+ * @hideinitializer */ +#define OPUS_SET_MAX_BANDWIDTH(x) OPUS_SET_MAX_BANDWIDTH_REQUEST, __opus_check_int(x) + +/** Gets the encoder's configured maximum allowed bandpass. + * @see OPUS_SET_MAX_BANDWIDTH + * @param[out] x opus_int32 *: Allowed values: + *
+ *
#OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
#OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
#OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
#OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
#OPUS_BANDWIDTH_FULLBAND
20 kHz passband (default)
+ *
+ * @hideinitializer */ +#define OPUS_GET_MAX_BANDWIDTH(x) OPUS_GET_MAX_BANDWIDTH_REQUEST, __opus_check_int_ptr(x) + +/** Sets the encoder's bandpass to a specific value. + * This prevents the encoder from automatically selecting the bandpass based + * on the available bitrate. If an application knows the bandpass of the input + * audio it is providing, it should normally use #OPUS_SET_MAX_BANDWIDTH + * instead, which still gives the encoder the freedom to reduce the bandpass + * when the bitrate becomes too low, for better overall quality. + * @see OPUS_GET_BANDWIDTH + * @param[in] x opus_int32: Allowed values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
#OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
#OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
#OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
#OPUS_BANDWIDTH_FULLBAND
20 kHz passband
+ *
+ * @hideinitializer */ +#define OPUS_SET_BANDWIDTH(x) OPUS_SET_BANDWIDTH_REQUEST, __opus_check_int(x) + +/** Configures the type of signal being encoded. + * This is a hint which helps the encoder's mode selection. + * @see OPUS_GET_SIGNAL + * @param[in] x opus_int32: Allowed values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_SIGNAL_VOICE
Bias thresholds towards choosing LPC or Hybrid modes.
+ *
#OPUS_SIGNAL_MUSIC
Bias thresholds towards choosing MDCT modes.
+ *
+ * @hideinitializer */ +#define OPUS_SET_SIGNAL(x) OPUS_SET_SIGNAL_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured signal type. + * @see OPUS_SET_SIGNAL + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_SIGNAL_VOICE
Bias thresholds towards choosing LPC or Hybrid modes.
+ *
#OPUS_SIGNAL_MUSIC
Bias thresholds towards choosing MDCT modes.
+ *
+ * @hideinitializer */ +#define OPUS_GET_SIGNAL(x) OPUS_GET_SIGNAL_REQUEST, __opus_check_int_ptr(x) + + +/** Configures the encoder's intended application. + * The initial value is a mandatory argument to the encoder_create function. + * @see OPUS_GET_APPLICATION + * @param[in] x opus_int32: Returns one of the following values: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @hideinitializer */ +#define OPUS_SET_APPLICATION(x) OPUS_SET_APPLICATION_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured application. + * @see OPUS_SET_APPLICATION + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @hideinitializer */ +#define OPUS_GET_APPLICATION(x) OPUS_GET_APPLICATION_REQUEST, __opus_check_int_ptr(x) + +/** Gets the total samples of delay added by the entire codec. + * This can be queried by the encoder and then the provided number of samples can be + * skipped on from the start of the decoder's output to provide time aligned input + * and output. From the perspective of a decoding application the real data begins this many + * samples late. + * + * The decoder contribution to this delay is identical for all decoders, but the + * encoder portion of the delay may vary from implementation to implementation, + * version to version, or even depend on the encoder's initial configuration. + * Applications needing delay compensation should call this CTL rather than + * hard-coding a value. + * @param[out] x opus_int32 *: Number of lookahead samples + * @hideinitializer */ +#define OPUS_GET_LOOKAHEAD(x) OPUS_GET_LOOKAHEAD_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's use of inband forward error correction (FEC). + * @note This is only applicable to the LPC layer + * @see OPUS_GET_INBAND_FEC + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Disable inband FEC (default).
+ *
1
Enable inband FEC.
+ *
+ * @hideinitializer */ +#define OPUS_SET_INBAND_FEC(x) OPUS_SET_INBAND_FEC_REQUEST, __opus_check_int(x) +/** Gets encoder's configured use of inband forward error correction. + * @see OPUS_SET_INBAND_FEC + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Inband FEC disabled (default).
+ *
1
Inband FEC enabled.
+ *
+ * @hideinitializer */ +#define OPUS_GET_INBAND_FEC(x) OPUS_GET_INBAND_FEC_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's expected packet loss percentage. + * Higher values trigger progressively more loss resistant behavior in the encoder + * at the expense of quality at a given bitrate in the absence of packet loss, but + * greater quality under loss. + * @see OPUS_GET_PACKET_LOSS_PERC + * @param[in] x opus_int32: Loss percentage in the range 0-100, inclusive (default: 0). + * @hideinitializer */ +#define OPUS_SET_PACKET_LOSS_PERC(x) OPUS_SET_PACKET_LOSS_PERC_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured packet loss percentage. + * @see OPUS_SET_PACKET_LOSS_PERC + * @param[out] x opus_int32 *: Returns the configured loss percentage + * in the range 0-100, inclusive (default: 0). + * @hideinitializer */ +#define OPUS_GET_PACKET_LOSS_PERC(x) OPUS_GET_PACKET_LOSS_PERC_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's use of discontinuous transmission (DTX). + * @note This is only applicable to the LPC layer + * @see OPUS_GET_DTX + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Disable DTX (default).
+ *
1
Enabled DTX.
+ *
+ * @hideinitializer */ +#define OPUS_SET_DTX(x) OPUS_SET_DTX_REQUEST, __opus_check_int(x) +/** Gets encoder's configured use of discontinuous transmission. + * @see OPUS_SET_DTX + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
DTX disabled (default).
+ *
1
DTX enabled.
+ *
+ * @hideinitializer */ +#define OPUS_GET_DTX(x) OPUS_GET_DTX_REQUEST, __opus_check_int_ptr(x) +/** Configures the depth of signal being encoded. + * + * This is a hint which helps the encoder identify silence and near-silence. + * It represents the number of significant bits of linear intensity below + * which the signal contains ignorable quantization or other noise. + * + * For example, OPUS_SET_LSB_DEPTH(14) would be an appropriate setting + * for G.711 u-law input. OPUS_SET_LSB_DEPTH(16) would be appropriate + * for 16-bit linear pcm input with opus_encode_float(). + * + * When using opus_encode() instead of opus_encode_float(), or when libopus + * is compiled for fixed-point, the encoder uses the minimum of the value + * set here and the value 16. + * + * @see OPUS_GET_LSB_DEPTH + * @param[in] x opus_int32: Input precision in bits, between 8 and 24 + * (default: 24). + * @hideinitializer */ +#define OPUS_SET_LSB_DEPTH(x) OPUS_SET_LSB_DEPTH_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured signal depth. + * @see OPUS_SET_LSB_DEPTH + * @param[out] x opus_int32 *: Input precision in bits, between 8 and + * 24 (default: 24). + * @hideinitializer */ +#define OPUS_GET_LSB_DEPTH(x) OPUS_GET_LSB_DEPTH_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's use of variable duration frames. + * When variable duration is enabled, the encoder is free to use a shorter frame + * size than the one requested in the opus_encode*() call. + * It is then the user's responsibility + * to verify how much audio was encoded by checking the ToC byte of the encoded + * packet. The part of the audio that was not encoded needs to be resent to the + * encoder for the next call. Do not use this option unless you really + * know what you are doing. + * @see OPUS_GET_EXPERT_FRAME_DURATION + * @param[in] x opus_int32: Allowed values: + *
+ *
OPUS_FRAMESIZE_ARG
Select frame size from the argument (default).
+ *
OPUS_FRAMESIZE_2_5_MS
Use 2.5 ms frames.
+ *
OPUS_FRAMESIZE_5_MS
Use 5 ms frames.
+ *
OPUS_FRAMESIZE_10_MS
Use 10 ms frames.
+ *
OPUS_FRAMESIZE_20_MS
Use 20 ms frames.
+ *
OPUS_FRAMESIZE_40_MS
Use 40 ms frames.
+ *
OPUS_FRAMESIZE_60_MS
Use 60 ms frames.
+ *
OPUS_FRAMESIZE_80_MS
Use 80 ms frames.
+ *
OPUS_FRAMESIZE_100_MS
Use 100 ms frames.
+ *
OPUS_FRAMESIZE_120_MS
Use 120 ms frames.
+ *
+ * @hideinitializer */ +#define OPUS_SET_EXPERT_FRAME_DURATION(x) OPUS_SET_EXPERT_FRAME_DURATION_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured use of variable duration frames. + * @see OPUS_SET_EXPERT_FRAME_DURATION + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
OPUS_FRAMESIZE_ARG
Select frame size from the argument (default).
+ *
OPUS_FRAMESIZE_2_5_MS
Use 2.5 ms frames.
+ *
OPUS_FRAMESIZE_5_MS
Use 5 ms frames.
+ *
OPUS_FRAMESIZE_10_MS
Use 10 ms frames.
+ *
OPUS_FRAMESIZE_20_MS
Use 20 ms frames.
+ *
OPUS_FRAMESIZE_40_MS
Use 40 ms frames.
+ *
OPUS_FRAMESIZE_60_MS
Use 60 ms frames.
+ *
OPUS_FRAMESIZE_80_MS
Use 80 ms frames.
+ *
OPUS_FRAMESIZE_100_MS
Use 100 ms frames.
+ *
OPUS_FRAMESIZE_120_MS
Use 120 ms frames.
+ *
+ * @hideinitializer */ +#define OPUS_GET_EXPERT_FRAME_DURATION(x) OPUS_GET_EXPERT_FRAME_DURATION_REQUEST, __opus_check_int_ptr(x) + +/** If set to 1, disables almost all use of prediction, making frames almost + * completely independent. This reduces quality. + * @see OPUS_GET_PREDICTION_DISABLED + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Enable prediction (default).
+ *
1
Disable prediction.
+ *
+ * @hideinitializer */ +#define OPUS_SET_PREDICTION_DISABLED(x) OPUS_SET_PREDICTION_DISABLED_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured prediction status. + * @see OPUS_SET_PREDICTION_DISABLED + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Prediction enabled (default).
+ *
1
Prediction disabled.
+ *
+ * @hideinitializer */ +#define OPUS_GET_PREDICTION_DISABLED(x) OPUS_GET_PREDICTION_DISABLED_REQUEST, __opus_check_int_ptr(x) + +/**@}*/ + +/** @defgroup opus_genericctls Generic CTLs + * + * These macros are used with the \c opus_decoder_ctl and + * \c opus_encoder_ctl calls to generate a particular + * request. + * + * When called on an \c OpusDecoder they apply to that + * particular decoder instance. When called on an + * \c OpusEncoder they apply to the corresponding setting + * on that encoder instance, if present. + * + * Some usage examples: + * + * @code + * int ret; + * opus_int32 pitch; + * ret = opus_decoder_ctl(dec_ctx, OPUS_GET_PITCH(&pitch)); + * if (ret == OPUS_OK) return ret; + * + * opus_encoder_ctl(enc_ctx, OPUS_RESET_STATE); + * opus_decoder_ctl(dec_ctx, OPUS_RESET_STATE); + * + * opus_int32 enc_bw, dec_bw; + * opus_encoder_ctl(enc_ctx, OPUS_GET_BANDWIDTH(&enc_bw)); + * opus_decoder_ctl(dec_ctx, OPUS_GET_BANDWIDTH(&dec_bw)); + * if (enc_bw != dec_bw) { + * printf("packet bandwidth mismatch!\n"); + * } + * @endcode + * + * @see opus_encoder, opus_decoder_ctl, opus_encoder_ctl, opus_decoderctls, opus_encoderctls + * @{ + */ + +/** Resets the codec state to be equivalent to a freshly initialized state. + * This should be called when switching streams in order to prevent + * the back to back decoding from giving different results from + * one at a time decoding. + * @hideinitializer */ +#define OPUS_RESET_STATE 4028 + +/** Gets the final state of the codec's entropy coder. + * This is used for testing purposes, + * The encoder and decoder state should be identical after coding a payload + * (assuming no data corruption or software bugs) + * + * @param[out] x opus_uint32 *: Entropy coder state + * + * @hideinitializer */ +#define OPUS_GET_FINAL_RANGE(x) OPUS_GET_FINAL_RANGE_REQUEST, __opus_check_uint_ptr(x) + +/** Gets the encoder's configured bandpass or the decoder's last bandpass. + * @see OPUS_SET_BANDWIDTH + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
#OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
#OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
#OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
#OPUS_BANDWIDTH_FULLBAND
20 kHz passband
+ *
+ * @hideinitializer */ +#define OPUS_GET_BANDWIDTH(x) OPUS_GET_BANDWIDTH_REQUEST, __opus_check_int_ptr(x) + +/** Gets the sampling rate the encoder or decoder was initialized with. + * This simply returns the Fs value passed to opus_encoder_init() + * or opus_decoder_init(). + * @param[out] x opus_int32 *: Sampling rate of encoder or decoder. + * @hideinitializer + */ +#define OPUS_GET_SAMPLE_RATE(x) OPUS_GET_SAMPLE_RATE_REQUEST, __opus_check_int_ptr(x) + +/** If set to 1, disables the use of phase inversion for intensity stereo, + * improving the quality of mono downmixes, but slightly reducing normal + * stereo quality. Disabling phase inversion in the decoder does not comply + * with RFC 6716, although it does not cause any interoperability issue and + * is expected to become part of the Opus standard once RFC 6716 is updated + * by draft-ietf-codec-opus-update. + * @see OPUS_GET_PHASE_INVERSION_DISABLED + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Enable phase inversion (default).
+ *
1
Disable phase inversion.
+ *
+ * @hideinitializer */ +#define OPUS_SET_PHASE_INVERSION_DISABLED(x) OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured phase inversion status. + * @see OPUS_SET_PHASE_INVERSION_DISABLED + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Stereo phase inversion enabled (default).
+ *
1
Stereo phase inversion disabled.
+ *
+ * @hideinitializer */ +#define OPUS_GET_PHASE_INVERSION_DISABLED(x) OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST, __opus_check_int_ptr(x) +/** Gets the DTX state of the encoder. + * Returns whether the last encoded frame was either a comfort noise update + * during DTX or not encoded because of DTX. + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
The encoder is not in DTX.
+ *
1
The encoder is in DTX.
+ *
+ * @hideinitializer */ +#define OPUS_GET_IN_DTX(x) OPUS_GET_IN_DTX_REQUEST, __opus_check_int_ptr(x) + +/**@}*/ + +/** @defgroup opus_decoderctls Decoder related CTLs + * @see opus_genericctls, opus_encoderctls, opus_decoder + * @{ + */ + +/** Configures decoder gain adjustment. + * Scales the decoded output by a factor specified in Q8 dB units. + * This has a maximum range of -32768 to 32767 inclusive, and returns + * OPUS_BAD_ARG otherwise. The default is zero indicating no adjustment. + * This setting survives decoder reset. + * + * gain = pow(10, x/(20.0*256)) + * + * @param[in] x opus_int32: Amount to scale PCM signal by in Q8 dB units. + * @hideinitializer */ +#define OPUS_SET_GAIN(x) OPUS_SET_GAIN_REQUEST, __opus_check_int(x) +/** Gets the decoder's configured gain adjustment. @see OPUS_SET_GAIN + * + * @param[out] x opus_int32 *: Amount to scale PCM signal by in Q8 dB units. + * @hideinitializer */ +#define OPUS_GET_GAIN(x) OPUS_GET_GAIN_REQUEST, __opus_check_int_ptr(x) + +/** Gets the duration (in samples) of the last packet successfully decoded or concealed. + * @param[out] x opus_int32 *: Number of samples (at current sampling rate). + * @hideinitializer */ +#define OPUS_GET_LAST_PACKET_DURATION(x) OPUS_GET_LAST_PACKET_DURATION_REQUEST, __opus_check_int_ptr(x) + +/** Gets the pitch of the last decoded frame, if available. + * This can be used for any post-processing algorithm requiring the use of pitch, + * e.g. time stretching/shortening. If the last frame was not voiced, or if the + * pitch was not coded in the frame, then zero is returned. + * + * This CTL is only implemented for decoder instances. + * + * @param[out] x opus_int32 *: pitch period at 48 kHz (or 0 if not available) + * + * @hideinitializer */ +#define OPUS_GET_PITCH(x) OPUS_GET_PITCH_REQUEST, __opus_check_int_ptr(x) + +/**@}*/ + +/** @defgroup opus_libinfo Opus library information functions + * @{ + */ + +/** Converts an opus error code into a human readable string. + * + * @param[in] error int: Error number + * @returns Error string + */ +OPUS_EXPORT const char *opus_strerror(int error); + +/** Gets the libopus version string. + * + * Applications may look for the substring "-fixed" in the version string to + * determine whether they have a fixed-point or floating-point build at + * runtime. + * + * @returns Version string + */ +OPUS_EXPORT const char *opus_get_version_string(void); +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_DEFINES_H */ diff --git a/pkg/codec/opus/include/opus_multistream.h b/pkg/codec/opus/include/opus_multistream.h new file mode 100644 index 00000000..babcee69 --- /dev/null +++ b/pkg/codec/opus/include/opus_multistream.h @@ -0,0 +1,660 @@ +/* Copyright (c) 2011 Xiph.Org Foundation + Written by Jean-Marc Valin */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus_multistream.h + * @brief Opus reference implementation multistream API + */ + +#ifndef OPUS_MULTISTREAM_H +#define OPUS_MULTISTREAM_H + +#include "opus.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @cond OPUS_INTERNAL_DOC */ + +/** Macros to trigger compilation errors when the wrong types are provided to a + * CTL. */ +/**@{*/ +#define __opus_check_encstate_ptr(ptr) ((ptr) + ((ptr) - (OpusEncoder**)(ptr))) +#define __opus_check_decstate_ptr(ptr) ((ptr) + ((ptr) - (OpusDecoder**)(ptr))) +/**@}*/ + +/** These are the actual encoder and decoder CTL ID numbers. + * They should not be used directly by applications. + * In general, SETs should be even and GETs should be odd.*/ +/**@{*/ +#define OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST 5120 +#define OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST 5122 +/**@}*/ + +/** @endcond */ + +/** @defgroup opus_multistream_ctls Multistream specific encoder and decoder CTLs + * + * These are convenience macros that are specific to the + * opus_multistream_encoder_ctl() and opus_multistream_decoder_ctl() + * interface. + * The CTLs from @ref opus_genericctls, @ref opus_encoderctls, and + * @ref opus_decoderctls may be applied to a multistream encoder or decoder as + * well. + * In addition, you may retrieve the encoder or decoder state for an specific + * stream via #OPUS_MULTISTREAM_GET_ENCODER_STATE or + * #OPUS_MULTISTREAM_GET_DECODER_STATE and apply CTLs to it individually. + */ +/**@{*/ + +/** Gets the encoder state for an individual stream of a multistream encoder. + * @param[in] x opus_int32: The index of the stream whose encoder you + * wish to retrieve. + * This must be non-negative and less than + * the streams parameter used + * to initialize the encoder. + * @param[out] y OpusEncoder**: Returns a pointer to the given + * encoder state. + * @retval OPUS_BAD_ARG The index of the requested stream was out of range. + * @hideinitializer + */ +#define OPUS_MULTISTREAM_GET_ENCODER_STATE(x,y) OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST, __opus_check_int(x), __opus_check_encstate_ptr(y) + +/** Gets the decoder state for an individual stream of a multistream decoder. + * @param[in] x opus_int32: The index of the stream whose decoder you + * wish to retrieve. + * This must be non-negative and less than + * the streams parameter used + * to initialize the decoder. + * @param[out] y OpusDecoder**: Returns a pointer to the given + * decoder state. + * @retval OPUS_BAD_ARG The index of the requested stream was out of range. + * @hideinitializer + */ +#define OPUS_MULTISTREAM_GET_DECODER_STATE(x,y) OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST, __opus_check_int(x), __opus_check_decstate_ptr(y) + +/**@}*/ + +/** @defgroup opus_multistream Opus Multistream API + * @{ + * + * The multistream API allows individual Opus streams to be combined into a + * single packet, enabling support for up to 255 channels. Unlike an + * elementary Opus stream, the encoder and decoder must negotiate the channel + * configuration before the decoder can successfully interpret the data in the + * packets produced by the encoder. Some basic information, such as packet + * duration, can be computed without any special negotiation. + * + * The format for multistream Opus packets is defined in + * RFC 7845 + * and is based on the self-delimited Opus framing described in Appendix B of + * RFC 6716. + * Normal Opus packets are just a degenerate case of multistream Opus packets, + * and can be encoded or decoded with the multistream API by setting + * streams to 1 when initializing the encoder or + * decoder. + * + * Multistream Opus streams can contain up to 255 elementary Opus streams. + * These may be either "uncoupled" or "coupled", indicating that the decoder + * is configured to decode them to either 1 or 2 channels, respectively. + * The streams are ordered so that all coupled streams appear at the + * beginning. + * + * A mapping table defines which decoded channel i + * should be used for each input/output (I/O) channel j. This table is + * typically provided as an unsigned char array. + * Let i = mapping[j] be the index for I/O channel j. + * If i < 2*coupled_streams, then I/O channel j is + * encoded as the left channel of stream (i/2) if i + * is even, or as the right channel of stream (i/2) if + * i is odd. Otherwise, I/O channel j is encoded as + * mono in stream (i - coupled_streams), unless it has the special + * value 255, in which case it is omitted from the encoding entirely (the + * decoder will reproduce it as silence). Each value i must either + * be the special value 255 or be less than streams + coupled_streams. + * + * The output channels specified by the encoder + * should use the + * Vorbis + * channel ordering. A decoder may wish to apply an additional permutation + * to the mapping the encoder used to achieve a different output channel + * order (e.g. for outputing in WAV order). + * + * Each multistream packet contains an Opus packet for each stream, and all of + * the Opus packets in a single multistream packet must have the same + * duration. Therefore the duration of a multistream packet can be extracted + * from the TOC sequence of the first stream, which is located at the + * beginning of the packet, just like an elementary Opus stream: + * + * @code + * int nb_samples; + * int nb_frames; + * nb_frames = opus_packet_get_nb_frames(data, len); + * if (nb_frames < 1) + * return nb_frames; + * nb_samples = opus_packet_get_samples_per_frame(data, 48000) * nb_frames; + * @endcode + * + * The general encoding and decoding process proceeds exactly the same as in + * the normal @ref opus_encoder and @ref opus_decoder APIs. + * See their documentation for an overview of how to use the corresponding + * multistream functions. + */ + +/** Opus multistream encoder state. + * This contains the complete state of a multistream Opus encoder. + * It is position independent and can be freely copied. + * @see opus_multistream_encoder_create + * @see opus_multistream_encoder_init + */ +typedef struct OpusMSEncoder OpusMSEncoder; + +/** Opus multistream decoder state. + * This contains the complete state of a multistream Opus decoder. + * It is position independent and can be freely copied. + * @see opus_multistream_decoder_create + * @see opus_multistream_decoder_init + */ +typedef struct OpusMSDecoder OpusMSDecoder; + +/**\name Multistream encoder functions */ +/**@{*/ + +/** Gets the size of an OpusMSEncoder structure. + * @param streams int: The total number of streams to encode from the + * input. + * This must be no more than 255. + * @param coupled_streams int: Number of coupled (2 channel) streams + * to encode. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * encoded channels (streams + + * coupled_streams) must be no + * more than 255. + * @returns The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_encoder_get_size( + int streams, + int coupled_streams +); + +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_surround_encoder_get_size( + int channels, + int mapping_family +); + + +/** Allocates and initializes a multistream encoder state. + * Call opus_multistream_encoder_destroy() to release + * this object when finished. + * @param Fs opus_int32: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels in the input signal. + * This must be at most 255. + * It may be greater than the number of + * coded channels (streams + + * coupled_streams). + * @param streams int: The total number of streams to encode from the + * input. + * This must be no more than the number of channels. + * @param coupled_streams int: Number of coupled (2 channel) streams + * to encode. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * encoded channels (streams + + * coupled_streams) must be no + * more than the number of input channels. + * @param[in] mapping const unsigned char[channels]: Mapping from + * encoded channels to input channels, as described in + * @ref opus_multistream. As an extra constraint, the + * multistream encoder does not allow encoding coupled + * streams for which one channel is unused since this + * is never a good idea. + * @param application int: The target encoder application. + * This must be one of the following: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @param[out] error int *: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_encoder_create( + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int application, + int *error +) OPUS_ARG_NONNULL(5); + +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_surround_encoder_create( + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + unsigned char *mapping, + int application, + int *error +) OPUS_ARG_NONNULL(4) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6); + +/** Initialize a previously allocated multistream encoder state. + * The memory pointed to by \a st must be at least the size returned by + * opus_multistream_encoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_multistream_encoder_create + * @see opus_multistream_encoder_get_size + * @param st OpusMSEncoder*: Multistream encoder state to initialize. + * @param Fs opus_int32: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels in the input signal. + * This must be at most 255. + * It may be greater than the number of + * coded channels (streams + + * coupled_streams). + * @param streams int: The total number of streams to encode from the + * input. + * This must be no more than the number of channels. + * @param coupled_streams int: Number of coupled (2 channel) streams + * to encode. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * encoded channels (streams + + * coupled_streams) must be no + * more than the number of input channels. + * @param[in] mapping const unsigned char[channels]: Mapping from + * encoded channels to input channels, as described in + * @ref opus_multistream. As an extra constraint, the + * multistream encoder does not allow encoding coupled + * streams for which one channel is unused since this + * is never a good idea. + * @param application int: The target encoder application. + * This must be one of the following: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_multistream_encoder_init( + OpusMSEncoder *st, + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int application +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + +OPUS_EXPORT int opus_multistream_surround_encoder_init( + OpusMSEncoder *st, + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + unsigned char *mapping, + int application +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6) OPUS_ARG_NONNULL(7); + +/** Encodes a multistream Opus frame. + * @param st OpusMSEncoder*: Multistream encoder state. + * @param[in] pcm const opus_int16*: The input signal as interleaved + * samples. + * This must contain + * frame_size*channels + * samples. + * @param frame_size int: Number of samples per channel in the input + * signal. + * This must be an Opus frame size for the + * encoder's sampling rate. + * For example, at 48 kHz the permitted values + * are 120, 240, 480, 960, 1920, and 2880. + * Passing in a duration of less than 10 ms + * (480 samples at 48 kHz) will prevent the + * encoder from using the LPC or hybrid modes. + * @param[out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_encode( + OpusMSEncoder *st, + const opus_int16 *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Encodes a multistream Opus frame from floating point input. + * @param st OpusMSEncoder*: Multistream encoder state. + * @param[in] pcm const float*: The input signal as interleaved + * samples with a normal range of + * +/-1.0. + * Samples with a range beyond +/-1.0 + * are supported but will be clipped by + * decoders using the integer API and + * should only be used if it is known + * that the far end supports extended + * dynamic range. + * This must contain + * frame_size*channels + * samples. + * @param frame_size int: Number of samples per channel in the input + * signal. + * This must be an Opus frame size for the + * encoder's sampling rate. + * For example, at 48 kHz the permitted values + * are 120, 240, 480, 960, 1920, and 2880. + * Passing in a duration of less than 10 ms + * (480 samples at 48 kHz) will prevent the + * encoder from using the LPC or hybrid modes. + * @param[out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_encode_float( + OpusMSEncoder *st, + const float *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Frees an OpusMSEncoder allocated by + * opus_multistream_encoder_create(). + * @param st OpusMSEncoder*: Multistream encoder state to be freed. + */ +OPUS_EXPORT void opus_multistream_encoder_destroy(OpusMSEncoder *st); + +/** Perform a CTL function on a multistream Opus encoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st OpusMSEncoder*: Multistream encoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_encoderctls, or @ref opus_multistream_ctls. + * @see opus_genericctls + * @see opus_encoderctls + * @see opus_multistream_ctls + */ +OPUS_EXPORT int opus_multistream_encoder_ctl(OpusMSEncoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/**@}*/ + +/**\name Multistream decoder functions */ +/**@{*/ + +/** Gets the size of an OpusMSDecoder structure. + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: Number streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (streams + + * coupled_streams) must be no + * more than 255. + * @returns The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_decoder_get_size( + int streams, + int coupled_streams +); + +/** Allocates and initializes a multistream decoder state. + * Call opus_multistream_decoder_destroy() to release + * this object when finished. + * @param Fs opus_int32: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (streams + + * coupled_streams). + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: Number of streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (streams + + * coupled_streams) must be no + * more than 255. + * @param[in] mapping const unsigned char[channels]: Mapping from + * coded channels to output channels, as described in + * @ref opus_multistream. + * @param[out] error int *: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSDecoder *opus_multistream_decoder_create( + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int *error +) OPUS_ARG_NONNULL(5); + +/** Intialize a previously allocated decoder state object. + * The memory pointed to by \a st must be at least the size returned by + * opus_multistream_encoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_multistream_decoder_create + * @see opus_multistream_deocder_get_size + * @param st OpusMSEncoder*: Multistream encoder state to initialize. + * @param Fs opus_int32: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (streams + + * coupled_streams). + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: Number of streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (streams + + * coupled_streams) must be no + * more than 255. + * @param[in] mapping const unsigned char[channels]: Mapping from + * coded channels to output channels, as described in + * @ref opus_multistream. + * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_multistream_decoder_init( + OpusMSDecoder *st, + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + +/** Decode a multistream Opus packet. + * @param st OpusMSDecoder*: Multistream decoder state. + * @param[in] data const unsigned char*: Input payload. + * Use a NULL + * pointer to indicate packet + * loss. + * @param len opus_int32: Number of bytes in payload. + * @param[out] pcm opus_int16*: Output signal, with interleaved + * samples. + * This must contain room for + * frame_size*channels + * samples. + * @param frame_size int: The number of samples per channel of + * available space in \a pcm. + * If this is less than the maximum packet duration + * (120 ms; 5760 for 48kHz), this function will not be capable + * of decoding some packets. In the case of PLC (data==NULL) + * or FEC (decode_fec=1), then frame_size needs to be exactly + * the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the + * next incoming packet. For the PLC and FEC cases, frame_size + * must be a multiple of 2.5 ms. + * @param decode_fec int: Flag (0 or 1) to request that any in-band + * forward error correction data be decoded. + * If no such data is available, the frame is + * decoded as if it were lost. + * @returns Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_decode( + OpusMSDecoder *st, + const unsigned char *data, + opus_int32 len, + opus_int16 *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Decode a multistream Opus packet with floating point output. + * @param st OpusMSDecoder*: Multistream decoder state. + * @param[in] data const unsigned char*: Input payload. + * Use a NULL + * pointer to indicate packet + * loss. + * @param len opus_int32: Number of bytes in payload. + * @param[out] pcm opus_int16*: Output signal, with interleaved + * samples. + * This must contain room for + * frame_size*channels + * samples. + * @param frame_size int: The number of samples per channel of + * available space in \a pcm. + * If this is less than the maximum packet duration + * (120 ms; 5760 for 48kHz), this function will not be capable + * of decoding some packets. In the case of PLC (data==NULL) + * or FEC (decode_fec=1), then frame_size needs to be exactly + * the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the + * next incoming packet. For the PLC and FEC cases, frame_size + * must be a multiple of 2.5 ms. + * @param decode_fec int: Flag (0 or 1) to request that any in-band + * forward error correction data be decoded. + * If no such data is available, the frame is + * decoded as if it were lost. + * @returns Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_decode_float( + OpusMSDecoder *st, + const unsigned char *data, + opus_int32 len, + float *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Perform a CTL function on a multistream Opus decoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st OpusMSDecoder*: Multistream decoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_decoderctls, or @ref opus_multistream_ctls. + * @see opus_genericctls + * @see opus_decoderctls + * @see opus_multistream_ctls + */ +OPUS_EXPORT int opus_multistream_decoder_ctl(OpusMSDecoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/** Frees an OpusMSDecoder allocated by + * opus_multistream_decoder_create(). + * @param st OpusMSDecoder: Multistream decoder state to be freed. + */ +OPUS_EXPORT void opus_multistream_decoder_destroy(OpusMSDecoder *st); + +/**@}*/ + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_MULTISTREAM_H */ diff --git a/pkg/codec/opus/include/opus_projection.h b/pkg/codec/opus/include/opus_projection.h new file mode 100644 index 00000000..9dabf4e8 --- /dev/null +++ b/pkg/codec/opus/include/opus_projection.h @@ -0,0 +1,568 @@ +/* Copyright (c) 2017 Google Inc. + Written by Andrew Allen */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus_projection.h + * @brief Opus projection reference API + */ + +#ifndef OPUS_PROJECTION_H +#define OPUS_PROJECTION_H + +#include "opus_multistream.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @cond OPUS_INTERNAL_DOC */ + +/** These are the actual encoder and decoder CTL ID numbers. + * They should not be used directly by applications.c + * In general, SETs should be even and GETs should be odd.*/ +/**@{*/ +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN_REQUEST 6001 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE_REQUEST 6003 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_REQUEST 6005 +/**@}*/ + + +/** @endcond */ + +/** @defgroup opus_projection_ctls Projection specific encoder and decoder CTLs + * + * These are convenience macros that are specific to the + * opus_projection_encoder_ctl() and opus_projection_decoder_ctl() + * interface. + * The CTLs from @ref opus_genericctls, @ref opus_encoderctls, + * @ref opus_decoderctls, and @ref opus_multistream_ctls may be applied to a + * projection encoder or decoder as well. + */ +/**@{*/ + +/** Gets the gain (in dB. S7.8-format) of the demixing matrix from the encoder. + * @param[out] x opus_int32 *: Returns the gain (in dB. S7.8-format) + * of the demixing matrix. + * @hideinitializer + */ +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN(x) OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN_REQUEST, __opus_check_int_ptr(x) + + +/** Gets the size in bytes of the demixing matrix from the encoder. + * @param[out] x opus_int32 *: Returns the size in bytes of the + * demixing matrix. + * @hideinitializer + */ +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE(x) OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE_REQUEST, __opus_check_int_ptr(x) + + +/** Copies the demixing matrix to the supplied pointer location. + * @param[out] x unsigned char *: Returns the demixing matrix to the + * supplied pointer location. + * @param y opus_int32: The size in bytes of the reserved memory at the + * pointer location. + * @hideinitializer + */ +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX(x,y) OPUS_PROJECTION_GET_DEMIXING_MATRIX_REQUEST, x, __opus_check_int(y) + + +/**@}*/ + +/** Opus projection encoder state. + * This contains the complete state of a projection Opus encoder. + * It is position independent and can be freely copied. + * @see opus_projection_ambisonics_encoder_create + */ +typedef struct OpusProjectionEncoder OpusProjectionEncoder; + + +/** Opus projection decoder state. + * This contains the complete state of a projection Opus decoder. + * It is position independent and can be freely copied. + * @see opus_projection_decoder_create + * @see opus_projection_decoder_init + */ +typedef struct OpusProjectionDecoder OpusProjectionDecoder; + + +/**\name Projection encoder functions */ +/**@{*/ + +/** Gets the size of an OpusProjectionEncoder structure. + * @param channels int: The total number of input channels to encode. + * This must be no more than 255. + * @param mapping_family int: The mapping family to use for selecting + * the appropriate projection. + * @returns The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_projection_ambisonics_encoder_get_size( + int channels, + int mapping_family +); + + +/** Allocates and initializes a projection encoder state. + * Call opus_projection_encoder_destroy() to release + * this object when finished. + * @param Fs opus_int32: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels in the input signal. + * This must be at most 255. + * It may be greater than the number of + * coded channels (streams + + * coupled_streams). + * @param mapping_family int: The mapping family to use for selecting + * the appropriate projection. + * @param[out] streams int *: The total number of streams that will + * be encoded from the input. + * @param[out] coupled_streams int *: Number of coupled (2 channel) + * streams that will be encoded from the input. + * @param application int: The target encoder application. + * This must be one of the following: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @param[out] error int *: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusProjectionEncoder *opus_projection_ambisonics_encoder_create( + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + int application, + int *error +) OPUS_ARG_NONNULL(4) OPUS_ARG_NONNULL(5); + + +/** Initialize a previously allocated projection encoder state. + * The memory pointed to by \a st must be at least the size returned by + * opus_projection_ambisonics_encoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_projection_ambisonics_encoder_create + * @see opus_projection_ambisonics_encoder_get_size + * @param st OpusProjectionEncoder*: Projection encoder state to initialize. + * @param Fs opus_int32: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels in the input signal. + * This must be at most 255. + * It may be greater than the number of + * coded channels (streams + + * coupled_streams). + * @param streams int: The total number of streams to encode from the + * input. + * This must be no more than the number of channels. + * @param coupled_streams int: Number of coupled (2 channel) streams + * to encode. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * encoded channels (streams + + * coupled_streams) must be no + * more than the number of input channels. + * @param application int: The target encoder application. + * This must be one of the following: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_projection_ambisonics_encoder_init( + OpusProjectionEncoder *st, + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + int application +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6); + + +/** Encodes a projection Opus frame. + * @param st OpusProjectionEncoder*: Projection encoder state. + * @param[in] pcm const opus_int16*: The input signal as interleaved + * samples. + * This must contain + * frame_size*channels + * samples. + * @param frame_size int: Number of samples per channel in the input + * signal. + * This must be an Opus frame size for the + * encoder's sampling rate. + * For example, at 48 kHz the permitted values + * are 120, 240, 480, 960, 1920, and 2880. + * Passing in a duration of less than 10 ms + * (480 samples at 48 kHz) will prevent the + * encoder from using the LPC or hybrid modes. + * @param[out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_encode( + OpusProjectionEncoder *st, + const opus_int16 *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + + +/** Encodes a projection Opus frame from floating point input. + * @param st OpusProjectionEncoder*: Projection encoder state. + * @param[in] pcm const float*: The input signal as interleaved + * samples with a normal range of + * +/-1.0. + * Samples with a range beyond +/-1.0 + * are supported but will be clipped by + * decoders using the integer API and + * should only be used if it is known + * that the far end supports extended + * dynamic range. + * This must contain + * frame_size*channels + * samples. + * @param frame_size int: Number of samples per channel in the input + * signal. + * This must be an Opus frame size for the + * encoder's sampling rate. + * For example, at 48 kHz the permitted values + * are 120, 240, 480, 960, 1920, and 2880. + * Passing in a duration of less than 10 ms + * (480 samples at 48 kHz) will prevent the + * encoder from using the LPC or hybrid modes. + * @param[out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: Size of the allocated + * memory for the output + * payload. This may be + * used to impose an upper limit on + * the instant bitrate, but should + * not be used as the only bitrate + * control. Use #OPUS_SET_BITRATE to + * control the bitrate. + * @returns The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_encode_float( + OpusProjectionEncoder *st, + const float *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + + +/** Frees an OpusProjectionEncoder allocated by + * opus_projection_ambisonics_encoder_create(). + * @param st OpusProjectionEncoder*: Projection encoder state to be freed. + */ +OPUS_EXPORT void opus_projection_encoder_destroy(OpusProjectionEncoder *st); + + +/** Perform a CTL function on a projection Opus encoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st OpusProjectionEncoder*: Projection encoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_encoderctls, @ref opus_multistream_ctls, or + * @ref opus_projection_ctls + * @see opus_genericctls + * @see opus_encoderctls + * @see opus_multistream_ctls + * @see opus_projection_ctls + */ +OPUS_EXPORT int opus_projection_encoder_ctl(OpusProjectionEncoder *st, int request, ...) OPUS_ARG_NONNULL(1); + + +/**@}*/ + +/**\name Projection decoder functions */ +/**@{*/ + +/** Gets the size of an OpusProjectionDecoder structure. + * @param channels int: The total number of output channels. + * This must be no more than 255. + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: Number streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (streams + + * coupled_streams) must be no + * more than 255. + * @returns The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_projection_decoder_get_size( + int channels, + int streams, + int coupled_streams +); + + +/** Allocates and initializes a projection decoder state. + * Call opus_projection_decoder_destroy() to release + * this object when finished. + * @param Fs opus_int32: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (streams + + * coupled_streams). + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: Number of streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (streams + + * coupled_streams) must be no + * more than 255. + * @param[in] demixing_matrix const unsigned char[demixing_matrix_size]: Demixing matrix + * that mapping from coded channels to output channels, + * as described in @ref opus_projection and + * @ref opus_projection_ctls. + * @param demixing_matrix_size opus_int32: The size in bytes of the + * demixing matrix, as + * described in @ref + * opus_projection_ctls. + * @param[out] error int *: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusProjectionDecoder *opus_projection_decoder_create( + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + unsigned char *demixing_matrix, + opus_int32 demixing_matrix_size, + int *error +) OPUS_ARG_NONNULL(5); + + +/** Intialize a previously allocated projection decoder state object. + * The memory pointed to by \a st must be at least the size returned by + * opus_projection_decoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_projection_decoder_create + * @see opus_projection_deocder_get_size + * @param st OpusProjectionDecoder*: Projection encoder state to initialize. + * @param Fs opus_int32: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (streams + + * coupled_streams). + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: Number of streams to decode as coupled + * (2 channel) streams. + * This must be no larger than the total + * number of streams. + * Additionally, The total number of + * coded channels (streams + + * coupled_streams) must be no + * more than 255. + * @param[in] demixing_matrix const unsigned char[demixing_matrix_size]: Demixing matrix + * that mapping from coded channels to output channels, + * as described in @ref opus_projection and + * @ref opus_projection_ctls. + * @param demixing_matrix_size opus_int32: The size in bytes of the + * demixing matrix, as + * described in @ref + * opus_projection_ctls. + * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_projection_decoder_init( + OpusProjectionDecoder *st, + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + unsigned char *demixing_matrix, + opus_int32 demixing_matrix_size +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + + +/** Decode a projection Opus packet. + * @param st OpusProjectionDecoder*: Projection decoder state. + * @param[in] data const unsigned char*: Input payload. + * Use a NULL + * pointer to indicate packet + * loss. + * @param len opus_int32: Number of bytes in payload. + * @param[out] pcm opus_int16*: Output signal, with interleaved + * samples. + * This must contain room for + * frame_size*channels + * samples. + * @param frame_size int: The number of samples per channel of + * available space in \a pcm. + * If this is less than the maximum packet duration + * (120 ms; 5760 for 48kHz), this function will not be capable + * of decoding some packets. In the case of PLC (data==NULL) + * or FEC (decode_fec=1), then frame_size needs to be exactly + * the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the + * next incoming packet. For the PLC and FEC cases, frame_size + * must be a multiple of 2.5 ms. + * @param decode_fec int: Flag (0 or 1) to request that any in-band + * forward error correction data be decoded. + * If no such data is available, the frame is + * decoded as if it were lost. + * @returns Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_decode( + OpusProjectionDecoder *st, + const unsigned char *data, + opus_int32 len, + opus_int16 *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + + +/** Decode a projection Opus packet with floating point output. + * @param st OpusProjectionDecoder*: Projection decoder state. + * @param[in] data const unsigned char*: Input payload. + * Use a NULL + * pointer to indicate packet + * loss. + * @param len opus_int32: Number of bytes in payload. + * @param[out] pcm opus_int16*: Output signal, with interleaved + * samples. + * This must contain room for + * frame_size*channels + * samples. + * @param frame_size int: The number of samples per channel of + * available space in \a pcm. + * If this is less than the maximum packet duration + * (120 ms; 5760 for 48kHz), this function will not be capable + * of decoding some packets. In the case of PLC (data==NULL) + * or FEC (decode_fec=1), then frame_size needs to be exactly + * the duration of audio that is missing, otherwise the + * decoder will not be in the optimal state to decode the + * next incoming packet. For the PLC and FEC cases, frame_size + * must be a multiple of 2.5 ms. + * @param decode_fec int: Flag (0 or 1) to request that any in-band + * forward error correction data be decoded. + * If no such data is available, the frame is + * decoded as if it were lost. + * @returns Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_decode_float( + OpusProjectionDecoder *st, + const unsigned char *data, + opus_int32 len, + float *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + + +/** Perform a CTL function on a projection Opus decoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st OpusProjectionDecoder*: Projection decoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_decoderctls, @ref opus_multistream_ctls, or + * @ref opus_projection_ctls. + * @see opus_genericctls + * @see opus_decoderctls + * @see opus_multistream_ctls + * @see opus_projection_ctls + */ +OPUS_EXPORT int opus_projection_decoder_ctl(OpusProjectionDecoder *st, int request, ...) OPUS_ARG_NONNULL(1); + + +/** Frees an OpusProjectionDecoder allocated by + * opus_projection_decoder_create(). + * @param st OpusProjectionDecoder: Projection decoder state to be freed. + */ +OPUS_EXPORT void opus_projection_decoder_destroy(OpusProjectionDecoder *st); + + +/**@}*/ + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_PROJECTION_H */ diff --git a/pkg/codec/opus/include/opus_types.h b/pkg/codec/opus/include/opus_types.h new file mode 100644 index 00000000..7cf67558 --- /dev/null +++ b/pkg/codec/opus/include/opus_types.h @@ -0,0 +1,166 @@ +/* (C) COPYRIGHT 1994-2002 Xiph.Org Foundation */ +/* Modified by Jean-Marc Valin */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/* opus_types.h based on ogg_types.h from libogg */ + +/** + @file opus_types.h + @brief Opus reference implementation types +*/ +#ifndef OPUS_TYPES_H +#define OPUS_TYPES_H + +#define opus_int int /* used for counters etc; at least 16 bits */ +#define opus_int64 long long +#define opus_int8 signed char + +#define opus_uint unsigned int /* used for counters etc; at least 16 bits */ +#define opus_uint64 unsigned long long +#define opus_uint8 unsigned char + +/* Use the real stdint.h if it's there (taken from Paul Hsieh's pstdint.h) */ +#if (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_)) || defined (HAVE_STDINT_H)) +#include +# undef opus_int64 +# undef opus_int8 +# undef opus_uint64 +# undef opus_uint8 + typedef int8_t opus_int8; + typedef uint8_t opus_uint8; + typedef int16_t opus_int16; + typedef uint16_t opus_uint16; + typedef int32_t opus_int32; + typedef uint32_t opus_uint32; + typedef int64_t opus_int64; + typedef uint64_t opus_uint64; +#elif defined(_WIN32) + +# if defined(__CYGWIN__) +# include <_G_config.h> + typedef _G_int32_t opus_int32; + typedef _G_uint32_t opus_uint32; + typedef _G_int16 opus_int16; + typedef _G_uint16 opus_uint16; +# elif defined(__MINGW32__) + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; +# elif defined(__MWERKS__) + typedef int opus_int32; + typedef unsigned int opus_uint32; + typedef short opus_int16; + typedef unsigned short opus_uint16; +# else + /* MSVC/Borland */ + typedef __int32 opus_int32; + typedef unsigned __int32 opus_uint32; + typedef __int16 opus_int16; + typedef unsigned __int16 opus_uint16; +# endif + +#elif defined(__MACOS__) + +# include + typedef SInt16 opus_int16; + typedef UInt16 opus_uint16; + typedef SInt32 opus_int32; + typedef UInt32 opus_uint32; + +#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ + +# include + typedef int16_t opus_int16; + typedef u_int16_t opus_uint16; + typedef int32_t opus_int32; + typedef u_int32_t opus_uint32; + +#elif defined(__BEOS__) + + /* Be */ +# include + typedef int16 opus_int16; + typedef u_int16 opus_uint16; + typedef int32_t opus_int32; + typedef u_int32_t opus_uint32; + +#elif defined (__EMX__) + + /* OS/2 GCC */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined (DJGPP) + + /* DJGPP */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined(R5900) + + /* PS2 EE */ + typedef int opus_int32; + typedef unsigned opus_uint32; + typedef short opus_int16; + typedef unsigned short opus_uint16; + +#elif defined(__SYMBIAN32__) + + /* Symbian GCC */ + typedef signed short opus_int16; + typedef unsigned short opus_uint16; + typedef signed int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined(CONFIG_TI_C54X) || defined (CONFIG_TI_C55X) + + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef long opus_int32; + typedef unsigned long opus_uint32; + +#elif defined(CONFIG_TI_C6X) + + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#else + + /* Give up, take a reasonable guess */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#endif + +#endif /* OPUS_TYPES_H */ diff --git a/pkg/codec/opus/lib/libopus_darwin_x64.a b/pkg/codec/opus/lib/libopus_darwin_x64.a new file mode 100644 index 0000000000000000000000000000000000000000..cc21c2b70b6e16fcfb9724841f757d8e663802ec GIT binary patch literal 649072 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⪻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

`wp{DO*rvfiR=sp4AmBu=?g)m^cx9;Dk=>Jx!HQ z9%s(#uQssDJ7UkO4EIs1MG`H^T|RS;RHE()YVebGtSpx@Q+l3WMcy-; z>5)9Iqrh=MT$*G4+<^b#J#u)Wa+@1NHOcZEj5}O%zZ3Q2qI}AY-u4}g91;m}N&K*3 zGjz?kgEw~MwmJhxqmE}WfM|8%TL(J4^h+A zA2Ygz>&zbYs@E%&8qlJL-WBNW#)H^>2c_WU zRV2T%3*+>Pk+7^>aLqA~C@*WaVZUINxVyOvn<>Q@(m}?-r1DI%8qSaT{DL23@bWxG z-&ggj2X>E@+RI&f%;DrZx5!6$L;j)L>r->ShwyA7%ph)<-8pLPR`=*xqH_Ys2+uwG zwGfL`j@SIalszDOh!@8%yz<_`9te1aWuf{hfPe%&H=1+25-M#wUZlTluX#f%!M#TQ zLl{!e?zE57(BQdjHttr!WvgpRIPD`-4L~{OHaG7Eava;-+iTEpZqCn^_++B)#>WZ~ z0+Y7gRFt;jcWn_$TyacW46*#CEj1*!;;6Rl6Uz~8`A#e~+EOK!!`iY#EQhpZn^=C; zmQ7+gs4W#@`9)ini{*f}EEdatZCNOmecG}>EI(_@JhA+wEwjb)qqfWt%MaQzRV;h8 zWg-^$>hH0+(>`*)QLR4Scdz(PeQbBLfy&c0YQSxcbC}BxLL6E9-R7@M;nnWicXHA` zu#Z=6h7tF2n}M$Cuha0Yv>ii+Ic(tLJNFHEMDv88qr3Mbv9OihoA6Y zBVX2Np4+^%jZb&z$5@`0mVJRQt0S2x`-)iS&k(1wZ&0B2(k4F5(BYl#!yiDLq90{> zE&trEYj}}0KZPLvV8ELj;Pu-}(ye^~STTk72Ig0Qz}8woVE$s;mT23A0&t77Z9)Rr z6bQ_(QKhm$V7?FmZVCkEe`nhi2+XgtZ3+bD@33tO1mW{eXr$pnEPFMiyX=M?eZQ6gn*ARcjQjg_IOr+hCY6ny5Jd{*$uFrBD8Cv+k8 zY8Z`S_1`k-f2lx|N`PVzN#Rt275IHswPe9W}QN)$X_UY;n` zQhG!{@uqNk?%>Sn60te6T+$Nj-)(DuZCz+v2Wsn!wsnw-wZiG`*;?XTUjANDDmT$b zG1$MP2s-p_BX8`oc@(W$M0kYLqr!H8LuC?=uXz99Uf!A#xmU%Ki74^fMa)aRWqJooLwi(*Zl~}>rKt0urBZfSIH~~_aBZ%oFyhTJ*g>HkqA0- z8@Z({s9xp)1GU(VxbP+&1Qt|!#J%lB{sIe->9FM;ocASesL4aI@4!uR^(1Rk35s{q z)Ow+sR5X;=zDizICugb8+*=%y);NPzpSaw1Wp^W#@WkM`8 zexjA>0tEw=nEcv?@AKZ<@a4c=Tv;xwaH0-%H9qV?mG?iApP+NPspv)eZUiBO140H` z+sAh{LdIGf@q>-1q3kwdpN-fTK^(LZ-$f8LHliwmIA$YuL=Xl=AlYpZgb*8uO%X(# zji`tq5^Tis2qMu&ERG!srcksNGctPby)p3s1wCw#W(mG;)?NJNA8W~~+*z0!4-IQ`9g9IaQ{$6g90 zhGZL!Xa(fG)?z6H+S6Ur&t@BeukEhsUFGX&;yGF3=fJ@Am%9P?Itvm-c17{|1?4y|<*owGhPE-!f+HO4N@ z93c-L{LL;j!fftzb}d~oc8*dM!xQtL`tjn zLvBnG{|@AxqA|=}Nr~h&j=aX9xfk8FsPZL~(tz@Oi$oH!f|X>c<~X|*zm!UE=q79` z%_;ZZqBmB;t-VQ{i!z972Vd%1G`j+P)}#M}dC8^JVsfcuiRT~1Ka#3&y{*TIa0E$1 z7Dll;63_Gk=>c{9=U`sH1%&4xUlsCIAz#u|{5zPJ$OlFKZYs@GCFNCIQm|Y&Bx+L1 z=j}d6k}0~z8>?2%WOY`UU!YgTQ)%%`N!(Up@mliZ-t(f;mzDQv6w&VAJ*GoJt%=ee z8+h$XEz0ZLYqRM=ZZC`NMwhXp>IwS#sV9``d18XRGft!y>)shN`4$k=o?W?;5}YsX z;Wl^3gc_cE8GBO7ev6?LDL9sR$wmrk*So(XvyyYBcOEd$Q*MYgVVaPh-=b3w3<;@C zn??Dmo^Bwj&;vZCp(wm?W>A_&*a&wrIlQ)^?r9Z;vKxq6Efz}^kaF(-6d zE-O=HoY)N1_9KpvKd`^VuaSqG>OrnN!{wBe zkbLp1b7U%V+B!+)b(G4BR3fi$+0&6ap*2*`3R<(V!5<7)KrN!e!*@0Xic@}@ODv*u z+Ac04pWNn^-INAuSA(s06tmPF{#84u7yX(Hm@O$9)P4 z>9>^~iE))b0fL8&uJVWYkQXvstdi!rw=w+Ey+fs;$Vl!&Z;(O2$D_Jacm=)9*u0 zI-1(!Subthc>TIbr(NN6c)JhS=9(r_#j9WBpJZqeke%(}tXVmLkL*=MZAY`2vB#Un z{?{?dt^;3>AO1}WHS0#%b_rDb%~A8*)-|VQzID0IG!0`E({kmp;+OWG8a2L1HY5wsjoPAXJ4^Hem%ryXL#|ny>=HulsEJqi zdC8tsCdUH7$+L@E^ZxVuyw()!bf1WzJL-3A@^BdVec9w0T#Xcpqk<|-^w%HGweIC* z?tt03=KHy>mv>{1EJ%M?|LpB~ zZDUEXZQ}Y;J{t>>wLL|BI|bcJeKt{Oc6Pt_IW|eDE4f$6;d!9XJWw}3*!#hX9%LF8dbld+ ztjZ~`D29mkoe=EC>P z>?0ka?x3xE&bH!Kj8xJaPc{~Lt)7oFEO@Q1*R?=GnW%M8V^sa|sq_b_1do}^zMql~ z=rccH`4{eVBK)8(Ni%1gCwL>mGTwjxE3Y|tAtS(iI-22Ky^l<=F~&C5Mo%!ewI?_@ z(G#5F^aiesqYFzGedag5v|s(^59+D9TRnqyzyEEy;unW;XLd$20kNS9%P5t8?tdy(Eo zcIJf#_7oonx^aH9a1*0WsJgw!aU{n)w*3g(HC)J@p@s(D56Hb--Wi&ot8l{Jn}>L& zHmjMs0ymi3Q1|xp267hICq6j~Gd^*f?|95Yj(fHYo9zwu^-A~i29Z^`OEwjP#n~cT z!DFUMK3Q>l=wjsSDLY>b>1q*MyjYeFK5pD|SjHA&@v@xqul>PM43ULzx@K8yUT3hj zo&2U^_#^aXr}UAQL!8he6S6_7Ii$)d-yu8E4J68G$kyV; z)u|-pF^eCi5vcm(jN3E<(~<~7){S81yeYNl3nm~v!5T~Yk1%*hqoYt%M! zKk$%9DHI@gK2^)*bR%bp!JIC31|KDZN)qxap*Xd{@;&E-cJu9*w)2=d(<1HX4;C); z1=h3fzaQ2{kri+22=M3e??%)OrJq)h7N}g;Ec>mVKb3sC9U0U`4GWaR5VCK14H<&$ z5aY=cMt_I3u4%i4z}cx##mYpB_9`hkCn2wA9P(xTKA{DNliak;I_{eOs(9tbo1e># zyz};%@Hy3pq6 zm>+q$kUZ^C^6a+!sSfUaZql+XQyD@V-5#g-kUak~a(Z{3^EC!9vU+zCHy*uZ?>gLB z>x*u3ryXQRa+woWNmURphd9Gj_2YlYDbbuwG-`h*k5%Z=ylZ97dy8>T*VQDZci??yxS3kb$!~@!TMt!Kn$Ul6a5uNPD>%4| zn@f(t!H>e^3ynAE?`H8rpLx*Fxj$Fi72)$}*|u^zl)$n{qy_a)O;i#LJ!V^^^L!ua zLJW8ej5!$;f7Da3?2@~B>nBD*=58-zm@rB*jwP?+wsCy=1gPNGLcXW4^p`i`j83aB*TyzB;k?<%%H*RjTVfPvao^; z%ys*HXBbnuThnv)vENkFc)}R3)m$B41Q^I2n`*1P0nQ=Ij&yY0 zf0J}Zn6%iO3d{h37+awFxe|zzu!LhD-pg=>I5Iy+9x$`4O`aNRHak7l1l{K%t+`hLjF3|ZHEgU!0TQL?}tX8g9suU=|JiWp>teeXEi-;~=C zDW6fXcX)JUUQVcxDs>HByk;D(S4F!9i8cjf*Jz{;(l&T?stVCM+A)X@2ghCQmeU@! z>M~&)Z|Qm&j6@*)U|S?TQtXNI3)M~Hkc9FK<_eZwVuo>ZQQ&mo1>he5o{#;X8os5W z;J)X(DbO$~dX71z>@q{^t$$~Wzt@$qQ+ok<{cUtB=>42*x%9&P$*(FTJ?W3k>Px40 z`!i#wZDezk8Z#BM08@df!WeF}f?!fGT`<|0ewYHxSj<$+49slIJj?>jLd;^!a!dtg zD*692qsk{`JgJFs7;R3AG43syFzUv%Q{$a6c(nai=z0mqZ9DLPYP69$)b*%6)UT@{ z=tLSPx}s7pQ^jPcu4C7&GpU z&SUSmt+S{P3Uro`oyU(0bQYyT>Ypf^vNa2xMCH9CiY}*dBZrKYbTcmM@&}#*!-t^H zY2s#TIEN8T z#-)FlKMB)Am8Wp@&_D2nOG=NPDHmn@fx9T)O1Yeb|ID2TuIV@6`h53weZ0Bu>#zO; zzaxi?NAHx<=rv;W(87t5a6f;a{C>XveZ2X8_m%m%?tyiJ4;0lF z^?!?*rR3M?w3EA6U2D59AfA(jpL&DsKAwHClertW*zU{!AUuac>gTxoI>RwB(UF+Y zByKjjOaDK@|C#?+Z#9er zRNh+oO6OPlowOTFO3$AM+xRU&vHu&`8h;-Tvh|Kn0E&Ii&9?o>O}0MWr5aubq)J=H zYdAH}_MfTYeFN=q2^zk5BU}mb6#*sQSD-IRw*<(oBWj z)4xr_!s~7OU=0UdXWRP&*#T@B50r2_pmT}mC7{@!1md3F1=s=jRX-a)5J=Oep8}Nd zHP_hnb!)C&&bR$`{4Z$u>D5Yqar#X@JD%UXcDSE_QqE6->|dwP0kR5AzY!?))mg(P z8XmsV#(xZ?E3|wY$cA_N-`uu62s{`2aNs$>ud|^Q;HN#M;WhwXcsh8O4o^z26*Ia1B!1*?Ok3=QEtw~hi778Ws-)GwJ@ac9s zKWg|95HIPXFI!+o8d=~RDpl&$so@K)Y#$OC<1HLJZBK|(1 zvfBfn1B(BLft0hI8%R~;HrH?t#3SJb0|oyRl`8h#&1}8uGl61nreRT2yPhuvI=~-c zms8s7GoYli4al#Z?0!nQ=4v<<*be(ppu`u7v*BHIj<(q44kb~h4*-&to=#vI_G4t4 zAnBrIDHXU7NLJE^0M7=t)KJ8*CSezS#zfh&TEj0jeuuV;9zAh?OXDlFT{IL3eyPSU z)b?jJd_v=AYrCo8eHuSe+eM$X#B;mG7ihca%@+K18ZUZ*#qQSdGL7$|?P(gGrSY=m zDgKi*Y^w26`GP+}V+cF|lzRA1+rQ9om&R|?_RSiu)p$Aok?>12{HMk*(DuhQd|2Z} zpQHFM)$neOAFJ&nG`v;gWtTzxU#sC&8lSE0SsGrX@g23jgND$OYVRtbpei(6py5;v z3pC8uFhxUv3b&HLqAxsUs9=8;!lLc6Js52lMU~O^Ee+h8H*jCkAb%MR+>08x?{46JTLX8d zm3rw*|BcR1X#;n0i*}D~;QxyT_JjuZg#?ZcpWDFwi3aWq8>IJX1N*)Pc9A3=9Y14V zJ$q&Y_ml?ib^5}KN1s$`$WTfz6xDAnF4=%t=->XU8n#CUZp%koJPNn%`W`t}6l=2y zrT3ryQ1`ZY88%{^=-d`<>Pipyt!O^~Lq*(SecKrqrPTc*`nE5Q(zM-0eJg$2mtJxS zHu<4%d&0Q!7X~gILsvSfp6vznIU_|}70+UH6#F0ivSDuIC*!F6!uBS7i(w8_zrU(y z`wcx$NPKEafmwpp6U$T;k^c9e^hAf_xkLNEC!7&&Z&)PJ6J1}=w#VJyU6*1PJ-OZ^1FsD+L zHRMm1wO*0`lOF4BI=-#zU9=a|>`L-f$BZwXj-oO^!1^5GABbVbnf*f9}_eE5?bmw$)6G_wOJCGB@MJrd|8eSRuf<2CSVx7;pgCZJ{C_OI! z?i|N&<+YRAyRCa1Sv8R$Sv%?nL95)cT9jZMbxe6W>mzfUD|e%Jp82t>?{OV(?b@sZ z=KC)H=OpO5<|C1N6inV8OnxFZ8KHn%Jsenjzla3Cw+W)A&M ziaPn@LMbyIp_{1 ze;~rBJz2-i!@M=&RhhisJIu=xUoi7vFmrV*!phC9Ds^rhyJj6EP3~oFQ(BK_9>*qc zd9lU1W{OtL+`wUXS>^A7x5@Rx^EYwpT|I*^ zx9#o4Jrp^KHMiI0C)oeNV?;<+eofn!<9NrN_D)X5JA|j9P9^+X;qYAc@^Qn#SNpCH zg>$Y4*Kx4LwSjGjXVC4pZ#h3kWg>FyZtAt$0cb; z5HaCF^4vNebGy@i&B@r{KKvnRZ7^e^vzqqq;hh=#U28&SZ?4eP6~QLS$T1xx$qH6T zG7GTs!!YTAFSPL;1piSOf8r5P{vDTh`A;W0YVJD8K5zc$%X^+|{}+4)$u|5|&^zQ; z!e)j1GUIIc9gA}L%~Rt7dzWfZGmIBmWXf+i`xEl}RKt#X{4UUNs)qA4{JVyBsQSEZ z823N$e`?_Wry8IGt2NsH!2hX-{~u{UI0qT_g)f!;2H{C%xEDTNhItvX*@Kq-ZrQt) zeO}qimHlO-1Lkau@J8ohWX8JylaA?(k-6q#OjpdM7?}#YV|rrb;)EO12a|)j663>M zjmgDagSi%SJ!SyrMob>&X3Ss=M?c08OaN1exeYS{a|dP=W(?*|%y>*OW&&ms<{r#s z%oI#1rVLY#xgTR2EOc49uke1_SL`2zD5 z<{Qi&Of_aN=10uWnEjYvFu!6BV~${c!~Bk^#W)?z8vw`(xhV&qQT0L+b;Jj~6Q!5Fy<*PJr6!K7h&Vg_LD#5{zNI+uEqGD*6l zFwbMYz;uA$Da5>lIfC)U(x#YSG1s#AT7qfW2s*)3WAa$vzJtkWLYraS@JAakx$(3K zW(0iF@0dBwC^Kg$+cCvtt{vwrn=zAI)Cs)PH<)LWpj-H*b55n5Fe^9%GFwt6&W^gC zMxC?P+>iN?f~{iXd(j!t9qU%B9dyd!PHB5g3f~>TorT-k_({d@IfOZvu;&p671H&5 z;=F*kJCQ~@XDs@7*Z_l{x2f%G8UpxhZ3B z%IcxaIh6fM>cC4~Tt%H+P2J>DM}4WQe$?4@)ZO*eAr0~C4bh>n;_-5*QFm;|! z-4CG+Zlx`T(k8=bo8h$4?X=Y$wAm=yZVYWmBMul(n-11ej3Z|6r zGH~U%-H#s=zd^!Sgnf`WAb@3$5a%4?o<|x_kk(VA`7~)SAP;{dFVB;w7s%Tp^7tZo z{Wp1DOx|Ci49h6Xa>}%lvb{+e*HG3FWnNF&H&O?isf)L%lXt0`ZPd~G)YXU7*$(RN z6YB6Y>avPD{ffH%hC2R^y538j|47~Mv&TM)p!)122X<)C9m^Qxq&(1>yxVa@PkW%F zBhb#2Q)zQ(qX~4-rUPRK?d(X${bJ&#z1H+0Uw*<<=WT}IeE;Q7>i2ZGcvFCe-aim#{G3CM-qm;v| zCLDCNc_zkKQyF784#XIH+Qk}^u8uX<+#PF#{uOK7&$Z$qpgkFE7}N@iQ5l+B|i743{R!846D zdF>5Hrxat4qk}Q&lMcq3v7n6Rb(Wb>EMs4>?4fp77#-6`t z8Ao`>P66Ld?RR!u}{vD<6ANIFcyU_ zgudML!-3%Fv!(Me>-atlE|Z%;99)IAI*dgeaK8i#?+M7*`_>bZYNAsqJBhbu<-<4pb6}2!*IpB7meu}Z^{A45kwpK=Hduzju6qfiN zXBvyLI~bwKsfOdwc}Cic7Z~w>>ui*McCk@@yaHSC{$Tb#?y`DJp z4EKTp`tfZ>{Iz3@MZG5&?q{YLrMJ&8(iT2s#1DGXa6It5;kab65kK?|Bdv9%QF_Ds zhWqR)W6^y-8u62UGeS+9I@~?lIO0!9b1a&j4s`y8bY&vlfJ z_?IKTS;&!A^0C9Q_9sW^i^egFs@liIug{8cKh!@alsh&izIJBJqJRD~#(l%)n9?TI zF=^}LW8)vbAl5OVZ>(d|xY+ooAB#=7@y;ntLf2i_ zWYN?|n#AAoQ4{xp)8j&(A#w487sV~={Y#wt_sio;ADtPWmiTFW{KWL8jt{0bb#(fu zY5a`zW@-DTH!B_aWixl9?1V*YpGk;+$98DQ#NcQyiPNo)UWH`coJ6+jVOE!a%Zn-OtIPf8EyX0o0YoC!uuXCpu?zxW| zSHJ(FF}cGgYE#nZ+ooqIkzopGUkgw+@0P| z@!bnzoBsGqb<>YOtZMf7?(Y)%9EfRAe5kW)%BN!!OP|`96uji3Q&%m0HTkv<*R)D| zGN$#Z?rm*0^jLAmgB7dWJ=EmO_MZ$$JbVBaS>z=rF$#eNP-1GCGo6{eEwBWQS z;)d-!yz-8+buZnytj$*w)|@r?-gaj*@8&Y^GROXYuEQwg;Iw)|tnv7Bjf}4J=k&47 zjW51F)#$LUt?}dQ9gX6LyBT@jTqEu1ZN@n@rqQ$VRpZ)ozc-eg+R5?RdnJzY1D`uK zUpF9T#RXr*v`n5En;X~P8M?DqBlm^ZH-6`_N1M!<86TfDVR=*EjSCYRy;ap>@Ts>a zWt^9rynX2-r>#2Id&ct>#qAf(>6p6nsZnXauDGuAs7>E?efA$&J%_jl<-GJvLEmLR zlJ7+!Zti7jaW5;XP$36Jev8MZn3~bTsg_);> z&e?FugL55zJV=vbvo5> z|8$PwzUE5fp*~ZMq{E*Xjw{AH91q_VljK+)`%u?68@V5RAxt7H zr{8ss!`~$Hp{H-WGHL#c1@3=5RC@Nct&9!KCI5@OFOREfdmrArLJ_ADLR3VBC>e^* zUY(rkL@A1jNFqfg4NB7~2}h2ZYo6~lT=TtVXRl6_3TZHpnaM@CNQQpT+Gn3`xw-E5 z`@Zkz{o}Xl>}RjFp7rcC56@cbdD5loYnMnhx6yJW+-(%5-Sm>P5Dd*?0no~X_X68fA`pI>y%k%-W z%mKm_&bk9Y;!oC21nTnc8od1zAQSgL0YW!r?My;L_-J?lN-LNWb8rF=VOZtt-aM4> z(20lkJhb7VB@az`Xv9N39%}Ot07utU1tBV&y{QX8a?VA)&o_$LAz|u$I#^n8>qB+< zb>!^;I0H)wLbuL9H{8HZ{ObF2`|y*a)F%!a96tbOxUdiu9Ul=pIhIoIAFHk0o^oh# zTyO*xG{nWjH^_VRh@eqHBfb0@*!k_tuC{&p@*BUV#QbQV*nZ#u4$l_+$ba_Qk@|u zi{d6nM3BM_=}pe{z(F3k_r!Gobsp4r+iAbX&vV%Iv*Q~o*G}P3OoL|H=(!GWQmCe? zn2~mRt$sXJ&UH^%hH{3SwpibKuw2KCSsf*o*W&Om7KY5V4$7CEvxXTDZJ~q^eXsxA>QAcPq&%~ zpM15IobLI@a~P&1bBN*db_vjfrbcN4UxQR~FbzolsNI|LfyjAMVwM1pgwRtP$i^`B zJAvl#|i0%**_&n+>?a9aS&WjE^Kt z!YmKyNkFR<2(2&`flwNetf)@Df>`EeBvRf7aVCDIAkYHTDaY!$$ckJ*mzr4SW$Y?A zV%Qe^dMPWk#X2RWPbJD{MuHx66+XS;!5 zjnmp(k&1~(mmni3PE~2TI4DU9>Pl0R-HsHf0au`pp+K*cz9a?eBsg+~FVWI(O7t|8 z=#{zx-7@YpC%)pZa~7n$NP76{fckC*s)2O` zvooM_f(;HkofFSjmOmHEeL$+4s@97>ypiRTiVU(9__|!1BX%ee3EUtzu2_Kx4L?h( zw}SmQtgef!as@6$Rzc=m#<-aZx%L}HY6_4ulE{iB%9l{)LE0csMMm0-%*#mmKwB1M z3UX5%?!@YgWbZ+Pm@ENms|nOrV>?+;FQ^YXH%cqv>(F$|x^XSHq(9ei-Js#RnG#|* zWT#=YHh>f7;PDiG_0L_A_6G`FzAY`evvy{+k?1%nEV00=KvY{OvMLp2-m4bT zr6Bc7x2`;(yg)~5Y&%gc)J8vDF=!y*%d91l_ogZ@=+YY$SfL223^e5*l~%(^CmA;z zIjj^K2PcdE`TjYqptzYCNxaIGr~oPd28MU%_L0HkZ~kf**a9KuZ~p3a>8|hiSMVW} z-|;`d&q_+a_ zdL%zNqfSS?d$X{OKwSfw7Q}4k(Y{Tu8RR?6*{s_Egd%FA$3rp?2GVUR00Nn&IXv9V z!*m`_;Gq)_O?e1_3ug(CtY_5qN6q(8m$xtPudYAjyY<&U5R|j4>rXImSJ&5Q-mWfp z2X%N75R3$V{3~a#yT1@09`)Bvj7F|y@EjGmqrqQuP&p9B%EWM3ebr~9@VMdJB?I0P zA5HE~s6Pk6;JzN1|8$+!-)4ZlilM@-(}1<}e|Mc$!Y_E#>om3fzg?$2g7pP4>UElv zK6fvbEV9x$5B@>cK@HE#H(aN23k<+Dlx%D>EbFNy?holAo-(pnh_r#Ze#&E^I;GBzgef*7{HzliCJs7 zdk&znbsC8u`PHWn)_-NVb&YJ`S+`!KS0QryDuEQp=X2AAwHv<%8%M;3!BPu4T-7*T z;=xS{#jqB74J#EBB61WaSXQrL@glM+Bx5tIr9@U$Ff++{4ui20G)cik#YI*C>n2kV zSjvbpYRIHeFz*h;^RIb`CkSs5^s3!Becs;VLsdck_CI=fC$H9)W{d#4UCH8>T zj&XK^u9z-9PU1c|K|8j!m@Xp1XYm5PL$cB}y?frF(fOdiDZ4M|9jLT!=E&oaJD1WQI(q{76*oGdm)8TZK~6y_V| zBuOx3g9R0&FVoFPo126RW|M4%#YUanE!8^13l>ZTqVlI)?I^EMWg(~ler9S_1;W5` zAge@lA<09KItq)x=ekxUBr9EDt|x=2G|WLVhg8pl{x{?wnd-v|oGj3u!m`Xt3Hhf( zCdhPw%neq~Ag#3k79I_1*)_iY{4dHM$epbBX}v*nJgHb7A;qwcifc~P9aqsxtJhGu zz(L%+7M{AztqMrJd)`tKQcSF1flCtKHq{4w>#28N;(tSaiu^>Q;dYFy6z;}=JVqjR zb}o_JA{W()1&S(B=6hH|=fe^jqzlfz1bGCuYVrKnd}Tp~#%&TDFX7o7mQ%KO3ak>RRQyXKR_0z6=Bc>jawH zh?JGunP;mrYnw@PK{|DHrm`BE5Q&LSDQJFoAu^0b@Gx|t%k_M6 zEq#*M;O``sL{(O>1iD^r;2Y>>2N{d$nTok<2;k{Xa9{|q)u+I=Vyn-u^vrX3ef2UsuWDlVj4m;)m{ z52H%im$C^Sbcn__>%2j-x<05y| z19fkuW*=o2bz3Vs}B`EzP*QhSg&lKUeCyexTrS2^eLSSc~>G+5)aalRJkqi z$p28{A{RFWmQ6*qi|p+Z5vci8zG^4R;5K*Sfy?1z2?`KoLx90rY5Hs#M7hEE4#KZR z%0Em**>qM8nKJkoXD7py;VM^g1}Aep;O zTO=P+Edrj`Vq2gO$=&Y7G$^F^_q8O(IFoJ2Z zP7P$pb5KdG^7`f`8dQpZW6b_SN>{)B*L)ssW!D&+h)4;5Yi*4Xjv`);LYE;yJ^`LV z&hEZGjbX)wg~x)B!qCvzo<*Ib;KjEz) z5eCgR#PIpvC_TcTs^;U4Y~U(Fmm4FSiA=Z}$c;fxx; z9-qn)@CtZ5zI=fBw75YA5qgsV&-@n1{x^y8&-+!NUlsj|6`r&rci6Ltox~ zC~qIaLq~w{DeDFB zx2yXPUp@=~&XBrJXs8XT)Aj9tKL91fUPM^MEAjGP=92~uI}TqjMBsnIHIj_;r{;%^I z)52q8gF-{&>T?1cJ6E-t)O}M`&XEm~f0Dy7pA;;Z9KOA%?W7pV52`0;{_S~<$Ixhq zA@sBWN`Nm0N8cOa1M=rJ`Vr5+pVxTG)8PR{w5FB1{}EqN&6k|O6Y0bkGok!NqWSt<%_@e+qN@NPM!l|dBfK%P$rVV2LNgr^MJZuX&J|pZh3$VvL zUBUkAAa0!&9QB>oN*0*)JBZAPe_&hYl9eM8xR=OQ68;(yXTDbl`jJ9VnFFD`noB@m zj_j~M`Iy{Q3pBmht6m-9)f8UylJuH5LlyjMT_Zckt;vs(1Ol(HgXMySpIr%Qp z*l{0*1JHL>ttUDI`bXUVfJZcH!8pe6vcsQKr>3r9-?x;6FOFOe{y-7ByHw3q}FotweeK+zL? zM?V}8{6U+nzUUGtT0Bi&u7N*If`MW%y#UaF68M1oevLnP2Q=wM;`1gDJoSmE9%z-k zANUk(RuE&*uBlJL5mbFq1?Wa`sx1&?nL$FI5pC?S5UX1^@i`*Sj>tLyD~oJ7DY$ab zZv_HE$Xv}MqykV#_3+4cvX{uNOF~|&w1?!M5hdyQ=4iQtIyj>9Lit3?UHMRxY-NAA z?h&$*6pp*{z9uRC>!5#w6g8~<$ttkk_dR5wrMw8Vk$IBi22Ml?m$-_g$eld&A+7fS z_NvM&3wQ&0^B5d*p#UyGGIPMg;~J+r&WC&U1dli1=y)wJH{f<&5h&dxn3VxnLFH&6 z=u0byJb4CGK(!jEPzI%^5Ns-B-J3v?Wggsjwa+L=);Z}`J5kZ!K zWD)2=qp!L+ycA?rfoPCtWCBw!fB5pr_RTsV8?{qbqAnm#<<&6gQ2~LpCn8nH6oSIH zogjL8pdm-kUn?&rki;g;FmGbu<-8dGioA*bFNhEE4l{!4_XS>}b>T6=IIjqFv##~O z2r<>pTjpN?P@)CZ>H_5Ct-P(IA?Q!gK6Bd2?4jP7(*b6WOv&?s&6x)?%w9n&7-5zJ ztzeefX`8%jko0POC*8c=T(x#Gh9sNT774P(K~$e5!rV*E7q6ebl@Z|kR}x8*JOPzx z-%wRSP+A35@GkUM(SYd@0?LS96Fq7WeJ!FJ$YmjPAQ44c66HNDcr$Mf9x2U1uNdD` z$h{#LNQQx)2h=f;SL1i2V*zzuV~5Cfbv#0p9x|77xvms+4?4?r$>s)pUTIqh0TLkq zks~7~-_9!ZkewAQB2pFA8fgUkIr5$|(BE_wRP>Ni0r^EmF19y8$s8X}=DEZJ^iLBn zS*eGt##45-VSDflx#=zgl|i+hplw^Q|LYmEBt6F(^7O6IatG&-hZ0!{Q7jJ1^B{S~ zCGeP30x8P%kmZ23oODpNq}P;W#%A*73X)*-U3L;RcD;%Lbq1-cbl%8-{4;cto=34( zUf+PKGonF(`Ow00&M1clJj*NdFCamCeI-rd19=sH)dB#TsfPx>A&!-Kv!O{O`G4W) zz9c9yToW_^%2$Y^_$8D;z>PDa9)aaRxh$^;0@V2D5>&%{Xp_&$TO25)OticUo}cr| z0$+jirM&wAcc5OD<(+`K83QVxP6R%JBurint&}Lk8@J+&vbq18JPlAPC2AfBFM%ac z)~O4j`o7Am(evC4&Fuvc*YABsIS872jh@R+_%i1dr3DdxmA5wF3iJq<0kQ0iQX}Bm z8D)n65cuPN0q_d*mXWx1fo`V8KMyRoh~*_@%5!MZ6_7T4^J1{wBX5%+|5S<6*UE~N(0E6+<v2f1UBB;*{lt|Hao;Ii2xqQx5g zGpN%f*poVQ*u6SK21DZ@PY1vytpPeh7$t51EDCr8_=OyP2Niw?7)IVeo&5yGbO}84 zeLE1fjkn3GaR=!4Dxk-FmbV)^!mTi6s0>sgnE+DYWrAdAa%RgIe+b0~KC@+{zhMW? zrvp^wQqH;KXNYqN=hzW?VG;vTfyCW0I^g2@#K#&CUF>x&BeGc=3BE#=jIe5Cp^ISDJfX)u?|Qa0Nw@RAK1Xz8HvLc!JH-F>k-n-lT5Qx;2jFZ zO$%70FeJ5#8^_U z2MYgU9W=r!2CWtRD*UfVO@L)!WBkr&)$)*&83Nc)_6>~$#)VKE( zdx5(#{Hk6<*A0ezpEGJc-#2;?$aG7}$K!P6# z=>dFeKY#?!6ClBJ<)OI>3R`Nc_1!_+lA`6DVtq^GfI|GDpLMMRW)zp-S066<_ zfE-^B=n(@r4fu8<-mWeuvgRi^YSSBD>f5_~W2b^RfxN(l3JQ;mhO2}@L7*!rWEvu@s&Tp~r=VHBuWw;qT|< z{*nKrrgL2Nd1}2nBD|gd3~&1}|H+L4S`A^5-`|wX0L1s??2+iql{3jAI^7|$Wz~#qA&42Ro7H792Q$SFaJf{r8k%L#t zY7;lPp|*={?#T)%oUAB6MmdoK7J~h!l}`mC!HTmY!ODCQ$BzIy3BbW*Q@^c zEBAHQkZV!oSX-?+kYMF$7l#{ZT61p3SGdfnjdO#u2PUG7LMk0bayYeK`VmeikYgSW zMJ|HjMPfSFRqi{KK1Te-RwXd~;4TLVTtU$1X&3sOi!B^!==@v{PI8a~1aRb|1n#BC za^YNvfslqkv7Lcc)fdjZ9Vc8$xP@7@6Sn>@nxWlzrOBdT(7VKmWpQV~>2t8CJI}wr@YTV;o2481M28*q} zf);k=O932);ka#ZZp#Yv=aO@Ua^uks*J66nWtq8O;qcMbTBWj5AWx#R%49XNJMk6I zH6R+fR&f1;E|vH5k$nP(a=Bq=P!T-jO~zM}g|U9*aKMMV4scX%$VZ3#gdqBD#wX%) zf;2#MRMdsCOp*HHBaR(BJSz++!v_at%&<< zwRPJ!{u@-~js{jOcZpT_Xc}XyY5lp%IQM%8h;4Q5YK87^z4{cThKG8A@W- ziwjN?QD^!?DK;jrzzN)mA$xp{`G0R7U=Cr(JRpo8uL*t5sK;wwUID=q!!I2ci^P!c zaON945W__J2J0vlY%_(26L|O0yxoh3MBfPfTQj_UAPf&1@CUk!}h#88JoesjW!QyfMh;k3Xz9b($#U$6ClA==i?yWPW*{6fggC+ znV#R+za7^JZhd_99#!2Qm+JU>owbo;?)6T#^OcY6rICFtvaP0eQi<9B{yx`t#_<6T z{4fsk10sXt!lp;piJIrq*w{W7w;5o{d2{2qeS-w5+||#W{7VUsqqeKZaelah`App8 zL^5II&A0b{)$T6*3!w+){+IdtIR20KekFWJQyvKR4qEgw~Q`^)@j+zsPVop@-^ z(^FG`@l%b$IgxhM*uGCX|NSKZVanU+xJ%;4$C0D;pFGI8D^Og_eBGJc;}!6?T|ut5 zZ4TGZi$H3(yx-9B#||IhhONLEwsD-R#B_nxhtkTdLb-db^mc>GR(yHGeP08Gh*WG`ho*LZ*5$!!guy{``W9~p}tQFsoT^2KdtBL z{d;viSKI&FdLBmtf~l+Lu&&@bssFH^C-QWhIBGC>>Zsu&74Y=2yS<@^g943>X7ra3M0P`2 zqfzf&v)()GP1NBusrTNLe}~VBl(o&=L#}$rdo5AIDMdId8^2Z}OU(gy4cRsLKo*$* zN={Tkt0ILiG0SzA-FLSt^N?K{D%bk*moN85d>^`7UGk7U6w7i-t35&rhRO{WNkU+n z!IJ(B4i#a$M$n$i;`?cIsEL)qC3< z$Qs!31_1*evTN>e`8-?OMb;bv#^pqQCsv@SF0qEJD z2cGMa@4`FmWy#=3@JC6u=P`kN8RWJqcEH00g%A0*Wx$h@zHu z9?^~3EfRm{7Z-gAU#haPuoH`KOZw4`Y5Xc)j4yn|Iyu8 z*Zt@&{j2*?y{oz()w`NK3 zjH}kOp&IA7hbSf4;`tgnHsp*Mj!UUDsSQDy-sCaDH2eZ!O7w%G$xsvdN)2VGWM5Wf{@6nOAlZ;{-K zF8v4_yV;(=`#uEmb`Lr04)sbTE07NZO(KQvTt9gZ0_~L0AEBF*eRh|p9M`hFNeXKY zgy6O|v|!^%&*LIj=L{FYyYYO8)P0EDbJ#_K&CGz)@D7_6+!+Mj@qpnw9yY4Gk@N=6BEV)T7m%cmtEk+;f=OH$t&3!bAoKKRkwZcJ>}=0dnIAPI+3^Qb z#>xsniw<1?B}8`QbmgRbu!a53Bt0!1^3+`lUodP1Uw~~@J@Zu%FRm?++%jGY&TuAz zoV9?hCUDWxfl>gCC%F!}DJNlVZeOpaa|!1ki(zu!7$18HKWTpmvyR66zc+8}1$4>! z)Uq0)4~Ed^jC$SKh<;xWK$y?3XUX^e34Z`gu7IRL4S=l7QIeYg@$`6HOVK;G4#-y48C`H?IoIRA|y<7q~1`boHh z+$ZB}4kS6wURKo&dIqVm0tmyNDrZB&Dj*+coI&)0n`C}XjMKNxfnD#o&Sy19KVqBn z+)yItY8P?U2C?B_#+_C#a>*CST8FF}xRt}&07wxr=>W-3Wk{ZD!;j#Sw0_T|Lxm=| z|JMA|9tojA(mHRx_F$5hCe#F=ZAxiDOf=xB#pUq7`x40|+5GuL^#QEQY=Dj)N8vxA zLB2%NKYzZqBgw`lpmALDzlaN=;|M>9k0Z&eCcp{N{14MZXf!l5R8Y((gUF}|K|@V(xh={-MhT)kM9nL0Ci>ZI|0BS@sJ4GVaauRL}1(B7Tf zHm+Hbq3+#C>>3(v$RYBl$NjZ|x^DzJRl0EJl?molW4Zmvlbr`?hu<1B`-R_NS;(Qm znmw90+T3z*{GCZ~G~Tw+vGh%z8nlNEkdol|i*fTaGU6~aoz6^Go$Slf_ zW)A!$Wk!yj$4n3`W>!C1#mu_7k%@l!3v;dGe&*AJqm2GZ%(z+Ks zV|0BgnL97uFimBj7*Hw%viC#b z&jOH(G!WH%9FJlHg3>Q@GTJac1@(WBg4PG5B1LX0nro7V z?nI}dUyr7ti+`q}?p9JXca#*dNm8_GjTD_fBt?d2rO5cI6wQ7hMYsQuq9bpmXhF3U z6?~GSD_^9jS*;ZP48N!F`vN}-`ZefB(IWUw{VGMvKLbt;;J*j_H&SHt65vy?-v{?w z;D1Sqrk$6f#it?c2`N(Sm!h-VrKl5pKWCv79gs@VA2XzAW{4CG^Od3~u@v30lcKd< zq-dL-6xDo5LmMj7ko-y-I;TuSqxYnt-mB7(k2DSCPf0^_z0%N%0cq%!aT;2!k%ksO zNk!%7Qc>vsROGrW6~)D+qSvER(WwEc=yKas$6a&-Lue`q*>^h`z%yoGz)!voQRTtPej8r5>c#YBC0e>M28+EpbL8w(4d3_^bsYX z=GqA;>f%h)ZPiTFCvYZOXf_i$K8{CDyW`PMk@3jcCLW32#Gw_x#i7A*acE$_I5h8V zEb4VA7Ilw~MKi5qQHRPHWcW)AniL#^nj6QUCRb)4zr`~UC7A(b6pcn5jYb+#(Wt3; zG@5vQI%>0MIx=;hj^@0JLTG0c@);9_a#}>8xu+u0&k>QRlW`<^RTP0b&Wb==x<{b& z@@eR#bQ<#RISn~onTi&sPepxuOhx_6!_o5OaOBxF98D?;L)W6i(9X7D=<>-aXu^ak zNTM|bE#47|?1qM-0e?(JKglN}zuuEkLh&T@E^-pOq&o>2{2GD|NxB7(8fpO(dFdvC|Z9!iuz?7DjPHott}2j z`N4rG;LovW#N4rHU%Rm=X6G2R!F~+tT@ZjQ`~uLtNB+nw)*ne>w$V=Rhm6|$q1oF< zqtSgvqvgj(p+Q4Np<(BJ(OF+#wC|P=q9^$vTsaawiyn!j??<57$s^F4T5ohQ(;IbY z=8ei^UZ|#p7g{18j#ji9j&v4#q8F_^k!X2;b3<15UD1s(u81mkLFT54XefAAOTe}WH^3~4hm98@? zNEe|Fe>$N@p-#y1Izo?zBGmB|gUW|(i!>c#yd&nAv8(JfanZ3}ot3A;``<^I!bq_S9+6tZb zvqC41SfajdERkKT1;QoW(G~0NXx4&mXvbr76zpt{c5Ud2Qmeb5yCb`xi+jwFXHzpY zHpmoJA2mVU^i0tGDV>oG?u7K(c0w5u#%NA%N7TWnBN`If0a3Z_(TKL~(SWH&=%At< zQtGusQ$pIJZHL>Sna$dud;W&#;jY$5T4R8I8)|^k*XpAu&-Bn!dp$H~o&cS^+zKt~ z+6sM*Zi$++y6Cs&x~OJ!3v_pDa}@GY2hDZRLGE+3(VpUFXunZ2wakujUzt|VJ~O$opP2kFADNExsu`u=19Rf1 zcT7{0Kbf6BzhO4^e9ioE;1#p9|4U}c@jsZSj?bC3_!+ZH^pt6H`Z05N$RkGk%mZfW zko!zZZUs}|beBnFZ!-%A-(s2`yTLrRyUz69f0emwb%pu3?GlsPsho*gRmz-iRl@u< zx0osWa-KY0R!2$;{~~ ziA*1hc;@A!8I0EUC?+;|8speGjG1_267zIrFmus+Jkz1YSmyj0Kjv|&FEeex2xi<% zPX_-ylvx(&#@sLvGd~qLF~zAuCcW<MR3hY(D{W;(iO}=n`$lmubSRcuq4_HeZBI7rYnFxc^FM zH|UwrYw3OA#V0p~hlQ7gn#+rYIZw_C-waj?*DpRHJbnK+VMPDE!gce05stdPNw}%U z8ev-UGU5Ak*}@jaS;Bc&Q-rQFrwhj!P841_=qo%v+)b$W+(GzgZZDxz7ZYJGg}(5R zpO*0OgBOky+Lb%b9D2;LMd}8}zWZl8)+oIkznXV&>>(%|yk^JX!M#(j94~X7aq`zY z4^IBF(Bf2v)womlCdy82w%LB_k1y=0--@oEs#x{sDcgh16wBMTQ7laEqG(;wN6}d< zRQ$YSsA5BNf5q2`$qKeOMp4-=UD2^%uHr?4ToGuoLJ@Lht>Vj^EsE}TI~CU}_9^ri z9aa<#I;HsfI9IWIS)rmpSfcQKdPOmG*=@!4!4DPV9#$%17QR;8wyRdGz428sGDm~` zY|xZ-o2XvF|SLXBUSZWcSt_Vm%lB&PH`Q!s_ii%Gxl;*^3uWu$6(Q*xAn&?21{KHEE_~ zyROJ(H<_Mcm+r}9s|TKC%X16ZE}li~{VV6#))OwUho2U+dC?`Tb9E_eEiGp=n_Omx zWM5$;^{%nCE3UI2jc&35>u<50OzyC*Tkf*uUGA~UZTDF{^M@?E?Gbyv%M;dq%Ttyz zsbtO9KWDcZyYL(Uqw+b0b?_%}`beySGs>Cy!ITyKKkEpCeKU7O)fpPS*W z2et9pP#wImV{=?}u{nO5*#a*gsEbQ0b@84JEwQw=bqAc| z+z|_2bi`GwjB$ulCmi;y6aKoiGwwFX1mC)6g1gF0aZMjH9CXDDk4));FPU}45AwTW z=`?e^L(mNe{?-j|7~LI*ee90$It#p6Xo*|gwZyejE1YWD183&+!1@zHYB2 zcKtEh-ygSi9e|^54Ztoj1M&K1_ISp6dz@$EfLEPyz>oa~;X{>!@aL4lIJcD}*4*rf zl{P|LlOx1?y%~J-E`u|p5dQfy!cGgEuunS?uGl8R5BoUd2`8PgkLwW3mJGog$B6O! z2V$HX;ewmIbHS%lT=7#)H!NG=hBxR*aJN+wY}(NsFWTger*|ESmA?$dbFGHqQ@;+w zA=Vx^X`cty=;MiN_Icuoy@z9my~A-@PcLk@%L|X{?u{RB^~Mi7kHFq*M_|h~BXQ*7 zk+`#t4<0<*2cNF-!AE0!aob8?e0RbqY;biHKHxDLA61UV76be+wc8Inck;)7EcVA= z=>VJ<8-N2I2H>r}WAKPGV{oY5SbTrWSbSO#h?}Pd;-k+3alxo@m{E?yM!m*kzg6S$ z$J+6@HY^B-l?GuuhY5J%<_Y+1(_s84A{Y-U3&vFgCSvV%6LI?2i8vrQ1TQ-sf_rtF zguBh1gwq~R!UJ6=ZP^qowhqI?=7r&X6=8U~ zLpaV}8jiJ|h2!gJD%M#w6|Z7Q!>3kE!vRmHVXwgvc(XhL54#(Iy=)@!-t(_rAR13ekH$+1qp`qX27Vkc1GnBX z1ON172A*LZgEz;-;O<9bF#Rb8_hn-7vGiEHA~zPF(Tv0H;yB!8P8{|=9f!;4c)SzE zL~Pb=7H&Iw77m;{3%@x$3*UG+3mddf!fTz9aBO4}-moSKx6Mn! zcV8vp>h{Svct|qt5Rr_#tVqU5CzG-1{bbxuI|T<;~J0-ro^Ic_hL}4e++WCFaznJ z8K~dBXmqkeG}=68I(qm#3N7%CLdy?DBHADlU5<)C`i0ZbQPXLtFn%g>2R?;^Q8-#R zISfrdFa@2c4n-+UC_0ug8BNcfgtk+Y&=|)Mv^0Jq^4JrM7FA3@0R|J$K2Z=_8Z{ni zt{I24m4RsU5m* zp!h0pH0y&G>i2m#`t_?Py8G1wUHUu>Evz1jn!j;JBcDmog5W3cZLGx=IQTJw7lg2)Z}hI zl(NqbeN66)X1m#<_WCv`_gZfx-Dr(QPwa&x<~`AvhgN9GR!j7Jyak%kzB}qxW{z}Z zT~Sx23yObjinO+wpt6yj(L<^e67KDY?)h~<SdqgN%|6W-#pEz;M=Kc0{sdFe?kJ;p_ZzdN^Z>K+*S*Zv z%-zhzfE|oQ@9oSXY6~-~bOV#Mc`b7{@+W4o!wP1z=2E7^c{$T$`2uE||2$^2@f_yD zopk01N@nzM9CLDT6jOM33gc-V%mi#5!_*r3G9$7)nUJ@xjBAh+)3VTkDYCI+maOW< z#ME?SW(S%uWv7gonH>!nX<`e8zNE!;3j8dLY57WMb?TllH0+XaxWQSW_KD-dV?ld_ zb2K*zm;Jm{*vxf~(4Z(%nAF5axRkLMZjbLI{JdL3SfseAm%h;=Dl%3f%?lKpMaYW8KsIyP>@Mpk%!3+wc8I~!}hlfCHq zE9)M=kG-+>Ae+ek&UUOg%ATk_!4B)hvS;m;Y`2kT*sFaxVb7oJ+Vvk;;{`SB z-MBAoWN!*;)(-VJ}5+8t{gu)sENE%BUwJ#bBIPrUeGFN|JT<7O6p@PqL-xMYPbE-L7Yi)-xg zjUN5+Q~v?@!<>OwW4}FacGUrEei?*cn>yl)&O*F)B7?os5q`GL35OjP;r#Q?n7%&* zw|ghXnoV8t8ACTb+Dw9v^mNDf?1th?4#Tiq=z(>RCl)iqv2d^#uIlfN$Mhb7XPJ-0 zLydfJk&Z9^Q0 z;rQv>aD006RIEE}8qRq$4d3}G0#6zgiM?+`;>`(B*vDWx4&6N+<|xs4S6MW^JaGmd zTQvg@N{+!ZG-L6X`LXy;i#V*mFb=QMiO19C#N)-E<1rNjbA^X9alUT?Hp)%Fhk7OA z=_!71p&)?}opO+x7-fPcGs7V3N{5$QBZ zM6G)!AXnF!XwT?)G(0d4+4}*1)h!0Kww{5EwWHC-Yf$%uIxg0cfAqRRXUDAFPbbx#|IEYFQaS*^w(ABjKOmN*(^Z}LT^ijin$ zsW;koYdBKe@jy4P4n?gCBq(LSE9$*Sj6{>1QL(KP`s2M2#-+i?Im`j=H5`caj`st; zeP3i%*$1^rutt+V_dxxVEYX&#ZYV#fE6O=*iuPD`M!RNrM3*ibp`l&cq8?$b(efR7 zXnRFVl-#-na&Xc{UqYLpC-XFrwQDUicE(5Mr=@Qh^Bpf3mqSk&$KUQT9=mS>|LQVR zn0%38M;9`8El)GiZ%#2se>=i_ia5Yzbl%M@E7-=wPTRmlH2aCkTfc-k+j9YP{P#@e z?DQnYY+59vA2@-r8sfuzF?D53-`g|YPxoZD&+p7wyXiB2wVF&+$O~bvqD*+B)iL26 zzYW4qYi0{i?eP*$Htrx?)4b5J$Bw~{%ET)tti>}<`CWZ*$|J)m?I}LSUQ1`$9*57cH!F(RpEXNa zmrhsNc1z_J8eAXYzzEhSu5=8 zuaCXk8R82U+u}VL?QuyjW89&%GmeZh!@p{otH-3XChwjJ_#2WOvcZJQ}BbG zVR(nmRBSO}8ur~2flXdU;-qfVvH!?u{A=6{JY``Fmad7#Pu9iZmCNICTKY`9YGMNP zfr+?J(^+`q*;%+^Z=JGrJ|e5Gd+BFF(WpuXTB6K zW+ETWW{L}^F%vh9U~IexGUXM<%-*zOmqGZ;1qOfaHw2%W<%Uz&4a0NRcwv)RAH2oF4~HBXgY!F&$2Jp!u^?#@ zzBX+NZq|P)Hn|*ucMY442dwjv4EaLG8JCI#12rs7un z({P-t6blYYaq&wjuKmWScaNc))tv4~ThMAB zHB@0FgFpFePB*7*X@-{2-n80B4OJLblr3No9ESFzgXmB?f>!&ep$fwm{K;Ps{Ke3T zbQ+yW4nEW~md*a9u@tm3HtAyC-NLFz&tBHO`}DExYuB&;fPn)Y1`T!;G6;#BhlpKV z-P|k<&8%$tI|!YeUEJJ)@C-Ljp9o#PO9 zFCV|L_tmgtXi{f)3#rB?b&zmx30#vqTvA{(_#|S=FFEb zUAbn{&%Yk{{kS6M?1l1cx9&Z9`s&@MHfDpof}>MqD>nSH?}*}b;l=9@p1=L1-xZCX znw-7*=YuEnim%*x{Gz74$-rS_!{gHzEL*!}=f2;Mvjrtr?>u^5^{!UWToe$MzGTzh z<7X~jzhC*LriIneDd|7$!KL?J*Xs22idwMk#Ki~ibuHXNl9y~hl7Hpl>n}RJM$A~W zGv~_l+Ge(6q?_@r4^8cY=I%aM*{qLW^15S}UNr3&EZbL7)x=@yPdQJT44%HR=xvjM zQS8oW;qZOzCvmluD;6;6B-A+KJi> zhn^G`xJH6Jc9NNIWO$XCTT89d!3MngE25nqMJ)_*|U9>y3i_)RP=|Wncnn9I9+g(cAQcJ1V z)Cl?@J%Tz&>C-dlQo21gi@HuZ&}(Q1Y7O;~3V^$*0n~A-Jw1!QPB)?8^fuLv&Z4_f zS=1xSh5ng#p?;>C(39yrx+N7!U7)OKIc-hJsTY(dy_fc+_EIhBNcsZZhKi>yQ~l|c zbbo3k^^O`vAErlvgoQSAJbjt&M5R)zD;XT6RBLP z3q70eLd~Y`Q_l2O+L_u)Y0wktT)H_ml`5io&uK8cOe`hf=$t51UFC(FRlu zRYvutm(hKxWz-vLBz=e;NgbjLpf4(;J5Wi~4Qdd*mL5c{rD~`#aO-#sT#@ZSC($?P zrc@}EPj#o~(%q@K)MJp}`wQ(#{Q?)ILg{?E6%|DlQ@!a$bZ=@A^^zJ+@1uuP`>0lQ z6kSZWrDjrBr~&jUdH}VGdQXj}kI@CVhqOOr=3@&CnZZhT2GdrN+}NJ)UBz z&d@vF0sX-t)M=_K^pjnwOzHtOgx*FEp|(+)bO?Q#Zb40>&QU$-Y`Q0vO+BZE(ZABe zs9&iT^fdY$-I|J}$|*Z~Ic-NRr`}RN^l!8e^&8cij-|`#jxY+`qz2RL=)u%F>Jv4V zK1q+IPEsA|WcnuEjG987r7Y-qv;{SfdP2F;J7_m*2i1(8LZ77t)O6}1)rVe8_n{V3 zuP85iKkY^Bhm*L|>5FtbDuKF64Wxgf2U0&#A1FWiDD6ibrT&MxuaAqW%Kx8{(a_Kf zg+-->MJ=P!LXkPC3|D9LqBA~}D3ppun3bs^sI`#TfN~qJ(f07Qw#?n{wm-jp+plhq zXv#3iC_ZGUZ9cVyW~SmMKBPz_zxVsxJ20T;?(g@dpJ&iQ<9 zG|xBhG2dodX!_P7-F(4oMzb9X=NG!;+yT1I7if0zgwLf?Nii)r&bM2qL^5=@PW1q3F zKl)z9n1nfYdBEQ)`n1fln+razn78R^JGzXDDV~}3o+md}{BYk>_HS<4T5;<)PuREE zYb&lRm|_3@!(UZ=DLrmK^VHWBd2i&{-OFgJNZ@)f7m|1sBFkecjFsx5wSm$G3Br!#@0jJACK=3;MsIcllmfkZS*KYrJnmN{anX7jy{CgY4f0 z5`4FRV6&SCCi=>p;oEl9!H2roQ70ejW=9=;sH+`y_Mz@}w84kA*wH2*+6F!EgFdv?jyC(yb~|9; z11#)-i4U-`14cf;$_|(zzsU|5`T)xmz|;rWrU1r1z&Zsm_W|}Pz=03ANC8fKz)cEp z1FfZi=6s;N6wsg#w3q^#^no^0K%+j;Y6@u92ii>m4f{aL zDWGW|XgdWo?gOo-faZOm{S@$k54?~9p74P;QotiV@X8SIj1Rms1U%#eFAV`t`M_I4 zz+*n}+7R%Z54<-7Jm>>24gpX4z?*}?qdxHJVDPNZl&HmlhZ$ebIC+=P$-B%?-sSt` zU6x1QW%=Y?eviD%?~`{~AM!5iN8V+9$-AsSd6(@W@3MX5UAC9J%l4CZ2@mov;X~df zyvVzRA9yi53#cZm=3F7ZR&CBDeJ#2lXpoE z%uy*Zmc8g$~v>|Yy;cEHnDANBiqV0v+a~$ zgau(j*bqj96=6o$5r%{%VM^E%#)LItPS_I%#07Ce+z>~^6>&z~5r@PjaZ210$HX;p zPTZ3QNDHJ1(gtaSv_hI8?U05@OQb2%7HN#MMw%n-kp@YNq)E~yX_T}|nkDU$hDpn$ zY0@@noU~4wC+(95$P45N@&0mZG~g{{CuOLC4*-II0;8VzE%4h@M zDF*(9ET>F2=tIbQ%6x-{AT-6nzc*9D{!C20e?uiG7qo z@1pNwA7=1_=-b%G8T=ypKK6kIKZ(APeWbx}qVHrMYVf1zTiM4N{AxG&SMDPQ}=Y zV=O~ni?J8SV1_)m8}eO@)j%_1?8Y&i(I1Gh9mjY^e<8+x90MBti5MG#M#Wf>V@9L@ z5o1a4uozo{#>H5ZV@{+05@S)0NsazZj8(xiV(iK>tkEBeu`S2AMt^BH`cE+y22YBy zF~`V8e``0@JoGNd&_;jE=j37LXMfH2$-^vN-$-`_vd6@7Z4--D*VZw_%O!$$92~YAc;Y%JSyvf6aKY5t=AP*Bi z?x6k%vidJWP5e50ie$!=z{OFzK5-OnN5|lm5xW>5tO;|% zo;V;bh!f(5I3liyGvbaoBrb_l;+8lju8DKvo-{yOAWe`qNF$^b(hO;bG(=h=O_8=p zW280G9BGd8cE9y2_#J ziohwWnb06@$Ehn9bV~0-tJEJp4wgcfbOI;VlAuX?8M>q>lMKDkAE6oQV;TpY(%+y} z>TJ3X`kvRI@#$%DLVNQr^fz~!(xLhJ7`mUXCL8ojZ$Q&@lPL{aqyK{5$ZE=j#%V2d zPTfsIpbdH(`k>w>H*`CHg?1;wG#PrK4bTjAGTj4>&hMeqxz02c`k6mLLvuT{*e^gY za|kEK20-ufIy5ggn1(}(@)zh)?lMh)2Idp!V7i$efWGHVXnbxqjfD2*J?L-xnjVJc zXB~7uJxnRk%B+B1=2o08dmh@DZ%lWara(Va0S!%<>0W47UV(1qdeboIN&XX>k~>Tf zLC5kTv@F+{?uY*4KcE4*(KG_ujQ<6F#&1j$p$YjEx{zy4gP?c$12iwUm_|X1^54*- z^fNsI4a{fI!AK@Mv?K38KXRLC40Ii?t^;UQ0E?~^^2Ew06v@4&Z>L(Ta5qxj*1Ua9>RJVV^kE-NOl zs3ouz&=*>a_b>4iHAXM4_ZpN8Un)ITA%yFa9y5&iRD?Kt-XqqC#~_6LmmYiZ9`n~C zgv*j1%Ms%2VvjO}IKSGX6d{f{_TYI=nE2^22O-Y4_TY&@9AWJ-6(J74_sBqq)3ZGk zgcgLU2*VH#MA!*oEJFR$BJ4u@Y(4OREaOv=hZn6JGd>nSUfqp& zkr5|mSzb5`!Zi&)#>X1*QAT{Z5$CylKCd(4?=jBrp%J`jV36^mJ|YU}n;w75c%EpSyC%-t+q=qnblR-P?t2s}LG7IXTg2QrAO%+sx6j1ZH|bs%K8WINk-QBcxm?hqeM1p;bHUwwJee z&;YtJ#o~vH_6}%E?n;-!1Ms*aK?}Tsaqt%TOZ=Grui85}0H)@}^1z3t3>;Q>FyRt= z2fyzB>1(4L@-MFwsAp(1jOywS@&9W6pJF5RtU!af5^><4^$T8*LG7-q`G2B+CSH^D zz%;dk0fErEGRxKMG0;B~uT=5hWUA~?KO?y{xSBnN2BW;9;2RL|gxP`{Tie~PidVD8 zFbBe%*Iqp^6&d9jQOfF|C>2Q*L!t^D{7Egx_aWy^Gh$2_Z?(6_KvBpa@j@{ej^Dp~ zwc0m=H!07FRGP_$Plr2MjN2O*=TdX_?)=&1l{`Opl9v7nspb6QxsB%h1R9}{=~pB} zrkVQg8b}Z(XZ#`srrE?@)No5V0f+bVrmOp{RWQ4=*aEXW^xxC@VZ74bo)}UUI^2Qh zn$yCkN4N-^qDIr84pTFf2;-3weAYwpY@(&ENEo@z-@t;+C>Zs~Ohf&0GrIBxM5B7Z zx=#Ld_&E8yr}fbL6}(g-t2M>FAD0A_|7qny=>R=8%JUd%-&%qsvFt>EWUbxpd4m(Rb;o+zAUNd5JrLhk&OXUy9cL3gA4hCu`{xhi( z$juwXhTR=#oLCw7z;LbddwA2@it^qw!ao_|o5C>+u^!b$5C>fw75^t%Xx#`?dW$WA znu+H`NtF{@;J83ITxj)Q1$QdP15d(f&Fv_zZ{~%-%_y!hUia>VZ~p^MIrhPu(E<3G zIgW4t082^-0x#nCCfuy>z9}lB8E#(w5%?1xHpZXFk4}-|@$yb#REo}MUchg^a7qK4 zX;G1&m2l6-i}{OOgL3xfcZWTs)S&n6jRLkX##Kxt2{#k1ewo1`1D)z7m_vr8H+U=$ zu^!8y=Rw9(gEz5q<4)d{O)Ke*H% z6)hchxh}ZXO`;lZ6|R$KID zQ4Y1iQ-|v1uY!x}!Uy2C4dw@5Pt$sp$<|Hn?91t&b*N1`Ni{`<3A<@1QHII8gCQ-X zH<90Tup9-;&evk}2}9VoBUtw{8Z62Y|AbxAR{0|Q)p<@Rvbt4P|DL9vO;cehPmJCa zFI?CWe(+fqi@~XrRvdqen-N;CzE1Td?UjwxA~vv#Q_9=yB*G!i4~i8|q?%>_&&=_* z$kE52rXESN?r^DR9qP`V7hq@&_Vpqto?u)NFV!j58hmh-qE^Gk+4Hk$GY~v_ZgW`P ztuPBHTzUlYFME4!QG2}vBVF*~aT>nqa#La74DV}sFGZwjt}QX`<(D_}s5<4WH?u*V z(&)`>RHrn1Z&GiCd;-n+V?CA4`Tu}f#+5FZFm#q2cs@^t0X2SmV_4oD4)q)HZIsx` zANc-uS?#qOHVz zD83KhLe2SK%dltZf+KU-S_G{*>5gi*z!;(7gdH_l*C8}q>hZkMIzYfso!4SM0UJE< zYvp}CYfNB++vrEH@qX zu=*)2A_O?w+JhGq`q~@Y82ko=ENrjQFPZ2m^baFKA+1+}9f7|&zuKify^=QU4g>M% z$jS_RaO%&<-TP!XdI&jj;uhG@6-LwPQ0W^aBJ8;Xp$~6is*j6eF+kzf7=OkE<8h(* zVf&*$t@batd*{4|XnwI4^`lFut?)Wj7iheD`@F&MMYI*dR>ag((ugk{(uhsch>L;! zRa?x}-#sz%OyvA7D7>*g3jg;D0oE9QRPYa~8nK2g6Ce6S6n=V=4uJQvDwUQ^wlh-6 zJWMw0BiY7aYgkXgM}I&AoaRbcGgZ^qq-F0_&L1#uab+J&JO8y?{X0Ok90CKTGz(Yh zc7!)`6l+pS4yb!&NvQCaYekba0X1;F7 z$6WOpj5R}?Fh*({q3*Q$VGYz10e_MI7xV?fVSNRdg^_+*L5%P?RNCbnvJ77o1eOF( zYmuEjh?2DCB1}3L*gNsC-Y>?VB*nM#JKhYElcSBCwt|3mW$pzzZJRd)F0HnL!1UOC zY6IxyBz|Y{tE;zn-n(JISJMYLCU8yyFZCXNxRTI|5~a|q~Tl5l~(j}W*2)Mdk4#$=ymqt z1@t=aBUpDgMm&NFkzS~$zsmIA2Ghku!yaY({%FyORX`vIUvIh8l2m+JeQhxQ%XFqx zSl+&W^8a|7!+de)MfKwu%vekFjI}V&2+Omw*Q8eYkKbml+SvqSo_GS&+qAxm&JM}4 zd8^C^>F+Dq-@w%CJ1Bf5Y*O0xORlZxo{D5OTpMN%+5%3i2=;MleKw`3-@DZlZtGbg z!C0Fbji{mQDp@ zFnlNn?JsXuvfb|k<`|FxrM1ES4rqg0Nnrgry=~I;rHH_}-RUeEU5%RbD#yMUKs772 z{ROo<3zx&q9P1)_f~A0^mWLSLO@{%>DB%+hD8@)Pqw^BXr~*ynDg(!-ARbjRQ)JBS zK3AkiY2(=>SpU_cQ`K}7mDzo=@#HZ)fm;w&xPRrKS-9@CxM#!J}DXU=jNKIa%Gz+Q_!e($d8s zCIyp*eAq2@7CE*4*Ek0Km2}{c#vHAWYaP!SHtD<=u+a?gYQK4}QC0xs1{(c^6j}-6 z#7p3P8X-BqZ7c(z-$20bQ){h7!RYVnRKh>+>U+>g;R9F261)( zla+`?05Lf!y#|Qud7Eh8xLx>SKj(7Qe}13js=?F;Z%lrxpnsrl;(>*C>0V$rBJFL$ zOBp06s-Op-hRBPiDZ3nl3YQk%fQ;`F4Z8o;$UAodBK66RK^vwbvG7Jd7RcC7_pFh3 z{x=`@WF_AvT7z#bpruUI?-t%s$`BH7evG^!?URq?DuvC>?5V6 zQ((?njF_9UjEs>wwLx;sjRqjP$FcmTDHt8-=yiGDi+x zFbHvY^WS%%xAXfZ4# zXZCy@Wr=wan!FWa@6ePxtY=eD7Sdsnn?JlgTabIMSZ~OYC{qDW@UJ+;b<{O#pG7vZ6 z{*9E+arTri2Cv!Ig$h ziAzbmii;LQUw0X=Dl>Ct;qA~1oG$cR!4Lw!UHnSv!7^?{hNx>TpqBPmEMLS$gNm24 zb32vd1ec0#{BqA5C}VKdBj4qoUuoT-Ki;7ZdCrfdgq9Z8Ph3GexuZN?mUdoddC5p; zeiwdI4gYV#03=@s=D&ZGJLiwF)gh=Z7DMC~+;WZ=fF`myuh^i*+0Wz5Xc_SQUgiv3Ka;G9h)-I_=7;A(G zMEY+L_P~dOdfghtxtQ_WtulG8{`7HD~C4Ol9 zjt=oz9pau2aq6{0-=_jQXJ%g3wEVo;*|T$V5&u=ke{*wSfA}$Y1#^DSkIsBz*5jtE1uQY^shr$dIWx27&V@rE@vSFj&C1Emnv*;G zF+K6I{An|>T+=>L2w9Xhf7aY-a7c)ELn~(Z9MsF3IR_pGMalY0`e(C){#*XNb(y5Z zf%+=W)NZ0k6dt-Xb2&dQD?w1ESp0BtT_&FKD_qNsb(u;dPcRPJ6l*e|ZE^jp>oUd0 zdH~BKiE&*fmL*(iT_$M&p8}fg?M9aw<;04oSl{fhP6093?rL3^N!F7)mKWp?gX~Rn zP+lllz^m=9tF6m?WYq8X##?#+!n(}UbEaX%Fn<Dj?fP(#=1w5kr-~Qdt}_8 z!x71$)djqAW@Jszo%VE&{zAw0))?j08s(M#AFiV;!1p2YP4N&&Zz1IUSfk8fK$!AJ zn)!FH;Josou~cSD_VOMt3NG(~6D37vK4BZM3>yO3U>u!I37s*S1K`!l~ zMwd1Wp0$NXVH;3`%-zQ!bg3QY=`MALdfxLxn9Fui(q6&Kfuj?5DRlF~);ZwLMI@+I zLPe2!Zc|uZ9L8>;^ZZ_3%Ev;TJZX$Pn%og;UeDH8jle1v*H8vQta8>03GTlE^V|KnvIO{pFle>We=*k7jWwJ zp+nt5_YKmrKjFjc`1NysbDk9txC6hLA2ve+at2ELbI5%!^a@P_5N zV9t9I4t%u1ukmFUyf#`drfGxAf_k*ashEHV`L<%_H;0rn-Gaxz!SC*n9QTK0xC>fb z;j_l$znH(;Q1e06H>nA0Oqn-eN(?<$l?B83J<{Syn5jTn9u7Cha@ORHm-rEZ9vtqa z(^sacp&q-T1y8f>k&0a)Lx)-!R0t?*g9-uYuhZ1;(yZHD>etSaO1B!2maRZ*Wz8*= zwt=ub_$4{+ITV&useTcHZza3M+p7YaWDj(-EnnEG^8ZOp=Rk+-iAYl`;pjaK-Y^}S z(n&tQQ&y|w^SiVK=JR_TYCZ8UYtc8ur;#`Mb#>fXE&8_LeIp*+6pS<@5@ST7plXK7 zJJPl{f1@+$Fjque>M?04J91-DgnnifsF>Bs<*oB-tc`^Q zxK4uUH$3?yhhZ8GJqA3Ms5=B(xztm5R0(azyC$xT@J6ha@J6ha@Fs#@Ww2fniG`mv z1@F1Mlgpw0T<%oQ%AUi`PTN^%C09z?dyrA?>=UHMcUWI&KRtDz+UFv}Wb1Y~)v?eO zO~h)TAipzA(cf5x**q2nmLp4M^b$-&x9Uq_pve)kx<$77Wo_K0_o82zDUxhFIYMAu2Soyy-q|0faerL_d)mTIT%C#mFFjLeTwn#$UQ z7KinaOMBRy=J{EY7C!`ekR}#NaAR_-``mr}Qt=Q(Mrq0KVWFfi_~IqSc5!|boGQJD z#MN+8E-k(VIj~r@+@(EecEiz>r>X&pB>yo>i$AI5oIfmYWLoxitSYT^X?e?H)8J<+ zR?9VejwE_EHTZwDw9p&6a{im77U)%*BORaB;eW(u)&7DgM@1cjhzdx7NGPrIzfJQr zB?@4_Kz4;n$*>^Uo8e)MN!C-IgV&tj*Ct};T_wcj%)Ca zJqw2Oj%`%OHG0Q3tK*uzk!lpzk|1wlWk{s_>JG|*zU|eefyVjtz$#(14~=Ob1nZ`w zJ$hf%IA4U*FOg3R;1L%hDousIAFN)gg{2{1ftZq^l$T1jVOZr*Yr(fzVKW?=g~%#+ z#ri(Y8gQv6Mu4iJSJ7Ra^+7sh*ha`OIuOQUA9ufj-OFTcs8|iF3UhgL*5us=RXRo4 z7Il-7eNOfc{zz5}G!TowWd~d-)x%>^IhW*SVL42L6x#;QgcRHD(8fWE?NYxuzeme7 zpWh9VEf?T!!;j!R*=s3Qho03e_bSWvdx$f#pB{lYYkktmvkBs?DiWMnorKkjbS&Q? zm|P|;s|PgODxQ}VtTc3XolC-@D%b?STBtw82XyNV6UA192yd_%@Z+`%t&m<|$A^}9 zLt5fe_XHcW?fh;{HlMF$v3IlBi&%kfm5t9FCESlE%Rl^EufaQx&}w_`<-_!Pv& zm(tYzZuKA*I>o|xnn1TkRiDun6p5|?-qjw5H#MOXOv7S|>Rg$GKJHr<1+`siXnzLX zZfl?5Qcq%Ig}!#a)2)6bKI>LbL!NS1MSS;*pi_hgp*w{9a;^lNq9T^?zax&Ti*E3c z8>+j^D6t~Z6y>f45Wi%G@k{hAA90Py2leXd%$u;N0o{0JCRaCb6NS{H6TfEWNlU`T zJ8>LpOs11GIKi8=3ooTHGdE+%Sf_;c4;5if*AloSbC&bg62}n)`zEZI;a83IeCH}@ z>2-h-#88n#g^X!-c?EP_UI9HFAE&@9rIPju}Fw{SYhU_X?%WZL}doWJa-CucI z=>=bmv=l4q&d-q3RML_cFBqhCe8}gnx9MuFD;-@y6APJRv3;9=#B&jSuX}lJ24A>L z{)jjEg8n`>(qy{cw6rB~k=FGlHU|ZBaFdPe%?R-gbgQ;~`5&Wy;<9p-#Vh_V!GHyv zXTeSesl*9j9Q$0*7}n9jgxZuAEQhj8^ z-Uf^Wl3AY?zr%JqPjRXZAbad+Dn{4tSYlz$p_(hoETHXzq{?oAhp`Q&qyygZE1K2l zchvFAo4wI1)aW5wL4|8A^owdr4LY zzl^@JWsB{r{1X&?b7i&GX|2UD?q&Fu+k@^k3>!D#CeeCPd$^NBJ#YQip`NksMvpFA zzoHw=VtfaF!7bMdF}FmO&qB=I5R5cxmK%fj7@h>v&7LYTnv>x$vqOI)m5|sj?Q_z! z-Sp6S4>+gbhG?L6l|5XOL}Je?FHt zA+2SjyU#`}DwjJn3s7(hu>2?%;QlmLj4$4)gGV=xH^m48rwf{+94pwZTi&7P#?W-j z3c*;m1Nob{NS$UAB3vqdfx~nd=h%5HjCb0QzL-Fxn{2|cYTZgyM2He}p&|^S_uza_ zHukl|V@C_7eeF9*ECsf9i>+&V3fJ_0NV8%uSTno_O3NbgEvNdq(;6t*g2liZsq_Y< z!0Db;{4GI&b$hI}gVdjC!L|`d+31fcWnGv#7_RS<@W?oDF zk zV;!VgrfV(!N4YARmE|GD;<05N;t^}{FrvbZ-tLdjWm-Pupw;pzXrPm)@}lh7bWyf7 z=6@&#_|9@Pu^y8GH$?nqr#9b=^%%6s#h&IESxfZ`sAE@(TfHEaZbr@B+5g}u-<4fU z*kT8Q+ydu#!z{Qh$JPg~4JDo9d<9Utm1~#VfaI?Pq%KQ8Kzqg;pl&y0SBV|?v7aC!@- zxzV373JDqRsbWj>;n^@ZBjO{%JmMpacV!OSYvAToDtQ$0DTGY8oFijDL;D3BP~ryS zUb}A&f^~=SPrw4{6xc}5VEXsLbny_8(5ncMEB>&i^T4HRH49?<42gaAD$6u&>buLV z)WpxueeAA#twV++UgjYeaW4HRbep;GhMs~~+Ac0(PBVv*TH9T*NawWzEO5E?l}hyV zyzYb&=W@>*^mPN%t0?Dk&#$yT6NfT;;TL19&#->t3a+0F_lVV*{z!D-7s(krF4j|A z!F-olm&rqhqO*E_*86Jt|IGY9>-pJ^U&~(v!OLWKAmQV2QC@={O;TtYH0rFI>h-b^!dmRaU9pkc{+Q}vrwE0K5ScG5YZ=|5GxIjK9`d_yS-+A z`m`rz8ruBn)AFX_{?b*1e|sfBufy~wa@%m%anp@f{#zD*NE}mcbHUE@ifdp@a8S)?!!U}wJ#jACl;R@>(k*E)^Sn(g> zt%9G77}n}q@ARA2@&*Ru?bksPjqmFgsw9X zAN;X?6gM4Vh@`7t?Z=&qPQ;+TE>+`Brq&&7F^FJ1r#QS%$A^qGptV_J_7tX?^6ypD zGoHe+ru;iGoay8(;R{x5_go!-)AT@7-yP6l`{#uZat@Tq)}m?ynagw7%xRulLY~Fs_^w z@n4wUa#Qjajt%KYUgqM#R=K6pVczdBA8@KaIc-O!rFXJOb%RNioE|Hx@LY_vAvgB? zSDqbp+N6{)uO`ss_guKP04pL<8ru(KIS1mqotI*L3&`wV#PIaw%KFH*ERmg`M5?+N=hB{wwM~vx-zG+--*5C3PBrCWP9E8Lq$njy0K|L|6>8+HNEKj$wxtt(BO`Dc z#l4=o_%&(XF_DnLZRb|#i?Q=Y0BuV_742Ie+VeR;6Sn?6+?A2(2S#9@78W?U?W_JFb@ z4un)fwDUd^_aq1$+)-3lT=-^3Tq0=?)DX!m-j9hN?`y<^u`|o%Eg_)*b^>Oi-lh9^ zo}@ku71WuAkUflnWuR%Ypnft9k>@NvCl%*Fawy)n1)%-)v5xSArP>)l9V(w#EWe2o z)skv~hj*FF?Y&F(4v*2dLK5=B!vT7+5mNS!?xkv9^KEs*Q3Pq;5kQc$D2O1jX^wL& z^ATXR7CF?d*8Ph5S{-i1iiILMxw%u)mz+fFd1OLAXR)CM*?>GzDbRv*JqnH*4vN4@ zB;IzB)hWFIS}bdgfS`zXmNE4juQO4t!a8W$Q=5SpG15}Z@OlokIHv;e1A!VHEiN^W zC~?N<_#hVAkV1S2qtI$ zukTH5i~{EoC9*o4peX|75H*S_i%fG!K8;Wrc{dOrXpsQ2SD-|EP04;J+@1YXnzZ^W zokcdVeaJ}4Yt7O2xRAn;G_61L3aY7hg2)8a{x3^&DugP@w?0wP%Qp7Bayo4(rw~Ll zkt>q|NtaR(wg3n>WrEhlu!LuRIQ5k}OngP1uc&8PbfOfnMlnvPL*0LNsT(1Fu*>=@ zhx#!$km^ens~p}!P!`x(Cp9m20=sLK&CVK94;DHdwwi@e>p1)XNmWZ& zvgG(mRGFjc^Q0uVo*kL}3PeM^^R5udGB$^_7&cUE1 za6Ahq<1*9H#;El5=n{7kb(7w$L3}bcXX{GsaxC2UbRs*>2zJ}m6%5b>2tE5-mU53? z$`+`y-9_BLIxj|OwVV2*Uu!JU&qYXM{MbS5Pz#|jbjB-cm9$}G?D?IZEp=Y!pZg7s zvDN_cjzLea$-77O_j4EXq|t>N7v70|>So-FMSW?^X*Ivvb3t0z!*j7kKOEpXg`}dw zPfdB<)KmToxAob-~hyJCFca* zr7?Wv{5PWF%&h0?zS&vL5}|r`kenjZEAekK;2!CQ3alCu2BVQl7>&4BdDFrj>LF?M zPKWt85ep#$oJ71XTLDMx9tQzzhVa3eNS*+KV2X-(1viLfI$tFQfXFDvyF6us1@2O5 z=|6vg;Asgsyn;Q%vhj;ZBGrkFA(9h&j9a;6kh?bjI%QEcnT+QlC+nLRL_02fegfwq z-Rc+6PGW^{8;>{O(1h(PNgGJ<>P?Tq`a~pFzDP1*80|Wfur(&XR`y1J%2mHE$OXum zO{F_`*ZCXSQ-K6Iu*7j!Yz{MX2~ zYKP>`!TQu;r=%QlsnCBPaT;qvs7UAM(Od|ly{yzM+ylt9tfx~wEmxr7#4|Pp@MtXt zy8h?-0z(;9tn*q9*sVJSsqC&pO}QF`+GcVSefPdB7w2S9WibZ*+ABfEd^Sfw!ceD`+_#0Asm$dzEtuJdjL=Mz!2bbbQ{wC_Tzs6e;jnoF9+mn z2>ClesgN!)7_RbYl_FNrh#fFmJQkAxayOO@TlKobu(kUd>7~Dmb~_`7dIqmV_qa)q z)_79^{+7`11OA}EIw*eybQaugDUx2Vls;)7X!}9wgQKhSEI}#yWsn#2eiM0|UjibX zyCCCQk{vKsKD1xN%21f%;5cB~`3R;?L@4SY;Q58aeDG3$E^7toGMp;I=6oDhh{v&6 zY3YOHxiXy-))Ypw{phrTSsWbGI^$t|crdQ0lOc?YP#=>HrhniLkf{J<0=Pvr2$^!T zRPu=)Wv!A9fd8e{8zJ#74~|}Ffm^Mg6lwJt@O~5z7!W$)v?zs z{Vkab9EFu3{Wm6*=oVvw9V<4&wDq4D2Sj%M4eCv1USEHE$F6dH$Aognpq#fPZ2|~1 zExX3yeJWh`e~)F$bch8kO*~cEI;1yODNp(PV$}xnqD=NQ_bfO1#%e4aD%m?BNXry6 zW*q6OG>6HIUeL^?f|aD?GHJuG*z>iXnmUaB`i+XQVmc)i^aXHNNuMP8kD$YFu9QBB z^dIVi)d*dHPYR`foT4e{w@!2i7=CK^fgE(ryz1Y10eghb?@g)+J#QyElaejZ-&lc$ znSy1W-y2+qqrAg6D?v|ftOaS(5RQ)5pPMDl*1F5tL66@6d7}${AUg_A49UN~Rq}6u zLg6#ioBW^Lg;@HQYZJA zkhcDsJmpdwTZ+vUZ025|&EcIK3sDin=At)47glM=Rj2JAgHz^K=xu5VD=H@mD_O-+sWx!63eA2I zWmkaLR%oUPFWKve6Ep=z!5}aQBV9^5ZQm9YbNqt}mGeB`p!79`*P%Js3WyG|QqqP2 zZ1qt_w5>hJA}!s>mH-N9*cvqKf3-Gj4J70nh*2~aBLwW!r)z_4bgJLF)t`d44cN+? zSy!}D*g43@I^d6hajg?4v^%z0?iaD<3JvC2(AEY+9&>omuDvZA9kv6~(q~8rEt`}< z7@jXp)~O=2rxoL~4)X7CowDdeENMVp8uu33qo}XOl_JCmQJ15bCeuxH1;# zYewyayukW79xhO{h0TipB#xXF#3?RYmGnv_H|)Jq6RfPY7{0dJ_DI& zq@hA4srV2Q_!f)B)~<5J>x!ES-OpNOkRvVwg94ZBnDmN2*5Az)H&MJPmHZFh`3(7S zloHhi7ktip6jFq+`i}(W^t-~FD$P)B6vtH}8eD@H3AN(+vz_%vX2Cgu z3-L?i_#kj9x-xJ9uZc)=yk1{!w8|8uKVAdRhtDrb`8ZPa){l;fQSR@}1U|9QQCiSK?400!1x z)yd>oN38kV>K@6uTi(G|knl9y*HXzsbc;9!>$3e>P`S$s+~wu9=MS&WNu#yowF>T6 z0>`7Z!D|(*R|#%`*`-1VK;tc2tFcd242z$8*m7$tLH!)reI5ztXY^q|1B}!a_hS!k zxeYaeot5qRP*v;2kfJDFY?zkmj9GXO(~i*J58 z>W>j?y8Z3im=6d=|}X2<9E|6S~Y zxcPk+_E~(px92N2E{|Su)0;Q{rRQHG%e$9%d%e3?y5R$R?#KtnKQ!sV$5W;%Q-|fG zJ*7Nz|GebFY_b*9OfAe3iMZd&}5-4uPd-82XOZ);sC zoy@JEH*R)R0^j(Rlu9ia?g2) zlGgeNK^hb+lL7A8B0r zT=gA>9JmM{aRv9QbU5eB{4V@v9M|&`UgG+d`~}ER^G`iL;nyzzW%k3oj|?#<_56hA z)$)Ih42p3Mn()0^{s`oWIir_Pcwa65VC3IxEmVYMlm;a=fPkgk?Ki+fA(k@!- zN$%%kOt4XFN*Id}Lb+!jBOYzUKf!r56w&j45F#nzdV~OZ&ufi%Jyz_PUTuW`ZG>|X zGT%c+{9YrBFv2s?WAZ%}A-`LQkohMY=|hb01|$3h1jPK?KxZJ4-q#}pD0=R=P7gOB z1PLeHZp4p*UitiMgiODPe~h0t!u3YT^N09Lco_e>BOHPdtTN;%_8l>Q6+-+ayoP@$ zDxnM^>f3u3LR2l`qRv;nwUQLJWtMjN@zmD`$qcl z2>tmcBV3D+&)+uUZ$g*D_eUGyP$PT*A@i+;eBkqZgltDTLVowJ*kA;ZBrHJ)5GK5U zko6yq5U5C49In4N+Xz#QunhA*wr3$iw&!U*-g6>CmiJqPEdL;o!S7WgWc)u6^1a_7 zyb0-9MwnoPQAT(YM8)Te5Q3Bv1|S64CRC$xxOy)}$mgfwyA;^1F_4Jg);&@v6s<@dhJ)&WMXm8n}NS?}~HeKq9aC_({kgYm^_$IPwH9$^sDw zUGN%-ALGIP0ch3BLt}Z}VdM|W@B5G@z6Uzz#o16u@up`H35}O^c>ZLE_zfNMFYNGq za))@=4*92di1X+e{#vi49pVQ%l*hcG`QPl2ziq!-{w#feSN7~_xpQ-}a&RpDacpC| zY+^9)^e1L@%-Jp}CmZEt)6y`^EF`#WaGAq*a0TNKe`5b0#Fn`J)%|<*5T3kP9!1?s2w{$Y5Gi61 zysoz2uE8h=eWJLgqBGJ(XRw6!A##qr6yK+e zi~-=5BgA{H=kQst;E$Cfj{n`Oz5Z^|iM=SmDV8Xqnst|AsXP?}GpuEJ-Pj+8omOqz z5wM)$OgezGI9NB_4FxlHqj86YjB`cOJ6PhX^w)){CDBZ>R?(1fvRdn~Vkyj6%HSe1 z4ntP3%GR2K7*8YK+bDf<#(yNtiqj0+aH<-c>CV9p+;a8fIF#eS7AI_P;a6JEiG&=V z#J-z4-Bf9%qE_p7&`nn>>Ji0?)8kl=`A)HJQ`D~=wnH$T3Vb-!w+Ev%uTxP}ze9^) zcM1LCh79qE5wTncf%)TD92{5Fx4AU#z!5Q7D-2T$VILFQvI^HYq)($4IITypAK{ej z+5EH9dJ@~Z&Law2p+7@!RRP^^jSCyNRI$|V(&9c-v`Gs(sWn(%@m=ebd{xt7`A*&8 zux`=@&vTR>+x>(8hcJJOMYdg#CHDncwc})xwE7}eYVfF~3$x&0nORW3EIGDVzrabS zIH&a+-FjrTg=fGvcEYjs6)x{z*&3%eKbc3Q+}hIv4I^KG0#LeKS~e8a<5I;2LFl*9 z;KVeq6JT%_xzxYL;AL?NM(BIdhOvZ=DmK+<7D*WND^sC=5qObS*B}cwaAmDobJ|g=sc7nm+=cDl*qG5Pg^73*b%ONS)Xyhzq!m(;3P#x8#e}^8~mAzMO9IaWV z7@HfQj(P)&CZ(gb{tRny^yQ5(VU-PsQ{p8mZ6PU#|0)GHZ0}|{77T4KSEeKlg2dKzQBuQV`;PVIXoCX+_TKrRsd+6fZT7(W7^7TAy8;z;he15Wd;{m`?%&zS zt)M&*3lK?Zjkfd8AH&*v5losU3dURnp=L0qPL43GKAH9fhDx7C%y8iNq4t)@k`6-z zhj6TM&1fy+zp)HciW9Z}gDOK~oR4!~y#JW3LKNqdM3htpOBcFWgLOzV?my-pw2_)) z2G$G2CNyqneJv4*(&{R)WacvO#Us=jdu>7cg=P8!9KA9&7P+$P+~%*bfS1&w?hd6t ztVaP6WAUa#@^$5tm zWY_cIa#-|Qn3u)Atpi{JM3WhXNn&Ri&Zd$6y_Rx8cfdT>a&bCWi?EecN@Mm}zcO#q z^9sgMqp|W(BEXQ0l`L3B6gDEK!*GGQQ7UnvrpF2aT?0g@C_VsrUMhAyL#nHy7#Q9Y zB!DGl8b;I&LW0lLjmK<4uBJoln!n0G2oRL~s|eEZ(E(3Tq5?S!P$TsWq%W}~t2^cM z`_jz&LeXX5qzz|W(MmIKbgTQ5TF^zQXWHa}feZ+r=Q^9KNoN?})r|-qSZiC_5%g15bVDruv9C-!lR<>+YvUfvH-;B1Edo7^y&HhI0 z0&`b}SzfLm9$f$I_=G}qkmcpVI~+EgkVKE=+GalGvK?2n2V2w~3%7@^@2fB_fPGsL zFQdAnYs{zCn9=RozFUaJ)gsi{G|0UiAcMu{(VOL#DvTw%NW#u$TJ{c9DpAoKrRa2> z;BcBX5fMSmh~w<29w+qKf?#G4JnW!o<4c>9&ao@P2A$UZ8_egmtij@VC7K#$`M|*5 zAj^lc^mbKAi!8l{<X6344iHMbq64+<6P4#E){=+99mi@{bU17)y_dLObG@f!?=s*om%6v)*2GdARR1T1C}@yT#9w~ z8n>3L!XPtte~QjnX~C;PH~?b7{*X;`X_kT5DCw{sOv|ps0z7sv|Dt#wfPjk_LB^Ws zP`6pnB<)gb&Y!`KM!@!4>pmrH1BDKrTV})lK+*y0Ci4zSIU~c=i#MVIBc=25^e&F9)GvPybqRe zWb>D@xms4EE0h)p5V83ga#~h5+OSD;jr7vnV&jRs)OXB(cvgh{eqz^bE@*I&OG+1h`SW_W&`2hXe3~Cpgrftv~CCLHA?bhs5Z4);)l` zr2HaV_W)jv!@LoH6PRcj28s?rL&0E-f{lI|yPU)>1?>IP;f1cIWEdQEm?-iDh;T1w!_7djOAl69q2{O1=oC+Dofs8j1M#jdRR}(ReqGWbhe-z(x zSdW`wR-UF|3NsW{_nhGk!#C=OGnwyhW_w|;-FUS=fr+BJZH4iqN&7;ud0AyS*s|rY z9rbErvLua$d9b`Yk??%1x?5C_r`=<`iS1ji?#FgBr0buqzo9*1A+BRov$`J!lVtNA z#7enk3~~prfVg5nT)iH0XMa9@xHoPTrZQhTt-F(GNm)LB#sLxLf;A_ahPWk7OEV9b ze2n>?^E&BV!q2}miAiKRd){}?HU3#f?D<(&yaKJtvRN-1?Y2RN-zTaKs zSFjV>`W0pe=4YBwgFCQi)q0W9BrXx_2g@(!?{Zo>ltwiZr=yP^Eh=)m ztE^kG%!?5=+r^rwX)S)Tfj51uTdl_)rh!h|-n?;awTh+Sts}L((Wsd_air!_E$j~^ z-;|5X)o-nvWgEJR(Jkg@n`LW@(634}nxz#QKcV z26s^g6=FkDFHGu&c^xI#axInq0TI+2km!otG&hm&hbm!i0wO}TZgpTs@ga;pJWZVn zhG4`%ZgH;~+Anz#1jA`-15AOHnADy6)W?l|=P>M@4&NFDz}Vy%&mdD?BHpSWI=u|r z>8%&_fv9rIcyZWfix~VPgM+tszv`op27H8Ht&K(HPBa!{|Ae$sqi}gg--Ri zk$_tJdzc&%xwXLyk)ezKLKuwAV=!CpFxMK@_R|3QdH>O{VXCEA_2Xcmw0i3>?|499 zkH00%cH#LbeV6?1CVvw$MHj2Jp2n_gu@YgD+*oB9wuSp=C{ z>{idCA)AL;0aTJ2=nUwcyc{F@WEJz>^4%1|#p_t0bt`(o(J;6%OpPeUTYJ<7hjlM@ zG_{s!{YqBP4D(=Llu0V32*yU-Vv}1-HB0J`*t@Q1LrMv6?LHbbTh|GcAbL0uRJ=ot zF{Xw#u)yTRpp_hFDuyKk3!UskvYSHT=S}wPzUaRQflAs~eST1~C;yqv77xA)**|!Z zNm@}QeXG$gCDBwz+hSw;+s9}HP$;q)PLt-yy&mre3&xiF5<`_J9 zXxjJ(oe#wh84_!}q&KSVKlQc$C+pdb^3Vr{U4skvUecrkrlK;f4yw+8j*2q=X zY_eflndigv^K#lb)(lleI?Wz=94 z<^8%H1g>xJa_ND98~EgkS8M$S>RCFj%WOBw3&OiU2s^aBp><^mS6k=#(kQRD!3@b{ zl#na5Y$jiAou@HIf4Nc*Oc_|rA`XgTh5TS@yCSc)&Qngp#1(JUFQ&I%o}Mb!Yi0!R z8OGsvxpkg3v3mNNKFENwD5iom!=m|vd=s?X72&^owO{A)oLHcye<{)wvYB!ec8)#GYRf zc^HZX-A7vBXL@SH-gTa-$Jt3eSEiBcDBFPp)|%xf-s$s~g$Zhdzp+yiJRi1>+Z@`n zIONzQt=^@L?`Fo)UUL;xO%B`fg6}!oIC}mZPf>J2wF5s#x+?=`9^S&uqu4CpTjsYK zC&E)_B@QdBlA$e=wbWl!=SnO^!4fB|CLC~J^~ZW4E&E#xz8#nsRH^BI#_>U%hry}3 zr6OOE@g3;bc?3Kiu7gIJafG2vJgrpP4C(cu-h>lBMN4gjZQU?L=OBuW)0R3@b@t?# z6L4eptmPQ)(_{W2?$6-f9dpEtBQeJOp1KvDt)S&O92mqHKXe?1K~yDJb!KBsj)1oC8dkVkA5U~nyhTpoOKx1SICYtJL z&KrQCM`?ZVM4&43G{P46uKXvE`lJO&JshYKrlWBx=|QY40jR&gEEz3BuA;v)1vks# zqI5BB0UPHSP+ly4Gg#(NFbds-B4~+v4igTe%zwf(_4i1iUDoE3T~HM++{P0D#rHr& z(9GKk@L|#}#Zy=oKKFju^FEe|gtmDCvrYo%GHVz@Bdg@$?iOa}p(Dj3tUp3O#=hKb ztDO&XnGJ5+=h9+sOiNQ6#2ON^Q4wLvPsT3o$h-Kj|BAq?nLkzgCuKGVsxx4Vv>+;( zNrwY}M%BO0_?{_ul~c^&ZDJQQ8lkJsn@e~?r?!~o#4QdqNA`cSU15RdsAQ(JD=SW9 ze{69q^3QxTw&M$VBB|XQ$P3s-Dz=9FmlYd*(ruE8XQ1^M(v$jtk=KvWzfT(!RwC98 z3Up6#2^8*U#Z#(f7#&YPo;L7NkW*5DYEV^5D$sYQH0+k$_0K93Z4( zZe%p{xDC7V3p_4tRecenx#x3qP($z%FsD&kwM;ULV3gA@zBF6qqqsmk{~czCNcx z)jB^K?Q36Nus#qIquRtoyLmLqGvq~6=K1#WVt?kLUzZmTT~%H*wbsv&7rQc#hqO0X zzmWD}4MnDB$HPq!yPoO=ZKv0`&Hggy^x%q7R`=-62SR43*wheWgfhe;OI4bBIL-Pc z-N|v60Tk&_{HxWla05TA;-nSM??Yp5*z|>;Skbp(9$n)$GNegk0!grJ(-l&ourx8Uqp?X8MpP(&jz|lCxf82sMq;*FuxmgelVfc-T4V;*`E6`lE-yCR; zzwH>ihD5TYJ`S3HLr6l&!1yi;-ZO2t3dvZ;Y)oUm(-@BSNp8{e=q zq#Lxh{u&jXz7qdtRR+GUYA^@3k3SXovZ~P>s2+a-RhW-wQ48^G{Gq^?Eg z9F@sCj4V(>9sb>Y`2z4L${zYY6Yl1lytzs7{8*%TPU3eAzp6U@T%$|%yKI$t1B4$- ziNECW1fKO1MW3buRGtLYz?z)Pxh*e*!g zRy<{tVBarrl(qZ)ED6W(`!S?XK)Bh~YlH7cM$@n7ehe(S9q1Zp z>W}R+Jo4HXKC7qo`7V_)Ls(Zw=@G zS^H`9hwa!91B=FR>4nZ@Ll^{sah-#WQt>&osskG~>TDQ>RXng^SndPW{%2=*<-c)} zr1`+Xri1vw*JI|%yQ=-uPELso?7O%naPT5p{oKMH{5K)eCk6`Suov}DgmPFT?f7eX z6^Y=mwTUE3(9?z46KnA=t1fV==@5SPfqf^Z*9LZ;oK=VNcLjD{gxkP{6L9!-;gmY& zZot3WLNhlY^WC9&8<3Z-l~Z9~7Qd>7{5LTES8O$Tx0Jzx`^$8EDBm0Lx*2vzB3`G9 z0SvE?ga}8f@2+dFx}$Url5ObtwBvju9wTKO&fOxbn08>_f|z5rIpbiV`@D>OT(a0(B47y<&KSgF3D2QAs~u`ixl^r!&71YQ6jo1SlEHNc zEV5&%LnQKRA7Q0Oym`nC@7G@1YIfI%r=G${3>*7{J_1eSoF9R|x>sW26*x^-oS7JW zXTz>NPSZn{uLnw#cD2g#zaq-veGUHS$83R{(m5Sv`R#$`N3O^3k=VdlFyz_H0~EyR z;Pis1$*tlzZwidSw3omxZK}>+czMD~{6lSw5+L=)Aw@{eM;7KHPESO-qRq7K$JkLbWGhvg`k zH`7mp0(qUJr6WY=#`#hm+=6m%OvzzcV970w`O>WoZE(Uw1^i^lEq=GUJI(W5gX}pN zMuP*v?bFRgA~2UzM(rD3idpbiL7i-mZ1$pNYOW5h)sia~M?{QS7F>Ji+w||bT4o|AcI~DiEo+1>C=u*#0-Y}&ym{Nxu zl$YwV?awbq9-ex=$&b!>f^_4tcZ0X+u$8>k0)!LlK>>|%(%%rh5^o6sZOOd@ zO!P=}9RE*>YvnI61{f~tkyxKG*2$aJ%3Kt_>!&JO!DnQyVtj%qzYKp(T!|vGD*3Dq z|3dj|A`+r-J~cS%sH)3fZwOcN7q(Trf+^6eZRI!p8h;6?1TdX)szIkw9j~V9v8jv|zgmQkGhykg zE5#ktDqGX)aL1m?1uqI~{slg(g6$&mSv2S0te<>s^jp~B=CZXEG@$E!jSEw|4|T0= z&tDiz;X7Ctr8TFamu0Rb^j2V^%@)9FZjgz0)!Mw2XoiL#@tJL}#dT#suCQoN)qOBD6{h93m;63$fA*zo71E z<#iCrcoRt73a>y?@ejCf&m{{C*8+9AYk|&inMU6Nopbx6kGLK`(Gz7u0%krnwUt+J zgQVuDr>4qlV_81xSj-bM95ME(bXl=?_9Jf{63X!6>#?W?!WG=Sgzzs@^>9`ZiqIc6 zN9hlnqx6Ru@fRT{da|>bq9?S(C4GXE9DwlnWGVE7gF zE7=P3^`K|;Ro4Qr*Xk$4cjTYMBrp=r#3lnB8!?{_fjc=6~48KU2Fk(15n8ZNKb=t@*gNqsMCpB25>eybKS@ir z12eeWH*Y*<26y&k`XMOtPG=@`*YBa!$oxJ~JMo{$briE86vs(L_tSjw5Dli$j?9#5 z^h{6%7xSeiIMIgvoVxm4jN0$?GvjHLc_=f1%jdY)%RHW0i?rVVrKfE}!7zR|WxE(L zH&tykqnta-_^@&O30AsP+^25}G)_PRGyH+$Rol#ghVfqp8q#+J8YZBXlMbS`owJz{ zERux~_@E^-SkVh&dm~cq2c#`_PP7Vpm)(VMDDQQj&Zbn}hdi^N{QWC^`ur`yp3`;B zkj{-?r{LZH&D^`dM_ruz{|O|BHnUzMzIyd3nImEk^JAE`ObIq z&5{tbzu)Wso7e95`ObW2p1D0U^UTaM&#Y4T1$)17v2gKsO+7E^Kcs!9_pi8|_+0N@ zAw_4_@Oy$@T;07h!WsNU`-yqh|Ee(P}QJ2Y!<qiZ`;LF*w>SStn10BoVxS3iA^3l;(`qp>YSSFi!Hpx!Ws*&wy+dPQ52kM?LG_p zTDXJy5uTfYB&T4Ug`+JD1KFz!on_(4*8OSfUEzLf;X^?An+}8*4^08mo(L<`3LrbaPHm!>Ev0HXH-wC zoyr+xlIw}{%qvGl0wnCJQJ zbGWdh=&^y+Vd@&jHVb_9df0qpTNjO^3t1p$P$Y$VDb6Mr%avVlr0zF`)hwWv_@s`hNnsOOwrn z6ukO?7qHqHsrD!eQnGVfqojv*VPWp?<-q;g*!cV_Y}~WRCEfe{C#ion@&<2L1s9?* zdmCGs%v$n;_b}I(v@nO)N%u%bpsn>aE`od;H;`1mXT43jr$1APNej6E5r4W2@ooIU z{e^dpPL|+hQDE-efY)Jo&)oFvX*b$`{+dMvoc!U_vj_Hq}E3Ic?;-vFQ)&*XqPgih_%NX}JDD!1xxOH5(idy{O3YI@<` z^eq&f^X+v1TQg(UtcrQ=_CkxN9cZJl!12&qzxIIj zJ;&mk>ZZ%ukF;Ow&p<@btO#%nu)BUuQMrGM{)j=Bb!`rHv~o$a+4tYA)8yagvPVvv zEaM zc%nJ=*kxTaK9-w{xGVyV;HB|vIr(_|Qmz(GjCJ&u63;jmkx0*k!r=lG$|WD{wvSyj>R z9N?DP;c^%_SXaZ3`TBv(9JkCfagp(3bmEz7nxomfO0zexpY=Ej6Ap0nA*CC86J&&u zBr*1d(roS=dY-I5TD->Bcmf?Kb?#OF>=NK4UbU`^w58V9wrQJD)e2T>;WL3m?}CD@q5!>yZO*U*x~x` zZ#v<4S_6MeA8vK=z~91i%b{!EYaOShIrus{u&$o3GV=rD_(l5t?~HJ-*PC#Ros^)> z=lhd0d;aeF{hjJ`0#1Iu0+=Iv4`vJN1u|}b@7mpdUr^>q`+ez?lX36O+eQM40G~UTuufe-dOpyDJbQgc`WAst ziA_e60OzbMqt1l?;}c*zz**bVbf(EZ1GTrpq|h zg%60tjGprPOSEGh4c3;$*GV~f8~9KJ{)j=l*ys?J{_)XB$a@7=8iErDXf{NpY+Kx6 z7%jkgWb?m94W?672rF2>H!DT_J3n`zVzdX4ts4@&E76+yK(QpD` z^c1&YDX(cTjuCFlxgePr*PxfpZQe~y0m7U8uCQ;_;?i~ym~`wrZ8d{i&OGVrKV z&NdfSGAAzW?*0Kc%I_|O)Z{Uy7!(s?2=(%+Bybjzh`4A>-gE~`PND~I*&D1!1k_Ft z-hGt=6<}ab0g`#;ZirrdHow&;od}Clg=^B+-Z$LWNj9k_SGy{8M^k=YPr1q7;EmT_ zE7M(;;?HrA69F(T*mDX1VLqn-!YFi)P=}~qKTQ>rYzpe6n)Jo5$8}_K*|Lp=GysyQ zCK63P794%Higj^N?ua`?;~z%i<56NCf7R5n1VqZDks5V(yVJ3AsYwATYfvNS z#;I~jVg(3x6or4(5F7;gs#(Ydvev?Duia)UOkYH5Aw?kK6puskWB9sA)!!KEH#C*V#QM9xiEJSSUmD1BbP{U zBn8g(t?#ovdLVxkF8RnU9k^y>8;|3?pK!=Op<8*9^Nl=7(_*CwLR+lTpoQoDnDzNI zpUhg#G0XxSX5TBnm98kYq2{)J70HI2F$|KCPW0GEyOr-7YeoaC{=(wul|uirZA^Mm%LECyj0M3M4!?4W5F$^ zwpIi;LK}uoX+>@lL`UjY?=B5q6!tyY5PT4#H+M!5#{uMmeqI}RmH%ZRmH(aAzTDVLgL9^!`6b)Pz3FDxhG2gs`_>t`l`tnQ;i8*47BTdr z&FdP1uMkp(SCen&b)#`(YfMn#^@5l8tvj!3pyKw6IurxfLF_nBqnBr1M{yp&f5*Ct z_-Bgy4F=-QxTAb-<1>Rvy8s8n+AVc+7GaN>S-kwu6JBE!h#DGjEJadQ#&J^Q4172y591(qciXy8HG zQ8x&PE=;wCeJd-Ri}}KRD>y*Un8c^zX5Yf=iM}+jl^erUMirX4OJ%1 zl(^DtN?f^6uUj!l&$28CeZ;p(4drS&PKa1NopTf29jA7okMP=tJoVZ+2sfoW?cz;y z-*qX!_88?s1%7vSk2RzrMLBk8^^TJ}<(I&pqXr_;pYj@qVL)`O+%nZ**G-u& z3)(_m9CS+68P5-2tSUg=^L0o8?l{>N@2lN?O*qACn@ha?OQpeDw{?h)wvdIo<0QPl zu!?=dbblG^=;v#Awm;Q}euwKjX|I$pYN)=(AMuQJurf1`7xlNN5I+Jyy40>Am_tRi z?yE*xhVD!j3e4m->lrm{Pv@{>oYue3Z8H6iFZnWY!pyC8I|d`-SNw9_$oOjzuISB8 z!uCQYTJCs)4wMfqQm963tC~1tV8cpTouXv9dx#7Z&%!<1tmrg zj?CM4fWU6tzSsw(6Fn+V?Z;ItL`qa^#S%>yEys6N#+`a``F61f(h(4iPYOoL;w|A% z-!KO#Z6DHMGw*9S33So;vf$mMO5&}bzPVf#6oqw1qf&U4Ea)AolhjbiEl4fB(LQ>=U;f;Z-go%IyLe) zqAsu5$K6WA6FbN;gx})QkiVyxRJ!eY^R8*0Qzy z(pLg4Tf>+B@37YG2U8qa;Aqln#LU*V*ZoiH$G8|_=Di0clhy~@9jlp-)Sm9p6H9fd z|42ppt}y-LBHy#$iGT9x>%Qol*{^jpv&zP9%#I7sUHsT0=;Zb%+4zGtz-6EInl0&+@(Jjb% zOX_tOBr%M-Dc%W5prK17vAUBacE-`dAjf*9Tb-sp&u(>4h)kyaK?7b+mITr8XWbL=IV%)@ zRU1(qRGK{JE2YJ|?zqx+9&VqrV*+}P9LC9Y;_&z#W8A2$clGL*B+vQw`B^1od3nd3 zQ@Ch#=Z?vye$psEbWsd_sd(2EUvw?36IT*97`|-Bhzy*~Zygn1|I_fN&M=)^F4-Hm z7iLJNw{9#u4^5GkqeSOuSX=N%If12-mp{*@V^Y(%-%QxyT@x=`(_5M0b zmYTaXgLl!;yPopZm=FJFd{X==oM^pb#@$?msR{M|_*CU&(eHN7@ECRreoY6?X@lJz zj+nZc?7fLc&fl2!R36iT$`^3)9K10{C|3y|)4P-I1jVc(W?W1TNHZ_2yOAhzoEDUJc#|=|Ynfe9i#Y=dMOfipikzRsJ{wQ3oxwwtTvEENO zA2K;=`y^cG=+C zS^d}7PKU+J;59or0n6PJLI>RN%#6l2F z0u56MZ@f}=c%czuPfZG%%yc0U9^_kD?l9`f(*8#^xA#@zM#s^YYnH6do$AhNUfmgR z8_CIAJiB@b416GL$!|Rlcv@xQrqB>3-*0ffOV;dZ381;(d0qLP`QPII1a0LzSy?G< zpJW)hALgIapV>pFIaDTL_7xMS-!Qq1>l|uk%)E8@nKPzLnH@L}`Gn!$`PLChBpkXO z(v2{}%ycxN3%bP6nKbjZhG%#3t?E=|zCZBu?Slmg!(vg^ob6)BIy!{k7-`O2kiYyipLn&U&j4G#Vndbx}h_G5JABy7Jdx~?-}}v{hnvtb1iHGFaFQJ1xTM8 z3IS>Rp+Oe@FT}^RxVVK^=y4vrhAyI36>caH|DlsvxR?K5Fqt6! zf<_Bx0Pzwk1L7rA%49{~2La{&F^Q1-9YDN7cMV8 zv0GmIzh>Bn^U?eLqKxlnW!Mj9*au~VzbC^^8Fj&bQii=U!~WL{`??H!=RGoJ+x3Qt z)27cx4AaVJdfdD&8B&{e2UjNqsu3xfRx=q*xi_ZPw=`$ojI(zEG znW#165|~?OPn+%8KIUSWN!2r_)z(bq{+AmL{o>w4^-)OqhKzp$i@h0F)II>2wh69EG49Clg545_>}7>aj()ENvu>> zSl%>=iX>x;i5o>-S-7GJfVXxIvVb7>eo_;DR<#&S8of}?dWrB2!n2#AIJ#}0P-xT= z2{qF$gW8ENkubZ7@sE(DGR`(wB)M`Jo=FG6l*vR=d3F+2V~Uk!xJLPrM&z~T0~*+z zYH>X@84qAknwhcu*z32__%*uI+~PoY$<1Fcz5Dm7CAVC54C*?6$>iAThDdqs5WiYaP1t0 zKP@t^MO4?7Wf#u~%dVN=(>L%i5txT|Snj;@P(FI*?6T=K7lkgcBixxIqgP&BKArOc zGcV$nvg*r+O9J;C3H=rZT)%a*Cp%td+{E2olN4lj;M7wCLtGD2rp=mNt9!$cG@3XC zWYx1Kb9tEjxL&4TUp>3-`YE%7z9L*%J@UfpE5}}V@fCrgN5s8%9R$d!W7O|{5qYy= zx{+ERdfmCDY zMj(|J8Uqx6sOc3!3Rqk);l%gRb%iEbI1DJf0L9<$L7Hq{E6;?lo39KeH7vq z9xU|&uIY_G5nnF@jT<91Ha3aIj9V0pKp-4#JnSbgddOz-RHvVD0%Y<} zB{opR;+tUcS*!ShsqVXAkbiglgyw(hen(JP3UD}nLgo2+O;>&*_I@FII9er-|D!y9 zP%23mz6DAYat3qbM)?l13y3F|Ew}pi5JFy$x}R5~HN}@Eb5^Q45J`v(UH7z7%>Wm* z11y{Vec%yHXnlW5-yP*Z+)}X(ivn_glzFuR;C|FN&8i$Zfvvs)|AG&#LrxLgRms70 zcKxJ`3$+d{&x(%G8DIiGE7XSH@RzkXn9=2dK95(BBp+zbtn|Hhd3kK@q;SUuUt=-d zZzR@I=o!$mvhG=3cV3n`vkoqd==O{B?@R3Y50~!K{de{e{&33jPiV!4>@4 z!h3;`Lg;SC9-0g!Ng;q>zbk>>ep$>L?rC#DhF#yh-@ln*PtUY6I>Bz`h-cSKWLoK* zDD?Dn^6L>JcBZi2PKr3y-;HoOF!M~GC+VTT8-8}NJ^p9=yRP$0x7+)t&+)0f$++_} z*Y5UvA~BgG?e~UKc{1+2>`?~cugc+b_IqboJcSC2d60y7J0|a8E$Xz>MX_!9Cdr#Tdyr8jSKd+kSeT6__UZ-T{Vtw-FC))PPLcUdL< zv$75V57&?C+vhc1`_Xyt44A4hHp%$+~)a-AK|*skW)m=%UN&*(e!sJYndk2OK9T%_8*E^@)2GkQti9t~}8b zs)A6}x$i(EI^)QNKhDf9zdi*5H{25?CLFq9ocUSe_rj<7-{S;y2LNVmCYr=bmAVs6 zH2z*`{4JBj`e(F-f$xsmqwRF3_DXH^xRJK!*S~{@DeGdtmPbUS9}`>`oAgatsfEt! zLpzwS@f$?Wv`Cfi8AT#aGMwX^Rk``f8X8oL4w!wXC6-ar8ql&$mJxVlkP{oO!ty0+*@*N{>^DrzPen%e$Na8ZU6)z^vAg*1Way8A;x<+>YB|Mrm2`^0~ zw1tCW?10_XN>NX_|BC-;;@`A6RGPRqi2sWCo8`?P1`>vP5g!>;iZr&rG(INCy|IIX zrVNot$g=|G+dpKCbKd)Gf17u9Xu>8D-%_vg^tn7t81uj~;yQ z`W5uVyucizUhnLeN)D?2JBQ90udka@%^^+Q=wYUFp$leT^!@2)I%9zNbDa-$PH`Uj zWG-_AA^J|Ee*24z`#bkTs2I23PmlW<^SV>OPyL4iKz^a)9ax~d-T4(r##8$RYJvO; zbQVT%f`yk@c&>$~Td2$0_!WE%a^U$|xuI(h#ew~S^BngAsnyavFk-fCairpQ1JkipMF;Xz5Gb#I=dPY{?dkH6cZ;baB)W5mZ7%HD&SY59|s_2b&1O*4;#HjOz_zU(N7SVs8tI*i6KNDhba zWrx4dBVh3a6c*D)LNZt>=YxIrHoq;g_)J<9h75X(g}$MS>5b2;wD`2XBBP)OEfVnId~~F{sLu_v;8vdGelNfQsb&7O)YUNAJ|)^Xl-HOfOI0;zq|l}sPMB&fOWY&mVC)~y3zF0n zA)?7f)ek4xVK>T>F2IT%M^+k)HpZiRC@>vxbn>8G1+Zk#8 zds^lvyv`Juavol{Kt*U?W2?-DPc5p5{kauXk3%)aZ_)SWsmHeeCJ99LEtG%6KPhQ7ay?Yi@#8inn z5%Zq?@T~5mqWD$CmQpA@m8Pjq?yg2e)Y;WR_Nq})NUnc@aCus&)cO{{w5tVoGVK&^ zTCX;I>|~0AZH<=!PiqOqEq#?z5601Rm}T`Hb_b97%gL-Qm6T+a489nMj8gpthw{2! z2KT1gncC8~tZg9FmHTC+omNu|uP|yByg-^czNmKAO`!|Ss2{y1Ff4Fw;PgP0)!|WB zl$Ko)I4f{u`cuq$&CHC!yff<>Kfefnyxi)QbI0GF_~X9d=NH;Tp93uT$U?1)LI$DL zKz`@{nup|bZU>5Ao&=;~L#04|1?O3)^%L0xJQ%`4Cs_L@Ad~y^K*%%H2$WpS*+B8T zAK=K46nXZ30AomV7kgobeQ<_d z{JC(rW+g9P`|BC@qcZ&O&iEeBuxIYeXcFhe|MLtx3`6zxw@sckLoeLgScA%esW(<1 zIm668-Ly${6K^_Hb%BwTsTSpC%As^ao0gk(C0EQ2p@#={Rw^a9cj$7ZVn}nxhwSg@ zs|`)N@}TUppy^@o#k-qrAei*wJ?kx#j`pQ&Sb)u6K$cvjY0s z`##SIm!DG@jB6L0s6TDbm?Pz@C)of2@aeS@B*KHGUcfcI@vSbNS{tCjW$>-tCf7yR zE8n`sO_vSP4nEqck=L;F-34WDd~3VKS7PyruNFSn&{s@#-vxvG{d&oe8+pKn6CW*+ zoWt?0T@ol%!3b%ES1dORx69DBkIrE~~>pR+Fdyn!pwcsn( zyf2cxWDti_2AO+XEOWPUEN9H)oQT|JJ%O+)EEb;j--6hZdyn=tU1(B(()~*Uq#yvEFB1Rz zicwLUv~Baoe`%Z2_Kwnq(tRgwgL_V!ukluvbGH9Cg&*7dC12Bj=%slN=_@3Ch5r}Q zCxy`?l{Ay~Hrd?tUAjeSe?w`fWSq1I51009mG+My@Yvn~z9y;1jy3Nl?ZZg>Fw58X zR=)l#cA6;OGxh7KR?!#m-1tm=;2uJ!o$xequjds;YH~p7xl&4peH%isX z+ZhJIK7Thf<7*5nZ(lZf%l9=MWAe6>yp@o*68GF5IR9VC-z&XZxl^I!3T zvOLVmsZ*Xh;yCggoA*mo^3)@cl5XKVjc5uAgV=9MQ|Y8wBSYy^{)S8OrQ?sVI77P;rP$7Cfnm^ z*Nv3?FjDH6Z#n%imEYA2wAP;V^KG+ys0~lwc&vYZpNj^#!%Pu)Y3ZSFI~NBGUV^#}ohO;rl#%lu@!e#iN+7hmvvE>)ZvnuKTDx@E4p`NbjTe!1(ma zUzmeS0jGeqZa3nP(s#b;>FRLWX#Kc$@dWx)Y{ncZe{r-O1ci^H&x$zZ-yMH(Sp9r{ ziznbjZ{$6c7Oj`rq*@=2hu-*sVb*uV;#1<>yvgZE`GE;G+#+D96RyW~tS$+3*7l(lOU*I|QYAxMi&FSc z44xk!ynr69VyV$4*Vw;x@AQ|Y&6M?pJbf6u%xINs%rRQ!T*u{(BkKq#*K-|LIF63~ zIoC1eIKr#Qr@2unZvn^T*h;ONSI+e$*)K)2KP@Z%tFQ5UbYR?z17N3YrFp_a)VMp&Q`|O4J>}C?(eboqkMNgNZ^Q;SCXZ7jSdfe zeo-QligO)qyT4?q36O}qV(l%~zRlXVSo;BMf8W~uj-4e3;!8w=_VYk%A7Sl<*3La& zCc5*CJ(9ab*@>;;4z?eVyXd)NH`Z~?t&5b4>HG2KHELI1WIn%?@j%9Hm+5{qL(U}^ z{E$>g>)O1g=f|gFKU_b_0-oC*o#b{i&Gb$@y?Ze|^lxsz`MKmzirwP?$lDz{CG6}n z|5>@ab|;rcPEN0`-R&>w7K}O4{&K$c@6N{t(J2`mhs?(guh;Hwi$}5)GLKS;{L;qT z*U7QBeS`;W$bf~*K_(npWBwxj?{bT$#KJ8WpS2!w|64-*%GU&7Z}TymPB)4pg6e;{ z3+GE~7yOSFU5ipXE=??`hg;~opg#^)X22}YYLi~eF-uvsJu`O{Z?_C`Z_vE?n4;9( z2E`86YR|Cm5%fA)m2tjRIb5=Xt|OyEx++)v5dG%-HsG~uva+0g_pFkvtoji+rH!SR zL$cNzKUL^-1062CrTYPkc@B_rEtmuZ`T51xewKv*x%X4V-u~dLj=MfP##w1OvRNN=>GGm;-1h#t_@oh@ea)VZJ$1JF?$=>byFWo{RvdcGTR>FiirsLG8Qe^t46I{q6A@ejiM1sY}8iOT&K>tTw4 zcKa$C-`Bd|Kj1mJNpCd15DYzBb09h#Hz=MKg{m?d>|Q%P~or74m zOmktuI44 zP{AQ9&i%25gLNvW(%|vzL00AZm2_&3i<9pNa*vq_$lYcGj&kyLpUL}smE7o-Z{EY2 z73`31sj}jC=Pp+9D7zGOqexAORZ&Y!5D-l+HM`6mFSyxh5z!525GQ2PAlDJDqu17( zn%Qxb^MV?L`$Y1#VxkFC7Zm0&9K(sPY1;K9{bG6ZJAI-<-vXDRJK&E}hHk3{Y-XMY zsUR6xIpBACM~rZ_;Ct6;{**kUGnEYdcbBOBK#{*NUaN8+Ho+a*vGq^g`Ul)#+?_*s z%5XIK^loY_n*8-nKqPrrB{URC{;LiTA<{aBSfsJ(zAcI_`GlV}B2MJpEt_rPoOP3} z<}O1o$#Y5)cO8IoN{8-@uW8=#_3Sm9_8Ym?Nc>ZzDA?YPzv^zWMrvM1jNu_6MFjOh zY3@Y!)ztWf$(*whVnw*ser+%Us_|E&NI?>x@l;+j-`ODliDE?LU@)aX<5gi~-SJHl zI@Kimp(PGE*$hw)rcD?eJHBqcG2KgMcywqF-wLl@sRG_e6*5H7tlH+AZ{fsG6m>ND z#4wd9;BBCpGsfswoC91^QS%}JvYt@!Rj!JvvwRA(|)W^;_xGfovX?8iT(jJl=oTlhEl zm@xOA#2ef25k?O_2!7)g>89BDHC zpM9|9=ePNz4{Mswa>H%;r4P3YUG25#>Tk?SUUd*jW^RDJzvHDy%^nEp$&B-po2#;k z`d9@gFa6kzILMtR;R86jtEzn{h;|l}`LE^Qo_*(rGVV29xRgl{-hBAiQg*HtMZVAU z73O4$S#|J{o@`%(SX$N>4zdLCEU#>PwEKMX-_RSfB~R~!aW>9FHlb0+_$VK;(bw<{ z9=vyohPf#~I`g0H4Dbn;Bp^QYW~BMU92D+s&3T$IS+l-^N}a27cvJ_G>EVq#bc0We z;X=P#?NwpQ4*gk?XF3tR85#O#h|x4)ZuvC(0=uiO)GeXcNM49HuJV;8)hl&h=!tTY zywHh}*p7M%r>$O|H^32bBQkv9?chzy3>Se^-T$Y^GQQpBV z%};0qFom@6O6Z~tx`@UbH&W&0$;#}=^3DXViNqg@;2uq0wzC{zsc4*?EW#$Q0O9J$ z5N_>WjeN^{Idn<^K9t5^j&1E5e`vjVUmN>-UqtXz?uYF7L(6%O#Gj|TQb!*dq6kLI zE%rP)cxVu>vA21<&(9lDC6OV`_^rpn#o5_JKZ4gX?pBYz(>I*FRM~R8ER`2(JKp#x zZz5TGk_pD~LL4hiu#IGM32!KMcqWSGl&*lc*G9d;89sY0qnQ>tBvz7UT#E>i7(zi@7?q zdV}+!zxgm))6Y%5i#K(C$TJ@*`#K+9Gf}gdS6aNK?tao-a1m)X-(ro(O5k$BQ_9YA z(K#e|I_qi-wy#Cvx`)H0U~|>mutRTP%^$o#7w)pc_6BXTPi&>ik$jlu+cp2=StHzB zwUt|qUQxg?=5`DJ7?u=0=-RSS?H&2_A;o?-?!^+1fW)C`QW-6mR zb`T-HWy*N#-9IdD?`=h)OzH}d@cpv~FtXOT!&-3jO({yP5~0yLPf^S>dm+_c5m z$`W~?uI2#g&Le=@3v7K6V*I=%JSWXl3)K68e7(!Pjc0J4aaJ=7qK7;cKq*xn#{mqH zQnKa6FV%jnOLL49Ge>(W}d`$Q2qn&=fn|^&?Hbb#`FOFZN$XOJTKLbp&rY_Z{ zeGOVPH$)GysGo7^#~B7zj#im;($9M6r*6=OH2wJXxvtyZ+@+v^yin(N18Xnp!Y}Wx z8UxMjhFU~FdKVR`4<7^l?5-Lt`qArw{K1BP5cL%OG!6n6D3!QKvFRRb3#KfBa;owS z{TQ|ZTKk|hVW=kD(TsfSF}|j9a=3jl^E~zcY$8x$1@|!@HJYtgZUdihVI7~H@m~a2 z8s8Xe>x)(g-fd@Ew5RBGg?IbE+)t2@a!T)z{*Uc~onxM(qgk*1Z&x*U%9vIDt+AED z-sk4oUV7l3o=pGh0;2SPU~&4t^*;JP5IGHqlfnu*%e3Bt7it|;uqx`)2*YulgVe+-Hf6UTL)6;WV1#K?T_#6&8B)DNrf4^uoMqU8 zA!`}X8B1X);!lW--LZ6|kYo&*YSnhgtmifMcZSR-Ch(RXGE;IkBk7~OmBwF{$ znh=RK&f#@Jr1&-Rxk#?g+~3!9@FUF#{brR!Yav(B&1*@fJpLEA8j_6GwAN-K zHEXyyVm~9|YFxCMz{cuZC=&gBMorLfF~@m1(!3+5Xb-cTw{vEFlfpfLe|3O!4yRn9 zxZbaPrS+Z4H=x-Q_*Vy>b*4M7OCK#g-P@dy*cD0EJ~@F91p$TFU3HzRXG)52ueH8W z`8MHjIgpPF-`aSb>iwklaH^v(bah)@DiVJVb?mj@aQhQ-op--__iEGQ=jYw8QbkYb z-k8anMYHQn7zgoZl>@$F{N~?dA|Q!xDWbQ>zeYqzl~v{H zh$NGO6cH{k@ilJ`nAOBfz*}B(EbjMcONBcIc*gI)Tj4pk@MBeB}B|!YO#KTHS{K5O@0um1!qz~TTBy3V4 zUHoRTDU>V8pT(_c)4?iWRv{!(u& z7TY2vCAONISD%}Ej}}aQf8ZLIK6Mw9>jA%@P+)5BH%B$ztGeG=>efw!RRjKNzEuv` zD!A|Rd(ArXdsQ2Dz{p&!dda=k6lp&cj{6qs=x5P}N3(0k^5x#aY*>JoTJfJEr9!Q5 zS0R5``7)*NeA}0Q|05(!esx#eM8clvSM^6y`apQi}V5g`^uek)3Y9>(J0=+4%w|)5!-ecqVHycM6Pd1JR?@=V6Jv=6DUCYy9F+G4MW(9q?<<{3! z%^Hnom%=?kqCJi7Pmqv1=ZbO8cw~*p%39LQJ}c*&>si&&IgzXs`>)tjB{~DGbJ2hK z#Y~+C`Hs$r-1X@G@9@6r-#@yuMEkTaz7YK$?<#jQt=y7!n8*M%J2>HWLzE>s+c`@8A{=`x~_JYSPywAd@^^=Yms=RNQ2K85y~x6$77np+FN?(b{vZ(Y zDfkx)2LS2eLkC#`)%V#z>;;n;E@ZzLsBeprzZM9J&>$dDhCacQ+;>>`IuPzU^fZvgfzZuB zILXlEKv0IhZSB8dFj2VsEKFLcQ<8GO-omRa+=Zj@&jS<%>Z18npkAJ&gsOpLDbx&c z@>-y-P4Is#{FQ~0PnP?aEbMFHej1S6wPY*2k2^5*pVs}~Eo`*#b_>T^c%}o-2N=1D z2|%yh1l8s4FY}g_72r?QX+s%zv44c8TLmq?Du5Y&(5&_HN$>qhMmr_ zOMIQ@@;O$+F8Lv6jl3>iA+SSkL_ORI{hlN}dN`(k{pUM~f6K&KGtm*(^GSX8EPk~) zI#i9;-=blZ!(q?m_oOdrMCbk6?xCpkF)EMXN_X;VOCU@`FaU`!6w2O%iO|SoQr3@a zrwtnUUi>h5{s|I2ATjq>*Pg~e(zPz#0C!75KC$OOGS_!SwO}&F0FCS(?{=ng2D+ZS%j( z|C)f^y4z5DQ8fORbJ~AXBsu2Z33i|E3e97YQ#p{&+kt%Ec2{xqW_Q(B<)nG*S0l0a z>fvU!j-xaEEw!h4=dHSWGcRF|^1n6r!yU)koR=j`&fQ%CD~(f?`yzC&Qrlo)Rc@<+ zL~9ppkQcv$W8*(OZK3wzTlceDz=XfNri`+n)Cc?&|13f^n5xEsYe#i!`o5|M6YEtW zW^!@)=GOPFm4L=TB@8Zn?w`tQ#tx@)C*jc}UY=v4SE)<|+zx=`({ zlSZe)EG6?m)tC5R6lgto%?AD|G{mP5)3eMG$S6==HtLF+Ak3x!T%2HgPQbAS<3ocVSJFn{OOZF}cq;Ke) zlwNM(3}Nlc0EPF=1Qp&uf|>ksMavS9QGWmIy_}9-3PWzOyEQvK@2;B* z4KCs9=}$a|xtGPF5nu3y=9y^0lX3Zq^gJ`;d_oBP5KrhBAmw@fr*z}Mg1=h$yoIYQ z{H=xmY2keq&I2-ZR#aH~`4%2)q4eJJTJQr4gTSMRS9%DDIRIpO|64 zHp8y4-taXU_RM)mC!cSWF*_`)y))x;a{h;~y;+v8HkdE3n>f98+HH=qtWn(MGr4wl z_2piEyL)-@9{BAM#ly|{JLzMdHTj0Ro49o2Hm=<0)W~ISy-0K3-SOR@=Ukoiw#m5X z>RdatWcY6C+?XSk7k|t8chA*XYd3s%&0){gnZbs@0gFH#nbM+jCpO8rbei7eo%`EB zB{qo0LpN`7I#NC~VB;SK3_9U@T|{{>>u?#z6D9Rf6uuleBHIk z+aPICnfI^+lXuC$M6>@WF&N|_DmnU}-*1hg_88Gi zclS@RjAcwu=We&KH7%p?#`GC!58m1frf{UnB{bKiAF?y>!!)g4=E*&rhaLW%;e3%% zyFEk|$zj{;Xi;*2KSuN9ElP9`rryq{W?JfZ?QVOe?>FX1+v`LdK=?#q(!a*iT{rFZ z@aMWFSv;(*8S@GWvPm>{Z(EZC^U&F~v!+eI!F-i{Oj+d^YXP`=`L481ZOWj>cyY_Q zw|VV)o4yi@V+8qBnx-;vSX^CD_S&D=dYEJJ&9V5b^@#hEImEB5Z38|C>~3DGgz4|r zEw4vxGUv6CNPO&4G|JswP40aQSAiEk@!0r!T?+dEyk&Gg$6%`pq)#tevnd&7tG;Yw zGJFuQJ{*5OEP2TFv9|1Z*(2yk$io>y>I(%IVMo}bELED!JG!FgWAwQ{L8-7MR`#e4 z`WC^{`cHZpDr?JpC8v3O)$0P}}t2NB4Y1a%y%(@t=Ij zC43?Y>r02GB8h7^mJVIhy7B4{xH`Qw{@$K7*|pq-{GRXeO{H9$SfkCOED8{XhgQ6W2sY{cCpD9h=md*8`d%1Hp9hl7i#O?q6!^zNW@=^I= zMGb<@xB1U`7MHW-Kpy&+W&bgny$iAAx|et4E>en0(a$1w@kiiag)f^a+~wS@+s>8fW0(4xq?v8UZIG2VAKTAtzGae$`<83P zEEs|^t|OPLq2F@Ja`kU%zay5bIo(pUTn#zx`iu9 zS-G2uz3KS#CIu2uDx=}+NDd1wTr{*?DC3`&TD{n<`>TwT5wSpIhp*I1wh5P$8IFsT zD&o5<;s?v)e=JX)*AR)Xe1HI*=W9A~i7~h&2RUTEa|P4`lm?=YCWEoHB?xmMUt%(u z95@f1h)TFlWtePsrkq0WOu0}Y8t9EpPD;6n%?Rk0p;4%75G39*6WJwLo~Kl`QG1+J z{ZTod`ZWn62e-U%y6QHS#T@uh9VVqxs5k70)Jb>CIDpw>7L$bT=C4acOJNAM*Eu0Jle|o;kLW8jffFwRgywi{7MXy$a*S(N_pHDDOflC^ zo>MCyj>+UBU3bxojPNP!R44CS4HE}`VU6+&xSSy>t)f)1ox%HeF?ZPS?)_4Nr-T%^b#Co zOu!}XOTF_F4Nky48Z0r-08fTV0;TvYv!^-R*Z2p@U9<5@Fu@5+3v&zK%z*i^4w-K7 z@~JRX;|4C2YMKUvg6*9LTQoqlZXN$Nqv<=XpH#lXK)bl5O^*BhO)We1^2zx3`T9ZY z_JO-ww^sg1!GeyD{70PdZyj%4HdMXd`c~!Ome##P2e(9$C4HjB8|U8N^79|&FMh>E z>V(}vOq(jR{3-X;R?(h{_-hqIp7S-RI3+?C9rC>A#2SksIzsAfJgN(=h#Ez9$!OJC_7e1hdie%O_Iw@?U2<4ndgMS zH9sIe__J{fb%zM>ClefaT|G!k7V(HI;W2tC52Ou08^=ZRpN-=p`On5()yCs%^0ral z+T?8~k3o@nYn9tbY#aM($b&u*jsLl#_~qI{7-jV94ScerdFaPxzhl22s)1MAm)}Q) zDEU1U9&U@C>$H}-Q@94b{hDjpJQLrkAsxQ+yMU*Qc({9NErC|)-xBLzTI-djb_m_#^(Gf` zI=r5afDwjZUC!du&a5|&N4##0+@L8sU1$!~nmzp7CrFc(+pXe+-M&yW`_@a?w=RC3bG};Qxjep+ zV<*Y+$;Tqe=t8D({@i*3F`X-CT_^N$d^Vt}yxn;RRFxxdE_Xl`Yva70t+gEF7W`Vy zX^kZ7mYAtq^xV2_bw@L4AFajhHO9>yzukE`Jj(kd7&(w=!gL}PiSI?@x3@)-w>!$} zbr?a)w3C-{j3LYz#`(X1?=G$3GoCGPqwiAx!hUvi$ZB81a=j<(c9tjam_Rn8Lz=a# z{pJ9(D&SdHYI*zClSgjU^QtX6&i7n4o823Xy-m;Sw&{@Q%W~ap>^t?G(%!Ol@}M{5 z`nv3=>M^~4%hqcL{Y{SVq&LgosoK)|hB=&*7COkUW@A48n;hFJiNroKavr|MTGFqj zgW`>~-(g&=OL5-+4?{muHGG!mk-zY*@^ffFQsON2vmL?G4F#Ul@qFFiqUYY;R(GtU zJMOx0wHcz^aVRan;Vp00C?$B4S>U$T(92+MK9Gp{$FwCYgm5mU>^c5%2G(wb5H3}L zlr7P-;?b6^w-0Jov80TBsh(q(cb2xq6ef|$9>o-V4gcd*t#dL&q6)XO)nY{zhI-3K zxR10x)0LE#2r;2e4PQkKd#T}geY%bsc8S3oSoL{AXML`2bL-QbIXTnIzxq~1$1bt5 z2S@`{<(^CrK~1JbAl~dOcO$wG@r_zfdB^s`uw7)zzMR9tMtbHPm3^btQs5i4(;Nhp z`i=K;;F=xzq^Qze<`n$;jEXR1Kh{I`s)*NFd-GJpMI{m#nGkkPs?o_bNG76dtbgAb z9s1Ix$+;CfFHJ5^EaAJ_+P{K`b5KM-%0zUvCnC9CZQ57$wr-2`(j`QDg-P}(Qy*7n z)W-=zQQdugpfUPDJ|Y$CXkU_}T5IbgO5ec!DBo10dW_Cj{GRFqX74mz-li56y|={5 zqI9+=)*5?lPvNoQF;_Cjn#yF3)x>Dx6pDeqImpE&lQ%|dRyjgx9I4%)TB~_jia#Ri z)Ff%lN?r;EEE@mKdH{#JHX2*w7C<=uI-3FP8a}%ljAcddgjW&*n(^oE=ucZrby>#` zOAuG5d27GP;lWl}faOqH(?W%(pWZYjzPQ5A(p}hSuR!TV?ZuZR^G=N>2i^lbGn#BL zpUrr|(q0uB>p~l*gyWHevR#^Et^K)~wNH6$H87P^Ui{|Vm)RUGN05bcXoI4~?Y^cN zbZRK|@fHT!NR-2blf#6Q--OA%Z{crApxM31{R%mA$E&9K4Rk+>wD~PMzpAGB66(hO zs_)6ykA6P>U}KinA@yOg^%!qz)WvSb%{hn?+JIY|qGkiPxP9(_QGN?0i9@{)_%FDv z*4sjxq<|=VSu$sp4jI|`C20SBkyCIRro@}BHEX=+^(bC5ck7OUV3}{Q(2^%QSg7nL z)p1rZ?^$>ORaKF^jxFY}&N7`|8vlfi9Vd^)_+La4qw~oX1srcG%VM>U1cJQo@66Hq z&YGxd_T$l$o(%s60|{|3^Z|o$8RWX;xGsZTmwt*xd&b2(=RR&zR^(0D!z@O)dJUAm z(Qe2we7P!bz7SE}C7r3=W=iuqmFC*R`ZuXH6b^z?H)$+{8;n|wH9p{vj6*b? z)b_c{${?FRTzHa>c;%zo@xmciw_~Yq)!;BqUYCZ_-jEQbY70UUx9bW+F#Z&X=|RWSJ`w% zinq*N5nClWx9mHQj;(T(EX`qh{0>E2%H2yPx<7J6gqtLXMUqYta(5E*WYfwbya#w! z>(cum-c76G-Osza6}ju?Ceu>5>W5e5h1;7%-qHAnNH7{6aL3L6|HKij((8l7s6@lVj>T ziaJ!+#l|V89xV#!PJpB6W`yZ-C!Kf3w5>Pct{5tRA*GGw8=Ux0dXR~?b&WIHJ z`a1SsS0AWrDNT$;y>!JOqd-~;f+LACe??8Zlhl88@#if!fgfC%5>cUwt+-?EHc<`t zk51D4qft}+=Bugx+m~?P)(VFNlqFO7CXzqVJt|L;n)Q*!4bG0HZ&b7Ropz*!tNHBV zHAfrY1M$5Xxnf5-lW){658LC)z*ZQpXNjIi#(qlOvCH-75~?!fLFeXIqy=St4XaFr zD)L>ZWpb3E`9}TO%aKwQD<_Ecd6I;>dVEO2|6}}UjhDWCt4h=SXbQr}eVlwkg!!fS znFYJzeRJQ~!Qk*YYu9qPrq+d3+c?77&(mVuW0`7Fovly{YwoOtKv|9)YB7+1*2Tb5 z{(@!vFTpJW)OOT){4w(PPyN9qd_Dc0Sk?o&lc&;rROSXqU}CmTk99RAWLD-98h&@* z7cn}?Yyx(-zc^D13K-p=)!p~r*7;JL{FhPsjdAxAFNx(W1ZNOO3OH-3mW46OhcT|d z@>uS|oO}Ap-%b3Ne(d;DevHZRcLt7&`ES|n_*1@&as6fNW6FOEe?jOXeslD{(Qd>DF4S)y4=4A3vv911?-GgJp9CsCU1%Zu zuZdLl7*O#?co_E_Cm$0n+(f42{$-%@XXPymrr=1HLRSHWNB5%%&nMKU{EIP_|9?=p zBt7&up!})qrY#tAr0eWASpULDQ_NZdy&BYqtg|0p{(7p#6R>auc$Ah$ zU3{k5*^hwU*0JxlULzJ(T6``B`Ytz0;}qoS*IULpz@>!am$i|{IY7eoD1UvJVkcDh zrVC#^Ivjr`60h6HVq|GCXMje%zzwY5iq>pL!>}a$kcW;WSn-R$S!%BxHBv|OZp+Vk zmK#D?bD&rVqn%V&Q|oDV-86;H{i_k~<`uBl{i_kf z?RM9MW3I28bwl;{XH1$lWg5qtx$`jHy1LhgFPhE@@W&`Wg|hcx{LCn2Qr3@aciR_Z zi!n#qzFsv%>EKiQ+6ZHFqA(oNz7DUyzRltZC@f|P`(bWdmtDBMCVj5B2mSR~%;9B* zIUp+qJ}(Z9k6zQ8oXaqauhs_Isf|>R$t?2T_Qf8x_yQKkRLaftC+tgE`s;$SxBg_k z#pm`XcUydJ5|6k)A%4+9fPJyKz{B+?F0Ht690}~wpICX96ctk%UlWeMSQ>vUxC}Ir z_~PILKo)u%g7wDX;|Lc``#sYV#A241fFJrE-!<>xJW9=%yb3ak#Qzv!ZaZ}w;gAu? zFAWZB{frwsJ{t-yLYS8c?n{aL5^!I#+?O^gq^$7+-@m6CUysCJ71D@vO12^8Yy4j& zE74%m8L6SuTO3?soJxaJ*=fl^V&OjQB&Q*`2q^8$4Z*v4V+|>--$-8{HNKVw#e+qB zkCQLGB*p}%Mw7w2;?GBuD}qW(X=0fPUmpKQdY=eMPgZJ56ItJ7CTXP!r`Su2w?z`lWaDJIQfA1uzz$GyDH32@Ov%Y* ziR+@YwSHFE6m&|iaBS5=7U*tR^NwK3Mxa(-+U(xSmg_QCL5Y5UzIQU0wn?|x~b&B?y zPubA&*4{f_YT3H?_&;Xr^<}+oGQ#1g>R$7MA$hC(20R=v;GSV7zE&HbXu8#nPZr5C zk>j1^#jp4puc0NXHfKiSYa_)@2NI2MaFkfGZ@2Z<+<%z-iFA`W!=TmON^~Uo;BJEq z{rJuA_K74GJG3x#Uo`QEA;Iv_-JIais-~wrkX8F`>+@9|E%Scp4{mRLef+z;yED|1fM$ALP$1Y2hkV{vES6#n?fkK&rf$%yC?$Wc zh#LYR8?|52%Q0Q(#gw*Ne~xAE^p|?27dCmjqnDVWkY^lv`8S7N5)Qrm(xDeqtLgY0 zdReOrf1#J%F1<84m2K2j`x+LIHTQf`GOrOE{m_G-kNYSFDFtX_2%R960K{T&uiV!XuhQhcchBf zAuiFet|I<^MfO|JMkgVBWIATfTlgAJXW@CdIQeig#|UONw5UrFxjojRu7e)$j<4us zMSOpFPb#}Egg${Q)BO>yd=q_Cic&^zS2cU-n?5R-!mZ`!v#S=j==dxn&1%`2TDHjc za^-fjq2GyvgFAJRsXddG|X{^*SM`}$B%(Cyb}}6NuBG|Psuyrv$E8AGsan^1FV{{yQ#c<;R48xSE7n2>xy-nN)N}2*Bqm*6 z$S9kxXbpqee$vkPWr~uBQ`BF|sV;eOHthFi*ZyGW$575coT8w`QAjI-wvaxxa;z7V zYyYMF!Q!I5N_jCTiQ__O$ls6uF&-bsdpuAYhGzUITd#XuiCEE+B1S5$QBy-){0$E6 ztU-3-c~N10lfzT3sd`Ce>ZDxtZ@3k0!usY<#L9S&2ABiU_^S>Z6MO4`uOY&R^5p2x z5Mb#;kGW3bDyeLz%(zfwB%^4Pp`Vst+}>|-%T&CdjGx@ixvigZJ<~s^?9cKabSUgI z`ic)KH}JXN2IFZ%Zp+Va&u=oJo`w5iCzf+=$SqrmmZ6_OYouu zJ3SIx4|BJ=Yx>HOTc^ROh0<`GHW(TDak@XF-Wv=PqFT&r_K<*OR6Mko(=3q~ z?p7(@Shr3CzM8CYg8yTLfFYGVR+qAj97cw4M^a(#T_lBlStQh#NJ2fu zL*y~;RE|BaZ{2qF#@4p0w{TLot+hRW)J7iWt$HVK$OwK|@5nJV@2o=)k&zE9Ve5By ziiBuzBeJ~zDUGil%0#U&_jtwS$j$7BJN^XjQ;|4=g2=KXDEOT8t9y!y>A)SMkS(A< zqrqVw`pCyx8edxxUl)n*cgx1{#id>qaXQ=a>!aE4hC5!Y+e9zwl=b#Jr=|$p>DEqS zRbf&D+$C}xnQCp{=zO=m-VTNgGfJq>-ogD9pHvPQAgnuJ^tWAIP-L(mZ$Q5Mru%Tv z#5zz^D<)*0@JUrHZB2fg|7%#R$qKYxT383%JOk#M|8xp zo3%!p6bER1?~AO*4*F0$Tt|nyKA2vQ9n*C^_D|raEJ7~=>Fq;n99Xcz!ZU%CQ^5}8 z$OZoj#DBqKj{W>!T6+yJm+)s<_kIp6_!-l2g}VeuxrcHb`}w=sR1}_fEqob>zw@Om zTmD}K>iZ^Zcl8H_toslPrQn%$Fth)r_%Ec`gh!>PPm_R$TVH0I($Ita%M|h#eYi$z z+g`g}zji;Hv!~wg+P%8|w#l<*bhnLlBnK`JIab-z()S^hb9jB4Y#$X38^#)U`uYEn z_ch>A6xrG{$p8@pJ#oQhUDQFdyBU==QFNIVGz~M@qdgEcXmHVlZHeTH5<{Zk21uMt zplur26_k6gxViVP_wwzoSKJi^lrWQI@`HZ~s045|;17vG4TvxakbLi{uAa<8Y;js?*igRj1B5b?TfO$002$_QtwWyxGqfp*P<4?_F0K#T&_7S2E+K+#BDF z9p@_d{wvRKt}F2gz>K~&qv`=M!D0jEAdC2S3q)LeM+Cd7hWuXi<0`?iT?UtY=VF_0ooLiN@jgn zjL(yYW{h|m$Q?gW0HzHQ+e$j2ZCCUw%&FjG<)@QrqKL{>k?Rg9R;A#F6owIlYE=q; zcnr!_DR+=%54x9vND5tJ=CzZG6`UeaMaTfi4BJxNwJjy*&M^o7{&7Q(ZbR(Oj?>xc zNixu4pV@z+c#)T*06FjBZ$Dm_J-q8M`-app<-f@=4Tf`h^ zX8ik(vtHgVfA2Um2b05u$HxWPt@=LW%)tv~a(FaezRx%t&!11G6sYfbwFP zXZ~JW>Am`t6X?#}_XOkj=|Y~9{4^*)SP;E8`)M2KIPm1~N*O^c2~t=VBO&8`lkozdLCr?jN>)_xzYMVBDJV?>lZu7*EIF zJ8p?3p~Jy`EtW<;&eFc;xHaefOb(Cc+3z!MO}vqb!bGF}kBr+MTj@jkq%(}$9_+D4 zw})v{Hh6pPow1Gu>Sv5sEY{tdV#YB{ ziPKG@?e8tILzR6Q-ha+}yf*UjYWBbL9Iq!0F{+F?ZcjPSo`$Y;J^~7w^7{b_;g{ysYO&WSEn~enFBSeT}4exrk5QhT&;Xe%7boW_7DghAjKP zkdNfqWWl5O>M$I}Ql^>D5#dYzT|Wb9`!if`hd-$8xRsLq+;L{L%n#Z1!_Hl>jk%VJ z)3UDOTrNdQJQ zNPf;sYGP!cBMtK|+lfq7Ko=iyQksSO?Wy#;&o-}DaXex6`zW5^<}xn>Yz&2w^b9=W zbo99CS%T>B^Rpi`j<{bs@`jS(qJl>rgL)a%y~r}}0G%(Y!>Q3yvq z0M7vcu`tdT{{%Ta2d_jruU{KNev7xLk>PCkr;QhqIJ_(lk4Mj$KW|4l{9DK_Wj4Yy z;h)&{G@o;}aDblHfjOcIrI|?F9`t6Pa^N<7#7hKA);APlxNgd$Yp5Kk^@eoxH}*ky z;FYn;RwMdPfZ0EQ4BpUZ4v9%VXcWS-A>_4}UPaj!qz$`{!ejQaS0I!&A-4s2XkBwh zEPqdUtm37)xKkHea1Sv9T~J%7hjpO{2%w!f-yvcq-2L-i!qWc+5ZIdZ_Px{66WG2u zH~i`S4YGPfQfvF==&Y**X1EXu}`_vi2WbuDq-^6KQ1wPDCvh8mHe!ehYi`>@df9 z6h98If43U&F#yIsY=q459QxbHC-H2gk9-0l#fy0Sb{g$r|)IS<9(kF_+%vGDAo`Lp9Ou}S}(AAZ07I<8-z zH?**zSecVM>ycS=7tSx3PqxcvpM>F0h2Jx2;5u;PAbOB^pVJ-doW`9zDucs}oA^D+ zNXF}*n|-)ze_|9Mc!Xz?##$_oQqpUv1JSEzvY%7M;W^AsitjSW0Da0|z&oSe=ipC` zV!z=p>9{H$OzgYUowL!?nY^DkIG8FZ(9`>_OplJMIFM(X&+<4tiNgzWcszQ}^Vu3a zpJ=w$4D3}y+ns4XBb;!)NBn$NexUt2Ld7Y1**mn=Igp6}?z59vu-d|c4UxC8a<3lO zrpKur!_sn(y?8iy=0=-8k}L$ix)P2>J)^J`y{re9va08xJQPN?$O4v!yJ* zx^GEzzJjXN*wTtfd7q`MuPRW;U(#2vN5*!#Bl>&45|+P$F7H(usJ0e8`JE~%qBOy z`pX_HS;GTyA~p{ToA)OcdBQ#ODm;0pSKYpamO+oBIdO4iV;DNEq;Gj;kTg4khK(Ai zj08zB!xn@-UP?tE3tJI4CsB1_uA|~TTujzWQG*F5j2eI_IZDs<_nnX$YH5Ch&6ZD4 zjqC9u`y&#Tqy6;=K7>|WiP1KzHjs1YaQD1H2d-coSO5A#&%6uk_C0E8q*}G0eod@? zP-J;{R1?*&U!}#?MD>Glj(NAkM9O&-xvdS{5l+%3Y3M3hF1w)ic@ah{X#%59#L`2; z*5#hLq^n{0?EyiA7MX*}n_b}Jj#hLqe-AqB1MxlWu2c84c>eM{`x~o9#K}4x`kvz) z``!(x*?IN7*{A4xL~s86eeam#`}e)te{A0?L{-px{&)J@zvErLSAXk#$i!y;o+Ke~ zD=Y~Tf+@|W?gr!+t^#BrH)uuWZvuAP4D8mwen>V_-=dn$C7&amEU8rg2OJIuYR8Ay*16U=sVq^C0&XGD6W)HV?5 zW%qZy)dqy~KzcMp7}9$ZqK9)wdd){;k={1EJ4bq3j2fI5(lc6U)rKwrC8T%s(tf?s z|DFC<>@@n`O2Ti~po!w}TRZA$c7c!K8Ze>siAj1g<41M3Iu)HuuL#h~=(0MECNX`v z&fX0cJ+8*Pfj1lWGlbZ!*asQ3kW@x&_VIKxCL`gI~f!)}D+bo3bvz(|C__ ztL-fjHLwObNqtR0uL1X*4uj+9fv6&@F^G|s$RO)m{)`*YbJzcy#)}vJ2bPY*20Ndg z-v)y%^fvH2C_FhHX|$Jv45zvpg{7H@d-d1aFwJdBLqTz)h+pE&G2wS$1ZciAHtB;O z4Xj5sp%WTdhbLB3Zsap=BC)DJaX(MYVTlmx4;qHG4>0RGmBgY0SmOH|8C!fPM{gsj zAh9SU9erK@3|E_P0erH5a_@3h5qyJ{WH`3&(}FQ}G(2?2u_NyFEG43PZA9%ij_gOmbSDfZPOUL~OPII57dy~vDV(+H0OMBKWy61%K1 z^!(UpI5%J;1ny68n+R-HyyMT{Q(<7{7JuYK=`Aos!l+zf?7*P+crUWC43xmAiRB~oq9n^;0qqs^YA}; zSjoeD9!}xmPkA^PA*@;&)}YeV-OTZnDG!&FS6Pkn8!Ae=_LGfER0!Uu_WQdNi|%wn zeXt^M4Qkw2(4|`9xn-^v0hUH6VSf8txpXU(}f$(Ap)t? z<6qY=!m~F14&R9E@~qB7Vmv)3yuQkFfa=+jZ(Z)8S^$yelZVcTuw)-I2;F&Q%zTWo zL_pM4I<-4#&8jRxTBA!=1GTbuiM}5cZp(XCq5_Mc&^gJP?{}dGc@q|Y(fO+I`f944 z@cITjf=yIQ_P|(rHeWqz?Gavo)%PV;@=(5Y6$3Bz!TuUHzI6*r{)Sxz{q#b<|4sH5 zmc@2S*`rInu%>k%y%si*p=V5d1`jELzBoh4)v@T9!0bPR-NCF=2f@LgOaCb3# zW|sjslXEeK8L2;g2{24=7tTirw+z6RIfHC4L_w&O@QL_ zuHQ<|+RbUWgvb$sNMi_**Ou;|5892Lw~u8oz_?4W2m>2gfN3eh@Zqr>_7GrP$P@2v zlnPiSjftmXP!L0vEvHmr|7QYpe}%w8G={glzKR~JvCPym#=Fs&al7DShrN{$xD_UX`uAcPPB*3@_6Ar> zBL~KBpk+xYJg6Gt4(3s({T?_!N?ARJfJV}qJsI1{j)JNaqLh_CumLABX*uhY`|w`* zDRJ-i$l+W`wl>fh7hZ9c~cS+^7?fUB*@lp+4??pMWe#-c9hZNbF~Z0U92HeR#R)b)zvhdWOYyHHQb)$z#AC5 z^um}ysEJu;$$-}Z)|N#O38C#8`|F1muFxqzxjYK@;e-aimjyxB=mzs0*aA^wAJj(e>o!*-ZwLdmZI*CT~}9!56#r6(_j*9LUJZuemTR= z7CGUT_LGYM;miB6NH8`?JZmc0LkWezSrLi(SQdCPZYM+>b6WZ)Y1*VX4b}z8<9vwQG#Y{Y27N)%*bs* zPK)4coJf<#M*0z^qU-7ONY!e%(W34vRII{1c+mm`x(BtBGMkTPA)^PwLu1fu#a8gu z1mA0IMna?4deCca$vDCsDl_10I_&Q+aA-UN71<3@oVr7hKQZPmVOpy?<2de(&Tw1z z0Bxze1$k%rF;=^2%_=y6P?Bst!d!B_DVEoEVL*2HpnLAI?r~%9l(yQAO1L#PLAzZw zi$-WV&Cu#wZdY*8C9Y;cuIWrscet9D3^VS4c$Y(Jty{mVS9EPxn?=D_!%><(IU$;7 zYNN^kZA?aE;68nJ@=#qY6Q&dbNoY-AOJaezb=kyW$VqsG`Zu?DDO68Dvzcg9!i|kr z^uy~M6MwHiMj*D*lhrLW6ih^?uB}20ZtjdH1=3ioOj-jY*%kbQqee$tQQLn^BV&DQAQ*MK*0rf&n=-+Quw`5TnjiFr`9~_txd)S#zFg+8uV)2u#u3m;D z2xC_og{aC?h3eG8DMEE=q1CH=0!UN|c#98!G_kE^m3Gz}J}~L*?H7gDcKY`XAvvVJnwAV>--kBH4epnAVz#MqKwJsw zU_+#2AGUxN`>01p@iTmzvHiVZvhXzhE-O0mVdo(yoO)ES^+?JclV8hF(}|S@KSgVp zU7M*j{H(<-#`G>5+?1@bhAp0KSPozv&s*^BI(#_vc8OjMV>&^0wrSacGIiCk;C4b8 zcH^nQ9TmgYBZbM5{k>MV=5Z81q;@%*(MM9SweNRufA>2u8I&oeegL|#Pj>FtW^O4{ zXI>0O(O$8|SXWK4U5vY~{+p?>H{BPHzeI;Q-|P75)Y*Lc+<=AlsV6cr)>~df zZ{Ts&3xN=AMK1yNI%P-9*n|DW7)3^h>u+z3u`IGseNB#AsD2>F>QfF!d)T<8golR1{b&2#&Tm+UtMjBCK!)SuT=abg^fxQoFs8qON}w+H%l`gGy}{W` zos0ULs86-JogGfvAI!eeN-bTz&fwLVpBA8J{uw4Lg^dSv0#~gNcpZE?F8vW(@i