From 6eb421d564c72ac07c4d6bd00df9acd6b188c269 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Tue, 25 Jun 2013 16:51:22 -0700 Subject: [PATCH 01/15] Blink less when talking (and never when brows are raised); force a blink after we stop talking. --- interface/src/Head.cpp | 23 ++++++++++++++++++----- interface/src/Head.h | 1 + 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/interface/src/Head.cpp b/interface/src/Head.cpp index 61b4ca96b9..5b1d7bdd5f 100644 --- a/interface/src/Head.cpp +++ b/interface/src/Head.cpp @@ -76,7 +76,8 @@ Head::Head(Avatar* owningAvatar) : _leftEyeBlink(0.0f), _rightEyeBlink(0.0f), _leftEyeBlinkVelocity(0.0f), - _rightEyeBlinkVelocity(0.0f) + _rightEyeBlinkVelocity(0.0f), + _timeWithoutTalking(0.0f) { if (USING_PHYSICAL_MOHAWK) { resetHairPhysics(); @@ -147,12 +148,22 @@ void Head::simulate(float deltaTime, bool isMine) { _saccadeTarget = SACCADE_MAGNITUDE * randVector(); } _saccade += (_saccadeTarget - _saccade) * 0.50f; - + // Update audio trailing average for rendering facial animations const float AUDIO_AVERAGING_SECS = 0.05; _averageLoudness = (1.f - deltaTime / AUDIO_AVERAGING_SECS) * _averageLoudness + (deltaTime / AUDIO_AVERAGING_SECS) * _audioLoudness; - + + // Detect transition from talking to not; force blink after that and a delay + bool forceBlink = false; + const float TALKING_LOUDNESS = 100.0f; + const float BLINK_AFTER_TALKING = 0.25f; + if (_averageLoudness > TALKING_LOUDNESS) { + _timeWithoutTalking = 0.0f; + + } else if (_timeWithoutTalking < BLINK_AFTER_TALKING && (_timeWithoutTalking += deltaTime) >= BLINK_AFTER_TALKING) { + forceBlink = true; + } // Update audio attack data for facial animation (eyebrows and mouth) _audioAttack = 0.9 * _audioAttack + 0.1 * fabs(_audioLoudness - _lastLoudness); @@ -172,8 +183,10 @@ void Head::simulate(float deltaTime, bool isMine) { const float FULLY_OPEN = 0.0f; const float FULLY_CLOSED = 1.0f; if (_leftEyeBlinkVelocity == 0.0f && _rightEyeBlinkVelocity == 0.0f) { - const float BLINK_INTERVAL = 4.0f; - if (shouldDo(BLINK_INTERVAL, deltaTime)) { + // no blinking when brows are raised; blink less with increasing loudness + const float ROOT_LOUDNESS_TO_BLINK_INTERVAL = 0.75f; + if (forceBlink || _browAudioLift < EPSILON && shouldDo( + sqrtf(_averageLoudness) * ROOT_LOUDNESS_TO_BLINK_INTERVAL, deltaTime)) { _leftEyeBlinkVelocity = BLINK_SPEED; _rightEyeBlinkVelocity = BLINK_SPEED; } diff --git a/interface/src/Head.h b/interface/src/Head.h index a41b836eda..2cc5c9df00 100644 --- a/interface/src/Head.h +++ b/interface/src/Head.h @@ -110,6 +110,7 @@ private: float _rightEyeBlink; float _leftEyeBlinkVelocity; float _rightEyeBlinkVelocity; + float _timeWithoutTalking; static ProgramObject* _irisProgram; static GLuint _irisTextureID; From f2f29d2e604ff47d9744246168b33114bb6b278a Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Tue, 25 Jun 2013 16:58:31 -0700 Subject: [PATCH 02/15] Well, I guess OS X doesn't like || and && without parentheses. --- interface/src/Head.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/Head.cpp b/interface/src/Head.cpp index 5b1d7bdd5f..48a0caab5e 100644 --- a/interface/src/Head.cpp +++ b/interface/src/Head.cpp @@ -185,8 +185,8 @@ void Head::simulate(float deltaTime, bool isMine) { if (_leftEyeBlinkVelocity == 0.0f && _rightEyeBlinkVelocity == 0.0f) { // no blinking when brows are raised; blink less with increasing loudness const float ROOT_LOUDNESS_TO_BLINK_INTERVAL = 0.75f; - if (forceBlink || _browAudioLift < EPSILON && shouldDo( - sqrtf(_averageLoudness) * ROOT_LOUDNESS_TO_BLINK_INTERVAL, deltaTime)) { + if (forceBlink || (_browAudioLift < EPSILON && shouldDo( + sqrtf(_averageLoudness) * ROOT_LOUDNESS_TO_BLINK_INTERVAL, deltaTime))) { _leftEyeBlinkVelocity = BLINK_SPEED; _rightEyeBlinkVelocity = BLINK_SPEED; } From 1f1e520ec84f51846a8d99c0d25ca8ca7091c459 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 12:10:04 -0700 Subject: [PATCH 03/15] fix cURL parameters for branch deploy job --- jenkins/jobs.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index 45f2b19477..dfe930a548 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -62,7 +62,7 @@ def hifiJob(String targetName, Boolean deploy) { } EscalateStatus true RunIfJobSuccessful true - script "curl -d 'action=deploy&role=highfidelity-live&revision=${targetName}' https://${ARTIFACT_DESTINATION}" + script "curl -d action=deploy role=highfidelity-live revision=${targetName} https://${ARTIFACT_DESTINATION}" } } } From 8a7897d326a8ee277884a467b1c19df2bdd6193b Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 12:12:04 -0700 Subject: [PATCH 04/15] use deploy-dev, add missing d options --- jenkins/jobs.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index dfe930a548..3a1a2ee990 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -62,7 +62,7 @@ def hifiJob(String targetName, Boolean deploy) { } EscalateStatus true RunIfJobSuccessful true - script "curl -d action=deploy role=highfidelity-live revision=${targetName} https://${ARTIFACT_DESTINATION}" + script "curl -d action=deploy-dev -d role=highfidelity-live -d revision=${targetName} https://${ARTIFACT_DESTINATION}" } } } From 8e078153228491db362e8355184bfda5bfb60f03 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 12:34:26 -0700 Subject: [PATCH 05/15] use double quotes for env interpolation, change role --- jenkins/jobs.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index 3a1a2ee990..c5991e3879 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -62,7 +62,7 @@ def hifiJob(String targetName, Boolean deploy) { } EscalateStatus true RunIfJobSuccessful true - script "curl -d action=deploy-dev -d role=highfidelity-live -d revision=${targetName} https://${ARTIFACT_DESTINATION}" + script "curl -d action=deploy-dev -d role=highfidelity_dev-grid -d \"revision=${targetName}\" https://${ARTIFACT_DESTINATION}" } } } From 815283d6d5e7ceef2becc05412918754b02ca881 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 12:35:09 -0700 Subject: [PATCH 06/15] clean up double quote usage --- jenkins/jobs.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index c5991e3879..0d31cc1aa1 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -62,7 +62,7 @@ def hifiJob(String targetName, Boolean deploy) { } EscalateStatus true RunIfJobSuccessful true - script "curl -d action=deploy-dev -d role=highfidelity_dev-grid -d \"revision=${targetName}\" https://${ARTIFACT_DESTINATION}" + script 'curl -d action=deploy-dev -d role=highfidelity_dev-grid -d "revision=${targetName}" https://${ARTIFACT_DESTINATION}' } } } From ac9f4d4c30b64d976039007a0fc3ba40ae978fc0 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 12:56:55 -0700 Subject: [PATCH 07/15] double double quotes needed for correct interpolation --- jenkins/jobs.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index 0d31cc1aa1..c5991e3879 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -62,7 +62,7 @@ def hifiJob(String targetName, Boolean deploy) { } EscalateStatus true RunIfJobSuccessful true - script 'curl -d action=deploy-dev -d role=highfidelity_dev-grid -d "revision=${targetName}" https://${ARTIFACT_DESTINATION}' + script "curl -d action=deploy-dev -d role=highfidelity_dev-grid -d \"revision=${targetName}\" https://${ARTIFACT_DESTINATION}" } } } From 177ddd889ddc6ea691f3fccc2d8fd2b174bd5b30 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 13:33:35 -0700 Subject: [PATCH 08/15] differentiate dev grid and live deploy cURLs --- jenkins/jobs.groovy | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index c5991e3879..99bf5443fa 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -62,7 +62,7 @@ def hifiJob(String targetName, Boolean deploy) { } EscalateStatus true RunIfJobSuccessful true - script "curl -d action=deploy-dev -d role=highfidelity_dev-grid -d \"revision=${targetName}\" https://${ARTIFACT_DESTINATION}" + script "curl -d 'action=deploy&role=highfidelity-live&revision=${targetName}' https://${ARTIFACT_DESTINATION}" } } } @@ -130,4 +130,11 @@ parameterizedJob.with { node / 'wipeOutWorkspace' << true } } + configure { project -> + project / 'publishers' / 'hudson.plugins.postbuildtask.PostbuildTask' / 'tasks' / 'hudson.plugins.postbuildtask.TaskProperties' { + script 'curl -d action=hifidevgrid -d "hostname=$HOSTNAME" ' + + '-d "github_user=$GITHUB_USER" -d "build_branch=$GIT_BRANCH" ' + + "-d \"revision=\$TARGET\" https://${ARTIFACT_DESTINATION}" + } + } } \ No newline at end of file From 7443040787afd5bfd69c20064cc585f535df042a Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 14:25:03 -0700 Subject: [PATCH 09/15] replace just the script command instead of the full block --- jenkins/jobs.groovy | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index 99bf5443fa..114e4389ed 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -131,10 +131,11 @@ parameterizedJob.with { } } configure { project -> - project / 'publishers' / 'hudson.plugins.postbuildtask.PostbuildTask' / 'tasks' / 'hudson.plugins.postbuildtask.TaskProperties' { - script 'curl -d action=hifidevgrid -d "hostname=$HOSTNAME" ' + - '-d "github_user=$GITHUB_USER" -d "build_branch=$GIT_BRANCH" ' + - "-d \"revision=\$TARGET\" https://${ARTIFACT_DESTINATION}" - } + def curlCommand = 'curl -d action=hifidevgrid -d "hostname=$HOSTNAME" ' + + '-d "github_user=$GITHUB_USER" -d "build_branch=$GIT_BRANCH" ' + + "-d \"revision=\$TARGET\" https://${ARTIFACT_DESTINATION}" + + (project / publishers / 'hudson.plugins.postbuildtask.PostbuildTask' / + tasks / 'hudson.plugins.postbuildtask.TaskProperties' / script).setValue(curlCommand) } } \ No newline at end of file From 59a9fc8eff17c396627a9b3e4776ae48ca465449 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 16:08:03 -0700 Subject: [PATCH 10/15] remove the Speex library --- cmake/modules/FindSpeexDSP.cmake | 88 ---- interface/CMakeLists.txt | 5 +- .../external/Speex/include/speex/speex.h | 424 ------------------ .../external/Speex/include/speex/speex_bits.h | 174 ------- .../Speex/include/speex/speex_buffer.h | 68 --- .../Speex/include/speex/speex_callbacks.h | 134 ------ .../Speex/include/speex/speex_config_types.h | 11 - .../external/Speex/include/speex/speex_echo.h | 170 ------- .../Speex/include/speex/speex_header.h | 94 ---- .../Speex/include/speex/speex_jitter.h | 197 -------- .../Speex/include/speex/speex_preprocess.h | 219 --------- .../Speex/include/speex/speex_resampler.h | 340 -------------- .../Speex/include/speex/speex_stereo.h | 91 ---- .../Speex/include/speex/speex_types.h | 126 ------ interface/external/Speex/lib/MacOS/libspeex.a | Bin 457096 -> 0 bytes .../external/Speex/lib/MacOS/libspeexdsp.a | Bin 300560 -> 0 bytes 16 files changed, 1 insertion(+), 2140 deletions(-) delete mode 100644 cmake/modules/FindSpeexDSP.cmake delete mode 100644 interface/external/Speex/include/speex/speex.h delete mode 100644 interface/external/Speex/include/speex/speex_bits.h delete mode 100644 interface/external/Speex/include/speex/speex_buffer.h delete mode 100644 interface/external/Speex/include/speex/speex_callbacks.h delete mode 100644 interface/external/Speex/include/speex/speex_config_types.h delete mode 100644 interface/external/Speex/include/speex/speex_echo.h delete mode 100644 interface/external/Speex/include/speex/speex_header.h delete mode 100644 interface/external/Speex/include/speex/speex_jitter.h delete mode 100644 interface/external/Speex/include/speex/speex_preprocess.h delete mode 100644 interface/external/Speex/include/speex/speex_resampler.h delete mode 100644 interface/external/Speex/include/speex/speex_stereo.h delete mode 100644 interface/external/Speex/include/speex/speex_types.h delete mode 100644 interface/external/Speex/lib/MacOS/libspeex.a delete mode 100644 interface/external/Speex/lib/MacOS/libspeexdsp.a diff --git a/cmake/modules/FindSpeexDSP.cmake b/cmake/modules/FindSpeexDSP.cmake deleted file mode 100644 index cd9eed44d5..0000000000 --- a/cmake/modules/FindSpeexDSP.cmake +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2009, Whispersoft s.r.l. -# All rights reserved. -# -# 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 Whispersoft s.r.l. nor the names of its -# 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. - - -############################# -# THIS IS A MODIFIED COPY. # -############################# - -# -# Changed 6/18/2013 by Tobias Schwinger -# Copyright (c) 2013 High Fidelity -# - -# -# Finds SPEEXDSP library -# -# SPEEXDSP_INCLUDE_DIRS - where to find speex.h, etc. -# SPEEXDSP_LIBRARIES - List of libraries when using SPEEXDSP. -# SPEEXDSP_FOUND - True if SPEEXDSP found. -# - -if (SPEEXDSP_INCLUDE_DIRS AND SPEEXDSP_LIBRARIES) - set(SPEEXDSP_FOUND TRUE) -else (SPEEXDSP_INCLUDE_DIRS AND SPEEXDSP_LIBRARIES) - - find_path(SPEEXDSP_INCLUDE_DIRS speex/speex.h - /usr/include - /usr/local/include - ${SPEEX_ROOT_DIR}/include - ) - - set(SPEEXDSP_NAMES speexdsp) - find_library(SPEEXDSP_LIBRARY NAMES ${SPEEXDSP_NAMES} PATHS /usr/lib usr/local/lib) - if (NOT SPEEXDSP_LIBRARY AND APPLE) - find_library(SPEEXDSP_LIBRARY NAMES ${SPEEXDSP_NAMES} PATHS ${SPEEX_ROOT_DIR}/lib/MacOS) - elseif (WIN32) - find_library(SPEEXDSP_LIBRARY NAMES ${SPEEXDSP_NAMES} PATHS ${SPEEX_ROOT_DIR}/lib/Win32) - endif () - - if (SPEEXDSP_INCLUDE_DIRS AND SPEEXDSP_LIBRARY) - set(SPEEXDSP_FOUND TRUE) - set(SPEEXDSP_LIBRARIES ${SPEEXDSP_LIBRARY}) - else (SPEEXDSP_INCLUDE_DIRS AND SPEEXDSP_LIBRARY) - set(SPEEXDSP_FOUND FALSE) - set(SPEEXDSP_LIBRARIES) - endif (SPEEXDSP_INCLUDE_DIRS AND SPEEXDSP_LIBRARY) - - if (SPEEXDSP_FOUND) - message(STATUS "Found SpeexDSP: ${SPEEXDSP_LIBRARY}") - else (SPEEXDSP_FOUND) - if (SPEEXDSP_FIND_REQUIRED) - message(STATUS "Looked for SpeexDSP libraries named ${SPEEXDSP_NAMES}.") - message(STATUS "Include file detected: [${SPEEXDSP_INCLUDE_DIRS}].") - message(STATUS "Lib file detected: [${SPEEXDSP_LIBRARY}].") - message(FATAL_ERROR "=========> Could NOT find SpeexDSP library") - endif (SPEEXDSP_FIND_REQUIRED) - endif (SPEEXDSP_FOUND) - - mark_as_advanced(SPEEXDSP_INCLUDE_DIRS SPEEXDSP_LIBRARIES) - -endif (SPEEXDSP_INCLUDE_DIRS AND SPEEXDSP_LIBRARIES) - diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 148e6819be..9a57a546f1 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -10,7 +10,6 @@ project(${TARGET_NAME}) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/modules/") set(LIBOVR_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/LibOVR) set(PORTAUDIO_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/PortAudio) -set(SPEEX_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/Speex) set(OPENCV_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/OpenCV) set(UVCCAMERACONTROL_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/UVCCameraControl) @@ -87,7 +86,6 @@ link_hifi_library(audio ${TARGET_NAME} ${ROOT_DIR}) # find required libraries find_package(GLM REQUIRED) find_package(LibOVR) -find_package(SpeexDSP REQUIRED) find_package(OpenCV) find_package(ZLIB) find_package(UVCCameraControl) @@ -105,10 +103,9 @@ include_directories( ${GLM_INCLUDE_DIRS} ${LIBOVR_INCLUDE_DIRS} ${OPENCV_INCLUDE_DIRS} - ${SPEEXDSP_INCLUDE_DIRS} ) -target_link_libraries(${TARGET_NAME} ${QT_LIBRARIES} ${OPENCV_LIBRARIES} ${ZLIB_LIBRARIES} ${SPEEXDSP_LIBRARIES}) +target_link_libraries(${TARGET_NAME} ${QT_LIBRARIES} ${OPENCV_LIBRARIES} ${ZLIB_LIBRARIES}) if (APPLE) # link in required OS X frameworks and include the right GL headers diff --git a/interface/external/Speex/include/speex/speex.h b/interface/external/Speex/include/speex/speex.h deleted file mode 100644 index 82ba016237..0000000000 --- a/interface/external/Speex/include/speex/speex.h +++ /dev/null @@ -1,424 +0,0 @@ -/* Copyright (C) 2002-2006 Jean-Marc Valin*/ -/** - @file speex.h - @brief Describes the different modes of the codec -*/ -/* - 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 the Xiph.org Foundation nor the names of its - 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 FOUNDATION 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. - -*/ - -#ifndef SPEEX_H -#define SPEEX_H -/** @defgroup Codec Speex encoder and decoder - * This is the Speex codec itself. - * @{ - */ - -#include "speex/speex_bits.h" -#include "speex/speex_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Values allowed for *ctl() requests */ - -/** Set enhancement on/off (decoder only) */ -#define SPEEX_SET_ENH 0 -/** Get enhancement state (decoder only) */ -#define SPEEX_GET_ENH 1 - -/*Would be SPEEX_SET_FRAME_SIZE, but it's (currently) invalid*/ -/** Obtain frame size used by encoder/decoder */ -#define SPEEX_GET_FRAME_SIZE 3 - -/** Set quality value */ -#define SPEEX_SET_QUALITY 4 -/** Get current quality setting */ -/* #define SPEEX_GET_QUALITY 5 -- Doesn't make much sense, does it? */ - -/** Set sub-mode to use */ -#define SPEEX_SET_MODE 6 -/** Get current sub-mode in use */ -#define SPEEX_GET_MODE 7 - -/** Set low-band sub-mode to use (wideband only)*/ -#define SPEEX_SET_LOW_MODE 8 -/** Get current low-band mode in use (wideband only)*/ -#define SPEEX_GET_LOW_MODE 9 - -/** Set high-band sub-mode to use (wideband only)*/ -#define SPEEX_SET_HIGH_MODE 10 -/** Get current high-band mode in use (wideband only)*/ -#define SPEEX_GET_HIGH_MODE 11 - -/** Set VBR on (1) or off (0) */ -#define SPEEX_SET_VBR 12 -/** Get VBR status (1 for on, 0 for off) */ -#define SPEEX_GET_VBR 13 - -/** Set quality value for VBR encoding (0-10) */ -#define SPEEX_SET_VBR_QUALITY 14 -/** Get current quality value for VBR encoding (0-10) */ -#define SPEEX_GET_VBR_QUALITY 15 - -/** Set complexity of the encoder (0-10) */ -#define SPEEX_SET_COMPLEXITY 16 -/** Get current complexity of the encoder (0-10) */ -#define SPEEX_GET_COMPLEXITY 17 - -/** Set bit-rate used by the encoder (or lower) */ -#define SPEEX_SET_BITRATE 18 -/** Get current bit-rate used by the encoder or decoder */ -#define SPEEX_GET_BITRATE 19 - -/** Define a handler function for in-band Speex request*/ -#define SPEEX_SET_HANDLER 20 - -/** Define a handler function for in-band user-defined request*/ -#define SPEEX_SET_USER_HANDLER 22 - -/** Set sampling rate used in bit-rate computation */ -#define SPEEX_SET_SAMPLING_RATE 24 -/** Get sampling rate used in bit-rate computation */ -#define SPEEX_GET_SAMPLING_RATE 25 - -/** Reset the encoder/decoder memories to zero*/ -#define SPEEX_RESET_STATE 26 - -/** Get VBR info (mostly used internally) */ -#define SPEEX_GET_RELATIVE_QUALITY 29 - -/** Set VAD status (1 for on, 0 for off) */ -#define SPEEX_SET_VAD 30 - -/** Get VAD status (1 for on, 0 for off) */ -#define SPEEX_GET_VAD 31 - -/** Set Average Bit-Rate (ABR) to n bits per seconds */ -#define SPEEX_SET_ABR 32 -/** Get Average Bit-Rate (ABR) setting (in bps) */ -#define SPEEX_GET_ABR 33 - -/** Set DTX status (1 for on, 0 for off) */ -#define SPEEX_SET_DTX 34 -/** Get DTX status (1 for on, 0 for off) */ -#define SPEEX_GET_DTX 35 - -/** Set submode encoding in each frame (1 for yes, 0 for no, setting to no breaks the standard) */ -#define SPEEX_SET_SUBMODE_ENCODING 36 -/** Get submode encoding in each frame */ -#define SPEEX_GET_SUBMODE_ENCODING 37 - -/*#define SPEEX_SET_LOOKAHEAD 38*/ -/** Returns the lookahead used by Speex */ -#define SPEEX_GET_LOOKAHEAD 39 - -/** Sets tuning for packet-loss concealment (expected loss rate) */ -#define SPEEX_SET_PLC_TUNING 40 -/** Gets tuning for PLC */ -#define SPEEX_GET_PLC_TUNING 41 - -/** Sets the max bit-rate allowed in VBR mode */ -#define SPEEX_SET_VBR_MAX_BITRATE 42 -/** Gets the max bit-rate allowed in VBR mode */ -#define SPEEX_GET_VBR_MAX_BITRATE 43 - -/** Turn on/off input/output high-pass filtering */ -#define SPEEX_SET_HIGHPASS 44 -/** Get status of input/output high-pass filtering */ -#define SPEEX_GET_HIGHPASS 45 - -/** Get "activity level" of the last decoded frame, i.e. - how much damage we cause if we remove the frame */ -#define SPEEX_GET_ACTIVITY 47 - - -/* Preserving compatibility:*/ -/** Equivalent to SPEEX_SET_ENH */ -#define SPEEX_SET_PF 0 -/** Equivalent to SPEEX_GET_ENH */ -#define SPEEX_GET_PF 1 - - - - -/* Values allowed for mode queries */ -/** Query the frame size of a mode */ -#define SPEEX_MODE_FRAME_SIZE 0 - -/** Query the size of an encoded frame for a particular sub-mode */ -#define SPEEX_SUBMODE_BITS_PER_FRAME 1 - - - -/** Get major Speex version */ -#define SPEEX_LIB_GET_MAJOR_VERSION 1 -/** Get minor Speex version */ -#define SPEEX_LIB_GET_MINOR_VERSION 3 -/** Get micro Speex version */ -#define SPEEX_LIB_GET_MICRO_VERSION 5 -/** Get extra Speex version */ -#define SPEEX_LIB_GET_EXTRA_VERSION 7 -/** Get Speex version string */ -#define SPEEX_LIB_GET_VERSION_STRING 9 - -/*#define SPEEX_LIB_SET_ALLOC_FUNC 10 -#define SPEEX_LIB_GET_ALLOC_FUNC 11 -#define SPEEX_LIB_SET_FREE_FUNC 12 -#define SPEEX_LIB_GET_FREE_FUNC 13 - -#define SPEEX_LIB_SET_WARNING_FUNC 14 -#define SPEEX_LIB_GET_WARNING_FUNC 15 -#define SPEEX_LIB_SET_ERROR_FUNC 16 -#define SPEEX_LIB_GET_ERROR_FUNC 17 -*/ - -/** Number of defined modes in Speex */ -#define SPEEX_NB_MODES 3 - -/** modeID for the defined narrowband mode */ -#define SPEEX_MODEID_NB 0 - -/** modeID for the defined wideband mode */ -#define SPEEX_MODEID_WB 1 - -/** modeID for the defined ultra-wideband mode */ -#define SPEEX_MODEID_UWB 2 - -struct SpeexMode; - - -/* Prototypes for mode function pointers */ - -/** Encoder state initialization function */ -typedef void *(*encoder_init_func)(const struct SpeexMode *mode); - -/** Encoder state destruction function */ -typedef void (*encoder_destroy_func)(void *st); - -/** Main encoding function */ -typedef int (*encode_func)(void *state, void *in, SpeexBits *bits); - -/** Function for controlling the encoder options */ -typedef int (*encoder_ctl_func)(void *state, int request, void *ptr); - -/** Decoder state initialization function */ -typedef void *(*decoder_init_func)(const struct SpeexMode *mode); - -/** Decoder state destruction function */ -typedef void (*decoder_destroy_func)(void *st); - -/** Main decoding function */ -typedef int (*decode_func)(void *state, SpeexBits *bits, void *out); - -/** Function for controlling the decoder options */ -typedef int (*decoder_ctl_func)(void *state, int request, void *ptr); - - -/** Query function for a mode */ -typedef int (*mode_query_func)(const void *mode, int request, void *ptr); - -/** Struct defining a Speex mode */ -typedef struct SpeexMode { - /** Pointer to the low-level mode data */ - const void *mode; - - /** Pointer to the mode query function */ - mode_query_func query; - - /** The name of the mode (you should not rely on this to identify the mode)*/ - const char *modeName; - - /**ID of the mode*/ - int modeID; - - /**Version number of the bitstream (incremented every time we break - bitstream compatibility*/ - int bitstream_version; - - /** Pointer to encoder initialization function */ - encoder_init_func enc_init; - - /** Pointer to encoder destruction function */ - encoder_destroy_func enc_destroy; - - /** Pointer to frame encoding function */ - encode_func enc; - - /** Pointer to decoder initialization function */ - decoder_init_func dec_init; - - /** Pointer to decoder destruction function */ - decoder_destroy_func dec_destroy; - - /** Pointer to frame decoding function */ - decode_func dec; - - /** ioctl-like requests for encoder */ - encoder_ctl_func enc_ctl; - - /** ioctl-like requests for decoder */ - decoder_ctl_func dec_ctl; - -} SpeexMode; - -/** - * Returns a handle to a newly created Speex encoder state structure. For now, - * the "mode" argument can be &nb_mode or &wb_mode . In the future, more modes - * may be added. Note that for now if you have more than one channels to - * encode, you need one state per channel. - * - * @param mode The mode to use (either speex_nb_mode or speex_wb.mode) - * @return A newly created encoder state or NULL if state allocation fails - */ -void *speex_encoder_init(const SpeexMode *mode); - -/** Frees all resources associated to an existing Speex encoder state. - * @param state Encoder state to be destroyed */ -void speex_encoder_destroy(void *state); - -/** Uses an existing encoder state to encode one frame of speech pointed to by - "in". The encoded bit-stream is saved in "bits". - @param state Encoder state - @param in Frame that will be encoded with a +-2^15 range. This data MAY be - overwritten by the encoder and should be considered uninitialised - after the call. - @param bits Bit-stream where the data will be written - @return 0 if frame needs not be transmitted (DTX only), 1 otherwise - */ -int speex_encode(void *state, float *in, SpeexBits *bits); - -/** Uses an existing encoder state to encode one frame of speech pointed to by - "in". The encoded bit-stream is saved in "bits". - @param state Encoder state - @param in Frame that will be encoded with a +-2^15 range - @param bits Bit-stream where the data will be written - @return 0 if frame needs not be transmitted (DTX only), 1 otherwise - */ -int speex_encode_int(void *state, spx_int16_t *in, SpeexBits *bits); - -/** Used like the ioctl function to control the encoder parameters - * - * @param state Encoder state - * @param request ioctl-type request (one of the SPEEX_* macros) - * @param ptr Data exchanged to-from function - * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter - */ -int speex_encoder_ctl(void *state, int request, void *ptr); - - -/** Returns a handle to a newly created decoder state structure. For now, - * the mode argument can be &nb_mode or &wb_mode . In the future, more modes - * may be added. Note that for now if you have more than one channels to - * decode, you need one state per channel. - * - * @param mode Speex mode (one of speex_nb_mode or speex_wb_mode) - * @return A newly created decoder state or NULL if state allocation fails - */ -void *speex_decoder_init(const SpeexMode *mode); - -/** Frees all resources associated to an existing decoder state. - * - * @param state State to be destroyed - */ -void speex_decoder_destroy(void *state); - -/** Uses an existing decoder state to decode one frame of speech from - * bit-stream bits. The output speech is saved written to out. - * - * @param state Decoder state - * @param bits Bit-stream from which to decode the frame (NULL if the packet was lost) - * @param out Where to write the decoded frame - * @return return status (0 for no error, -1 for end of stream, -2 corrupt stream) - */ -int speex_decode(void *state, SpeexBits *bits, float *out); - -/** Uses an existing decoder state to decode one frame of speech from - * bit-stream bits. The output speech is saved written to out. - * - * @param state Decoder state - * @param bits Bit-stream from which to decode the frame (NULL if the packet was lost) - * @param out Where to write the decoded frame - * @return return status (0 for no error, -1 for end of stream, -2 corrupt stream) - */ -int speex_decode_int(void *state, SpeexBits *bits, spx_int16_t *out); - -/** Used like the ioctl function to control the encoder parameters - * - * @param state Decoder state - * @param request ioctl-type request (one of the SPEEX_* macros) - * @param ptr Data exchanged to-from function - * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter - */ -int speex_decoder_ctl(void *state, int request, void *ptr); - - -/** Query function for mode information - * - * @param mode Speex mode - * @param request ioctl-type request (one of the SPEEX_* macros) - * @param ptr Data exchanged to-from function - * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter - */ -int speex_mode_query(const SpeexMode *mode, int request, void *ptr); - -/** Functions for controlling the behavior of libspeex - * @param request ioctl-type request (one of the SPEEX_LIB_* macros) - * @param ptr Data exchanged to-from function - * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter - */ -int speex_lib_ctl(int request, void *ptr); - -/** Default narrowband mode */ -extern const SpeexMode speex_nb_mode; - -/** Default wideband mode */ -extern const SpeexMode speex_wb_mode; - -/** Default "ultra-wideband" mode */ -extern const SpeexMode speex_uwb_mode; - -/** List of all modes available */ -extern const SpeexMode * const speex_mode_list[SPEEX_NB_MODES]; - -/** Obtain one of the modes available */ -const SpeexMode * speex_lib_get_mode (int mode); - -#ifndef WIN32 -/* We actually override the function in the narrowband case so that we can avoid linking in the wideband stuff */ -#define speex_lib_get_mode(mode) ((mode)==SPEEX_MODEID_NB ? &speex_nb_mode : speex_lib_get_mode (mode)) -#endif - -#ifdef __cplusplus -} -#endif - -/** @}*/ -#endif diff --git a/interface/external/Speex/include/speex/speex_bits.h b/interface/external/Speex/include/speex/speex_bits.h deleted file mode 100644 index a26fb4ce0c..0000000000 --- a/interface/external/Speex/include/speex/speex_bits.h +++ /dev/null @@ -1,174 +0,0 @@ -/* Copyright (C) 2002 Jean-Marc Valin */ -/** - @file speex_bits.h - @brief Handles bit packing/unpacking -*/ -/* - 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 the Xiph.org Foundation nor the names of its - 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 FOUNDATION 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. - -*/ - -#ifndef BITS_H -#define BITS_H -/** @defgroup SpeexBits SpeexBits: Bit-stream manipulations - * This is the structure that holds the bit-stream when encoding or decoding - * with Speex. It allows some manipulations as well. - * @{ - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/** Bit-packing data structure representing (part of) a bit-stream. */ -typedef struct SpeexBits { - char *chars; /**< "raw" data */ - int nbBits; /**< Total number of bits stored in the stream*/ - int charPtr; /**< Position of the byte "cursor" */ - int bitPtr; /**< Position of the bit "cursor" within the current char */ - int owner; /**< Does the struct "own" the "raw" buffer (member "chars") */ - int overflow;/**< Set to one if we try to read past the valid data */ - int buf_size;/**< Allocated size for buffer */ - int reserved1; /**< Reserved for future use */ - void *reserved2; /**< Reserved for future use */ -} SpeexBits; - -/** Initializes and allocates resources for a SpeexBits struct */ -void speex_bits_init(SpeexBits *bits); - -/** Initializes SpeexBits struct using a pre-allocated buffer*/ -void speex_bits_init_buffer(SpeexBits *bits, void *buff, int buf_size); - -/** Sets the bits in a SpeexBits struct to use data from an existing buffer (for decoding without copying data) */ -void speex_bits_set_bit_buffer(SpeexBits *bits, void *buff, int buf_size); - -/** Frees all resources associated to a SpeexBits struct. Right now this does nothing since no resources are allocated, but this could change in the future.*/ -void speex_bits_destroy(SpeexBits *bits); - -/** Resets bits to initial value (just after initialization, erasing content)*/ -void speex_bits_reset(SpeexBits *bits); - -/** Rewind the bit-stream to the beginning (ready for read) without erasing the content */ -void speex_bits_rewind(SpeexBits *bits); - -/** Initializes the bit-stream from the data in an area of memory */ -void speex_bits_read_from(SpeexBits *bits, char *bytes, int len); - -/** Append bytes to the bit-stream - * - * @param bits Bit-stream to operate on - * @param bytes pointer to the bytes what will be appended - * @param len Number of bytes of append - */ -void speex_bits_read_whole_bytes(SpeexBits *bits, char *bytes, int len); - -/** Write the content of a bit-stream to an area of memory - * - * @param bits Bit-stream to operate on - * @param bytes Memory location where to write the bits - * @param max_len Maximum number of bytes to write (i.e. size of the "bytes" buffer) - * @return Number of bytes written to the "bytes" buffer -*/ -int speex_bits_write(SpeexBits *bits, char *bytes, int max_len); - -/** Like speex_bits_write, but writes only the complete bytes in the stream. Also removes the written bytes from the stream */ -int speex_bits_write_whole_bytes(SpeexBits *bits, char *bytes, int max_len); - -/** Append bits to the bit-stream - * @param bits Bit-stream to operate on - * @param data Value to append as integer - * @param nbBits number of bits to consider in "data" - */ -void speex_bits_pack(SpeexBits *bits, int data, int nbBits); - -/** Interpret the next bits in the bit-stream as a signed integer - * - * @param bits Bit-stream to operate on - * @param nbBits Number of bits to interpret - * @return A signed integer represented by the bits read - */ -int speex_bits_unpack_signed(SpeexBits *bits, int nbBits); - -/** Interpret the next bits in the bit-stream as an unsigned integer - * - * @param bits Bit-stream to operate on - * @param nbBits Number of bits to interpret - * @return An unsigned integer represented by the bits read - */ -unsigned int speex_bits_unpack_unsigned(SpeexBits *bits, int nbBits); - -/** Returns the number of bytes in the bit-stream, including the last one even if it is not "full" - * - * @param bits Bit-stream to operate on - * @return Number of bytes in the stream - */ -int speex_bits_nbytes(SpeexBits *bits); - -/** Same as speex_bits_unpack_unsigned, but without modifying the cursor position - * - * @param bits Bit-stream to operate on - * @param nbBits Number of bits to look for - * @return Value of the bits peeked, interpreted as unsigned - */ -unsigned int speex_bits_peek_unsigned(SpeexBits *bits, int nbBits); - -/** Get the value of the next bit in the stream, without modifying the - * "cursor" position - * - * @param bits Bit-stream to operate on - * @return Value of the bit peeked (one bit only) - */ -int speex_bits_peek(SpeexBits *bits); - -/** Advances the position of the "bit cursor" in the stream - * - * @param bits Bit-stream to operate on - * @param n Number of bits to advance - */ -void speex_bits_advance(SpeexBits *bits, int n); - -/** Returns the number of bits remaining to be read in a stream - * - * @param bits Bit-stream to operate on - * @return Number of bits that can still be read from the stream - */ -int speex_bits_remaining(SpeexBits *bits); - -/** Insert a terminator so that the data can be sent as a packet while auto-detecting - * the number of frames in each packet - * - * @param bits Bit-stream to operate on - */ -void speex_bits_insert_terminator(SpeexBits *bits); - -#ifdef __cplusplus -} -#endif - -/* @} */ -#endif diff --git a/interface/external/Speex/include/speex/speex_buffer.h b/interface/external/Speex/include/speex/speex_buffer.h deleted file mode 100644 index df56f5f18b..0000000000 --- a/interface/external/Speex/include/speex/speex_buffer.h +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (C) 2007 Jean-Marc Valin - - File: speex_buffer.h - This is a very simple ring buffer implementation. It is not thread-safe - so you need to do your own locking. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. 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. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -*/ - -#ifndef SPEEX_BUFFER_H -#define SPEEX_BUFFER_H - -#include "speex/speex_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct SpeexBuffer_; -typedef struct SpeexBuffer_ SpeexBuffer; - -SpeexBuffer *speex_buffer_init(int size); - -void speex_buffer_destroy(SpeexBuffer *st); - -int speex_buffer_write(SpeexBuffer *st, void *data, int len); - -int speex_buffer_writezeros(SpeexBuffer *st, int len); - -int speex_buffer_read(SpeexBuffer *st, void *data, int len); - -int speex_buffer_get_available(SpeexBuffer *st); - -int speex_buffer_resize(SpeexBuffer *st, int len); - -#ifdef __cplusplus -} -#endif - -#endif - - - - diff --git a/interface/external/Speex/include/speex/speex_callbacks.h b/interface/external/Speex/include/speex/speex_callbacks.h deleted file mode 100644 index 6f450b3a3a..0000000000 --- a/interface/external/Speex/include/speex/speex_callbacks.h +++ /dev/null @@ -1,134 +0,0 @@ -/* Copyright (C) 2002 Jean-Marc Valin*/ -/** - @file speex_callbacks.h - @brief Describes callback handling and in-band signalling -*/ -/* - 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 the Xiph.org Foundation nor the names of its - 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 FOUNDATION 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. - -*/ - -#ifndef SPEEX_CALLBACKS_H -#define SPEEX_CALLBACKS_H -/** @defgroup SpeexCallbacks Various definitions for Speex callbacks supported by the decoder. - * @{ - */ - -#include "speex.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Total number of callbacks */ -#define SPEEX_MAX_CALLBACKS 16 - -/* Describes all the in-band requests */ - -/*These are 1-bit requests*/ -/** Request for perceptual enhancement (1 for on, 0 for off) */ -#define SPEEX_INBAND_ENH_REQUEST 0 -/** Reserved */ -#define SPEEX_INBAND_RESERVED1 1 - -/*These are 4-bit requests*/ -/** Request for a mode change */ -#define SPEEX_INBAND_MODE_REQUEST 2 -/** Request for a low mode change */ -#define SPEEX_INBAND_LOW_MODE_REQUEST 3 -/** Request for a high mode change */ -#define SPEEX_INBAND_HIGH_MODE_REQUEST 4 -/** Request for VBR (1 on, 0 off) */ -#define SPEEX_INBAND_VBR_QUALITY_REQUEST 5 -/** Request to be sent acknowledge */ -#define SPEEX_INBAND_ACKNOWLEDGE_REQUEST 6 -/** Request for VBR (1 for on, 0 for off) */ -#define SPEEX_INBAND_VBR_REQUEST 7 - -/*These are 8-bit requests*/ -/** Send a character in-band */ -#define SPEEX_INBAND_CHAR 8 -/** Intensity stereo information */ -#define SPEEX_INBAND_STEREO 9 - -/*These are 16-bit requests*/ -/** Transmit max bit-rate allowed */ -#define SPEEX_INBAND_MAX_BITRATE 10 - -/*These are 32-bit requests*/ -/** Acknowledge packet reception */ -#define SPEEX_INBAND_ACKNOWLEDGE 12 - -/** Callback function type */ -typedef int (*speex_callback_func)(SpeexBits *bits, void *state, void *data); - -/** Callback information */ -typedef struct SpeexCallback { - int callback_id; /**< ID associated to the callback */ - speex_callback_func func; /**< Callback handler function */ - void *data; /**< Data that will be sent to the handler */ - void *reserved1; /**< Reserved for future use */ - int reserved2; /**< Reserved for future use */ -} SpeexCallback; - -/** Handle in-band request */ -int speex_inband_handler(SpeexBits *bits, SpeexCallback *callback_list, void *state); - -/** Standard handler for mode request (change mode, no questions asked) */ -int speex_std_mode_request_handler(SpeexBits *bits, void *state, void *data); - -/** Standard handler for high mode request (change high mode, no questions asked) */ -int speex_std_high_mode_request_handler(SpeexBits *bits, void *state, void *data); - -/** Standard handler for in-band characters (write to stderr) */ -int speex_std_char_handler(SpeexBits *bits, void *state, void *data); - -/** Default handler for user-defined requests: in this case, just ignore */ -int speex_default_user_handler(SpeexBits *bits, void *state, void *data); - - - -/** Standard handler for low mode request (change low mode, no questions asked) */ -int speex_std_low_mode_request_handler(SpeexBits *bits, void *state, void *data); - -/** Standard handler for VBR request (Set VBR, no questions asked) */ -int speex_std_vbr_request_handler(SpeexBits *bits, void *state, void *data); - -/** Standard handler for enhancer request (Turn enhancer on/off, no questions asked) */ -int speex_std_enh_request_handler(SpeexBits *bits, void *state, void *data); - -/** Standard handler for VBR quality request (Set VBR quality, no questions asked) */ -int speex_std_vbr_quality_request_handler(SpeexBits *bits, void *state, void *data); - - -#ifdef __cplusplus -} -#endif - -/** @} */ -#endif diff --git a/interface/external/Speex/include/speex/speex_config_types.h b/interface/external/Speex/include/speex/speex_config_types.h deleted file mode 100644 index bd548546b0..0000000000 --- a/interface/external/Speex/include/speex/speex_config_types.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef __SPEEX_TYPES_H__ -#define __SPEEX_TYPES_H__ - -/* these are filled in by configure */ -typedef short spx_int16_t; -typedef unsigned short spx_uint16_t; -typedef int spx_int32_t; -typedef unsigned int spx_uint32_t; - -#endif - diff --git a/interface/external/Speex/include/speex/speex_echo.h b/interface/external/Speex/include/speex/speex_echo.h deleted file mode 100644 index 53bcd28a1a..0000000000 --- a/interface/external/Speex/include/speex/speex_echo.h +++ /dev/null @@ -1,170 +0,0 @@ -/* Copyright (C) Jean-Marc Valin */ -/** - @file speex_echo.h - @brief Echo cancellation -*/ -/* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. 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. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -*/ - -#ifndef SPEEX_ECHO_H -#define SPEEX_ECHO_H -/** @defgroup SpeexEchoState SpeexEchoState: Acoustic echo canceller - * This is the acoustic echo canceller module. - * @{ - */ -#include "speex/speex_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Obtain frame size used by the AEC */ -#define SPEEX_ECHO_GET_FRAME_SIZE 3 - -/** Set sampling rate */ -#define SPEEX_ECHO_SET_SAMPLING_RATE 24 -/** Get sampling rate */ -#define SPEEX_ECHO_GET_SAMPLING_RATE 25 - -/* Can't set window sizes */ -/** Get size of impulse response (int32) */ -#define SPEEX_ECHO_GET_IMPULSE_RESPONSE_SIZE 27 - -/* Can't set window content */ -/** Get impulse response (int32[]) */ -#define SPEEX_ECHO_GET_IMPULSE_RESPONSE 29 - -/** Internal echo canceller state. Should never be accessed directly. */ -struct SpeexEchoState_; - -/** @class SpeexEchoState - * This holds the state of the echo canceller. You need one per channel. -*/ - -/** Internal echo canceller state. Should never be accessed directly. */ -typedef struct SpeexEchoState_ SpeexEchoState; - -/** Creates a new echo canceller state - * @param frame_size Number of samples to process at one time (should correspond to 10-20 ms) - * @param filter_length Number of samples of echo to cancel (should generally correspond to 100-500 ms) - * @return Newly-created echo canceller state - */ -SpeexEchoState *speex_echo_state_init(int frame_size, int filter_length); - -/** Creates a new multi-channel echo canceller state - * @param frame_size Number of samples to process at one time (should correspond to 10-20 ms) - * @param filter_length Number of samples of echo to cancel (should generally correspond to 100-500 ms) - * @param nb_mic Number of microphone channels - * @param nb_speakers Number of speaker channels - * @return Newly-created echo canceller state - */ -SpeexEchoState *speex_echo_state_init_mc(int frame_size, int filter_length, int nb_mic, int nb_speakers); - -/** Destroys an echo canceller state - * @param st Echo canceller state -*/ -void speex_echo_state_destroy(SpeexEchoState *st); - -/** Performs echo cancellation a frame, based on the audio sent to the speaker (no delay is added - * to playback in this form) - * - * @param st Echo canceller state - * @param rec Signal from the microphone (near end + far end echo) - * @param play Signal played to the speaker (received from far end) - * @param out Returns near-end signal with echo removed - */ -void speex_echo_cancellation(SpeexEchoState *st, const spx_int16_t *rec, const spx_int16_t *play, spx_int16_t *out); - -/** Performs echo cancellation a frame (deprecated) */ -void speex_echo_cancel(SpeexEchoState *st, const spx_int16_t *rec, const spx_int16_t *play, spx_int16_t *out, spx_int32_t *Yout); - -/** Perform echo cancellation using internal playback buffer, which is delayed by two frames - * to account for the delay introduced by most soundcards (but it could be off!) - * @param st Echo canceller state - * @param rec Signal from the microphone (near end + far end echo) - * @param out Returns near-end signal with echo removed -*/ -void speex_echo_capture(SpeexEchoState *st, const spx_int16_t *rec, spx_int16_t *out); - -/** Let the echo canceller know that a frame was just queued to the soundcard - * @param st Echo canceller state - * @param play Signal played to the speaker (received from far end) -*/ -void speex_echo_playback(SpeexEchoState *st, const spx_int16_t *play); - -/** Reset the echo canceller to its original state - * @param st Echo canceller state - */ -void speex_echo_state_reset(SpeexEchoState *st); - -/** Used like the ioctl function to control the echo canceller parameters - * - * @param st Echo canceller state - * @param request ioctl-type request (one of the SPEEX_ECHO_* macros) - * @param ptr Data exchanged to-from function - * @return 0 if no error, -1 if request in unknown - */ -int speex_echo_ctl(SpeexEchoState *st, int request, void *ptr); - - - -struct SpeexDecorrState_; - -typedef struct SpeexDecorrState_ SpeexDecorrState; - - -/** Create a state for the channel decorrelation algorithm - This is useful for multi-channel echo cancellation only - * @param rate Sampling rate - * @param channels Number of channels (it's a bit pointless if you don't have at least 2) - * @param frame_size Size of the frame to process at ones (counting samples *per* channel) -*/ -SpeexDecorrState *speex_decorrelate_new(int rate, int channels, int frame_size); - -/** Remove correlation between the channels by modifying the phase and possibly - adding noise in a way that is not (or little) perceptible. - * @param st Decorrelator state - * @param in Input audio in interleaved format - * @param out Result of the decorrelation (out *may* alias in) - * @param strength How much alteration of the audio to apply from 0 to 100. -*/ -void speex_decorrelate(SpeexDecorrState *st, const spx_int16_t *in, spx_int16_t *out, int strength); - -/** Destroy a Decorrelation state - * @param st State to destroy -*/ -void speex_decorrelate_destroy(SpeexDecorrState *st); - - -#ifdef __cplusplus -} -#endif - - -/** @}*/ -#endif diff --git a/interface/external/Speex/include/speex/speex_header.h b/interface/external/Speex/include/speex/speex_header.h deleted file mode 100644 index f85b2496ae..0000000000 --- a/interface/external/Speex/include/speex/speex_header.h +++ /dev/null @@ -1,94 +0,0 @@ -/* Copyright (C) 2002 Jean-Marc Valin */ -/** - @file speex_header.h - @brief Describes the Speex header -*/ -/* - 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 the Xiph.org Foundation nor the names of its - 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 FOUNDATION 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. - -*/ - - -#ifndef SPEEX_HEADER_H -#define SPEEX_HEADER_H -/** @defgroup SpeexHeader SpeexHeader: Makes it easy to write/parse an Ogg/Speex header - * This is the Speex header for the Ogg encapsulation. You don't need that if you just use RTP. - * @{ - */ - -#include "speex/speex_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct SpeexMode; - -/** Length of the Speex header identifier */ -#define SPEEX_HEADER_STRING_LENGTH 8 - -/** Maximum number of characters for encoding the Speex version number in the header */ -#define SPEEX_HEADER_VERSION_LENGTH 20 - -/** Speex header info for file-based formats */ -typedef struct SpeexHeader { - char speex_string[SPEEX_HEADER_STRING_LENGTH]; /**< Identifies a Speex bit-stream, always set to "Speex " */ - char speex_version[SPEEX_HEADER_VERSION_LENGTH]; /**< Speex version */ - spx_int32_t speex_version_id; /**< Version for Speex (for checking compatibility) */ - spx_int32_t header_size; /**< Total size of the header ( sizeof(SpeexHeader) ) */ - spx_int32_t rate; /**< Sampling rate used */ - spx_int32_t mode; /**< Mode used (0 for narrowband, 1 for wideband) */ - spx_int32_t mode_bitstream_version; /**< Version ID of the bit-stream */ - spx_int32_t nb_channels; /**< Number of channels encoded */ - spx_int32_t bitrate; /**< Bit-rate used */ - spx_int32_t frame_size; /**< Size of frames */ - spx_int32_t vbr; /**< 1 for a VBR encoding, 0 otherwise */ - spx_int32_t frames_per_packet; /**< Number of frames stored per Ogg packet */ - spx_int32_t extra_headers; /**< Number of additional headers after the comments */ - spx_int32_t reserved1; /**< Reserved for future use, must be zero */ - spx_int32_t reserved2; /**< Reserved for future use, must be zero */ -} SpeexHeader; - -/** Initializes a SpeexHeader using basic information */ -void speex_init_header(SpeexHeader *header, int rate, int nb_channels, const struct SpeexMode *m); - -/** Creates the header packet from the header itself (mostly involves endianness conversion) */ -char *speex_header_to_packet(SpeexHeader *header, int *size); - -/** Creates a SpeexHeader from a packet */ -SpeexHeader *speex_packet_to_header(char *packet, int size); - -/** Frees the memory allocated by either speex_header_to_packet() or speex_packet_to_header() */ -void speex_header_free(void *ptr); - -#ifdef __cplusplus -} -#endif - -/** @} */ -#endif diff --git a/interface/external/Speex/include/speex/speex_jitter.h b/interface/external/Speex/include/speex/speex_jitter.h deleted file mode 100644 index d68674b13a..0000000000 --- a/interface/external/Speex/include/speex/speex_jitter.h +++ /dev/null @@ -1,197 +0,0 @@ -/* Copyright (C) 2002 Jean-Marc Valin */ -/** - @file speex_jitter.h - @brief Adaptive jitter buffer for Speex -*/ -/* - 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 the Xiph.org Foundation nor the names of its - 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 FOUNDATION 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. - -*/ - -#ifndef SPEEX_JITTER_H -#define SPEEX_JITTER_H -/** @defgroup JitterBuffer JitterBuffer: Adaptive jitter buffer - * This is the jitter buffer that reorders UDP/RTP packets and adjusts the buffer size - * to maintain good quality and low latency. - * @{ - */ - -#include "speex/speex_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Generic adaptive jitter buffer state */ -struct JitterBuffer_; - -/** Generic adaptive jitter buffer state */ -typedef struct JitterBuffer_ JitterBuffer; - -/** Definition of an incoming packet */ -typedef struct _JitterBufferPacket JitterBufferPacket; - -/** Definition of an incoming packet */ -struct _JitterBufferPacket { - char *data; /**< Data bytes contained in the packet */ - spx_uint32_t len; /**< Length of the packet in bytes */ - spx_uint32_t timestamp; /**< Timestamp for the packet */ - spx_uint32_t span; /**< Time covered by the packet (same units as timestamp) */ - spx_uint16_t sequence; /**< RTP Sequence number if available (0 otherwise) */ - spx_uint32_t user_data; /**< Put whatever data you like here (it's ignored by the jitter buffer) */ -}; - -/** Packet has been retrieved */ -#define JITTER_BUFFER_OK 0 -/** Packet is lost or is late */ -#define JITTER_BUFFER_MISSING 1 -/** A "fake" packet is meant to be inserted here to increase buffering */ -#define JITTER_BUFFER_INSERTION 2 -/** There was an error in the jitter buffer */ -#define JITTER_BUFFER_INTERNAL_ERROR -1 -/** Invalid argument */ -#define JITTER_BUFFER_BAD_ARGUMENT -2 - - -/** Set minimum amount of extra buffering required (margin) */ -#define JITTER_BUFFER_SET_MARGIN 0 -/** Get minimum amount of extra buffering required (margin) */ -#define JITTER_BUFFER_GET_MARGIN 1 -/* JITTER_BUFFER_SET_AVAILABLE_COUNT wouldn't make sense */ - -/** Get the amount of available packets currently buffered */ -#define JITTER_BUFFER_GET_AVAILABLE_COUNT 3 -/** Included because of an early misspelling (will remove in next release) */ -#define JITTER_BUFFER_GET_AVALIABLE_COUNT 3 - -/** Assign a function to destroy unused packet. When setting that, the jitter - buffer no longer copies packet data. */ -#define JITTER_BUFFER_SET_DESTROY_CALLBACK 4 -/** */ -#define JITTER_BUFFER_GET_DESTROY_CALLBACK 5 - -/** Tell the jitter buffer to only adjust the delay in multiples of the step parameter provided */ -#define JITTER_BUFFER_SET_DELAY_STEP 6 -/** */ -#define JITTER_BUFFER_GET_DELAY_STEP 7 - -/** Tell the jitter buffer to only do concealment in multiples of the size parameter provided */ -#define JITTER_BUFFER_SET_CONCEALMENT_SIZE 8 -#define JITTER_BUFFER_GET_CONCEALMENT_SIZE 9 - -/** Absolute max amount of loss that can be tolerated regardless of the delay. Typical loss - should be half of that or less. */ -#define JITTER_BUFFER_SET_MAX_LATE_RATE 10 -#define JITTER_BUFFER_GET_MAX_LATE_RATE 11 - -/** Equivalent cost of one percent late packet in timestamp units */ -#define JITTER_BUFFER_SET_LATE_COST 12 -#define JITTER_BUFFER_GET_LATE_COST 13 - - -/** Initialises jitter buffer - * - * @param step_size Starting value for the size of concleanment packets and delay - adjustment steps. Can be changed at any time using JITTER_BUFFER_SET_DELAY_STEP - and JITTER_BUFFER_GET_CONCEALMENT_SIZE. - * @return Newly created jitter buffer state - */ -JitterBuffer *jitter_buffer_init(int step_size); - -/** Restores jitter buffer to its original state - * - * @param jitter Jitter buffer state - */ -void jitter_buffer_reset(JitterBuffer *jitter); - -/** Destroys jitter buffer - * - * @param jitter Jitter buffer state - */ -void jitter_buffer_destroy(JitterBuffer *jitter); - -/** Put one packet into the jitter buffer - * - * @param jitter Jitter buffer state - * @param packet Incoming packet -*/ -void jitter_buffer_put(JitterBuffer *jitter, const JitterBufferPacket *packet); - -/** Get one packet from the jitter buffer - * - * @param jitter Jitter buffer state - * @param packet Returned packet - * @param desired_span Number of samples (or units) we wish to get from the buffer (no guarantee) - * @param current_timestamp Timestamp for the returned packet -*/ -int jitter_buffer_get(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t desired_span, spx_int32_t *start_offset); - -/** Used right after jitter_buffer_get() to obtain another packet that would have the same timestamp. - * This is mainly useful for media where a single "frame" can be split into several packets. - * - * @param jitter Jitter buffer state - * @param packet Returned packet - */ -int jitter_buffer_get_another(JitterBuffer *jitter, JitterBufferPacket *packet); - -/** Get pointer timestamp of jitter buffer - * - * @param jitter Jitter buffer state -*/ -int jitter_buffer_get_pointer_timestamp(JitterBuffer *jitter); - -/** Advance by one tick - * - * @param jitter Jitter buffer state -*/ -void jitter_buffer_tick(JitterBuffer *jitter); - -/** Telling the jitter buffer about the remaining data in the application buffer - * @param jitter Jitter buffer state - * @param rem Amount of data buffered by the application (timestamp units) - */ -void jitter_buffer_remaining_span(JitterBuffer *jitter, spx_uint32_t rem); - -/** Used like the ioctl function to control the jitter buffer parameters - * - * @param jitter Jitter buffer state - * @param request ioctl-type request (one of the JITTER_BUFFER_* macros) - * @param ptr Data exchanged to-from function - * @return 0 if no error, -1 if request in unknown -*/ -int jitter_buffer_ctl(JitterBuffer *jitter, int request, void *ptr); - -int jitter_buffer_update_delay(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t *start_offset); - -/* @} */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/interface/external/Speex/include/speex/speex_preprocess.h b/interface/external/Speex/include/speex/speex_preprocess.h deleted file mode 100644 index f8eef2cd91..0000000000 --- a/interface/external/Speex/include/speex/speex_preprocess.h +++ /dev/null @@ -1,219 +0,0 @@ -/* Copyright (C) 2003 Epic Games - Written by Jean-Marc Valin */ -/** - * @file speex_preprocess.h - * @brief Speex preprocessor. The preprocess can do noise suppression, - * residual echo suppression (after using the echo canceller), automatic - * gain control (AGC) and voice activity detection (VAD). -*/ -/* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. 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. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -*/ - -#ifndef SPEEX_PREPROCESS_H -#define SPEEX_PREPROCESS_H -/** @defgroup SpeexPreprocessState SpeexPreprocessState: The Speex preprocessor - * This is the Speex preprocessor. The preprocess can do noise suppression, - * residual echo suppression (after using the echo canceller), automatic - * gain control (AGC) and voice activity detection (VAD). - * @{ - */ - -#include "speex/speex_types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** State of the preprocessor (one per channel). Should never be accessed directly. */ -struct SpeexPreprocessState_; - -/** State of the preprocessor (one per channel). Should never be accessed directly. */ -typedef struct SpeexPreprocessState_ SpeexPreprocessState; - - -/** Creates a new preprocessing state. You MUST create one state per channel processed. - * @param frame_size Number of samples to process at one time (should correspond to 10-20 ms). Must be - * the same value as that used for the echo canceller for residual echo cancellation to work. - * @param sampling_rate Sampling rate used for the input. - * @return Newly created preprocessor state -*/ -SpeexPreprocessState *speex_preprocess_state_init(int frame_size, int sampling_rate); - -/** Destroys a preprocessor state - * @param st Preprocessor state to destroy -*/ -void speex_preprocess_state_destroy(SpeexPreprocessState *st); - -/** Preprocess a frame - * @param st Preprocessor state - * @param x Audio sample vector (in and out). Must be same size as specified in speex_preprocess_state_init(). - * @return Bool value for voice activity (1 for speech, 0 for noise/silence), ONLY if VAD turned on. -*/ -int speex_preprocess_run(SpeexPreprocessState *st, spx_int16_t *x); - -/** Preprocess a frame (deprecated, use speex_preprocess_run() instead)*/ -int speex_preprocess(SpeexPreprocessState *st, spx_int16_t *x, spx_int32_t *echo); - -/** Update preprocessor state, but do not compute the output - * @param st Preprocessor state - * @param x Audio sample vector (in only). Must be same size as specified in speex_preprocess_state_init(). -*/ -void speex_preprocess_estimate_update(SpeexPreprocessState *st, spx_int16_t *x); - -/** Used like the ioctl function to control the preprocessor parameters - * @param st Preprocessor state - * @param request ioctl-type request (one of the SPEEX_PREPROCESS_* macros) - * @param ptr Data exchanged to-from function - * @return 0 if no error, -1 if request in unknown -*/ -int speex_preprocess_ctl(SpeexPreprocessState *st, int request, void *ptr); - - - -/** Set preprocessor denoiser state */ -#define SPEEX_PREPROCESS_SET_DENOISE 0 -/** Get preprocessor denoiser state */ -#define SPEEX_PREPROCESS_GET_DENOISE 1 - -/** Set preprocessor Automatic Gain Control state */ -#define SPEEX_PREPROCESS_SET_AGC 2 -/** Get preprocessor Automatic Gain Control state */ -#define SPEEX_PREPROCESS_GET_AGC 3 - -/** Set preprocessor Voice Activity Detection state */ -#define SPEEX_PREPROCESS_SET_VAD 4 -/** Get preprocessor Voice Activity Detection state */ -#define SPEEX_PREPROCESS_GET_VAD 5 - -/** Set preprocessor Automatic Gain Control level (float) */ -#define SPEEX_PREPROCESS_SET_AGC_LEVEL 6 -/** Get preprocessor Automatic Gain Control level (float) */ -#define SPEEX_PREPROCESS_GET_AGC_LEVEL 7 - -/** Set preprocessor dereverb state */ -#define SPEEX_PREPROCESS_SET_DEREVERB 8 -/** Get preprocessor dereverb state */ -#define SPEEX_PREPROCESS_GET_DEREVERB 9 - -/** Set preprocessor dereverb level */ -#define SPEEX_PREPROCESS_SET_DEREVERB_LEVEL 10 -/** Get preprocessor dereverb level */ -#define SPEEX_PREPROCESS_GET_DEREVERB_LEVEL 11 - -/** Set preprocessor dereverb decay */ -#define SPEEX_PREPROCESS_SET_DEREVERB_DECAY 12 -/** Get preprocessor dereverb decay */ -#define SPEEX_PREPROCESS_GET_DEREVERB_DECAY 13 - -/** Set probability required for the VAD to go from silence to voice */ -#define SPEEX_PREPROCESS_SET_PROB_START 14 -/** Get probability required for the VAD to go from silence to voice */ -#define SPEEX_PREPROCESS_GET_PROB_START 15 - -/** Set probability required for the VAD to stay in the voice state (integer percent) */ -#define SPEEX_PREPROCESS_SET_PROB_CONTINUE 16 -/** Get probability required for the VAD to stay in the voice state (integer percent) */ -#define SPEEX_PREPROCESS_GET_PROB_CONTINUE 17 - -/** Set maximum attenuation of the noise in dB (negative number) */ -#define SPEEX_PREPROCESS_SET_NOISE_SUPPRESS 18 -/** Get maximum attenuation of the noise in dB (negative number) */ -#define SPEEX_PREPROCESS_GET_NOISE_SUPPRESS 19 - -/** Set maximum attenuation of the residual echo in dB (negative number) */ -#define SPEEX_PREPROCESS_SET_ECHO_SUPPRESS 20 -/** Get maximum attenuation of the residual echo in dB (negative number) */ -#define SPEEX_PREPROCESS_GET_ECHO_SUPPRESS 21 - -/** Set maximum attenuation of the residual echo in dB when near end is active (negative number) */ -#define SPEEX_PREPROCESS_SET_ECHO_SUPPRESS_ACTIVE 22 -/** Get maximum attenuation of the residual echo in dB when near end is active (negative number) */ -#define SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE 23 - -/** Set the corresponding echo canceller state so that residual echo suppression can be performed (NULL for no residual echo suppression) */ -#define SPEEX_PREPROCESS_SET_ECHO_STATE 24 -/** Get the corresponding echo canceller state */ -#define SPEEX_PREPROCESS_GET_ECHO_STATE 25 - -/** Set maximal gain increase in dB/second (int32) */ -#define SPEEX_PREPROCESS_SET_AGC_INCREMENT 26 - -/** Get maximal gain increase in dB/second (int32) */ -#define SPEEX_PREPROCESS_GET_AGC_INCREMENT 27 - -/** Set maximal gain decrease in dB/second (int32) */ -#define SPEEX_PREPROCESS_SET_AGC_DECREMENT 28 - -/** Get maximal gain decrease in dB/second (int32) */ -#define SPEEX_PREPROCESS_GET_AGC_DECREMENT 29 - -/** Set maximal gain in dB (int32) */ -#define SPEEX_PREPROCESS_SET_AGC_MAX_GAIN 30 - -/** Get maximal gain in dB (int32) */ -#define SPEEX_PREPROCESS_GET_AGC_MAX_GAIN 31 - -/* Can't set loudness */ -/** Get loudness */ -#define SPEEX_PREPROCESS_GET_AGC_LOUDNESS 33 - -/* Can't set gain */ -/** Get current gain (int32 percent) */ -#define SPEEX_PREPROCESS_GET_AGC_GAIN 35 - -/* Can't set spectrum size */ -/** Get spectrum size for power spectrum (int32) */ -#define SPEEX_PREPROCESS_GET_PSD_SIZE 37 - -/* Can't set power spectrum */ -/** Get power spectrum (int32[] of squared values) */ -#define SPEEX_PREPROCESS_GET_PSD 39 - -/* Can't set noise size */ -/** Get spectrum size for noise estimate (int32) */ -#define SPEEX_PREPROCESS_GET_NOISE_PSD_SIZE 41 - -/* Can't set noise estimate */ -/** Get noise estimate (int32[] of squared values) */ -#define SPEEX_PREPROCESS_GET_NOISE_PSD 43 - -/* Can't set speech probability */ -/** Get speech probability in last frame (int32). */ -#define SPEEX_PREPROCESS_GET_PROB 45 - -/** Set preprocessor Automatic Gain Control level (int32) */ -#define SPEEX_PREPROCESS_SET_AGC_TARGET 46 -/** Get preprocessor Automatic Gain Control level (int32) */ -#define SPEEX_PREPROCESS_GET_AGC_TARGET 47 - -#ifdef __cplusplus -} -#endif - -/** @}*/ -#endif diff --git a/interface/external/Speex/include/speex/speex_resampler.h b/interface/external/Speex/include/speex/speex_resampler.h deleted file mode 100644 index 54eef8d7b8..0000000000 --- a/interface/external/Speex/include/speex/speex_resampler.h +++ /dev/null @@ -1,340 +0,0 @@ -/* Copyright (C) 2007 Jean-Marc Valin - - File: speex_resampler.h - Resampling code - - The design goals of this code are: - - Very fast algorithm - - Low memory requirement - - Good *perceptual* quality (and not best SNR) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. 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. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -*/ - - -#ifndef SPEEX_RESAMPLER_H -#define SPEEX_RESAMPLER_H - -#ifdef OUTSIDE_SPEEX - -/********* WARNING: MENTAL SANITY ENDS HERE *************/ - -/* If the resampler is defined outside of Speex, we change the symbol names so that - there won't be any clash if linking with Speex later on. */ - -/* #define RANDOM_PREFIX your software name here */ -#ifndef RANDOM_PREFIX -#error "Please define RANDOM_PREFIX (above) to something specific to your project to prevent symbol name clashes" -#endif - -#define CAT_PREFIX2(a,b) a ## b -#define CAT_PREFIX(a,b) CAT_PREFIX2(a, b) - -#define speex_resampler_init CAT_PREFIX(RANDOM_PREFIX,_resampler_init) -#define speex_resampler_init_frac CAT_PREFIX(RANDOM_PREFIX,_resampler_init_frac) -#define speex_resampler_destroy CAT_PREFIX(RANDOM_PREFIX,_resampler_destroy) -#define speex_resampler_process_float CAT_PREFIX(RANDOM_PREFIX,_resampler_process_float) -#define speex_resampler_process_int CAT_PREFIX(RANDOM_PREFIX,_resampler_process_int) -#define speex_resampler_process_interleaved_float CAT_PREFIX(RANDOM_PREFIX,_resampler_process_interleaved_float) -#define speex_resampler_process_interleaved_int CAT_PREFIX(RANDOM_PREFIX,_resampler_process_interleaved_int) -#define speex_resampler_set_rate CAT_PREFIX(RANDOM_PREFIX,_resampler_set_rate) -#define speex_resampler_get_rate CAT_PREFIX(RANDOM_PREFIX,_resampler_get_rate) -#define speex_resampler_set_rate_frac CAT_PREFIX(RANDOM_PREFIX,_resampler_set_rate_frac) -#define speex_resampler_get_ratio CAT_PREFIX(RANDOM_PREFIX,_resampler_get_ratio) -#define speex_resampler_set_quality CAT_PREFIX(RANDOM_PREFIX,_resampler_set_quality) -#define speex_resampler_get_quality CAT_PREFIX(RANDOM_PREFIX,_resampler_get_quality) -#define speex_resampler_set_input_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_set_input_stride) -#define speex_resampler_get_input_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_get_input_stride) -#define speex_resampler_set_output_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_set_output_stride) -#define speex_resampler_get_output_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_get_output_stride) -#define speex_resampler_get_input_latency CAT_PREFIX(RANDOM_PREFIX,_resampler_get_input_latency) -#define speex_resampler_get_output_latency CAT_PREFIX(RANDOM_PREFIX,_resampler_get_output_latency) -#define speex_resampler_skip_zeros CAT_PREFIX(RANDOM_PREFIX,_resampler_skip_zeros) -#define speex_resampler_reset_mem CAT_PREFIX(RANDOM_PREFIX,_resampler_reset_mem) -#define speex_resampler_strerror CAT_PREFIX(RANDOM_PREFIX,_resampler_strerror) - -#define spx_int16_t short -#define spx_int32_t int -#define spx_uint16_t unsigned short -#define spx_uint32_t unsigned int - -#else /* OUTSIDE_SPEEX */ - -#include "speex/speex_types.h" - -#endif /* OUTSIDE_SPEEX */ - -#ifdef __cplusplus -extern "C" { -#endif - -#define SPEEX_RESAMPLER_QUALITY_MAX 10 -#define SPEEX_RESAMPLER_QUALITY_MIN 0 -#define SPEEX_RESAMPLER_QUALITY_DEFAULT 4 -#define SPEEX_RESAMPLER_QUALITY_VOIP 3 -#define SPEEX_RESAMPLER_QUALITY_DESKTOP 5 - -enum { - RESAMPLER_ERR_SUCCESS = 0, - RESAMPLER_ERR_ALLOC_FAILED = 1, - RESAMPLER_ERR_BAD_STATE = 2, - RESAMPLER_ERR_INVALID_ARG = 3, - RESAMPLER_ERR_PTR_OVERLAP = 4, - - RESAMPLER_ERR_MAX_ERROR -}; - -struct SpeexResamplerState_; -typedef struct SpeexResamplerState_ SpeexResamplerState; - -/** Create a new resampler with integer input and output rates. - * @param nb_channels Number of channels to be processed - * @param in_rate Input sampling rate (integer number of Hz). - * @param out_rate Output sampling rate (integer number of Hz). - * @param quality Resampling quality between 0 and 10, where 0 has poor quality - * and 10 has very high quality. - * @return Newly created resampler state - * @retval NULL Error: not enough memory - */ -SpeexResamplerState *speex_resampler_init(spx_uint32_t nb_channels, - spx_uint32_t in_rate, - spx_uint32_t out_rate, - int quality, - int *err); - -/** Create a new resampler with fractional input/output rates. The sampling - * rate ratio is an arbitrary rational number with both the numerator and - * denominator being 32-bit integers. - * @param nb_channels Number of channels to be processed - * @param ratio_num Numerator of the sampling rate ratio - * @param ratio_den Denominator of the sampling rate ratio - * @param in_rate Input sampling rate rounded to the nearest integer (in Hz). - * @param out_rate Output sampling rate rounded to the nearest integer (in Hz). - * @param quality Resampling quality between 0 and 10, where 0 has poor quality - * and 10 has very high quality. - * @return Newly created resampler state - * @retval NULL Error: not enough memory - */ -SpeexResamplerState *speex_resampler_init_frac(spx_uint32_t nb_channels, - spx_uint32_t ratio_num, - spx_uint32_t ratio_den, - spx_uint32_t in_rate, - spx_uint32_t out_rate, - int quality, - int *err); - -/** Destroy a resampler state. - * @param st Resampler state - */ -void speex_resampler_destroy(SpeexResamplerState *st); - -/** Resample a float array. The input and output buffers must *not* overlap. - * @param st Resampler state - * @param channel_index Index of the channel to process for the multi-channel - * base (0 otherwise) - * @param in Input buffer - * @param in_len Number of input samples in the input buffer. Returns the - * number of samples processed - * @param out Output buffer - * @param out_len Size of the output buffer. Returns the number of samples written - */ -int speex_resampler_process_float(SpeexResamplerState *st, - spx_uint32_t channel_index, - const float *in, - spx_uint32_t *in_len, - float *out, - spx_uint32_t *out_len); - -/** Resample an int array. The input and output buffers must *not* overlap. - * @param st Resampler state - * @param channel_index Index of the channel to process for the multi-channel - * base (0 otherwise) - * @param in Input buffer - * @param in_len Number of input samples in the input buffer. Returns the number - * of samples processed - * @param out Output buffer - * @param out_len Size of the output buffer. Returns the number of samples written - */ -int speex_resampler_process_int(SpeexResamplerState *st, - spx_uint32_t channel_index, - const spx_int16_t *in, - spx_uint32_t *in_len, - spx_int16_t *out, - spx_uint32_t *out_len); - -/** Resample an interleaved float array. The input and output buffers must *not* overlap. - * @param st Resampler state - * @param in Input buffer - * @param in_len Number of input samples in the input buffer. Returns the number - * of samples processed. This is all per-channel. - * @param out Output buffer - * @param out_len Size of the output buffer. Returns the number of samples written. - * This is all per-channel. - */ -int speex_resampler_process_interleaved_float(SpeexResamplerState *st, - const float *in, - spx_uint32_t *in_len, - float *out, - spx_uint32_t *out_len); - -/** Resample an interleaved int array. The input and output buffers must *not* overlap. - * @param st Resampler state - * @param in Input buffer - * @param in_len Number of input samples in the input buffer. Returns the number - * of samples processed. This is all per-channel. - * @param out Output buffer - * @param out_len Size of the output buffer. Returns the number of samples written. - * This is all per-channel. - */ -int speex_resampler_process_interleaved_int(SpeexResamplerState *st, - const spx_int16_t *in, - spx_uint32_t *in_len, - spx_int16_t *out, - spx_uint32_t *out_len); - -/** Set (change) the input/output sampling rates (integer value). - * @param st Resampler state - * @param in_rate Input sampling rate (integer number of Hz). - * @param out_rate Output sampling rate (integer number of Hz). - */ -int speex_resampler_set_rate(SpeexResamplerState *st, - spx_uint32_t in_rate, - spx_uint32_t out_rate); - -/** Get the current input/output sampling rates (integer value). - * @param st Resampler state - * @param in_rate Input sampling rate (integer number of Hz) copied. - * @param out_rate Output sampling rate (integer number of Hz) copied. - */ -void speex_resampler_get_rate(SpeexResamplerState *st, - spx_uint32_t *in_rate, - spx_uint32_t *out_rate); - -/** Set (change) the input/output sampling rates and resampling ratio - * (fractional values in Hz supported). - * @param st Resampler state - * @param ratio_num Numerator of the sampling rate ratio - * @param ratio_den Denominator of the sampling rate ratio - * @param in_rate Input sampling rate rounded to the nearest integer (in Hz). - * @param out_rate Output sampling rate rounded to the nearest integer (in Hz). - */ -int speex_resampler_set_rate_frac(SpeexResamplerState *st, - spx_uint32_t ratio_num, - spx_uint32_t ratio_den, - spx_uint32_t in_rate, - spx_uint32_t out_rate); - -/** Get the current resampling ratio. This will be reduced to the least - * common denominator. - * @param st Resampler state - * @param ratio_num Numerator of the sampling rate ratio copied - * @param ratio_den Denominator of the sampling rate ratio copied - */ -void speex_resampler_get_ratio(SpeexResamplerState *st, - spx_uint32_t *ratio_num, - spx_uint32_t *ratio_den); - -/** Set (change) the conversion quality. - * @param st Resampler state - * @param quality Resampling quality between 0 and 10, where 0 has poor - * quality and 10 has very high quality. - */ -int speex_resampler_set_quality(SpeexResamplerState *st, - int quality); - -/** Get the conversion quality. - * @param st Resampler state - * @param quality Resampling quality between 0 and 10, where 0 has poor - * quality and 10 has very high quality. - */ -void speex_resampler_get_quality(SpeexResamplerState *st, - int *quality); - -/** Set (change) the input stride. - * @param st Resampler state - * @param stride Input stride - */ -void speex_resampler_set_input_stride(SpeexResamplerState *st, - spx_uint32_t stride); - -/** Get the input stride. - * @param st Resampler state - * @param stride Input stride copied - */ -void speex_resampler_get_input_stride(SpeexResamplerState *st, - spx_uint32_t *stride); - -/** Set (change) the output stride. - * @param st Resampler state - * @param stride Output stride - */ -void speex_resampler_set_output_stride(SpeexResamplerState *st, - spx_uint32_t stride); - -/** Get the output stride. - * @param st Resampler state copied - * @param stride Output stride - */ -void speex_resampler_get_output_stride(SpeexResamplerState *st, - spx_uint32_t *stride); - -/** Get the latency in input samples introduced by the resampler. - * @param st Resampler state - */ -int speex_resampler_get_input_latency(SpeexResamplerState *st); - -/** Get the latency in output samples introduced by the resampler. - * @param st Resampler state - */ -int speex_resampler_get_output_latency(SpeexResamplerState *st); - -/** Make sure that the first samples to go out of the resamplers don't have - * leading zeros. This is only useful before starting to use a newly created - * resampler. It is recommended to use that when resampling an audio file, as - * it will generate a file with the same length. For real-time processing, - * it is probably easier not to use this call (so that the output duration - * is the same for the first frame). - * @param st Resampler state - */ -int speex_resampler_skip_zeros(SpeexResamplerState *st); - -/** Reset a resampler so a new (unrelated) stream can be processed. - * @param st Resampler state - */ -int speex_resampler_reset_mem(SpeexResamplerState *st); - -/** Returns the English meaning for an error code - * @param err Error code - * @return English string - */ -const char *speex_resampler_strerror(int err); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/interface/external/Speex/include/speex/speex_stereo.h b/interface/external/Speex/include/speex/speex_stereo.h deleted file mode 100644 index a259713b82..0000000000 --- a/interface/external/Speex/include/speex/speex_stereo.h +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright (C) 2002 Jean-Marc Valin*/ -/** - @file speex_stereo.h - @brief Describes the handling for intensity stereo -*/ -/* - 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 the Xiph.org Foundation nor the names of its - 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 FOUNDATION 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. -*/ - -#ifndef STEREO_H -#define STEREO_H -/** @defgroup SpeexStereoState SpeexStereoState: Handling Speex stereo files - * This describes the Speex intensity stereo encoding/decoding - * @{ - */ - -#include "speex/speex_types.h" -#include "speex/speex_bits.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** If you access any of these fields directly, I'll personally come and bite you */ -typedef struct SpeexStereoState { - float balance; /**< Left/right balance info */ - float e_ratio; /**< Ratio of energies: E(left+right)/[E(left)+E(right)] */ - float smooth_left; /**< Smoothed left channel gain */ - float smooth_right; /**< Smoothed right channel gain */ - float reserved1; /**< Reserved for future use */ - float reserved2; /**< Reserved for future use */ -} SpeexStereoState; - -/** Deprecated. Use speex_stereo_state_init() instead. */ -#define SPEEX_STEREO_STATE_INIT {1,.5,1,1,0,0} - -/** Initialise/create a stereo stereo state */ -SpeexStereoState *speex_stereo_state_init(); - -/** Reset/re-initialise an already allocated stereo state */ -void speex_stereo_state_reset(SpeexStereoState *stereo); - -/** Destroy a stereo stereo state */ -void speex_stereo_state_destroy(SpeexStereoState *stereo); - -/** Transforms a stereo frame into a mono frame and stores intensity stereo info in 'bits' */ -void speex_encode_stereo(float *data, int frame_size, SpeexBits *bits); - -/** Transforms a stereo frame into a mono frame and stores intensity stereo info in 'bits' */ -void speex_encode_stereo_int(spx_int16_t *data, int frame_size, SpeexBits *bits); - -/** Transforms a mono frame into a stereo frame using intensity stereo info */ -void speex_decode_stereo(float *data, int frame_size, SpeexStereoState *stereo); - -/** Transforms a mono frame into a stereo frame using intensity stereo info */ -void speex_decode_stereo_int(spx_int16_t *data, int frame_size, SpeexStereoState *stereo); - -/** Callback handler for intensity stereo info */ -int speex_std_stereo_request_handler(SpeexBits *bits, void *state, void *data); - -#ifdef __cplusplus -} -#endif - -/** @} */ -#endif diff --git a/interface/external/Speex/include/speex/speex_types.h b/interface/external/Speex/include/speex/speex_types.h deleted file mode 100644 index 852fed801d..0000000000 --- a/interface/external/Speex/include/speex/speex_types.h +++ /dev/null @@ -1,126 +0,0 @@ -/* speex_types.h taken from libogg */ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the Xiph.Org Foundation http://www.xiph.org/ * - * * - ******************************************************************** - - function: #ifdef jail to whip a few platforms into the UNIX ideal. - last mod: $Id: os_types.h 7524 2004-08-11 04:20:36Z conrad $ - - ********************************************************************/ -/** - @file speex_types.h - @brief Speex types -*/ -#ifndef _SPEEX_TYPES_H -#define _SPEEX_TYPES_H - -#if defined(_WIN32) - -# if defined(__CYGWIN__) -# include <_G_config.h> - typedef _G_int32_t spx_int32_t; - typedef _G_uint32_t spx_uint32_t; - typedef _G_int16_t spx_int16_t; - typedef _G_uint16_t spx_uint16_t; -# elif defined(__MINGW32__) - typedef short spx_int16_t; - typedef unsigned short spx_uint16_t; - typedef int spx_int32_t; - typedef unsigned int spx_uint32_t; -# elif defined(__MWERKS__) - typedef int spx_int32_t; - typedef unsigned int spx_uint32_t; - typedef short spx_int16_t; - typedef unsigned short spx_uint16_t; -# else - /* MSVC/Borland */ - typedef __int32 spx_int32_t; - typedef unsigned __int32 spx_uint32_t; - typedef __int16 spx_int16_t; - typedef unsigned __int16 spx_uint16_t; -# endif - -#elif defined(__MACOS__) - -# include - typedef SInt16 spx_int16_t; - typedef UInt16 spx_uint16_t; - typedef SInt32 spx_int32_t; - typedef UInt32 spx_uint32_t; - -#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ - -# include - typedef int16_t spx_int16_t; - typedef u_int16_t spx_uint16_t; - typedef int32_t spx_int32_t; - typedef u_int32_t spx_uint32_t; - -#elif defined(__BEOS__) - - /* Be */ -# include - typedef int16_t spx_int16_t; - typedef u_int16_t spx_uint16_t; - typedef int32_t spx_int32_t; - typedef u_int32_t spx_uint32_t; - -#elif defined (__EMX__) - - /* OS/2 GCC */ - typedef short spx_int16_t; - typedef unsigned short spx_uint16_t; - typedef int spx_int32_t; - typedef unsigned int spx_uint32_t; - -#elif defined (DJGPP) - - /* DJGPP */ - typedef short spx_int16_t; - typedef int spx_int32_t; - typedef unsigned int spx_uint32_t; - -#elif defined(R5900) - - /* PS2 EE */ - typedef int spx_int32_t; - typedef unsigned spx_uint32_t; - typedef short spx_int16_t; - -#elif defined(__SYMBIAN32__) - - /* Symbian GCC */ - typedef signed short spx_int16_t; - typedef unsigned short spx_uint16_t; - typedef signed int spx_int32_t; - typedef unsigned int spx_uint32_t; - -#elif defined(CONFIG_TI_C54X) || defined (CONFIG_TI_C55X) - - typedef short spx_int16_t; - typedef unsigned short spx_uint16_t; - typedef long spx_int32_t; - typedef unsigned long spx_uint32_t; - -#elif defined(CONFIG_TI_C6X) - - typedef short spx_int16_t; - typedef unsigned short spx_uint16_t; - typedef int spx_int32_t; - typedef unsigned int spx_uint32_t; - -#else - -# include - -#endif - -#endif /* _SPEEX_TYPES_H */ diff --git a/interface/external/Speex/lib/MacOS/libspeex.a b/interface/external/Speex/lib/MacOS/libspeex.a deleted file mode 100644 index 81d053f238649f3809b7764da45943852299258f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457096 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 UvqNXPKRSue1` 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 diff --git a/interface/external/Speex/lib/MacOS/libspeexdsp.a b/interface/external/Speex/lib/MacOS/libspeexdsp.a deleted file mode 100644 index 08fe02a630a41831ebc95e995c8862e173e59fc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300560 zcmeFa33OCd)<3#$-MUF-;#No)!w?KA&?FE*1w}|9fhtTi43PwZA_)}|4M|8U0c}7u z1T3qAIOA-0Yd7uCqP8u9Ljp(=L2nlR5Fc%yXt>W==jgHC4LH-^}sj&z&?W zHFd(IDHEjhvRJP-V}4=o%@q5O>nv~06bTN7v{fyT$rbH1@j!v13xs1ygYZZ|pauPpNWymi&fi~PP`Bx>p^dvUGx!_#tKt-q$~s?+kzE6e@ly`tRj z_tkid>q<*~H8LDsoh&t7omcpJcwXW2dy6Wo{AIqH?s~zht}3s@qx|J7eYO6gmDSya zdJ9l>U604q_*NE`SC&_<@YYrrRd!cWCKF4e_f50Gtw=Rmx4yzYkalk%j=4|YOSs)x~jMcA(JIUNcWm| zoj5X)dU$}dcV$U0syIPvtJio-OZ^ZKmPo!Thti6wqE3AEpf%od%O7k?uC%; zs=U%$Qnj+W&hPVrpwlrXPUw|YUAz2r?wRLy;aCN+(~~QGtGmcl*IwnVU0GG-FHM zG(J~%_qw{KJkq1EU*Xmz%*%ZxRW&s})C;AwlT-H)cV>y2iKbnW?GgjL%F>O_jq!HSU`RsQ;q7o71?&162)mKqo>BGZLr*CzP43`R@d!sBTrwd<2Rf+J>UElXEsb^Y> z#D_c*^EMJi$&~9g{i^GV{a01{YP;*3xJ3FND}g>;&X$PjRbQ>YMo4tm=Vg7L7*c^L zQl*RORUc<>4}C6~477oLeS3w}wc%Ex^QE=Bz9N57Em+SUEhXMDP7H;##hR=L>biO&c^F4 zsj94vGzi`G9cO(Hu%`zqWqWWsO)a=b%oDc zS+vqu+e`gODwF;mWsiGVU*7FRBYRQlWqnn}SBR3)z5Kn%<%9iFl`N*6O_v}leIk6- zMJ3(!ecDamE&ok@qO$c8-{>o4P>yi>_YCW+zJq8;uklswGg_GCJ>vUuh4l0l$Lc07 z3VGXz&g)el#??h7es5jn>hj9vUT=v zf#7*svqdTMv}TK(3z=i~x>~a*eH#vkU9H)Z-<3F(>9G?hJ~hqNnmzuNgE`YYt=XcZ za&lAXA*3F?2Io{pv-Co>2>c#E)Ufj0!;)YhJ`!lxp;~1}`C1eV!-yJo3HiqOiLuxe>wQP|B7eC`y1Q z*o52;9Es!yo=9brq z$QAf!FuU!9Ii~r9nV8)s@@vfAkhw_E&6)4Z_;ztGG#)Av*$0nHvzyI@?I+AdZ6Px; z_fW_zNO*r4$qXwr-du*PENlsxOO1oVzNlG5&E0g7=9>_wBIBYI#51ES&oG=U8P)JZjt`~m1Eg`cI1wGMzpF6PEY|Iab!|t8yhHgCz z8Q=*tIyE9!YolmT>A35J%N&#IIDvq|nolRp#Qe4srqlRTK6B3rb7_kR;0e>2i=vru zSa6o+9y(zz63=QJqKWv)c`!AWNfyT*_GnP57*2YO} z%?TWJH|(2yxofd&iEF9LyJRodPxL4A^W1@--NE1H$p;62Tc9kR0>8R~O~{OJ z%g)qGh_3w+zvd+^p5T&Yu3#=@2iMtM0g+#>u*j>BIi~rdCj0b2-w2_Mnj3GIEfUgsX5c500-oUWAVa1zy3}0QZf3O9 z3_)danPXlHnS}{82vSB{eROtX_?m$otFs%!>uX$1v%~JDNuse~El(pOJweg;W{UbX zb%{t(D?LM|Gk#0RENlyz-uUZ7W@7vnceuqh<+ZxcJI=nS$v(BQdHqCB@OdZ-w{=n9 zk>ZgLa0eTaB<`lhjRi4O1Fkgr!8bAlI#Qa z*u(90Uu8GG?lSM+Yi{`m5#}j4x4dvv_M6Ye!f4PWb!k>XNO{eh( z=`i#@iD%w*IZ>DV8hcmBEI1l63&!4$pZh{C(>dwRkh%1G+4k-Uxy*v&A#=&MAv1B( zonTMhW{!F%WG;OxWEOlAGMD~pF8n%VdjB0V3&SC^@aK?O@Jq-n{Kg!0JY+8ZPsl7h z5i$$D7dl*K;v_V}bsIZkIda+K--p&H3_`+-M1)Y&L#ES2={&v&_5vio>1tXXZa8II z>vJ{DKILh;#NlpQXh*zX6GF~}mnHVwy@<#h4jqLjLuTQ-A=6ooFdYk-&ND)0;U^)p z;Pa4K@M*|&4w3=|AB4=r!KxLIpytjb45KUY4bGMx44_)Z*(;+7^&fj`TWGW zi$rH{jendWv+xjWeJ^Ad90{3;gH#_MK2Y~T;OVSzI6U+EduNBk;haEjo4K$(yYaJ` z0pFYJGpy2N-)t^ypBebEYkL(k3mniDZkajd@Y-+PfpyI}f&8sGfpyzZo3rCX=2FqY zJ}AgZNYdvDk$#JsbAu0|+T{kipqe#Z8F-89l|;l*6pHZp_ku@XkIORFU@`s zU9d|K1ubGIw-g<5zhddsZ-&6ce8?@?9x@A$h_Tq>Jt4C&dq>DD*c&p(Hp}rrGlF%d z@W9=CaNV1YVRK8Ijvn2ayA%C4I!bp?G>`5k`z@ZP_**?q$#;ZI=Q+<75Cu-j{2gSD zLO|XKna)&m)Ul9R_*KX(_|jbXddOV#)(La&>mjq?3uLvq@codv=z|mH-1n{gc=d$2 z^o zHcj2a&eyw}>`mxrJi#V0_0U?}fu?FS?3tf=f=yydA>7uWPtkeak-Z@&@YpiZ>J5c& zH9pP_d=a|HbjCj;60=~x%HB8K!R!s88K%>Yq{Z;P1ta^NA+w+v7CCrARv;7m1s0+R zjBRdgHb))E3H-EXUBk)bwG-rk>1A{`X$466r7b7S0%Ldq2IOL_*0G>_`E&Z3L+0X- z%u#3=jWVGagTT4XO>WIy(r%7A5Hc4Z44H)^gYFXKbbLd|EI1evIl5Gh%zST#%)*b& zQF}t>l6~%ABT^$Y!%Rec3Y$^Z5{2r*7I!dvduWDPXy4%uHX9!CH!kBxX0egW20Wfp=y#jZKyFkG-Pk zqkt7i>8-9QFNI8Jesjnyc-tKHYRFuQP9dRAKA5pE_d#>i+aYuDVIi{kK*(HrIAj*) zziEv~3&r4Z|7A#Ij82izDBaoD%SfBQ>w793&I!sg5WEegs>ALH=9j5*5xiG+ij(fL zIz?D`3gT{>be9Ocbjz={91zLIW^>C>QKB0~84DJaK zz7jGQAK(d7$Sh3W!Ub~^=AzvSCfcgP788D!w3(yc3z>yOZx%Y8I-;FVX2y~FI5d6N zEWk+a0J^kX=xs;QSR`Z%V^=$*8>VV>an zGIub0D@JR*%{-SDc!IOa+`)C*8p1ZTHACkU%?vi8k6Y`?Y@Zp}(>1?ly6sJ?G~-tKA$>uWC)gN5KF%RIr`F)eX7v^d-idmO0rE^|z)ET+zW zCG&WC&}DoSBZsqvv6y0Z8XbHV5?zZk`$03qaL*$$H(`Py6Wf_^U>-^@>U|+*%O}i5 zqJ`$nNX$kXXSn9ULm^rzj9gJ_oeA6L@eJmKSt!I34$Os^b4gpsT>LUh$?cf0%4zVT z*H4%QhvXA5R7>0>crLSW3%&q`%mVmGl!VK4-iJA^&@l?r(~Kkaxvqv6FjDQe_99F% zu96S)Js2_zKal?gL*2r$@Ca1h2ag>CWSCv1(^4&;jM=Yf>kAUTn5$~AGvSlD94q1F z7m-qh30Xp~n5*YMXlC@ABzz#%gxiug>-$-ui-XTi$#{4l%Zjmj38>pKofbncmsz+8 zQ}2+uqy_JxhKVO)nvMGTb{=B=vN@`)-eHb9(4m{7+Jt|VE}Ia&kh$b=$Xp^56pzF# zuCaOjWK|F^YMMDc>~6Z)-mQOBK@6FNTF6Y)P+-Dsb^j6xhcI}8m*shaFJPML4tyxu zY*lQ7_hL3TGbpBZ!P_up^w(hGaGw}Y%*qqB-I>suM-(_L=Bub1=7N@x>D?oSh3)33 zLv>%88Aj+*qWW_hUtjM-U;6o_h|+8oWK~M0q zHJ#fdmdBh$lkclU^p0jXHm{!nPov+3eoydr%*lDm*0ny_LS}&$GRK}Q4NP-4?6-BQ zQXe-wk0~&%zu=;#_>oQal+kUY-*cC=yMwo32JUW3p5t!$*yhnM$+O-^j?F9$OmH{s z5qiRHbzdVW>Dk(6uF)TON}}8?AK5(mtUOO}3qmB@5*b${m@9m+t^<7s#>BI^wF<*f(YmBC=+V@*JFP8THRNT z?d!*(IF4>}mo%&RWxg)TgZbjr%j6il6)oaccX-c~18a}rA=AW*h&`hZXzin0+$AmU zrubQ&;3hmR(%zXbW=ik-BeT*LTlhfT7oK2!9+LJD)TYoT^r;}G;UU?L=4vb{w zbkcbR=9piG%mU0oIzndRC|OII?crDJ_MpkX0?J*cGm)o>33KJsFbTD$i=GnnOojGq zF?_z3V;z5Oa5LIz*G^LmnY6kKvKwDtzt|nzEM8LupTT>xnSs|k)i=CzCVmSn^Jl+! z|J!j^!^!1qN4R!QAfgM8>O^akcj3*EYbPFYq4R8_nP$$OnNv37o#Xo4R)H|$RR-QG zThF~iKKE@oAG3wbC20D%tx)AczTXbNTK7T6450!O<{m0!8L|8;T{hL$h(_+!x_1%r zS(%~_9eQ!6`L{cGhxoPK{l9d33_*;Dt* zlD(bMOVwBLJuc53s5|5dgtLQH@t&Y}S$6Qe?BEK!D=gANl@S0_w;4}O}YVjQ?ehY55cMR#uSa3TS zi|??T8E@40mE{hvz6#$=m@iIRZB=^FYgx(d3hxiM)g8&!KF@Cadi~j+;ATu1 zI;B?#qhjm*)n2=k>;xkCs=b_}!9vPA?hA5F}fse_$YrV{lv_~pG z(0;xXIPM9YYB)J=_0T{|=KJoZeuM4!t{8uVTRR;7*cF^*cLkz5&TG-`XIBN(zY(ojyxXB%MH^qxjR9G=i4JS3XdFi*F;0xAk`(p!y*IB8q zK=iRVsiv{nymL>(N#EL-XR*d+z5EywX9L^1_&pMWJDjfC%XJvT;(Z@^~gfSR5j)@lU8E2tV z7Pi3Q5=Y2f+Jb?rsMG2LjTl58d-GS$5DY0hW=@vyt&Y{A1= zwv#HU8!vtE437TTW+deMzlh18oy;wVei2Ez46oS7CSUIgB;Sa)`WIYcU;FQ4PetUm z3%N~b)-v09eA+|4;TJAYZbYp%8{v^pESH=yChE*Q!SEu3tSU1j8&zfo9@weMOpxBj ziYkMUkN71VHiy%1ehG&s{Sppeh*13!4(I<84zK$q9NzRxIQ;A{;qbvLIUN3u(HWNXH$O|fs2hDH(|3o%;itpl@K@n* zctf&U!-YvJ)|yNQbTTYZm-vxmZO?wFF*g`~D_o$U= zF}jmiP{m{!LIxtSam{ujZG{G1aTkH%(_XR@#m$DjRJ!Lx>_qVp{R@A<0DQndA7`+Ey)TbTW}0Yi}qSA~0IB)(_5a zz*Tr`VGoBHwH7JygC+46b3RcLd!)o5EG`n7$3ycz>5APqQnO9uHj&Awy(A^JTN3@5 zlcps0ONo~)i80JMPf4^&iGN!X)0lIyl4z3>iCC*3VmOaE*v|!{wM&UfmP9FYYL&zR zDY4L!xSBbemBh`C1EmWh?00iN>o`AY0Md~B;J$~ zH(L_tF=wWdcw0(5ZAo0roB}2Bj+A&;NbFA{s$kAa#2F!dPwV$u5{cbz{f;CN4Ks-P z|0{{t&kgu4iD-pEG=P$c%qXG(@ySFJQCmgK1JF!FcQI-|$|wE|+I*B=gjPhf6?g|?YZ`RePBaLWZ}52A*(th4gvxCjWlJM11s_TU zIog)y&{EK~eE{wlTbff#$yDTTY-t0v6cpr-!A-ZNrD`d&G$K6AHqMqdN=vy^k>hP? zV>OEZ!cH_Fv-iwF3k;$mF*YJCez`%ST57WfT>&c^!=c00>O@(Z_H+swF6h*r5yAUd zkvnZ^b}a?XnBYDuLi-;@?y{xDYbmF&`VuYXZV~vU93Jfj5%@|)zGzDuqNSj^2vyA@ zE^lEzPZ^OtQ)J*Iu!u}+Xz%K2+chl(jjGUpL{HnHX(^i( z{l1>IQ`1s@r|1v#v}R39xydFAp7swttxeNX?p6B!siz&%w3I(6`H%FpcQq~LF-3o@ zr+uVpDZ7>YXL{OEO-pG}^yhloaZO8UvvK|&)6-6BTFRR?*#l``>S@1dTFQrt?$FaV z*tC?dZL(}@U+HPr+q9Hl75{5JZL3X7iPG8szxA|RZCZ+{=x_A2Z8j}sprViKY4_N) zlrf6_R!@7trlnvDFe;&TLQi|prlrhLbVyIzZqric>m1(i^|VKATFPQY|DdPsuxTkP z6#XAP?Qb?MWtC2J4a&kvJ#D8=qxcO5(ak!MHhIuq2hs39!`{!PX?ff})bK_V?Xo_i zYwl;m=;5g-BD1iYNZ%)th?cNpF{3uX)^Ar5(J|0MqLevTDv5zoA|6i?5>?FcD~Ul; z0vlna#2V(TQxb!v#5_ylTIOt05-C!m&XTx+IX5baAyQ(SC2>1*?p6{*rNnMa;t$OE zvyvDlB|fwy{>mJr7>qVtN@xxhmtD+xQAwmqiIJAXe&)QaBt}Sy*_OoX%y~yioFOHy zup~ZY4mM|taEz1^O_s!$%=t!1oFyf8SQ0-l=Vv8xwv>3olCUA(*owrcjg}HWSQ34h zlcXfZNQpt%_#$$DFmr}0iQh|l)glGxu#vH_dByM(dY3*{WAL!U1JjU-`rOX zx+?n;{lO#}aCKjzm+%_5@9lkw{)DXrMDzlqHbw9EU|*uqeK6Mgqj&~UAE%TWxK$%^ zV%NXs5rH^r5;^Y%oh<^{<|K0d9`tNMS0oZS9|V1|kiQZ1pF!se`pHD1{YC1_UubOT>mk1bi7rQkUyQ=3EY3P@JAXWY%?a7gGk(vY&L+%7+IM*V>k!S&Xy;`NvF8hev5{aH*`jB!LbGkFmuoLMUG%c;wfMtC$QQ9G4 zMd0X+N#L(m{MF#o$QcOk6q}~Sh!$pwXi;J?P}Zi{Fd&T);hiFy&e%ASpi@ON6^9|6 zHqC}nSls1Eg$so}Hcqr<7YHGWjl)z;n=V**-~v2wt)^))nBZt@MMB4j=8Wwa|0_F& z+1gqS85$!ReYRt8uC3J&z}UFac)|wxisu~IuMu_*$a?VvbiFI^=+&Ag<{B}gPgyMp zIuj?FXxnVsGEoSK8o8vYzG$0>zkdLcxxAZ*EM)hH=srI{HRX2+I%*(M-17+1-7-1o z%nf+b6*f)vG>cfBdeRl*Nl)}w#s3P?N&O4;>uc`MlowfgD~0A*JXv&F)uPi%w?a}O z_;~|}WbUmLbe!n0syI|<+={Yssivi&`0AIU^wJqP)8 zQ7L^sz9yc?Hj?x{)8gXdi1f3_gEtBzDK2hW9Fd`Eprb~RCuv+9QFMl;_c=fA0^{s> zPf}_ekz*3+eLP8Uvc(d`7$o`d6&t4!#X$gUxWxA-Pm&R6b49XPl$#Bn)lCJ&W3eWu~F?#?ka2Xh< zGDZ9cCuwnU=f@$GDG4fqag$>w#1RciBE8Slc%q@`?uR95dY?E$$_|gjC=#F4 zp%e+h2oRBAp1~gC&W=Z7rg7BckX9oj%D_7_LaLNHE8<&b2Gz#k4Rbc~S^K$90%;od ziD6}fmO<3%d;zh?HF7jbMj2$PYQ42})zwuseo0dl;cbdEdQjKwx)B!@t3SHVcD82M z47>iG?K-{RoVgcoG)%qE3B#_}&1q=Z*syVut;jovH`)6N3Japoi$cWBzx-{}BBK_Wwf zu-_P>Z`T~DMvUHnjuGwn+=!_)q8p4DJ@z^y+FM&&TT|D%0>+5ZuPW7J9iJJ|7Ym`s zp06`vRvFRHtuSIr47+2g$krAStTXf$-O<-L*O6wNZ*wObF}CzRMzkZ#IDeNBeVuXs zqegTn2O8T9yB>R@-Wc+jZG2K|yJ2^{v)btQSHu3rV~-gW<=AA{qhfEe>-sJvuimN` z*meC`VQ&-moxT&n z-y!UWh5d11e?!cE3%voJ;jL>W67KJD9)mzs(3Jklx+L3Au)0=gN->`q@IAA2|``6Af`r6VGjl`Rbn8%Hgjs~O5 zc4l8A#*uE6-EYJ^t3RhZ<{0PeXE>%BG5S(Rh7qklxz;vY(?8T5sgBQ$ME$O{*P(8_ zXT%m7(YEuFjO>ezXh(*TZ9Ai{5v_l!w>j#K^Yu8}L=7tZMzlU)jvlwmu2Y&rSLyZs zS|eVs|ICQhV;!lEb|X>$_O}Sm{fugLoMXi5XOV*V!uarqAWBUF*}WD+sI@`p%LR4YD8xmG5Lml$!^C%V}O3$y0?v(KN`_FM$E%T z^hP7bHqmJ$ykOXGF`{2~+;5!YC@`XJWBVHCIMC!==qNN|Z5c_%7~9DHhTS%?uOr78 zv(vDDVMIS**dI2c9ap#y*v?A6c}q^N5p%0(o~|{b9V?8Ouwmb*zh~R(ILC;0Ja6=A zFycQo`qUZmj~LO98>1aLhIz4(aIs-Jt~Fu;!l&cY7mVn~jF?A^XtaZ$erH76GLwv$ zT1S5)+L2_$d}`PoBOf!O>y21P{Xs)}6*cYTT1ToeA}aP}!>*q_)fk}{&M{IRKn06g zVnnYnVjTBAXGA+5Gh)7d!H9N@Gh!TX8PP9_!dxhRZ!%(@HSD^%>w6>GvB-$AU65$l zuR*={5L8pl~i?9FvX{3;`M+HNEM86)PT5$!;n z+Krf(3=Qo&Md^>&+R$h?<{Bw((Og_$*z@Wa88I7?_%Ss`w4=<3tv8|_8;n@TUyT^Y z5MzX1=Qm>Xq^(A@W494w8=H7krtFO`BRDa(k%@+Ov(r4?JUiR)<0R_cFV2L3)Z1EyX<_xf;0h7n(9#M;u( z=JeD1?{e&Z_QJ<^@Ne$(^6wU7xc<;JyNnFm1^tZSj|$YRqovAP%^&n^RG+2nkEoA)G+$Xq@)tRc3X~PoOc;&kOG{6~uR2Jh1P3rMZt$R0P`o?XI@>A~ zUVOKKu|5WqmsMIuJ>$O!@&7L(Do>A`{J%F{-s2?(y=1mx{TF%k|2+}a?nO%Y;+`dZ zanBOI*ecp=ZsU3pQBeU5#R?Z?e6JD3+#{XrK-Rp0r9oFeYD?LF7iBvJU1Ce>&A4T(5`%OI3mN z5HazrqOYZDuCl5q>r~&?BlY^TylKUGv9iYTXJ{MMFHm-TWQXac%qmS|tq}Bx?<8i; zwM3RH>padqJWSc2vvRaY_mtB^Q;E{FFrvw=>=8{pjv1ZK;wqJFy>!O6@allQj2iLj zmJxHL+d=}Z>+ymxlQ@Z|TS?txWRTCSTO%UMs=}vJ{e$>8-^IMj@}FA%N|f~_E~LVr zBHp%2ZjrLy!wa8o{DdOTsqX=KeH3cx3Y&Vv2KUM z5?$OwQ<2hC!YrNYcV452A1qZp3i$s)Rk`>ACR&Rgp{n8lueSo8w}Y)8N1UwuVe>4r zKD0!7q+Ap~bGY^F9yz&}S#75md5u{|ERh~f5Ek9Qd}wuj#magszo5{me#bS6*rrye z^ei`O0gLjlQIWD3!af;@yyDy_g#b>c~OvK50E}Q#Vfl{bZaSJ=`vvijzt3s`3Vf!mf zCtJ@dQjaf>IH|`fa}~4JonB-gvp%v!dWdOKeKfl2MZ%eWnXOtwTGr59G3Z3(iJP~V#}#SS(jN( zMK`i_o8?rZtPfaDJqpfj9yeah*h?Ex#Vobntd~NodR(=1Mx%UXou?Mw^ei~a*Cy=5 z5*glO)^dsm02P)!Kr+n?U z9=j{KXRCbM+(UF&25+66ujYe`Ar4Es-8mflHWGV~Oi8OQJ(Erq& zoXc`k>wPt~xTw~*JhiG)%1+FfP+MO) zy6Xz4arw2rn%Z&xs@k$~GpkDKR{ARawc}>`>U|Ye)gZ=|m6w)}^VJtsj1!mKq-SPK zs42-DS5aOpX!46&Zsb)|Wmi@EYF7BFR(e+yl~)ojlUZF=vwY$Nub<=TB`6>(kyW`)(qT+wcJ-(RbK1!`YI8zIIF=ubMo4-UMX); ziNCzw$08^VvWR4tlvQ!z5JkqKI|o6gFqI;033)R?{Nkpksv5#w1y!qMSX3<3O?FgO zvE0j^sJf=Ss)nkoYW*~y=C3TTr1}1p)x;OGA+B__&tD|ND56H{9yM_z8kJWT*OgLL zogYxNqQpu_*k!_1RMjo7^wlE1C3Pz!poq>NUUS9(jT>MH$&JJc$ws;;c7 zK25Fct*)M~z^gl>y4Qyu4&ti7?ow91s2c`*2;ee1>A1S6MqIjwD%Hh>DRl{4(TWmM zcBCkmid7|bHT6D~xw4>&Ebdf?iz>5@s5OSMR4s`l4VZCO=~AI*TMx~Rv>j>-WBHz$H2?7q@cpQs#s z?VhSXGR(4!i<%{^YY>3ts1hYm=Ud^cp*(rbhQFu=w|9whB^sS#6leT+GiedaRQb7V zuP9o%vPf16zRS&D2Kn4v%FCoxw1Q+2l=s=ua@?SZQYG%=A>8s)QdU$$^+gpVD|C%- zRh_TaZ+%sNl)F}({sZ$oV|Syz-G0rCZyB*ow>P7{uYSNI%6~E9a?#$5+88~8zon^f zYuH`en;F3`3h!lnu-l8n?nb>5tl*be>V2TvLZn`9sW(^Mje5O5kYAao*FoxyQFl|x zZ#>p9ZfAUovAcPOUyB`JRL@iIe&%-5cRkbhFe?3Ovr~7YzA*fr-y%H4IF+ZpS&Xw8 zFK6^J`WUZe>~7RRPVE*^gD^EL?A2_@l85_K7Eu;1RB7J%${(iFhLtbjP8Hg9xd)f7 z#J-a@mFVjIkiBuw_ftn*S$WA_cMh6P)HZ`?!;7)+luUo+;K2*;y7SIy6DLlbe%GCM zUU=7?gQk7bcIC8xj4Yi#;F-gdUpbgF9T&H3-+%G6pVmJ-4bQ9U+kh*mrW2*QsQJjO zR}SV}DCG_Ur@eCU;54{RoLDO^Aiz08c;@W(jtd8-&s^~Hh#&c2k>9Ui>fM_74aD z0Q}vvSN3h*Ijpf`?#}zBU-wDtw%xZkv;1+!LR{{=^UikgaXO6k9}b7F>HJ?lZ{GBO-+JBjzl^_Y`pCE)(|^s~H@#%kJJUC{ zAD#Zl&aBj|Q|r#kn%XcnYg7J&tYJT%mo=#N!mN&$ zW@J72-R!J$ZMj`;VneO%{I4!$P`IGXmwK6NW@=ecZECU4SD9MltF9<2@hwj+zACjS zwXCS*%G7FK8CR1<759`JpF?k{(4r_j#u*5U9|qq zj2EAeX`fN|#-yXi51#kgnpbDP{=%C?^cfL-M?{M?q6&>@tw!`ajpzZ5Xop7P&<$L@ z{EYui0WgA zw#5+biXr+ShUiobQEDvFj98-Ou|%69l2oZ_BV?9ihCv-bt-!}q)CJTVbfO3gWKhIr$KA5+?vGcQdHa88jlDMh zBipH;uP#ZwZSB$Hp8F49oO^2K4?kU9+x~vym}Bny$8Wek?ycjCoKLqLNyIe-pAyjz z(5n&Q46tz;(F~0!Un45hh<>Y)IK<}n8qwc0dD)IQVFcwIXRgSk!6{8}!bU&76%OZ% zzzK8MBoQZh2niA46cY9*_Gb}MG4_~BUD&1tC+yQ=U1CEQ5n)FcONnzAhzJKSu#?yZ zhV+O?iL;xC2)mnEO6(gWB5WLEC!FE}C+r>LCt{-+oUqf3op81boUk>JJs!0ow;U+c zqF|#`BMD$oy49*klyY^X5=y%|JPD;(ZY#V4o#dIn4+muAKcIsi{=<@vHDtqc2cyJXeia|IW+2`VMnX3b`mRtg?xt# z4Ag`!My=7|A$||OTJn}v_0Pa=AtJSSH zqDc&g)mlSx^>J>pU6c@&+YtS`s3v2J{YJ6E5EUAy%k8*L%AcVEtK?@iSaP`Pap&z) zj-wXQ%K^mm@4?`Z46J5cRu`@#<8f zGl|kmQ$;hFUc~O>QbqoxpOq^0IoSQD;ZpwX;gbL2aLM1w^i@p1Jxsda%D8BlxW6*} z=b_U53&w*(iPDJDUm7Yp%b_m}6&>f$zYP^D_%B?={Ia2LbIG+((B0yaXw4Pmub5j+gWS#yyOWGyZ|`ws$T3 ziHtR|(%%(~#f*iFa~a==k>%-v7+EeSiXG0BK9b#|V`RN(c1V5O9g^O}bg_f*fgyc7 z(}Nu{eL~Svep9rVl%-cji$PENvS^~=MCl8oiN+A6U(D{)87DHH&6vVyGU|-~iIVy{ z82`!m1|!b#9!ZqGoAGhRKQi9I7-YPT@hZk@#ubc98T&^O{e~$0bDV`ol#Y=l%Kr;Y zKf&}eL&iUw=?j@2%Q%$flbLofVpxiL^-sIhdyAcDFi|>sS=6Hoekn7ur zUZ_idsk-!sgUnKh(vz6BGath@=*K~7z`rrx&4>vo+!xs7b8$KyotCIpb``iHyS;akK&Cf5M4}MCl(g9$-SO8yMFxW-(4?+}}s~e}VC7#>W_)j1I;V2~z$`#@{m5GVY3({3jVV zGveF|#P3|j48|BnjqzV`QtqFOFEKvP_(#UO8Lwr$iqXrsknuvsa~M+?lNf)DmCyT@ z@g2t37@uZ*j1fyu5sx6_D#migOBrV~rZb+&7{{nH9*dFsK4xrXe322ymEn2!GBz;& zma&MjkP*vgA%7m@P{w|Y4o1w;|N4~%y) z-pII_aV;axh=M$}H~?|*67U>G9Lxl|FCz|a0{u;Yi8$#A^g+gbjL$OSWGL`&XT-s3 zplca%2pi};MmOVyjF^{zKZX&fx`7_RXfoOvarPVdA2Ytk_zL4ojJp_dXdLA4V8rS_ z&>I=oGFCH|F)m@uXY??-7|&(QU>wPaWr@(A$QZ+TDp|V!!1xs-PPc=6J7Wvu-x+Zr z9{8Ad0fUS<(;hTV&I2xC#F2WS&u7G8exL_1nv8Zv9R3IX$BgeWzRHLbvBBTXh{FRx zZ)4ob*vPn!v4-&q#_r>;WyE|Eaya}Dcqijc zjE#&~_zQjwBaScxeJLY8cY?lvaU$a=Mx1>JzQOn_kN1u<9%cLoBMxVT{4Pcu5efPZ zMy$04?PtUhlc47^V!1Zx492q(3=@? z4k+m5j5uu+^mNAa7{@Z=tV!@=7&XT4cpUr{BQ{4s?mfnXjQbd|LjwFK7$0Q3hw&yx z%>N;`meJ2x&WO`e!Jo-El`)eMCzXQVhY_c(g6`mPInGH1-NuM>R6#$;h>c{RuVuW7 zaV4XVaS9gRk zXRK$uk`brXg70R`Vw}kM8%BH-gd9%01^&wOfbSWP3X5vTD&K8tZOV>%;_^94Va(Z={a&l|pG{Dcwv-5~!8<4cUY7@uT(h!M+O zAb&IC4UE??;&@^37c=5~V$f3C%=S7eZ}}O<9m#+GVW*G&G;1KcE$%7Z)0p?ypB;^B7ku`)8aT*q9}0} z4$29;;|K-NnT%&K;_?l+>x{TX1N29XxW@zZ^NhIp12k^m0OGC?;A%$PE&`etQbghG zTF{w{_>u^^4TxDy6A zh!MBQfc}B!t7@M72Gh8y27DaI0mR)lz$Qjq+yMFt#$v{WjF&QYpD&MKcigc9|G3x! zh+BDpxCR4=dwhVn?-PiHEI{0;0lb&-X2u&B*E7~LUddR(Sip$uiJ<2k#&kw}M}zxd zM%?iOI-2oko_B{BaU&P_A2H&yIA~ml1bl*#zv4&XrdYV+Dn}p=w+7;VC14q&xb220 z3g>YEa~W}dHfSs;1L86%;8~2=$pIScKY&ZKmy(UeMtBG-Oh4Yyaah%sRG0|Qs5fKYDO&Z zfV(*89Q`}fxE%^KuJHx(g|Jb$ss=PRAOUf67Z5){Tqp<>hs7iOOk<%5Xj~l$#JTf8 z+{g~ZmFz%V)DFaTJHR!J)r{Tq7squ$4vXM`lNrU$Qy7OZjnA>5yXPmuaehA00!I6D%xARYmQL^)?SEsM(T+t{;4|8>%ojAH9q9v_(f%OQ zjCQ0O_>6XZg9goLM|y&0v}2VHXhu8I88oB)cT6*i^ho0Lz(L4J2hfZnJwPKpz(+cO zW)$fG8tDN((g8H1NDt6R5Acx=pczGafJS?187E(9-xsP;3FMC zGul7n`u7^+F2;u#?_}J_h(&)WMzKgDG9e&tj{@S3DInGi09Ad)dH0}IJ^qU8jcT8< zU=n=fKM?r}M1BF04?v_Z5akGn1+hS^r2wjWjE!=jvA7U8lTp=UtgC=K_OSu6{sXAm zcUA8dU$xV?hY54F4SWkA@(Xk|(|*uc)X5t(15B$WC|J}9d3B56lb}taAJ{+23Fz0D z-ovzr7!e&{dMon}gYHk1hlY%Z-e-E?DoKZ!&SLrzT%~~Z8GK~Q=eWzhKT$LL$3j)` z)lNI~JK%3)|8tnHwn`>3zl{0VJ^=q}Ne;>*{2yigNMG>PxmbIczm54=UIM-{SXKuA zWz6StV;L@=mcgdJPTu9UjTV=P`)kX5-%XzTA8>Ez{JE&*jxJ zw|C=T(Cv8>y7AxW#&>n&Z|cU!8GN0?hkFe>(v{+-fZMXGC;Ba+ost7U-8 zOH2J$(A8r*?Oam(+tfa)9uW{5sk~lqt$(?%rly*_rPVd%mHtxlR#dIvp!DKPY~&Hi zo8c=vEuWLESCL*Fk$Al`x<#aSp%Q$RW0K82}2mSv#6 z0gs~>;f>SS41c{^WY>!s&nHtkxt&%tNc^kyie9hZw+5Xb8?Sdkc0rHh0*Ipcr~~N3 zlDsT0Q6~J@MU!M1uXnkxxNe2Fys}ip!|R>7(1k0G*(g1mc_Dj$-gn-%j0k!9{QTFU;}9(muAwv>OR?sVU9GGKC!{AwuioczlnH+Idei+`gGx2SyUpT z+&#YkyZS21E5(sIr_-k{b5r3v>a*JAUgL}1jWFHy**ShW>UfkXGQP)sB>L*p#kaby z*nd^EueQ6syo;oN^ph~l=CCDVdJP|T8p3qfcQ5PP#oPEE`)}&w?Cqg%p+^P;>ycnq z@a~bUYT4KK65k?!r_(*W-kGiiF6kHMj*BC9m_PS8w6?49dMnEPzM7(nNz%Q0ecQ(R z)Uwy@^W>%rW#lrgi1B($YW+3XEG|uVefO|FydQyiv|ISPWQIupB5d9FRu--F;Wo1F z`SBeVClgtxw%WO^IKE1*b?%vdQeRc^6`}xk*SGIdsgE}@(3_V@x|8V=L~rNtRTq_X z*LSp=zLWn=eWEb;65n_(AAjOd4B?}>^J-5QU)BDh1~2as-zPc!C$PRfeD2B)zgUL{ z(=EOjU=)@3y>*q?uUaTHYgc&H|H63{Zt+|b1b7Qeav=c8>%;Dr|wTqt5-O!wRp>q&X-PhTHXC@CJ z$__j;bqJBGb@NQ_dt9xX-9w1b5_(!UkB_)6=d(=2t~6Kc=DZ=Yk#)6hUN&6zgRa)i z1;dGs>O$k<;Y7I_QR!AsaO!Y(W7t2!6BHWVjm>p&BD5V*=I|^EAM&)?g?e|x-qdS< z7C}7VY88QYwTc@+p*$<{$O;aPt97>6?&WITTn49gLQowl<7wJFa~P4Q>BgL)fIGlI zC^=f5z#Un`g$wvFh!|Tvfg9bD2_4LIv(*#WoHv{(Cvei;u+MS1YpKh-WUo1VqmV=X z1dcbHOjtc4u;1O3FiInGmrQ!Xt-TulB4`VU#LjF#77zEJ*nQ{@PH{J#1K;i@F}et} zjBgf6^eoo?AH!|WLE-Nh?t#wEYGuw}0-tXot0lQ;80*7*u+1^nT6t<31xS^0_ zws$NI3R}m#;Do?4$o0(joe!8qnXmunl)L1RyL``O`T6;QJ5UPTfj#b)FQ>a(j;3md z0-`i@3=4{~($N<>QJ^y0J7R;vhUW+VFY4X}Jc=Ug8?T<}PKIPcO#~DbG;5+JfPq1D zi6GK4jXf|C6e0-=gg7La6_RW+0n`v+!ys)l7|_jDxmqe`?!yr)}F66&3ki@vq)6BWRpr zofZA>Jl_A-;MM!=f9%6{?|+P?R9h!wKa!}eYm)tMO|t(@=KXI?vj43~_P;ew|6A|$ zzx$m2wc5lk9)%o&Lw_;7v&OzcuK8KT_w--PX+L!TvQ8(#n;p3EOK8-^YM!bhoQU?@@DfuSeW z;Tnm?SDY6#qv8{!IwZh_;U5@^&1jDQERd+@6V;!unoGRu@OsZJgVf>AfKY{uFIia? zlF>wMdI_In5M2j>LiWkKw;$~xyaObjp5{DVq31LD6L3a-mk!Xbw!$bGzP!eJKs4C{ zqRAeh@g5LO_JC-z2SlA75OaFKy-p8^CVRlWP7jDCdq6bV17c1OV0Ac6i6(nM6g{9L zJAtRORdcdWbx-!H?kEPaI!+^W?FtE$PxJZPE5!IPcC0$lN(fnz5t}OMO=F23o0wI9 zc-0AP7}nPWjPgCfm^NNDi-!0Q`~@iPj!$!x9zLPB{9Oq)HC*W<5xHRREwZu0=)?qL zx2*bx)w5p@Z_`^2DM7PA@fF4v;O`}T`(zi0WY{}9`t#_HO!h^Btuo_(0%rN1VAEA3 zGAL-K=;0lD%Lhu(2xRyQW0O4{*A<2vJt4zRPJDX!ExqMKWEsS=6h`gH@L+7_AfNwe zhp$_I)=gK?oN$Nthiko~bbGrxZi%P11Dy;l2HE;hQH{u;A*y+;Pc=e=vQ*OpIJiPJ zuN_zcZ;onSI~bl^E&Xxyib#L8b#)Z97OumqnuQ+KSjS?VDPoQ~*O?}q@tPPDkaJ3pO_j89frmZI-!Irk@5JVR(}`Rf`!#k3jeiF7_7-eg zKC|g~F8x^xeYQOqYxD-2wtMp0^7e(o$EU;wGVLfK<7mLp_OMSMGCD$eAL+3deh*Tx zY8%cE3ME@N4u*_xS&o3I?dixwH9W7ANi$L^R8x~H47X})vTACi>G;JfGVHi&Xrx22 zw;I>UJ-&i&vQ?CBj_p42hH&am$X~z!^C@^sg1d6&Tfu)ZdZ;&jK3FyO290CDQM5gh z(u(XvZF(_>k;h1}KmI%>Yt4VaDIaVaKafPuRL#ghZ!{iJ0tE+e@!*hZuYSEL2K1~{v_*$xYjW3XQL^T3A-i~^FHZk>t!iOiBtN)0;5{*aB3mJz&Bvmuw z9g??Q9scJWXRdVG5N!EGnHrlj!WV3MF$ZLrL`LhTJ7}a%G6N$9tHw2+!>d@o;2d?A zPQ?1=Vc3kCWQIlzR>w{AEV=M>1BeeA)tu((kX2)vC)ys#_Q$*M6GmJ&)9>&~LG!G& zUY8wL$6e#8{fBOjW6085*}8seEHGk-ZfI?2-VoIsm}9i$?b6M;JN4*+h-{>HWEbp= zoc}$o(9NPY)5TD31af55m4#tZffvc~$17B0+CcboRb$#P}}Kz3G*~KT6Vax+Q*WAKlUxG=G)@(%N(dY0U5+l|oN>bbI@_(GCAX3J7xFDIm_h zQ&iKNqZ-q^Yyk81kLUty@E)!Q%PZ#dp7ba;v8a%AL)&RS2ZqA^9C!}*bKoB$Sq{@3 zjYo!Abl4jf9TvA}i8Ag=LM%G3r6X52C4HQ>lSV+3L&CUQ}O(P94p^o6XVBGdhD4Wup0Q&Hn{P=7ElEtpBoJV_5=J z`)8owNPu2@gg(1fi#6OXnMHA9-?*X|RkjLx0TbZzOZ4z-=DIuQ3?XFIH`s7x(KNJw z)i@xbT&6Z27m`XRf;wSLX}%(`)w!Xy^?+T-Y}5PVi^T2bt^c z44uc*{sQ_KprLlP=^Hz;Sc}F3G;knb{uW$S^uR6DI2g$L)ZT6!c|bjOvcqHS12hii z?X^@o>`jZ7v>8W^?X&2xofa+LWzi8^gW+~N5Q_&2j#LC_Xs;Iig8r-}dXzq}Rkh=4 z)A5Vx`lF|8+t?S#+oy-)dS!fJMMZ^fwCF8|uhLtN=TvCX-LZ&AqK|HETE01#KGfom zuYRpUrGc%+b6`9Z-@Knbu5f4l8FWirZ+a!SOJ8N93;0g-mzgtk!wMRwg0X9d_~VKG zq&MC2HHmo4Om*B1awG%GNIQNdzH-CI4Ac+dgS2%LLHJwel(bB9;b%>iq@F5Qlgo8+nO z2%6(_Sc?Tii28;Yle~ag#w0d`CtwI0Q!#=k&rt_7S! zmW>v=rKKVoU)E3&ZKv!1P6#ntj_s#g+I90DF`S3^kD|6N^sCG0*3Emw;2!8dO3%lU zWRG+)#QRK_+#M0;k-K#BY4*qor15NjxAm+v^JR~2w~m|8@GsqbnmumIU2+>HW_`vC&E1ydXUx>@`xgvfO)oHf(beB!fE({SJ!nf?MYMg{Etu5SLobuj z1`-(Wg0iz2$`b2GDUhIsedDWJdLQ^orc3D^5$Ab3|Np^Py3quDnQn8cH`=}|HLuN> zr_m=OQ%}sY8?}#x8`)zZ#H4PBk!;o*o4Qs9lF5#Hmnd=UWNS`F>j`XSHAaVyM z-QZ^GqL{1^q#VC7R*WjcDX;P`19(o)w$#R7I>i43VWI7n;4dG0{@ zGo^Zo5E(}q%58`k#GaV4B!iHclac(1L+Ju3HJU+)%oLfV6w1jYQK^(I^{bGbZCAoB zzCg<#9E9TFq)Vl=`b>V1lRk?dX-TS-Hb0XjHJp1l;t*8MfXoq-6PlfYOkQ-B=UO58I+Rig8VFWqTyw2ob!>mF<;$my6&;SGG^`jgtt$eNva|${r~B z&b0NGmx5xwwDeAn8nY*3kb_7a?chgRqo~ zi8tRxh~ml!xd<5p>8}|XGhBqQ3$PQ;z`aV`ixHQAp-$e+Mx1Gt}1)88(u*j7y zOFl@F;#5t#fxX(rE)yrC2ho~~(1N?&+0COR->)S?#v%MOclM^S zk`Jl{Sn2!R*_+2ozGp@F=kDwm$4Wl1f$aV6cW1}PN{rH0z7ItBL3eiB zSjqQ=2>-&J{rXtR2N7tN{~>qw&asj&%|*xyc>W{q>^);8Uy+Ltc5V4lcXoV&L?uiV*(CP=Ox8m&u`KGCrd`Qk?Ev{t|KXwyx-mj3s2}7Ns{1~s{Qw~ob@vg}6BKL?0hJ-dA`6h?b zPrD-FAVUI(?gjivygwHMVW{pIDc#o_)ebJ4uMGhc_SDI|wn7fOqn=sOWE2$wtdc4X zS&p}#jWNvaV9HnXc5LEEKOfuM=P|_szhzj1sy6nleLUyiIF$a}^$kz3wXp1*-w{&8 ztINVXl!ejGR!+o~j;jv4Bv!SwlA8}pg%-muUwjw);{6oy#dk@S0|+Tc7^+gFU2KkO zL3of8t{Ondq!dErM|)K10dA$YogRT_I6dMm7O^dbkn=7Cip!0Nuhr2M?abL)( zB9Dbx6`t#nVT2RGsyZKX`sWoRda?^dZ=i<|`8LL`5ps}2c@6hG&SA>WC?P!~rP;0_ z>oF)-q5*4D2^oT0GVYbI)#I27WM6rIkJ_a&SC_&375l900bX_-NXT#wrOK`k_@SrU z17@?;m%N_m72i8W=}$;AkNiMXw9eJ@9c{aG5&NGoM2^`d=9T)-p(Wb$sxnn z;U1CF3tjQ$oVlUtFi9(Y#G5{fS2=|%RuxVEh&8>^E1LchYx<)Ivwr@O3;p~Wa9jmF zsz`YygOEu)a+0X`uAZBYsD*#CFW8GSb7to*L4i(}B+ciUa2p*?WbR~{ ze~B(4j6jJj3=2zmxjIqqsLL7TZ@4hX-+{&sAmbjM?}TW~_aNh2yb>$v<~83ep71@$ zn8Xys%2)`%J!6`5IZ(H9O|$13K$6QXNy6Tf5YZDza=9@IKB0uT zp9KMNxj~4anO6R*cs!R5WJr6LN4~{n45buzSEOC%?fMMZOV5`?IF<`4Rt%jLOL5vheX|=eh%YA8HUaV zry@}|Se0{>dIU0ACWoJL{Dfq02Et$G-Poz%b=D8hW<1I3Y^0veM(OKpl%AuoiN)!2 zgyif&1q%{vn=`)7mhf#Bu*v5fhx#}pk+XA701}NKqWDIZ5n7($#&gmm-7tjlNgMIS zw_}PJ$#eXW=eXzzyw@`r5U#r>Ud$Ty6vhJWN65vcXv5Q(UuO3sB$u&Je+Hh|EOc=t zk~br~54o2j_!k6EB6kCV&nI%{vMZp^Cc+mp{_9DEf0jnb#p{s$xfKHl*@56A2)=+v zFHR>UkFh5&f<2KR=C2@Z2qq$+LjdmL$5Hkj)GVPaBi(N!nDZm(pJM5yop?@|};6*ZIWuIfv41Ec#0xWXhRA_!{y@WD=tBCM23t zmwFji^Edz`L>|gZ=^Q$Qz1Sh_;6Kk}>-*Uf@C&v#1#9hzJxWRQx^juzI5#_N5IRtq zBn@Yus0>vMXYXBxZgfr_>tJD^{G7Zek#`yVgpiR#fRf1)#+Nkw1r~sR_*Uk z!8^;7=Yg^eV;HTLq~XVa+G^C|e3xo4D#K5*SY}^v*aSRhwrCUMYRRz4$S_Tkh9_4b zWaM>-yp*?LE(@^cjlz~d{|7S(@nd@foF3eJoLd*)+MyH;5a{kgMX-!JxmFig}n^edJu|T{n%=Owm&$^Kayy!vqr$3 zTzO=VEWH+Ri5wL?XCh*@h$!G55y99VjYmTB7hLy+2NvCM@*_MsjW@AZ1Y4c3>ssAb zC%Ayj+$ijj^oJgq(fubwyXYG-A*r5>&;UYk8(f~9F=GHBN8tUmKg*19eg-}-+X-WHp691aMJeo3S@Ly%0Bj)ff@Jl;Jlc@mH3|_q$p{25 z!yAtO_rxUr_GY zL?iiRWPM$2GO|2eUt3NHzjMN5vz_}Rd0A32+=rw;DrtVDpL^L)71`~5zP{;+Cz{-kHvUmbb$=rLQIXvb zHF~Bb0uMGuP?3|;Ef9_Zw)I zT7J2I|4Y%AqD@acywFn^eaT%^p-Ar0Q&7pF+g!S&q^6`D{r{-7(o%(_{1{Jgmv{b~ zXRsG|oMDQjxF2(Qn(=O)MM|3Ib|u5Jk)`im4ov#o8(k44!>@SVOPUqgo%y_y>Y1R( zp6iuV_k$}uol4qcJrMs0M?A87pKtn~B7PrfR=ln;XDTCqs-#U&Qh%*n`nBTotW`2b zDAcn+$#AFdRnopwGCU)d)azLre!je!eUpz}#Y*ZHCG939^>cJ1_ty>RLwW8sZqFGk z;@gH!9#O1hcxEf~FG}h?o{@JoJ#m+kcGo^ddKsAc>55Kq=kY%O7UFbnmQr%-bAG2_1yeuiQ`-iRz zq$^iXRZ{O#WcP0Ar%I~(uEu;ta(^q0XRpxQ__1r$09j)F#q~#gOV8gFxl&2hAB!S7i6AWUrF8MoD!K@|>~S^TgDt ztKGj_vG*kjj}O1gkl_v5ZeQ)o3%_Hcve5!U|)c=jr?=Le&e z)JI*z26}$1q`AExE2-}DU6+EGMD{AFZtoN&&0Y3WCDpZJu#)!Ur9bg|e&t!QbOMr! zl{9y41(1@job4_dugLEFk0*GhyKkK`-F>Sk-!qR59k=s1&u2=%4;kL?RZ`spBlY#} z#d|$hDrt`?^ll~NQH8cDX;JpR_ub~a@8@!HQ&ZCmigX7mI@cjD_b6w&7e1oMQRU16 zv|_K4=5Ag-g}u4w1?Qcg=mJvRovw&`8Q$aPBHLYE($k#WsqW8Rk&#Nedq9OkQvQlQ zJyjtoFT-=Ua;Cea?KF?YT)biiCGgBC6N3 zb9fR|Ho^7rY;lgXI+;ay#VLo>+cL8#wJK3+rtsd!7xaDf)5m%4-zQ4->N~v-cX~ft zm_58g9OLw^CEnxQs1Jk|@`IUK;(&%+U(3DXNUblc**Eh%BCkZQgFbw?dlNN@3u_4{ za{s%Uq1Fs;N1~ddUWZ71yeY@_KNDCl5?dQ{_-4hwDfM2W)J)+O`z12**)|_8NjIF= znXJ2)(eD377I8#zSE7ZzY7vKB4~m^6QY5^>pqfPHh|`@0aT-GAI2W%-;?zXyZ4g}4 z{qscKGle%0uoiXyEK&D$!n>Pqr%7bq+uVCF8TBdm&gDl+5}DV# z1@n5hpx2leEx-~EP9oRCq6J()D{x}y|GF|wS*z9F){dN9Y(0vFe_3rCy`9qqM z4||Jy47F9uuEnEudn{B6x@Ry0UP8VMBB#~8wlTV)B z^T{G>@)aB>p8lV-5O2}Dbu&ck1eB5uuI6|^N#Rc-e1<@Hvi&o9w*TK@ZfBR;g+EzU zuYm`(zHrG-P-gNd0VUE!?SSLN3*+1oP9igVH@nyTDoTBlC^fy0kLA>ubno*Q`jEpu z=zusj$B7=CM2dvBDG@cV=izrBtdFSZ+C-_D!Yhu{x%u)2kvc6Mu{VI=m2-{IP*j9b%_II zGBcHXFGxmR%)QA*%@pRB6Y>DP`-5obj}wo(u9|!APDVlDI2;s^!%5`2=eT!oGD@^F z*@EkOx1bj-oyseilc=cI1R|0|%Oo;GAXBtVA~OUsMa%m5DsS>{II)^iW~W}?@WByUVT<1{VI`V#tYmFh4#+( znE_q*aDPumIT1-`^Q1G9%^A+UKTJkV4>V$se7S8(vgaweXTLqc6)Jl|OoHURLgnWp(8XvZ||`yqD&Wu3J)-mpp?Q zSyWeETQ@RNU3b&SKy|o&ad}mwZe*Z*N%^Ac8U#k(R9R6uvV2L|BIi`&5`X^a+OU7* zqRJcD;RUa%^hWj;jt04!>dLA}d2MN=a&dWGq-=2wsjsT5Tv%1UAgi(}Lh4H^t0I?< zE{zcAovRmtMP+r+{1&ONttwy8rEFFCvPfxNq`HPU&nRC&P>U#rI)uN5p{$ND1w!GQ z%4*4?@+y*SMqN!=6{#!#Nqu=$xIEdYx|^zNd9(bNcWD+2)Yp~Qma+=_`Z`^|4F6zd zwY8N?$`%o!1aCq4qOw~`>mubfBwSq;E-zaIyq4Bg-dav-%b|{sX@}!)SGu^Yc41`| zSyUD&FAdj6sw*n+s^zscrQE1``2tc_AE_=aTkzxhx(F$a+(;@a7cDAZK*II4wWZl=x1%W81@6{1#zNud7w6d=L#;(D|Wy?xg^J>c?<*cDq z;af^0wPg#+(OTBHL}*cUU4*x(E3Qhrg?e-%hLs+10-MfRndojc^*!?~Ebk+xw5+N+ za#MNF=WwlZ>;v_v7+MH>cjN94k5q+~j4Ng_8AbZ4h? zL>AW&ba$u|bH*R*66D9EysUOnC90^Yt|P1=tYYYcL%%Jps|`arS9uj#R9&?&s~e3d zEnQGnyR@>36~U0KycK}yXsf7PR8Gnkvwpsyysomge1U`Rx=2}Vq_n!CqOKhD0T^6V z9w{f)H4#$1h&{EUy1r@wxv{*CA-df0v2TUAO2P}X4B=|Dy}YVyQRJ4=NZHNhRVhCoU`*3Yn zcPA_h%OkmYS7bS(FDp`AowcZ}c42u|q&lmjGLoM)qw?1Btjf9`!^l5!qdS+#IP)-BcbwOQfn1?5?b zD;M4r$-1#T>&DvZo6D>6vu-F`RFCIpk)o=btE!h)Wp!_UII<{<&uv#^5l-K($hxpD z>%s+Tq^z#4yfy*`r=qNKQTc)^vTCa9vc_MT6}j<}3C_fqbc@o?z#=x^vN$cwETBF2G+Rym( z&*}ruJYPBV)V>FNhRIsX#vqYM5#^|I{!Gne&izqwtz5lo)4f_DF z8Sph^$y|gCbP^LFhJ3f#g(u?{bdiP&^J;?4k;Yt}NMv$|`I6tQ! zA#2hIiKh{APdXugO(&!cB42!ykK6tr&W&(Fn1mxn3g3iacMYJTgAZm%8{!eT{nwa6 z2yAH$;Y$!E+z)v--cBa0i>vv3fU=vNkXhv;5yGeV{xu##c6kUn+e^rm8H8NO-EAC4?N&EZlEAfOaW_98w6mA%&2wDTKgIGlX?vKMf8tn84d0A0Z?7 z`>~5SxQ)t*A_Sa4*UQrgxjCJX$N2XW{TX@TdiH1Z*Z(As7#DoC!=8z8;U)@ESgJDy z&|bVQ>KEe#exMYuh4Q_ECPv_2a zH)JnA`c&zSV{jkmEQyd|5+PSYZ#lmd2z~g5M94!DAsZ#a^q9Xb5q1cB0-~fYLSRz` zhs)Qv2$}671Q!BfzZA#2(CZF7;vygPDnhUva$m$5c3hn%Zf+uq-MwVr&AH{uuTk=X zxUz~U+%@G<+&m6}L?n-5H(>dNOCH6Ir4k74@+b&ZA{V48c_Y{@T0#i!uku{%z9~j> zvLLSAA`0S`ydc-%&onCXg1BglT)1h=qi~rQQMhHr3*t5@q975=UmKTQ5rx~XJQsvH z5d{%)9>uQHqGu-C1$j_JL8h2L5qEnLg+(&29(REeh0DOaEvG1ZN1sB)B>dE5VV0XbFjL5MKP;pu9p90~A5hFLBQdWK3KM1344dT0qvs^$n0AMv6d(gzP)$kq~$XO=ff%L|JfIAj}SN_K^gu z1}e`eJ;=PcK?ZU!Za9JLi#tmo|KhR_rU7w%2h)ML&w^<|+)x22WaJREP~52kO%yka zKpVw{86nXz9zDtFPu-jlvG|e@@&h)kx;r5Tfz8yu(#7E?uDb3jR-C7FapGhOHro42 z7u)n7fu~4!E-Q9*Vuv(waNWa+O*)L!zS;*TXt{Lj^+a0clYHJ(4{QWsP(hE$@!x@R z+qO_6f)n-j zksmfumObU<7uS^&`3rm34_<8Fvrc||({A^*_!J+SBTyi+gl8_9O_V#s$A@5l3j(4Ve8@Qs^ZaOy)}>Xwgx zw|@;}$|^4T=Rn5a4E?*)v4;L_AR!kLa^*pY-4k-jF9$gJ9vtB0yT{?fh8hE$e7BzA zCW?);Nlb^mn_1KDMBup-;eP&LtzIV zEbsOG7#}oL@8^_#&9O4KD_2OD6;AjqqaX6I2K^%U~?csjT;gcNxjzeMZ_F-<1wwl9* z98Tv@=dgf7KZh4^cn*ihxjk87&sNy4eTm0k%i&}WujKGD4sYf5U28ck=5RWPQ@Fj= zt2sn}10GU2e4E=p{VRu0aEKe<$ag=7%^a3p8rM!}%P} z;!xNt#fB5|3wxx(zUX2ee*uT*aQHR1-}yO**a$;;D1HWfoWqAX40HG+4u^4g0f&P) z%;4|~hpA5agu{It?&PqQ!z~=L8^wgA{E3IzRZQ4{%ej4e_uc1<36?rF`KqWGT=@j`-I&Wa==w*cF31 zNrZ3VP}l>51PJ1<B~{)j_CZ*?BNl0zsfK)!Q0JcC2%sX)BV>G0PaLM;N~ zcX0^)3JCv+!{2cD3l1TMhV-=@uH+Dcn1~m4yKm%SVYho44@2Vv@{QmSl5YruKLO0- zFonZYoUU6Oc5rxz!+jiz`Q%j|exAdpIQ%V#&_IFbtmd$RLu_ax9vUkEujLSGFAx@X zyt8@uEDoV-1L;w7hImBghgsG-S zJr7UeZ~}*yb2yyCYz_x==;ILkji?Vd@c|EUi2VVCH*>g&Lt)4JVIGcg808R>(kNHU z;f)+ZF96~vaEOBtgoksO&EZ)bLahMOzvlBE?zbcS0f+lJe1k(MEkODoIQ%t-_jB0H zVU$BL-`>c>P%ne>S8)jKGYAji5PEYE{)W$|P-BDeUJjw>2jQnVggzXEVb2f{>T&?Z z{9Mk%|GW0U5AykUFNYA6$8(^U2yg?3P&tHfl*8p5_Ou5+kH=#V3HhgT2+c?c=W>|E zVNX5)S7wp#TRt!2U=HEGbNC*IdpK<85So~f?>8JWwGM=&+{44rV2g=DUK>ZlP+c;zj?LfbH_;mKfZ{_LGy@vcf?TPap z;S}ssApQTeJ#k@&7HSVre<_F1hk!8li2%oNhy!uf4i2GP5Miih02Fq@p^*?_VTV@O zl@@lwv3HAfsP_l_6^Gm|Xv&>D46UX}hiV8w$o>MtJQUyr4ln2M`|N@Lr}n*Z`3ukC z>-t{yy>W(zbYZW(r#)}JbDn}TKjiy9d)`c`Bkb$){5|b?Ls2HunZmdK1NOY3g&Xw< zd%&=>fUw}-*YdEi2mF2Zy#+rHfkD(G>;en>-cXc^cwztd`|N$gu5o`tW^yQh&BGkZ z(4~iT4rS~eBFv$Top*#el%b>;VGd>VPlP#?-{WBpW%OI5b11`}GQu3nutSb8hs^#q z!ce^m^;yuAjWCDI{x-s}zm0V0Nk^DNW`7%D?3p4R-v?n1nf+~qaeEW#_-+Vu$n0+; z3=&CWcWuI_(wYMjxdJ|{|E#BNC(~#=8)kZVc;L>z&pYmGW;V9{39KBN0>u~e}sX5 zqyz5=bI9A!r~U9E9uGk!D2yDDy@7 zGM)~*?noDBT+kbYbi(V$xIwx&!@@o`(&zK^RD^Lp&*dDTI2h@hc{;YakuDtU*R%Th z^Ox{+arYN@xsm=DPoK!^7iVDQynYYA8if9W`o$R^`aQ}|=jCxEi*#|t;96e(5N{v& z5TuLC9jQFMnWw+(^s|J69rrG;)632|gyy@Z^ZuW3FoD`N9j3&(hK(NKp0cKnaqonA za0q?&kVa(!s(snE?k=z8i0Af*6!N(}q9LFwDa>7%BuxalLgPxSPW4;bnrx;v7P!Lj{4CSmhiG(gBKJLx~< z@Ny0>gT4C2HT9A5F7nS#Rt|&}@zGt)hj*8UX6@@$4PyVj-SEr$wi|x=sDd9lcE;zY zEnZOJ7!5y--EizZbhR6vdm7Pt!$>EktYp@U^giL=fq5fZ-a5I;%^L-k-;UDvP>nTpOe%9-r&1vd8jotA3gu!d> zCil9o+jo7Zvm5?Dt?zVp!$p1PaG6EXzD+MB=ysp@JDuI|O|zXBy@i{8m=6XB_HbSz zWUC|l&}V(8vm2ggI^~&OGeXFIOgPY_Fv)d z2Eze)57=IF`cTjI{ad@?*Z;yPFPsY|1pkfuKD*&Fd40?n59CLG-MzyJaTMVa^|W2*io0AL-pA_`7vk3b+L5mmj*G}9Txn^zx~dK`ZjS3|S9;V#PCWQvxI@2oWMEI{ zzR#}tbY35`h6;y;UKiKxWBfPlntQ?MgPw3iz4*8jZu^MIPr!AnQrICson7-ezjVq& zt_9BfJMKxkKI>z4*ZZ(*zOqMsqyC%qozAZLfARWW;Ph`MuW#@tgq-8Fu}AyI9fN|wgnZK{gm9DWJ?g_;czV0$%YW;X$2tk_5{P*cLgs(w%tO7u$G^90J|7zc zuv^dH*SD#Ae?FaE^ZP$@WVMPr2zkZj$k&T80r_M6u*`rN98OyQBL}-kO!kY}oK09F zPS}x3*e!z{V!i3}u}0zRs_~{#)TSD5tHx2|gfaJ(Em&P7&B6waS2Uv`CrdLHVt9WnWDNHMgX#x~V>m2TXR+)UsK9&CLv53?3% zsWdZ`lM662X9PeXXB4tALWJ!T5(-;EV|5P5YREX&^}PZ)69dL)bffmV8k;83jcrEZ z20eVddluc)+G29lX;NG@hvewS+|6|3wq7}ldsRQbSIkW@8EULaDEwK-__FJhR_9=| zrB@_Y^t~dn{OlEpzTGPl8$fz^`G(|^0)|C5&V5~_8{ZEaft=~Rnpo2& z`?733CbM^b9xonk*XgvK!c4BYd;_c0oZA+l8?BIWBw*I#i)>fv#@1-O@#27S96`Eq z8{MeA5(^MpkBy0Kl~zb3$nDR>zK=MN4*BH1iCL7H`#?w#s&U{pTGX3}x5P zVQbZHEC`0*)MJ6QCoSsB`075#uyumISk&ip>X^4vwcpgDwna02dTip!6(3(6lb^vT z>M?Fs=fL=w9-bT5jrWt^3Lgr)ZM`A~!w78a>Ktt4S5#D7rJ8}9oGahYCu9W-Nay76 z_>Lc3xn*wG$k_{SyQ;%0vOH@oze;WS#2pNO*ZrY5DgXgtw^5KAd$NSAyb6AXb+YoR zVC(7}?6JYY&)GKu@_1f*L&hZlXO5e9?HS-1gaC_#3AF5-t@}YE|w;_UBYhk zdV0_}iIycOs6z_PKu#8nl&a>OoFSUIC`Z=Jh8&O6g2%sx zXu?hGxyC+~;$=c+{m#aLh+k&6i7~-)XmsO0wdfa4yLHw6>y+3SD1UcSWAeGtc;ne< z9zJj^aBgBmvC`24jl(fm(B*>WI@ZhR`NT0q4NLDZ_!yVV+SlO8D`ag&zb(_|Z3nAH&u08}B=m4r=-~l* zI}KJ*G~RfDZkjA-Y~XeNqYnMAFvr(c7~_AU+uIAaH+%(x#Eijq?LX{&8UMKIbKqAu zVmINcol&$&HY4JzFa0{Jvpp(viFBtQ#oD`GK4S{hu8Ekr8@*nUg z?Lg~cdrC|`pKg&S(^(%|bl4&39cvQxjdKZW+7-07sReJ*=;yF_eD5-b{%7Xn zg6^!iMKh!0ZQBl*Hn3Tm{|jz=I$+G* z95S`GkXf{eo=>#sfyQNeSc?~$^Yx&)8Dpq0HfFVM7H$Z}#;gm)#;@@oFtyDAZ^K*58v_Lg z8lIMlHcLhEp#7>=@K+lBiEZ1O@w)RyLE{~|{vQ${0i%4KW_+U2jb9cT-)P1^O>Iwr zZafl*EwkB7=Kr{>-B^FTY55)!Fun>H-{LhJr=fc#`4=tP-Z)YZf2D`N4VuN%_1KuF z_1O3q0>%!(ANf)(nwg?EZI|_?R?G#T2l5UF^8R7R$7y@&w*-tsA!7$y9UReHK6M4n z>C<(oGw7}X`Vu5pl@6-X`$1!W(0(N_u6!Mh-q`Jn6&i2S^|-8u?-UAq7{g{ZGrr%P zsE5qr>2y}ye?T){Q+Iu<`H#|Bj2_V357R$ z_jQXF4@9PcPifLA9Xsx?s3fH=?njd83{%(a-TbffSw^q4}krlv49Vhu*SH)MRNoAoOh1r8X?Hx-8MfLZvE z7H#K4tT|-P-9XplG!27HHwz!rWAdu0vCzx1e>XiJ_;Xvd1azWUV~br4ag%`hi85nc z)uxlKhEhRKs4v96OK6j9(K#&^Ee3;As!b=h2N*4I4tzK{P>rmW}IYL(mr%>{Ct5JSE1~kU4j=N;ke0H1&xgV|&P)TpTpMni3oT7gcKY z9|)QEf?_qt#+;*vk1~?7NsWy;9|1Z?e$t|u@}s)FtzcWjdxb_Dopqq&OvetoK9QHD zvku@P0dx7LUB~IHcrLwBR!1P4SbLf&e!a1_8ay82uSbS@j$_$`kk8etwpbE55^`+q)5?O}`0VQrn%r;In);<}}i&c=MDVVXN+ z(aiFPRCD6MXuQxk70INzpV@7yF>#<~e0lgCHg$ceMQyr%n2dSBgPLy;;Z+YqVn%ZM`)*(Y9^iQ>7cX8ByJ~?bhfR z9@m{d!lr$;3!{@|(2Zyf=30|gffc$#1s-eFKm>@%Dl@c|W)x2}q7Am)jea;?;Ash% zYesnkqaM?3Gusp~=TFzo>C1GZXtQp{@T^d5(H&mh=^?sNxG7|A2ICuy1#-NgKc==a zV6x|g%oq^SZ9WSa`&GKJ-CY>h!|iMst<%k-$8>YWm-BqQ&xq zpeYa9+ZdzuM*Sy2yFHM%Ps`h{M3~fW9@h{E)G5Vrvw9@rB>)`W;7X3JqshShL4;)**NsR?^?1G*3iweWXf{d5h z1T2Q6qd~J71gQso*Te2W!Dq{d>ZZxo1+np~%)-riEqZJW+X-XyV95P6D$&iSSsrH@ z8ZtUrV$j$Za4(Om_A7yc@;w&yl|N)rpLRcuhHcv}1b4R~ARRG_9<#Rs^{>(BFz0Ky z*$^;`R@z$==>68=j~RV23fF~nmv?Pv+7QBYuwB6yqY4Hx4+X8B)>1KUA6qBFQ zV&2OG#+NGHc&gBxQ5-a9%t!x?4f!G3r&6EyK{YnS&l)?&`yl9{cazhR8{TD&i{v`| zWjFr+Z=8`x^8fANe~J%T)Wq^YSz>P!E@5ffEMN5W0u@bPDO%^=TciBTLfymD- zT5{N;C9l!klNK#GMRT`Wv}8M`0?X2cQOIj^j@>e=* zw@UNhLiUx|$whWW7{g5 zT&4M2RhqlidCpYlIhf!|wj%!{$WKcS)BIQIn*A8Ltt!)spgVh)V3M3~LpQeIc){66 zEi?`_UKBLff))qOW^gaOKS~zObYbtGO@wXrpVL`!#&ywD@Tjk7{&=C$l9(@!HqHo| zGjk>unlp3eV@DKQasGG+Sy=y;Z&zbu`s-mVAWGy1jqL&HC}ZP&-sdb@;(d^_)!qkn zyF~}zdZeK(QO?vE3S%>#uD_0L27RTQ+Gci; zyD4a{#m=s76mHOr&qKx&;QBS`Ym554tFY{Jmh5`5ZWK0a{x4LcwW68kwwT(ct7CF5 zrdG4CndP1olSeq=$1FO>y9ym+CAPH+!{F|)?{+nPPF|+i4TMx&X@65o)uv?wNxesH zoj4HNA|YcNx_QNBvJzwdtJ?^n`7KLFR&2Ic(EN-~ZX;yr1?;tFw{+5CWkdt|XJ(;u zl4nt0VZ4)$i0dZXYOT21kZ-}8VjB(%_EiBlV<}bamHjJd?4z>|&~+p6!qKB4lf8Q5 z=%6`q;*^+o!=%{2eE(6_pDgN=pNx$k&H6&7yqPmTe4_Y(e>faz(v2;la9hBzcAbbG zs6PuI9pA^I#oI6+uy3`nIT(H;B(;O#1LG8Q*Gy#7Z*2S>bXMHh2XywgsP6{MceC(E zF}Wod+^rrq>9y7G#iE-(pbc9;@JA2OC^r4*EbJ6(D=`@{e`XlWc0C@do38u!Sxr{2X@n$ED3U#?k4uM|5-2{3)^Vn;fReoKX{! zJ`B0T^AjxVr-Eh0(}Lz&aFkd}$xq>S6Nqx$d>9LWrV}oU7K5%zNDn-P7mtS=s$6Jv zHUy`{#{8a%ZLmGGF8l_%-(JhvlVDpkcj0s2h5ebmvTkp6_Rr!4?>D^NkwVWWx&h8X zMlSiTpgFyUv$(8XcXQ@~wFHeqWA0{+p|h}$P!w;tc1mpE?^*lV5)d<14|?XsT#G#t z)}B?Y`=LEsW!;W9ZO86Xyx?HN+a0O&d{!P`5~JGr%9+A1qbQh5Z8KXMX`9)C=$weOKPtp?*I@jp=ET8vTs0;R z?oi=xijPJ>qZ`NKWcU&_c8#sa0>n9#RGVxZ)*gYl1>fmoFUq$2CJt^oKDuF&j*GT< zp|L%WzeEunvaNar%b?^bI6H4sTPLz}?vVL77Fm`?hrI$C`j;gRqZCK;9d5FeQ409A z=ofT7D6bj|<=A|Ir<- z854}jS2&yJm`g#w@N&g$&^WxX*f%eJi|v=c;p~^oFY}&*=^xuDzBwsnNK*1Z>FZV^!gPheurtl9zi6PHx z(%;$Uc?V^C-n;{1o1w$4nULrhG`1cR9qlytU7GtEWs_ylT!|Cbpt%+&4Q#nLG_#&{ zxyAPje(o-dmb?nW)NIib?AL>S1M}Wyooxv>?q}8RplfkmEEsNKtckf6XTrMF5;U8! z>ei*LL30z6Pm;C=-E2Xw#%_`DZ6A(+&D%$F+38=`@u^Z@O|C_Kx$N)_tp6eB{LOc{ zMN4oF_jil>uCVBw0*hu|WYIbQv}nnf7A;|?YA9R$KFvLD(K)9qTKrdwmW<{60CRb3=c{^$Dx1F@)!tE@(Z_wmAuqPSeIzpD9t7JI!`07_$wB#!^L?0V6S_9@a zJ}nxrA8S!x^%zsz1L8vSKcj1)?UB#WB}x{n?Fe0i!^75VaQ;bDHpK*u6QknjD{FCI z&tZSIgUo4l*d8uE)Jf-k^a}%e+>L&OXpdOa2C$+eu5_=%mFvI_d0oi_UA) zVJg2ZJowF`&epCr1xp4Z380(42fz&|J^f-@B9i5~J60 zGw^+%Zf`AktNtGyvXlRYnxOe|;!HYdPOfq0w-OxUXQtXam=v)^eG}Py*L1?wa2aD$ zE4s{A-nIlkh)t$D!3(yr{JP!JwAEGcZo_`0$ai9}O&&}0mGi0zS&{}q@2e)HL$+vf zTs2do@nwF0d$<0EBB-*Y&7vbPPg``@YtC~V>9K>3pc5BTN#IAwHxJg0qMgPO-8j*7 z{H&$krsMAVrKbBZq|0OaXHDNIOK;L+gQ~Dj414d;rCs(1x~c6ni7_e1qQiDtbQs&D ziBvI4++xvrTWRioixz|2zYBWHL=P>RIW^a!nLip~(acGs=$%ji+S(*!5&iLwak^s) zQ8x>^vp_}*mjPm`GCKyClX5yzOgG&)$)lTvI}OPn*PC7$oaBnO1zet!sGh3{h&OZA+&R+bORb55CwCKm6>klj@r17#~_*Fc~+3ICm z_W|R>guDYpU0N(U;)pRSAp!SV{imArNzmTzk81^|>W#y*ZQFLlEi;|BhOnhSe)wvf ztuZt}-qIgG><6EDKKaEd+ddb}%PHH&Ng3dkwryt(6&E8gSwIKoRRCR_h6^&TdvGU3 zc0+Bsd^_}!Beq_CKzNtPxNyN@m$JQl=3T~whMD&k8CSHKw^qTecmyS@|2V-kne65#zkY|f?794PDO@E5b`Weg>>>%cqgW!kqh9BG4CDluJ^nJ zE&B)YhxC3dsR-Ii49_>H@+KD{iYv9BL`W5)XQX1{TmtU|&$$vIX^*)GnJ7uC)6qOU zT8g@|iIk4wEV#y%ElcT8%*%qeyRtn}I&LPj;96IWcCdlUGms`LN;L+n*DHCS=bYy(_uM<@-h1vj=fP@t8+&=6qST3uQ1OaDMY$6>4Eyq<8dnA?`Z^J8 zg@S{0t_oE2cOvJixH3>N(22}daaEvVs1w0HA7~6`b)aIT6S+=fuMSjZTob6Maw7MrczvK^mJ`9JR~vgnprX!+ zpf|JPje&}0CxYcaR=g=tG0%zM3H@V~d$U`y#Bm~zsl3*$xWsWHzgP8jZpBK+iD1`K zdlWx)E7mwp1Us->`Bt~$CdY}q=6E~pJGZ$N>l`QYhRV0Q6}LN1ib4!2^x<3v8f zV-(82)2-O#IFT>3y!CFy1CA5ge$1iK^H`rhqUY;~Ln*2q|Sqg(Nu<3wDQ zf9Y1d>^PAul{dK+I~*sH9bo@p`QRdruK*L$rv%unuLzP zld)56*7TH&og|`Ms^n*xYxk45-ew3h?YZ~~QO54~xwDXg7rz1W?3DaQmPj6c%#6>g zLEH_t)5`yIslP5two<_va1KV!H-K-jqc^ZR#4g8Sd>{AC$z~i3A zGQSkOCcr(bdHmkf!1i8VJ+?FEAFA;OPs5&6Thk91vqv?a@H9U3^U$SbxcuRqKYAMZ z*j?J@(Umcn8e%oJc^Y=Dht(Ltm@%sHq^B{(KicCNGgUR7@-&jruxHC|{`0gKI@~Y2 ziTaB)-Lsy?3~1PNcC(M?ywDt+WgChM*7>s+I?vAyzW}(WHMhTb8aMhH*qQ?lTX4WR z&wCov{haXz=DgsA{?1RA%cYOKNasaQ!|whc{fwbE;b^hg&F*aWwuA1{ghX=B!PWh) zgP;FItQ5DcdONl6A)PP1Jez!t2O0CEYJBBsd^Ke^8B>r|}Cv54CpzLm6;R+|zj0*LayRe^ZTWPvcWx z!(Im>@}6qccpBKh)T_rX#(bd~2~Pt%o_ZSJY7E*C^{DkUPV+UwjLB7vvpkLSe2p%Q z>7g2Ro(A>}_ev>e%t5Nr;AuSWYYb$J8d-DZcp7i}8l$LjjONkkX<*lKuat3&Q5#K8 zlczDz*O*L=8Jfqrp2o?(hQ|26)fP{q#jgL7;xP77ToiB|d-1~t4^9Ufj-AXR`=h=# zDw4Grz3HL=_SJbEvfW>DQ2-B5U2;XD7qS+bh1ZEJww;jeM51e`;j)nYJ4;105Zk%h zk}nAqZ7LPPw(%0(!qAObEro>uB+{F)eaQN znvMN7ueQha%Yh=%zojLK?qNU?^XQ6drw2NB1th8(hf&kkHa*Z;6X*teUV*t^A|IID zkf^5E%9LK?-Q1z^8W^J*Hg64F%}D3Aj(PVS$VfWg? zVA#eh>|R?K4BB{wd2%n>gf4tS?1ya%Xu_l-{Ol!a`FB_`CQ2MPWKzz zjxey{-5EXk#jbj1^yHia^iJr>7j+lO{RfWzew+T!knL{n4+QXx@lJ_8U3>BEr6LD> z2z@W!UG>P~Tx+c9cL6+uJl;zrcQ@iad1P;q+&!uMA1D{e{TJkiZ2rge70C^tb-ny% z^%d!o1^MCBb$k8u?Fr6PqTB1Iqd6qyOno}MC$N<@0} zEET!M+tH$AlPgj(%M~dc*;AwdznoUL=doJwgq|V?^bsjKrKiYjcxLw$S<^?PM{`e+ zhY@mFPm#YPWN}ZCz=61Zphg$+IA0{4xnAuKI*_%y{Xkag6?jn1ZxMysCG6gJ$Ym&Z z-k3o;3%pz!HBIjd=5kyG^Sv7$@rq!U>R$7vbSwh;f*CC zn~`>)+w*57-U;t{Pl-ri)%5NmoMl{LJ>D!4xejSRE)jVex&5|8#OWncw5>#>FFY@n zh@99Nx@<}QBs(e`^rKuLK>q-0YTu6z8$V}HpQBT`siBA(5+ z!`+^Tu!cp4mx%1{EmCw`iO7I*k)j`!h{Vc8dbE~^EG-x5zNAF2*2~qWF8Wu#%3qAy z;b(O;e&u($cx8AATf{_v!Wero;OF>Un7@6Rfq0}rZvWq%fY z4>sQwiLT-1JI|Be6A*=mNT(p!;Q`@mn>1Qz+e@T7x1%aqm(4@L)2P!kxNmP&I$%F% z!)rGrDGA!%YV-iMTiXCu|F`g<`a2MXU$X1nz@rzl@Ke!__L9gJ$;A+$(=UjylW_mQ z5FzD8n=tyOcldJG054reKnXVe&z*tGBN@cyu?{yLjM-9t&wE~pY7WQqks|k0q*)%s z{WWSIrKET!dX)`9$JxP$obS8{|M_D>5O2;O;o+qL$u|Ts!dWp`Bn#tJ&W0d<1v3YW zL_bf>jLEPOIv|HLqziI1IH$-kpEf_kufa%X060S!J?f#M79nVDf*;` z$OnT(x`*@!+Pz497{xdjhw@C&4)!_1$GM;3lS7AR^k?khj2i+Q7O2cKw(xb3&&A<9 zW499ic8Ex{EG>(YF*zb#AMPP?BV!&X9mho9qJI$!^o9vOvDuFpD$>P133#&C7#P%G zz$rsT4zP{kDFjwc^ct^&e%_VP-xb8OBV6ec*uY)lIA!($c?lkn%doG0UOCuYeiUu@$dCI)$GxKM=nMT1qiFhVu5qUeio-a$6L&E5-761!X*dZx(3STD{55uv z%PXzgX3A<%=#^&=L!+KUnmU`_bLCH?VUO}Fc2tLo(Ql9aDDT*<>7t{&%CMkgYzpb+ z)xnc`d5v_GJp#B=Yct?W$MMe8mpD1z`TNqIKU>C^XkI;kds64mdPU?wnCf(1wY7K3 z@FB-})m{krOyhZbmD%6%t2VJ675pnYm0rDJ0o2(6KWbww8fkEogi%XHWM=tBbD*y?WmQ|L>8GSKi~uu2*jiH#*Ov#NKzo`wUcU z=`i~ln5);ieHoO}3Iv|)IA!?d22RG85IGRT+kp{|{VY;eX$531f%!p^EXRGnR3!W< z`e}UB3x5M2iV2%C5qq}{=a-3uaSey@c}<)`=b*e|lto4kj+RG6%2L^h^olqly_sVKty`X|Ahi3W8WN}6YwQRb8?n+Y z7vB_c1|8>{yj*b{2Ol4B$qyF6eyi0uu}!V9*0$#6rk3R3Iz&pA;EmXG?rPUDk*u7T zjAVuT1_SWB>&^=dae|Hsx;q0)XS$K4C%ygkW;glJDmSun{GFz!8=YW+ZgaSN)#_FA z+uBW+)kx@myQnJYm@e*x?$MN&1|8GWy~y1<)6GfRuum4PwP6>#TTSnoHfYbHa5Cta z-tHytRt6xSp6&|DUs<`_z0}=mO1(5+EJBh}_cHf0o8${yRH=J8lYCD33d*}FUrG5h z%2!eT)XF{GYuxR3v7TNXR#V~QMO9mErLN||eME(8sPN&UrBLYW{=}VNb9moo+1tII z3h&q>FLT#0gLgCH(OTv14b*>o(L+JU^m1?FA?{@SjZFX6B9w>tDqEfxA9Ozrgo{is zci_>c%*|PAvIBz)P1#!}J5bTZgu+8ic6f*h1%?%y(l1RYyv>w;YI5d>cbn*m;e$+0 zpkEggU1DMxu#Eeo{iaPkFt;Z7aMcSBe)DNHo>f%aF~$vevdKQhgw~nt(@bc!^>4KP zHk-@C1_@6x+2I!-F`=0@>~0hM@v2qfc9R{RYeM0dOmN#R#<6ud8+BRrNHE|o!7;cO z1gnApcke>@ms;J;$bGh|@Zv9tS|8DEQ()vHM`YWw}m-Vl<{*SHyYU}^V`meG653T=N>;J&| ze`5XbTmN;||DN^VX#HLFm4AEj-#v zNfSEJ{cd5>^b7yMWQTj1qn4Y{WRvaAO`6b@jg{e{XPIobeW}TDR|S)9eqf;Eo?Gh{ zOfXTmVS>qa7i@5Q1rBvgG<>1S4!4+`@cfeyoHWsiCVPp=`RXk<4`oK(##)o(7B4kX zcg{+aJ<#O3y#sw6C~r5>zzJPVZoP?~X!0*KxvNb61t$7{$$iR%u10ObTTPyu9~cDn zHy0jlLhdcW2_~-<7i`e|{lb+d&wV%;9&AGHwuON~&Pk^(yU+yP1xwwY6HF*vVY1yD zg5i}WxuQefe)A`}gOtyRTqNMwG zH|hR#QTQSE?{0Xh35CbFYZnCuqb9GrXyKnN3LNg3obc$tsA3bHVR9yg_nPRNCN#oi zyYqIM!deq@-*h*aXrO46P;{wwwY-7L6a9AYJ%?@IMnk#WD54!uyT{X+7yJJHbHmY zqOGRD-Qk7@o1lBkqR&n;p>VhGAXDVN=5941_l`y3wc&?NcC!i1GueT@c_y^_B$NG# z39c~3?yK%j)Abjo=m=B%uIakh6y0d@!@bNw+f8(r$##nZ6CBgkEe)?Vxwsso?t;KX z$K>uY1#WS;%5)7JQf!J(GhKgfik~zEr-TvW+OlX4mt^v)y0WGxX<$fn)y5vwm-IgUJc> z?_#3kO-}e06Akn$G=&>+!7Z3zLVAVZ8!OWL4_vz3lj<-cVYOH@VxMqZ@y~s!v~q%@G_Gh=vx>V z*3}e@Hu=9X1)&8P?w{?3HlugqE#bT72AlT3DCvc~4Q zpPH>E=w7|xA(QQHHTKup*Y+V_&HpTQR`T4-vsQ+WF(LQM`GEsF^gL^`0wWv~adQI8 z9LIzLL%O1t(Ys9!ZlrE@cyKV_emD=Ee8{~n6gbccpJ#$@&Q6o)fZdu!mt?)RNxa^EsJ?T;)8x0|SY?gW$L<|j?) zS(6jK?!1dl?lzOt{*;LZ1{Ru}HWR%7-EA~H#^fwRS6FC*kC>cmOf)c{&^VXk4*9{t z@KW3&pS&#?aR0tATogvjN8Q_l=;7?I^8yoUx3}I`7vd2z-~D+o(9bcs;cd7d<+K~; zS|eE(A(xZPkY31jue-tC!pEA>k4$#p;6f9;CVY(h>vQ+Tt`FI;K zxozPtfq`P*f~@l=+e)UP1Gem@kj!aXp*4&XZ zn1}DQ3O`6?uHMuApqP3wlm!=%_KE6GWu9?-!pFJH-w}qW#Xm^h`LNi`B^? zYpwJ+9r;fWIaS`7THYl(qbsu&&S5LeB^{ZpUYJUPb7Y2kyReB}Y2S3d3imOvliV>K z9ZrXs9GR?M7?Ff?G5){lAYX6B8-AbYB{*>6>&OiC`jhlB%htKGIzzUTXB>^vDYBiYXq3*8?LG-uF|f zbRz7LI_q}-8C~F~ny%hKekzzE-N$M1i~Uqn)SF6`@r-^CwRL{2BUARt6_1uw(fPQY zsOYTETm0(HP_NDw#5;=mAN18GtM?xaf|~kuKA|ILsCODC`$0|p&oIo9D)kQKJU^(Z z|2Bp>Ql(y<4hS{%f8eW4R_}M5EeJLBFXsd|N2=7jfk9AH{~Bu!1b2lh^{(@Srm6P< zKd4H*kNQE=)%%qnG*i7roL=WhRX2JcO$Dj9o%7HfIa9sc{h%uKzRn<2U;Q7Y)YSVx zv3GqyP5tjN%#q3JeS~w~pr-zLG~4J%m3klZgQlrBYPW5%O{U&aeo#!k{dJ0?RH=8U zA2dz9OZ=cJ^K&*H;pBAnR{KF!>RrhhbdH>^-Wy?+ z%gbK9VZL`eGEKd``}kVwZS#YssduT)7n3UWUgZZ(Q}2C#P?dWB;0I09iD>;fy$nrA zZv`iN;jF2D4kvOsQl(x_Z9@;IUY(@n$dA=~oK69k8S1^<5Bjlpv?-@uh~xj7r>pl< zPCav_eaB)Ie&c6F8;~idS?R=aN2aJ(`waVft%CL%j+~}moxX1MQaO80^Izz9V^h_; zmJ?D-o1WMOuZNT9s5l6-s1;NQ}0uL&`kA;-_^&|d$}KUntK1l-q}`G zh0pyi`!v|6hl`L_PlZ%Jewy~<7yJGAY3hB-?~P;X)sEVcGrJt%70{b>I&#KTHdm^*IO8=2r5Y{crTQi|+CRBe!jUQJ z{fYsuET-PE zyfNFlso*bLkl0@tpK8UJw&Kq@anzBRdUZm(BUS2EIugrl>zKB6+`lVkJWgxF-k54w z@8^+ns$zJF1*Cnt`g8q$WU_koo&vR0CZ78#Ph*fx6_5houg&Pllq>ivOJ&6lri1&8 zS*0p&XNh%meRxbMm5dJmOsdTB55Kl!4shEUrO)P0W-j;g_o%m3C$ld9U_*WDH&{kH zf61sW{;xLUmY>h4Nu>C`X?~(=_0I5vGHyMkj5^R)$r#oA9xBH$^;lAT-*`XY8ug}X zlX0FNrS@Zfs)TxV1(PGQzv9E2UKFmhKd?CcWaaZm-p&89Pgd{G801R(P3NmH&%blc zOwZ~9>ObRWHEj;HQ>ilEj#p4SrIOK?>8(@`B+$vAXJ$zmC#Wf-G8tFYZB)6_Kg!8^ z-|g=Aav2$Gs!!Pi;YX_eFa2I=`T#z*cQ}mnCKN4g5=#@`H_b19wt8pyLGkpA1~6)% zuaYq!{XJBUVd}A@_`dOezSZhY)h6TDb2GJP@wOnoZ@GV?$hgQg(E)xU_4W4?Wt6m$ zB@Oje^c$t`?#ocgxC|blioO*)nHRgTfS_McwR*Gspp5E87**h_WL!-5GU_>BC9dAo zEwonq{vQ4o}R+^>0~FD))ruKHJYdq2Ak4FETfsuR`i+C82jv zeG7FYq29|=&wV$YuR`jnCXxA6lQ@XSlB#~fKaX^ea*UycAM_nLEyyv3V$#XHFX(VY zDpf2qRmQ#lD3*~*m2rm0QKizaPIW^@s*IoO9M-hWukmE{e!!6sSK3#eufmu9@W_-% zS}%{zC*57j^LUMaJ}0YpIG^`jY5#Vy3SobEB;$r^s6WepPnh-{y{S|goqR!tN=7HI zZyOzYM}A36xy+I>em;9MO3L_k|A0sLL;onxJdfTLsUY>H9zHXA&`vVaR2%$^GE(Vc z+-ImFzAsf&#s#8@QYslo{vW8MYPa89{*B6SS@A9Y0jO`Af7I3LO;tGKm=5JD*u4s@qRuv>P_X7al^sNY`E2as*KJik*4BG`>w^R|5HY~ z(*DR|6~6W}t5&b@7i;xY(97QDn7ZOUhlR>;s?^y7kiG&u&sPEQeIKUY%U@os!a6Jt zw@!UeF~pVjmlvy`C1yI!=wJQ|{+TCp^fKX(VxFnqdOs+mZ>Z%k=q>(m=C-+};8>7DSTUvd_f4R@7?`kHx#m_h6mGFiP zm5e!VcTwejQheV-e!dw+FX7|qZ~W2asV=MDopdsLGmSbfrE(3udJT1w>IJG`y8*aP zKKXwSm5-SEQ&N22*M7d$>isv3Ud;1x1}VNz*SkBJz1J`*>r(Jej`Dk`Okyrm{G!!2 zlOc}GR`0*5%_cru={RyH-{Q*H?HoaNqEgPNp}xvY^-l4FGDhepGU_~1eBUxZQH^?+ z`$3ugFQa0T^l)ee?Z%}P_y%X%hsP4W>##qQ~ zMkRffxO(ULL5b(N79NZ2y`Mw%JM=0$86jE13|>oRlwQNtjC#;l$*AEE_!;L&|8q{Y zde8NP>eTxxgT(g@^y?hg4?O$7X&g)CGyO!f6Z9$_nZ1fZ*QT`65A0+{X^~Fm+0m#E zsVctj6F=W-^(q~it=|0~g>EFJyF)oLL%q5clp|-RZ{yU-Bu&leRsWmSboHh(nx+{& zs{1r$-a`*zl&W^}+rE%0*Za9-JQ!ze2$gwf$yCX>KV_?AsWRUDG}VE=%9Q@}4owBkruXVp&~@~_o(lSsUVkf! z%m&hpA~eHJ?vLY`OG+iCWo_`w$~caP7^Upw#->|Kl<4jcGDE$(F@z)2bZ>}feXVJ_ zMTEa6Mdo#?c^}}Xny%iye$eDY>HT3UNK5`rDk%MO(7e0)DpS;}HR^17^Ltd+jV(Hv zr?)#pC1X$t&l}$C&Aw$K*cW(Ob0RVC`0Bc*X~}pp;hl)F&CLyo@`)2qnN;4MXlbo) zYAhc)czAjL>V|mZS%XFnKWy;O!NW%lDDOWz-kPW>Z))^(M+_d`+TJ*TE4zoxXic=V z4oNn()(sigRNXcw(U@!D>+6_pq?Z1C`w>S03~>StS7 zP8mCOSZvy)lTV&rDYXqv@gzcqYlw}VF?rnB>BoEFDSzy^u|GU%`qZ&MJV_>v|50q> z@ncUCn`JCfUDp(AwMSatSf7;ImiU}RthIhYLh2inGPl05rfIGxPm=0*V|Ah-R^8Or zn3Q-;yg8Yuk=A&!ttD=K)h&s+iJDkjv;0s_lGgZ~=7##lvto!vZX<@rlG55dFP8Er zs$=o?L`(dvgpHWn)KW9-@K{o2CzA1@_J3?ne4ezn&57Cad@Y+-Ln3}oEYX^*pMw$- zGEb_czOlJ2Df6Wv-kOZfmzi?BOs*U+r%G*8OX94Srnbf!85eIqYnc5%T*kG>TZY;H z!=<@tZlcBe9~&lflXIG7YOTzym8x1fzD{P=$>hX*nLK|!+eMmNnwq7yHW^FCXE!8d zPGU|K{*A-Gbh7N$mkIinYmDakZ zmL!_WHUgW<`c);?+|-&9T9fe>w0!zCyRY2&sgBL5&WvbDv?kEViNrpaMopqM+0rz> zV?=elIoZ~-Pu{5G?0EG#`>NrR$qZ?TC+nLUJBFW?NTT@qnzs19`bib%##kN% zrz+OkoTyH=w9S#ZiTbnZl8G9I#2aFB+Hj#Zo{b-0EM9YVTWd0APnVa58u9AtwmE5; zF%aqM8ygcXNLC}Y^$p2HORT0kW>4p^!&!G$ic)P$LYpMs(9l$^$r=)kXC>>z{;nEl z$L7>m1Fg-8_&JG|R{4?COKTFBxzr@8^-V#eR z)}W+DnKo~pOslPx)>dh4jSa&=#m|v(vukBqA|Y+fHRusL{E((4=F7DC^JQ914e}f@ zT;dJQb#d>1Y?w?veyZ3@Du(NVzrN(0<{0YQ;&mZj_ke3hX4+t01Ga0jKk?zx9&eDA z#JO#W)}%DrHWh15QN&-4)tiHkFwxnW)9tlkTLJDg@+>ml>9*QS7=HOy%Z>aRtY3u>;78jMQa=R`q^zHW)7}2k9mI6HWutx! zPIoi;CAfxMLOw)3Mm|NRJDuw@mhtKN)iJ!8)cp0!bGrM#o!`s+M*UY(zv?dHr`wg} z!)c#%pQfDdb}=9QEUq7)!iu@tDhfH_x@$*HxzJ62CZyK}w zq4a&7hU*6o9k|yI1L;n`3Y^dUbOc<7r_-H|uV2CA*RM7A@25S|+i!ozr|ET&UdNWx zoz6n;#=%n^G2K9UGx-6jla8|aVO?_jw)4f%&0`8<&v zPfj7zoo-L6V~;nb4K$`Z9k$rcF@p3#kWSrbk$)b4!}UEjj~Fpx^fOOS94)eB^fOOC zea!96=ZzLAAN$PHPak{3^*u)4aD9(sZ@7Nu=ntnnaO~q>jDqnp=pHMwWQ^?H`-FVA z_XHVJdVhuB@7QU-E*TySob``t%Kd$4u2>+_4lKua(%li zw?hQw@%DIq1KxVe`_FG`YblR6H#gK*+qb&%`quKxav5;f(u^)0Q*l&&pW#V}IbY4o6L?Sl;2iygJ!X&NreX%Y`qYN0uMdT7FPXPDeRMDyNOD#7hxg9B{MH2Xcft z;;nMsyLaziyog}wFjmiEZ7v>U@sNWD6vPi67#$rwdB#QKGtd9}o{e`t_T#1z zbKW;Eocj5u;)7op{OE7T6%M}?o64gius4S{H`w)@=!l%|h+VV3$Pu~R5rLW5p|Eoo z5SbhhNe0Bek*x`ctPhAh5D?jlcvr;Qjli^bK8a($QXJPYMPi=@%Dag_Imhnh3Il+A zda--;ipW!ZO18U;ipZ6GO2gi^kcaVU*KSjcW1zk@_#+}uaB;KUrdC9rWB%Co6j9AZ zB7tI&%3`s1)(u@n-tH|iCmT^_6dIj=Qm+1T3k=} z7m3`#ClzaaNJLKI@jq%-I}04r^I?-2UWDk4~)oZMx@z@tTrO| z8jnt_+E63W+>{ zecQt#M~6ku42vuYi@&1S?pG`#m+~Cz?+IaW>AxrZR{j$m96tVdiP(Vv{4QNFVkBbo zLpf+q3=*Juus|N?0KZi$cYlZ+zq2d>H9|Nkm{q@;ebbSGU3uIouIz z#SXv8CP!qcBXX@HvfiPUOA&#YOP+dbS5HK+Q2~Rj)l2Sa!XRtnQbb^+l0nu?rg*j^ z8DuS9vMLOMwMztHsJ_@6x`)+G1Ytj2eolwgOa#GfCWEZWOcBBMy37k(?;;3$?^4TJ z8edU zYJ9oIG)uJ6PZM9v8OPrrC?4_>u=y1ua1HNY8ehc6}16}pNtM*;iscE-tZIBy(REdQY&ouNvXXx{Iqm)2`t*zT_n)m z*)9+Lo$i%@eor?=K>w$^AD|!9Z4S^M>V5|37j@$T^pE}y1?Vf;C!@dAJqOTl>gEFI zKXn%Y^rO060Qyti7XbaLZUBJ(Rag3>pVcM(=x=rHKKfluhrSL34})@AqTk9B=L z`ej{6kN#O#%%h*yrSa&mbqzfFZC&h+{#$KDp^vuxG&*Uu&VPJ|nwy&2+8sAG}1v)a2WZml|Ch8J#qnZd1AUxY9PR$mHm8??7V+y`}J z4EIBw3yJ%pnk~Vbr;gs>KB;eRxL@j98Sa}pp$GR*eOtkO$li-^Bhn!<+>ms52@e4F zAplPRIwpg=w!L%XwygsrxDD7_0qz6(ofppo_L%?=1p2L09XoXN9s4+aBfZOr{J9Dn z$M5TO;XllW7e=r(`Myq;^>3ZkJfIx+N*SSPpSRNRgB?$vvmjLj>!DDcBv?`cy6U$gO&Gmm;`3hPvF(z4Ly zSyz}VgIC#cap)&SWY6hdzLh#^uKE-9)ki&U$75N{(}y+YeeyqUnV;{|A~I%{r)Mp; z!)d-JF3Y;yuZ36dZxJ8&^mX*W*PonO4?Ne7xxmxMDX~uT|KYOWm9E!r(;boSOFccF znpD0_hU3CBu~4rp{kTq8W^0S~y4?}kLp_|zeacO1-yyJ*A=0()V39*b20bvy&UPL2 z%R%<}qHO&j``lW#c97umJ*H}qr@slt)wa+SL z^AEN6(z2#Qy?ll-zTcttd8Vv4NYDKiZJ<`6Gk_zg z_<$bXbvLdG%h~&6DSM^WxVRdG&389XOG$N0TGT%L={l>kB;npX7V#Z_oAe zdkQ9IM7lnnF#NM37jE0IA*k+3HS8HP(h*lz)w zg5G&KjT}LS@o*qJe=%H!m6GllJ!P+kFSu|kynv3$Vns?GTBr=~2kyu8EEd7h{LA^CUmCGxlAedHPvUzJhcW#mG#k*pi}X4)SvHLh@{KHd#rIA+coy z%Iif2$!{ZG_?sjQPC{=p`2e|={0X^;Op>rQjC51UQRGmv8<|Ibp5y6%NdARt)hWrk;&_uHSLB2+AAs-}fA+ICP zBiqPvq&4U$lJ$}|QkC^5@mKnmlu;S05O1Lq125u>1!305YEpk}x!f z_&3N`$Y;qX$cM>alj}(su0#6e5nB3Cl4iIcM$O~&jrHB6Zpj-kFZk+ z`7b1lEJMco6$m5D;N>KYG()Z@VZ<5o2_%d>L#`lUB^okb-9cES2LDFBNIpqEM*fC` z(QN2nLtai^K+Y!{Nf_OR{zMX!+94l74kP=Ky~r*k%sfK>Q}4Yl3#K6Tu2?L{u?@PioDP)I)fm6t@liSIs$j8YCN$fHQ{hyF9vI@DCg!NU( zlgUaF@8JlCnO3kTSxkmW3_>9O%Y!|_Xe{LCNm!GGyorRFS;$wA%gF^KtjZ!D+n<3a zljBGj&P8}1vIm(@!rU$5KkVlbc5oqYBViyH@*U(_@){EMa1nnlSx?4DSlUJW(Io8I zLheDrurA~;5Aygi`6l@)`6u#^zmu?T3>oHj!C#RaSIN4W@@n!@@;tJQtRrET9r+wj!fZR_1IZFH zpA3=TRd{+ZlMVe>$-j_)Bp)U3BVk_~`m4!H$@9s%>KfUWES~NZ`O}|nS74?1NmF>SLDyh zo5^d*OUb3=T(XIrO`b-cOrA&{O^zgckcDKB{I-`@?@!71$k)m3FGfrRmQ#NR{SMczWfN<88hkx8rpE`La60rH=M)EfDM)FGXB61$%n~blk3TKSPK2APN-b3C+t|fm$UPdk>=ac7>r;tA)$B{>q!^i<- zFR~jMC4=O99AAHfe1UwL+(JG`ZY1v@uP0ZL7mi}QHfThC!^uO)-sAyflnjzz z7kKGDCEq4rC!Z&uA~%z;LV)t_CVxiWK&~b)CeJ66WCIx|XOcf6PauyXN09x=a_m4dV_q0{2h5eiFp?&4|6=hc_gO1LB{+=a1uG3JcP_AL*$42 zeuVj!NVko|d<)3;lN-sa$;-%QvW}cY9#0-Z9!Pd0^T^%&-t+;vgM69%EqNb#1G$=< zOE!_y$%*7}@({8&c>tM98uC4UhkAp2g8UtM8+jv%3B+ipc_ik4K%PM!Ne(9uAoI!3 z`JL)R^3No!(;=UY67y+L?-k@?l9TDP&Zaz@Je53| z97kf_4f5$j_8{}fEb<%2)7wqHLt=aN{*0DZ1Z z$imtN$WzGi=r@qq zixo2Va0h=xVu2uJ?2QFt4?+-A-a$;R0;||xPbMqLF=YBYgYFD3AosA}-9^4j?jT<# zpCcb2H<9Z}osVz{Fmyk=yd1NzLN6sQE$uZ<8awyrI zEFdxO6!pfUIa`0;7t`}Vha zCFByaj+{kSk&{U*j7GXKBbRnZ(w$$afZ5Nn#;C!bg!qNi0!CIOZ9H>Gyv;mlTLhCxck;0+|f%q)Y~PP$q+a zrA!8Kyhu+5u~rx|8ALlkCWBaO1DOn>eIS!TtU-lL2GMSi$>1ZD$>0N&$>6<|$>1i+ zWN-szGKlkm{K+8J3_&J?I8Ttt;7ycCTfbt~uUNeLK}P)`qh63nTR+ICAL3Cj$fT_w zWYiDws260?)(>~~%wA0zK4 zxxPK?TFNWP^GL3z&q`3{diktLl(qjGNLl;6E|jq;0j}fs$=6AJe|duPL*z#Cdh!bL z0SUd<>`zd`d!S5O2T-)#WQ@Cysj_VP`bp~ob zbvb2h6oPPlKhb^)`>P@x>m5L>@dLG=!n!obSON)ReITg)Bd%k}n!omY+TUq9eV>U3 zMDp@P#^8b%krv4LB71N4i?AT-zeWj z`4j5jL-|?C4?^xHG7CRoSoCy6@*VM)V3r0%^1F#_y331y9eZv#;xF;U{Son1jK>mp z#Oo5#KQq2R=$jeM$sP*H<)+*;;LICW$5HHFuJ!x7}-I zVY=U|Ux*)IH#qH>K=*--#bT|=nnX)Wv&3qfTk0E=wP||T2$tKvYQCPQzP2_gvD${F zrj~t@=#E4C1bRE{>=U%l&awN{ExE5^YMQ!%kQ)tyJ$w(2~Jt&<+frpXLW zwM2TH9&&oPchu>j9S=M`t~%)j4c_;nkcqLut;v>ABr%LUj2uZ0Cr6M!AP<-0D`R#u zrlBG^IXO8M!-fnWTAp&lM*LvdVMh!bHsbK|^23G>D=#niqK6F~dicnZ<>g0=7)kY6 zIkmOPxh?VL!A<_JOyp1h{ODg8GQhGx{9Zte8ED6W?RW65zdzT^h35s>AO-vFP=<&< zU6&q-6Qhg8rXOFGu`|BN?Obn;{ILJZlAa>gKv2-`ndQ4!tR^wL4Of5=V95ZSu57nX^NY`(-I8dRjQj@k_!`-%9GkiOXy^I0 z#2e2_v}WXY6Z>^_YWBW^>omVP@oIa>>Bsxu&99-p(b~k=Uw*@Ryjs7_-uybaPV0xQ znBmg%dzS5g8_x&6qr+`26FJ56cA8&v+wA20=0t0He&@3Nb(6mfGIwX}G(YV1440nY z)y(f?9`9}6Ge4f*jQrl@UP^dhg!_zp+{`QYuIow|sl60yekoJ4CU=VJ!*8_M&MV18@LeZ!LbWEo?AO|#Fo7hwANUCw>Q zxUZ00%RQz#xK8u4^=pn-r{{N9T7D0H&;0Dg+{y7i!~F0b0QWcM*T0Xqk69{wiFLlfh<2-QlO8k7Ri^#tAYLGdaWOE-8Tna-gMDR|AeYn)n1@2w= z!@gYj`K5KS-^Lx>=24XPJJil@RWg3X6BAc_wc>RvOkA<+$79btVA>ey4JO&-7ErOFk%$FKO;*vqm$%Rgl6 zXZZ!@j(m~N^3U8d@rZBoPu=!e{%Kp2{g!WD+%#-ke(wuyeRt;<1TWj2KXc3OvH69; zt1986JTu zGQTT3$ZLh_7+FrZ0z4|ZT zytr}Vicj-<<5d>N=i27VFLWxGJszxFwk5cCYumdYOxS<5GFmLOeDmTGzr8d+7y0eo z+V!gY$kpQEYj- zj~kDtxqw}(I^DUx!L2JE=aZ0w4G!*sDNktYswM1pErO*61N3z`$5bk@M2 z$XSj^?j(q{Xdl}|d2hNRd^?sudj*SAC&8ukYh1of*noujHp@B4QbZ#5B{%6fYPa>= z^!g`J|KB@W|0L@FPl&euRxAsM1Tkt3rx^qfWPonJ*&cCH4I*zmPHZ9#?k|w zi#nb<>{Qv|)Ex@ZW^2!6+?9?e=|XH-(%DIRl?A(6cML`p{1HcSiQ_oJb?6Fu8-{I_ezyuFC zHFsgpL-BUp@8>#BmmfIrU=_L)<6A-CWXI_;0)Z#vT9K}wAaI2DBkzK1Jut$a^=^2b zGr?}%aJ>f)z$JJ9BDx=p-LKrrw7J2@y*XYFi=t8 z$N|S-lgXnnV(66M+u;G{qe@Ppb5LHfaq|kDf~=l-Z(t|Az+lJCJ2G-qQ%6`?jXmSZiBzb5l!la2*s{=foQtYAIlr2Cq61_XTl+ z0Tao}ajV0FgN_Nh33z&F_PtWS!qUP<%EZuVE8vC>gEhK zIpHBDdUG&ff^KwW&@oZBDKNk>IpJeW^ePivWF#wmD{|Uxq9aVsOH{rp=!9QIju!{Q zTal;x=6T`49kcCYq8E7CZts|Fv58(_f|nxcnm~91a&|vD?=#KZCV3H=2lBcFTY)6}bXJ}1*;pWg6j60b8;g?h`=8=E6D)T{TnPVBuM?^RHAFUKcu5kaREHysv$Q1RW`}b01*vzv}Uf3(o(}0agy&0m{ zg>z)KdiCBJkoFq&C8)ozpHs$_pf~PGzRC>suJwa5 z%GXq<`zjg3j;b=jSDB(-{~;msO3$Kd&tSv<&u@6*h4TZYcVNT+malrgC+dcc+poO;mcL@Nc5K`Z!@B2)$YK#$1!X*PiTC)-0YyAjBM3iW?v{=xZv^4d zn_75)Mi8E$8H5QT0STj-Y*V3~^i>?^#-1OX9DO%NR~Tr>vX?g?mLWD#(0C~_fWbX_wj`u#!3r5^2+sx;x)ex`v>EvRYg7g zT&z>Q4*B8K?V_GUHl+DMy0Fh%33s{>XgD@HZ zy^p;ssSNY>v7hJP@cmxon6-|#?B>${;Wb#d~x5#>xe1^mz74*{ACEyVn;R{GS&OpXDGEn!M8%de-Br@jrCOEGQ z!wyJy9C;);gv4+L;xW1hVz>i*kLTkJayyCP5ybzR`~{hQo-b!O25F#QPht!Q@(JXz zLvhpaqq#fiH@#mrGyxH{Y5Yv{RhoM&RV)A@a=b!2N7+9=_o*iix$-*~v z5XQwoyfA~fm4SGa0nx317%>L%nXj|>OFX+s)5##dhUAG%Cxdu;gG>e&Q6_^J%|tvI zMExO?K|ESRCWAOG$Yc;hhLFi1-Wdu-rjtRuUPC5>c*TcI2GLJKCWAVkZ!V7)FE==D z{asI>jJrI-VN?x7zY6YeULMv-<>iW0@_Q-l$UxTbv4=qJBL4R_^cS$;tHT3-gWN^r zIX-jX{2^XPGqy2)J>xOxhR z0R{2;2!Ssgh_7V+Y%ky8JD+z;^BmW0`R>HD_>0oyAEe1=r^)!%*fD=hX4+>uScges z_6bGqhvNot!~=EhrUyiB|~T&RT24(6Uyk*U`! ztI^?gYoBU!3e!GS>=@?zk%2GxnfoEB{1N0$c+we89VRaQ+j&c)I-j>RY{aNhBkeS& zSvj6X@Y(Ukb5c{6{-^VnCUfG5&RbIXzdLW~2b>?I^Oj}};49F7IB!Ywi8DX!BLKJN z5YLVW-%xz_U(H*>e%EkGUc~Fa=e(Bv&0C7HpHWwuHqT>!_1oXPrT=bz`6p=bCaK*FzF#q*Ay?+08-cn_mmtI{JUwilG z{CP`w!0lw-(*I%ZTi~NA&c5gD*-17x&gKFH2oOooa4`^|)(8@o?3xou;HmJ3tqK0b%A_l~Y;~rO z@7wqLzWM!ty+7n*%Gx0Bax9=YX|j>9E1=9aWOF){ zL{D2lae9sgl(Lq9QbxZ_Lz%GbmY1F;UzrVRZWge+p22$j>yDER4w1xDUk_cHKZ14!4Sqmt<~jsX9iWxv)R*h zrbt_r?$%B#cfbfiKpDCxpp>>i7-~mAxskPg2V!VrLTVa>s63mMSuFu&XiGqueV{{e zmb7&!Wj&o~kT!D8ZRt?T`p2DwJj>05^E(JSc32L#Gvy61kk|E5cxoHLN~0X~;9 zbYDOz^X$Mt>_l%q+Apj(LBmcZ>qtN;>$%0qING5kvbyQr{ZMzJ2ZL|`gx=hbFr>=t zU8Zo?u@0q-)-%XbPfLeV>S^mxX16HWo(GoQf=b&0%8g;*0cCibJNHAk_5nu!vVMfD z?Qb-EmmxFdENKfUbJ_#SjYqULC2O~;7jK`a*?$l2>F5jE=d`JM@gsqWN@D!)gDt9F zyp`qWD~a|$6$baYa^F>M$62aNd&jLWzTeYy=9bIQzpCHfgthb~{Bt#aC#lMmvqhTm z4wzf}Thmch_ib18HCt7E?jyHM%xPhQVWwP|S{c6qvT%(7mr`oKlS{)@#%~O`6sLVd zr_^9eZu{!PsCrBe#-0ASFRsVoOngdKTfn8<7{5{VtCBnSQy`4rsA_Gi|E}tuO={!b z(x15IxaKl>xINXIF~69cpQ?{FME&$t4iRvQK&l9&8-Y&ZfSu|W^A$K>FVxN#Le8xK z!fXTmYEbpZ`_0~J{2HBgPSxILNIiPNa8FaqEv3c!l+;4KccH$_QK+wVvK}+rhrUAJ zl-W0^mGSEWN-4w$6YVTyK`Gs?+XdG?Fr!ny>4Ff#3Fr4YLPz6 zS)>nC^|g+img>!HC={pt4u<)*!piu@fZ~j2QC2U$QccJ6% zQiHp5cdtGb-gV5G;}PC}lZ^iBU8I*gRAb~e7qUS@|0!kmjlj9i>_f09x;6f`fWrIH zox2OXdH^!0?9(Rt53B!epFwN8P&-zrT`JPA#adjbN2{9Wxaz-W!lj@w>CmjkuWhSG zu^Zoj;%q_|W_o;Y%yfJfO4s|1#6%-t$cuiY?P}b0Y5CQ`HnsAA>c8FZHVV==dqL=x z(GyUdF~+y1wD4j;Ni4jmHtxC@Y-?&+`>{*EZg^A6Emeh`2dvZlP%HZe6zBQ}jq1yy z*@VwjD+dG==j|djMs3_}R~uXHDwn22{{%6y6XP?B{qr;JzGu<$v7X~Tr+V97bPHxR zWL)>K$uu`wY#+N5rNn`bWV-|ZuaaIdPX7#dBj0OEH^}UC@2a7ECnh)J@a-yBG-0>V za)1>^?!CC=+sASd#fy~otO#@zPhv@9k=@|Xu*07?K(JI# zJW_FYWh5e7n#>Ygk;rg8WdM_xxi4ME0C4|c00{99Xu`rt1q|Re69B62aJaFAlT-$P z*A z32{8Z0f_`@3HlB$;dgiq+TH{4gxx4$SFXZi=-A=${?CgcpF48X@TU`LAqtYH8!17ZN&!ZVC#KM9d;VE_;^mm|UenfeLnukKv2!Lh|XkW|&zvF&%0vP(&m=Xsm zAr7`wJPHI3woI@fToN;YJTWBYH4}nG|_Rl3=O_?i-UD$r#X=K+c_J{V#!>rx0ab$f9_5 z(f(Kj0)w2E5IF+if*=Rl@&-A31UX5}ve`ii@&n9?6Fbp42SE+YFB#Pz1U1keloQeY zEIJK~?3KJcEDyp(^+J9-3=_&*T2@nbQ~5fU6uWlxPva@OfjY+G-xZTQgZLwic(#Q8 zh7z)ku(FR!sL5d+xX~!n3pY~o6iMn0Q*rVX7@#7lF#jTtmY6lF z-dK_4(X2!Iur&~}9MT;#|pLmMmq(-Ojv+>Hu}>e^xni4KcK5#k6%35f|4 z(v2gAq%cs#A-yEZ5HXGy^1}%svD_YpSgz8G6eb%|%Y-Bul%L6Ruh0tujv2nHXtUoQVoYiVk;{7QRZNJ)&Z5S$*v?jgwc{iX^*4)8vG8 zEZ*=uizSa^vBm3{IC0##$t>!fWPr9ApkBK~`^!CySUo_mkQF2LGsLoFX9t6P1IKb2 zX^gy}S{~rYrqPZAwqd;-MKs1SgGSp1_oXp+(r6$4+jAhOe7zy^EXyV1?2EE8dFB2-=;CP%X_S((Y7m6 zXv{IW>LD7vQPhK^Gc@`Fjq%Xv(KM!lN^*LKt!J22wK#*7NQnqS`~glPb42hy{w0*j z()-tn2%eiY;DmUw#pUo6iByQ7*m28b=?+{>cj@>=Aw+CN5Jn{7Br;b7u}3tLW{4p6 zPe#%l5fqz4iQvAwOD8}jGOe8>5M*{y3fI|ieN2kPMXc%mvmkeIyppvdk%iqUTo)kX z)(BQ|43K#uC>kk~r4LxfLhROIC6t#F!Sg)HMwZSLVSMU1m3lNbdHve6Kh%B-F?*c?*!8jmX7a$MttOrdHi^R3~T_E=N5-AZu zNIw~fEjkXO6bu#`ATvc!?Ekya!VsliG)qkr!B8m+h2pmYj3yg(S^8Xnh~0h{`VCeP z%Ods=ui#O$B8$+y_zfWT@)9W#!5Xmo_F%Kv~qL1^z;UR$+{K*XbbQB}2< z)YN*7Sbfccg? zDWr44$iQu)&s)Wcjvm!jPF=(NoU6LZKy6*6*EP%!Pp)fNQQok4$rA5EVwj|2mY$5D zAxy-y9t_$WDi+tV)CsmA?9VRPi&w5F?xEN7OYC@8UYLxT4`^GOwckW-`C3vSLN~q9x0CXkpEQ zh30MqV*PLrabIj2BAwV&;G`2y$PsiFq6)bHUl_;pDevNbA@?Jl%qRKv+@HpMv8qJ6 zCwTrl+=qQ&xUab1h0DA1qU)N^KYeIa?`Mx(O~|cz__>Xr;2d_s=+Q$Vj+fqaTAHBF zaIvfYf2GP z`+y3_GrQhSgxo%4HX-YSQ(fpv2wQa6`g5~B>;wcio6%+x&WMqO(-1Dbfg@xj;pl`X z;rJLyI6vmNprT+S4vYjF4GaauR^c!t;s*ju7%Fktjv*80>R<=P65t21 ztpi_({Tuj0Y}CLfVn+sk5nC^8XvFy|_<$YGfeFOdNI3jHI8urmj?PZ(O8D2+k}tl) zFuc$ErnBP=1jYEoIH8nkabnyf^-EwE6F*kl-!o>P_!(pBWfV6?-yY?sci7QtW0;uw z?%xdfd{L9o;|S9;!60RExZg&?h3SPrMQb~UGdCFmA1?>?fNkEB98M_8ns8zGaAESu zM+SYo+d^<0AKINF5ptZvq5GH<^sR)RV)D(` zo`;nSLazKoHhky-^n^YO_hGji@wMDv%KgRM$9o#_g!F{{PT;}&7KlSr6+Y~CLeB(p z_6daaJR=$UCm(V>7uc^x`pZ0yt2gMUKrt2NVb2x$Gr5m-66u&!(2w~$_pzoT{sQ+g zRT1avSXV->7jm(4@^>0=>W=s#?$76b8TWCFj{K{*kDCOb{wwa|uoU%2 zzF#2p?{N2kd|~Gs$7G0Oe*+(SjPS7qf)Aku_>}v?&UXi&SCDZ)K9hPNBnkot@F7D9 zA9qpkHSR;40C8-B;6wfZKC`@oapUpGcLx%9IyNkT!?innp}+SgkH5x!e4CLk?07%P z<1o*Rbo@?&kKaM?S8)Gl+^^=o(C@>(0&ruw|L^Kk3B4|S$AE|LD@}XfOz{`*Iq-a8 zXB-!5taeoc> z#rVT4BH(fS3;&1OZwI}A?@k{Kr{2)_5^~Bonuk7>I9kKITTI`J%P~Xm4Ef@q5_*J8 zUyJ91PmnLR<4MN)M|&7w|aYpa$qwXZOud2=F@JGZ5~T-KcKGSQ;$^6DDqM`nfE zg`AMV?C;Y%gH`OV>}CJxs!`m&_D!+%RqXh!Dx`JRwY_Y-5hmeRbzH@%IXZ zaZ(XS5&Q{tsvl}E`!b75CDOSye9 zL0{<;=6cd)d%M#+8w^EV{EX+~p@aFI#!XKU!bKOm#MhnPSv9x6g7qG*8Xu(2u1kE~ z>78xo_&(xBcDMgPeBJ4t-38k!I4|bshj&3ymk@H(UP25rNEZ6OSMO{yet^MVFh5`1 ztQ+&=gI2?jbf%tIH+pAN@gc|g4lg)$OJ{=k=go8`zHao+mUDdK`gi%3&U!?V$KU1U zl}lLjmp{Ul zC2{@&_sGvVeQoTV$>RQ%p51YNA(6tz_c%WZy|s;qo3c(M3Vhw!2mcHkVSe5R_Zc=m zon4psy0Z`N8@pY$XH-_Vby%V@G9N$f^m^>MQ@B8h8Kf?Ph;W-9={!HW z)3Z|#6Lv$q{B=U&9i8oiL-i4VI19x($d~GW%R$dVZT!rswH0ahOzoUYYj2s!c84D2`k^t~TyX4Oi#ttd}!m z>I>+-#!Iowdgh$SUFP)m(3UwH*N!1x%J4D-j-LoUFqd{DSMl|9=N8y~O71d;FV>wq zC0<#Nw}##NtawdvYXx>~nZvD3iFfB7c57|Q#Qlw5+v=y{n46r=2-UBh%{hAEoVK4q zw;}A(cA=b+(R9?8;5O2mj(U$)Z#L1v5d6}&Jxxcw1&wP{h}Tu57pOVsPbYQOJ96t& z;0>wnP(hOb1oTC@cH-2zYI-mPqKuIhZt`(#ZF|0V$Gm8ow1=8 zQ=BVv#D04dzUpe_*WpV5Bf+En!=p5R=W1-VyBdQRl{>I&Qnk0#N|#fGnr&#HRNcKB zX>BiD3prVebPXJ?^yiP`s8W*rC^!&MB0R;OopK$%m# z)2;nO)qQQOJA!-Mx!*$PDyrDO)V}&vRrhQ^9gQ~Y9%tj%F{@)#Kl@6bj^=?v%~R*r zKK%4D)=1W9)+=EREY#lRz2nx_Z1*$;-P(uBdfb9}a?ZQ8uT9e1+}cNB^SS8+v&g2b z$M>VK(!+SQNL$>l`V-jdr@MEd8(Q4jS>Rymz&kxT!9wjjZlAwoXF$2Jq)j`%>*PS` z_>r$K9C!KM(UQ>O6URHt1^^LuXTTUW5vllu?!hWkO{);_BL z6V$2OinK4>+J{B@;&!*bX1go6-;;Yudqr7S3{~02HO`pT31NM6IxZ~Y(mjrxqpl0S zc$enMbZI47h5DLOwJE5qhm}89&O4?kyC*ALsg1PNW z`?)kvnoDW+q=d1bs665I~ z13g0fv;HwQ5b%XLs)I`cv*pI+Or#?`ncg?N`1>z=8eoD-+xxZWq$F^~3kfgZovt^0O(hJ4~W@_B(aX0uE8 zq`JV3Zt1LdgiH6KO#zob<*J+mVg2b(i$(uD>`&`~{&^Umx%yKc=`h0)+~XNLH>LiU zYUAFkzwdjlYTv5*s#0UM)>qvm0uw}FstBk?AW~7gliqIl_ph`_E8e7P#kUq|o_4(; zRr74q3(_>tR;77ATUPW1%iUVlW2#hw3kB zFVuo=?Q^$wz@zPVYp*a$T-sYjTF|4Nbq(2N7Ae*~_bP7fz^Az7M(JYhb5B!?&w;c* zGF{*AJWU5weeMn;4OR!;x9T5vud1!t zj3v!j5{tLFHP3dvc&jV7&8@X41-mrQA-7iCrZ%1Mj%jM~&dfQ$Sla9#wekSQi|Ll% z=axQXiqQ3+o*u^ep{d22&J^0mFopKUucaN}Dpk4etg5fMpZEUU9fkVbQjfkS)unsV zT&*7VGtr}c=~kLQnB-6S4O>6YtN!9cMY^Y@$Y0#%3YOFr>ctZ#>M2j^zC*bkYbf^A zf7Lu~6Nij>(iMEot(P3aheP*lck9L5ZpohHkN=HZV>8mEUpqRlJUJ&+-Lpe&YSHIDrs``pdt=?&5vBQ+B7fQ@7&_1n3_0Q%(yr>B z7S(Uxj=uCNuG}Lo?Ld)sLTUQVr6BhCEvn`L(5>zv*rRS5;>c-1l?;$trDLZR-?oH|jr@6bH$MY^q6UzAzu(Y=|eF5R7(=4y3kvW|0W-zv?=Rey1N zk-zv@p?@YmMVDN`nVEHkdQm3&>^a@nZuD6@`s~=mA!DBN_^%7<#qBUIFq#$84!gD1 z&ihFWf_(sX0`4XfP!esy{ZPUVzUKRTq3#87DK8BImyDdL|B$uX_ue(jmn!CPt$p2JuFt~4}wOm z1XB`h)TaAUOYT9foz2C)IwQ-KyWg#yQwrL&;ugjdtsdM%lE!iO6Yu3k+CQ}SRDX%F zJJUQnhj?0CL-sR3KqyVU*}lv7SfTc=?%7+U7vEppbf8FY0)0g~Ym8f;d$(^?Q;T;V zMk6(N0G1Ejg!soK7D@YEt#&4D#=c&kogN<=kERyyNVA0Y*UkQMIYm;dT6xr^yqq@8 z*kSI$fZLyUOK%7F=kBk6r jaP$>=VYc8>7F)|m6c}JC58T!hl;d+xV6t!fAQWT ze{oAEZvMUQ+iP(1UT|~E#35sT&sKn{y`HAvEfWj<_J{Cb)db@5r^Kt$+sq2az4*dx zQiHo(xv%*?Ih}_5LhapF4=#5}s|T`{#FO)}Tk}0ur2Dq!obcoXbx(`txn1(?^v(u6 z1`4ak{nb0jtuUT2Yy}}ocH6Q+)jNV~m25h21tH6N!h}wTQc8ccg1;x$p$u;+t_)V^ zYxY~*@|qoLaL?GeJL|XWo}DhOwMg@Abt}zlcI3ds%Kd870lj2%k#^b}=hi+@nmu=` ze!ENeJ?7HR>uYXz4Y}kV@;C1QSYw&wk6)o`#anYPsha2hBE9NXrD@xD!Qg2-!aD2$ zxieR*dK0F_5T~j)VXC-?j0~F*V?FJ@#GDq@Uv)g}Bg>X*>-tozwW?ZiJF_6{%S3MIldpBoby;v%=xQ(4!N{ww|2g`>5MN4U!o$m zg1(<~^mMW^kQDl7K7&pc$wk_S#o9NjGey8r)tK~1(J#AY4YPOo^7HRDG?n z-Rq)!W6-|LsaCeC{sfpERdxHWxqJ98EPi0usXo}xN>#N$Kymhb$47`V^GHCM{kIOq z*>jDLkZL9S*wUD4C9D0@QVCX?hQ8mSIIsMv58<-Y)yk}+)k^l?m5tZH#`dhE0cCbO z>^hw_Y^uP(ROx{Z<;GV!l*Hnb#>!AeN3-IIo)6f-b|__@vjJu3WJiZ`qvr!yf;!uw zI6Wt;m6^1ZfzF0$s9pH=ev%h)_WZ<)=E)t3GvTxsMqGxsnf9HWRVM?=oDY<&cLGY; z36?y2Z$K&gD4@*#IH1f9C|RF%C}pQQl(G&b>v)G!`W{;RM=xtudxui`*AAs@@NZar z&an<<&bu%_^(z)H-K$m}Y1}3I>uqY~`3}XIdA36-`=~>44sSP*&VjL*;BK|@XooWA zl@4Xj!49P?9%x_fP)ZMVC}sAx4yAM#Yk7wKs+wRZsQ^0dbpOUHat9u0*IrYazb&ln zDDsbas@T8!MF4qnT0&3*Ng!Ww4&R9X^EZAO$XCjSZ%}5P4=A(0LfWE@Un6bNhOYz4 z>@(|cB4XYR7X!-d^G5%d?!#!I!wMT)?5^Cl)eoW5v{skW{H`+Q~ zcPOQMUZvQZ8;4$hQ*Q5%9f^)kE7|VWQvOTT zOSWoh{}s0Ev*jh!ADz}uqyH1#TFIgB9fRSUJh^Wuew^O0F=!KGu-C26$}~n`!A*sY zd!1_IZYLW7@g5}Wf1Kqgvs#)Cc(3PO{*}??<8~T79-=QF*1+-=XUayUtUX_G&e?D_ zUvauOo>j{BD5blU(%prPEe=<1o08R5e^kk8Q<4rSrES$p-7YB*){_@heGTiqXFbvz z^4z_=^V-mP`?PP}V;3J%ZZGfDd&9fvz0TjuBF(d-P&=w>Yueqqt$0&Tiyps4PrJ*VyGQXuBNk_=?8oLI#=6@X>u%EvR%@QEE?v?*k9l&= z2i%I2{<)421QMEgpywZWp#S4_gmkzS=isw-Fwk!su)60`%G!;}%8n>mZz28`YErU3MEGw3rSv1WlJ#l8 zt(2V(D5Zdy^KL+y^EYI_5>QGHqH0dd>n(b$CBHjlzrNvlztBKJCxEdI+WS_RDBI> z2il*lw+HuVN5;3o3k-~EjL z?q>YAIj04z)$_qxgZ=0@9!U5x5A+{}fZ`mST}w!4zK->5R{UGpv4&@dR&va(uN{fO zYTmE;_U0VD5Ky&}?aHh(o~9O+z1@Ke6pyw?S&s`_oNZhu%PWvxC+L=QC978PAR3I7fS6O>Fw9q|Ljoa7@zssyLqrfnY~L% zIjf{xP|Chivi2)UElTPBYNf6XiyY3dcWAqm=Hk26$|LyI0NZ?9^paz8$^E)-uk3pO z%iXylZ`Ip_yS2k(OK|GZrrbV-onx%or0T`DYAMgDx}W_>9`jrn%f*=ndAqZyhO1Y} zhKH`H-3B>TyWIw}R(6LBZ3_E8VQyG@k)9!hF!A}9U_^^Tf|W`8y$mB-M23Ko9cpH& z(yJ6-2$p%cGwf@&47)@jz{CV<+fkGr7SSWNjChHD2s6i^=_q^ZGRjV)7el*l7l8@e z7--%xY2Wu_WFf^6lZf+Kl-V64Z^u>u;#;7emC7eEIKV|iq&s6|A&U|NWBjbt{uucK zF5nU>l|f=~eTh3F>G2r3g`dMrgJ6(P#K>nks+idV@?eZSfeUcN zR0_yvV&rsQJQfefN{4OI07HD;a9re)NH@g2VdQ7=JNvi|p*Rde$2}E_d$6T69(q48sUS^|$HV>* zD2T_{;UOH!FT;RB0{+RBu(-y?TtO=oKq?FI?|S^ZQG|%R7&v}zBjicoSZqIG!}|qG zC>n)QQXOL&w24K3#+c>>5v^xTgNHm=ZUbW)G?-QH1Jh9S7t390%Se$Zw3AqL8BDrS z2(h#1a$824MDhF`i>`o$Hww{rhH9lPBU7R<6UCydVDOC&fcYpe(rOrdW3zyjU1Q4_ zDKVo^4EPpX#u$mh$Q+BVwPjo_QM?Gq1n}3{GA2m0%ti?MMryQWs1jWuqU&uLQzhzy zZ9L>|uw|4=bc2X)v}N2RQM{kR>fL0^SSZoo*a$Q1B5AgaI*INV_3E~aP+sRC6 z#)y|7&bZTvLvP36P9wetamJmmGwy^QnZcc}Gwz%PlYK&IPLPne1r@%*2#`q9O2qzZ z1D7SIW)LP*4acsjK=He_l))Lqc$9?n1PDvMVC#isKPC|?C`{s*)?dChAhw$j;$=&$ z6b#2V2E^+O!k$RTPkD}bfJ2hxUdf4soHwRw?*ZuB9&IeP^}k^%9h3DL%L zUKJ3@21M^zQ47O{x6TAaiUDzr2_bUK7WOnC<^qC{*sIVLg|ft0@hnGE&L7_s-BHN8 z<5pM&dky1U$d;U*afHOhI9UAG8H8Mo_`60vrqGc%LQ+3A;=j!x#I|K>+{sXOOgtgZ z1cMB-#y*folBUb|Wf0VFdL+@k+UwC`DokiIPvA!%omF{(w8J|WIAu(3u6naO=if+#~s^5e;blybOJ+?VFb z0^&dA_rI9Td0>Deg^=S3gbYYYAw=mx$N)UeGYWy>DTI{p_drPOOw5jYK07uu;Rr&4 z{2c@_JL=i&ctsJjqn`223a6MI_41n;ggl8jn;rFRc3ec9&5nBcoeV<8Bobmw4rZ%?7w()LS!yu z<`8h_XrFpu)>+x#CK2NNji{RYk;oZ)hwA!wqQu$Gk-mdVEEo`oXxINB+81)@eevyz zXyJb_N{BO)Q$CaXmV|$+IzoD4PO|6a9+v;DqW{-``&__^oyItIL^2_LY~YxFjI*ng z1t<3nadIE*-K74ESvB^MmQ&(UWsYKfb4+|1ewaHX_dG zKg{TFN1Uy8huLb^rL%_^tXc^wnhGkVZdh2*diP8UeGz}eF6wiV&BM-G)Evi$&lst7RXMr#?L{V z{TejlYk@5GOCbAPaEGxoC8xMAdiQgN5QYGZ4gTkhx_c348+;@F9O8_6BmM>AtU@E6 zWGBQK9Z^M}yD)>!F@!&|6Vm5bh@WNgQp6cUbg=lHZ12t<^I+LNqufN#&KsehjJ(5g_w4FmA4IyNwFS8lH4afUnwl$QHC@JCY zWJ2U$B@=SlI$%iU6V%|zR5l&c*^i)9HZ#)MBA3eMc{*F*QrRaaoh{Br`kNnszbq_A&Q68pt7fK^6F#;-xtD1)e*_|LQre3vM?X%wS!c@ME69mNX& z32{c@D0zDZAxC-;lFFzw@@-pYI#)$t>^B^9Vl*pn+cGr*{Qp`sf{gEv8asg>v7LZJ zA-prkuu)MPy2E{7|`kH<F$1wVedoSh@> z!&mFe2#`LH;VYHJj-94Q5z-f;xW;;-vc&gclnF06!!6=|a$pc4Fw+B9%zdfY)(a=K zBVms$E`yL6OedM0LJ3oOH*?iFX_D;4+51Z1{Z8(hG$#9Uq zu<2)X^gNdC{Dv!i4GJgeB2P4JsxB}{Iu*r9N(hm(k{8@4$e$lh(ozQKe4LvAxS6Y* z_IVQB^>cQthXuwU=}v>B9UK_;nBZ71?d1^|XM&UNHAu>JaFXUQ)J{=I)YKOz?Z)rZ zU$KFBI7;-)FIjbK4U+moo6cCR*Yd+d*5i$w;?3NbZVPYTUyMqh;hEoY-@vm`;K3*# z;8{nwFKGt-ZwdM@vJ7Vo=eZ5sH+X0#Lp2Zwe~|!ACx=`kO6)`5?q(%QV#HM3#ff1q zqaB>SO=6pz?fe-^p++vaeH*)B&@#nxy-mUvDo34C-&zNXCIqw5;j%C2aDx= zn}oxxDTuS>+{oWJm=NdQh$@ZMqnVNOhrxvO!Ev|rB&+Z%#BmxfZD;w@E+?c9dz$+h z3CC$05oaH%KS?;A`@`jg^keTe{F%k&Ef1{i$4t~b&Exm4?T1rt=_ww+du^Xb@I84} z>c}AE+banF82*LT*B9nD`fLHfE(sSGO91c~;xDisNNPv;MTRWtUWE5Z-(?Vz{C+<| z9>-(a&|TzK)}=S3UZ3?N|(T?X@-rG#nP`>~m}qVplTy*j=1V;+s$p9^}Z# z&VjkAv63XEhqW!8b@*7uY9wPEKu#HKJ(6io67na`Yl5v$F}8l^GQrlT7?)i>NU-%O zHmHS&Gqyg(*m^DEY?pG1)%7UijIE9Qw+CTA8BwLd)@K+SeK$z3^%tx{HAArV=Pds* z#2H%$7+b%cK}bKw)}JxX!tpQT>JHAe+c{UC-WULLgHCX$bFxLK-VKi7$4dRR! zRYuMn%3=q7qp7Vlge2*G=)NQcBIu;#1K(NAXtTj^xh%fj?R$16Y z-XKA0p?(1Nd?r8WVf=8r5oVM1P6?A0Kh+r9^q1JD;RF7|)5n`H-4KUMYpFjQ-YI2j&p zp9T?9*N>21&kZ8vu6~3J*f)rfzaY>KD^d8&oft$&hVd;K@(j4-3~RSEcoPtxLB)d^ zk!K7hW5?oOAUxC$h;!h#q3oMsq_R)OS))6K?2aPDRv_UAfHatGr3(OW{4OY9zY9hT zX$R2ga3HqdCL`^%D(4;SNOL+sSq}Eaww%HE7UtyPrKlVjgQSF=6^_CkFpQqUT@ts% z{I`X1taK$#$ij}CreY(W0D=q=4LrK4!$r6Y%U=_m$|JryQj6E`*vZz#p`carE8@rB8u zcbMY%TS~Mr881Y|hd=6+a5=%-Nj-W>g~?aM6QWQScg9JHQW7@v{5dIF$R3VL3PlM? z4trgS5?CV1VL(02*QF>Sy~OKMy+g!>NJ|YPEtZfzA@rcMuknCXzp&I;Lej>N9QI^X ze+2NH)c}?fMaaNV9q0f&B$Xbjfso6>^N~9!P9h{DJQdBJ5KBlVPmH^Qp&1GSz$rtI`mJ6_E~e)~!z`$;-(y>GH_1xwtw63=aA$}iIn7T>iJk7`{ZxA1ri zi`(Tt(>8jAoG^|?J8~KuY0Nxommjw|#?8K#MlYat`TaHP9L4LOpwVSis-YxG-fVL` z4;mdA28c8psgt%LZMmaq@`%aT7SfnJ8td3jqleSjkvU2z|Ne|M5%A0BIBQ(izJ#{)Brb*{$ z!d=wqSU?l*q?y??p~mqRP1-`8j%#U>EhCY}%k!#fw7k$UiN^1w>9ZJR&#nT0rOOA< zJ(Fp)<7=A!0?TP(G^fig_I1dKl~>rZBpNS|d!GJy8I29l9~WXAl(%St<1(t)1}D;a-%u6LXVKcaC4{>b9@Nco(491mPXsO+1Fs;0cgBO;g@Kzn@``cPo=+7=8MQlJpwW&O=umkD#(3Na8vPh` zI!4nNIc5^QMs9eXW;hnmm?Ek;)>CIIRU9=m!Lfk4@xI(O)KNsE90BV1h{niQZ}ZW3$7~w2Z`ODkE!VH3F>(*bBx>L2YedVh z>!9PKVjT}t`$_7~r31>Sdlt3Ji%O|mPT4Hi{FNr&NbT!sbik}YrH=75%JBkq1gTw4 zc!bT=eI#6D@joR;DfKGNCV(Zrr0E>%?os0t8QDE|9 zDzT0nI*vulcvQ(|Q6sjDhp!cn@BPbk*{I_s5pZnhulg;Z1JBWzQfe=vBgJu8>(cMK|6>X=nX z<8GtT_fF9_9zeA>kE79Y&v7(%Ikn3RO6C4-jXu=#>$S$z53A?RF6wEZqYJ5hw_T=L z@>^>h&(j#&M5kS%(eh54qs?*IwOv*5SEGvagnhu|c*i(82Fnhw;bl5NUNMPYIgt*l zLQCw6X})c8FIs(wj+R&2hDkI|?lF#5%geKA+*NpuF>XH{9H23Q$=5ore6X0t4WThh zCr_T-T3ATqQ~-j@TW)bY6xg}LF{t1k`Dw{9PJZ)DW%c!A!*Xo z@zgGF6EVjr8v7Kr%RiYU4{@yXvA)sQwy`1LgjZA70XoJpmS#T*%E!?wSMo8iFQy4{ znr)gy^W}w;Xo8$-8!FM!a zU%JJyIk5BW$t4?Uw0yT@b4!lN*b9_n%q|;8V}B|LOY%Kziwk=o(iAASzQ`q92*mm- z7Iz^K^RbLb$0aTC!k!57pZ$0UPXt4Vgut)G@!y?9BFsiwxD#^9f(VI}h~Q5+oJ7iD z-x+SS_-ST+NlqZTo`XtcrU(iFWE)wk@?6u2V#4sLM5c*gSTXiiNw^cm1U`vO7s0S% z!VIP9L@~ok8|x4e3@c_CGf^zmBW0pTxWP~&kunh!vdlKJ)Gfly{2Z&WTbe|1iA;s& z5Zu#dcUwx~9Ui#Qi2P4Lpl|}$#ruj2c$R3%4{VkAG5?i`+46jy0D*L>QMsk#g^&&G z`Wqk?ECS>@6Qo-#LY_t<(?l>-$~t*C!aNi4bc2X6X92OyuS^aC?F=}H%nmEh+%-H) z=e~_NZ6bW9S z@ay9Glgt%2owpiSyC7c#Awp%4KV1ZIKW`+Jn?Z3EN#=?m&e060=_2@mnKV~ibAA#^ zijKIhl&p^e;~5yZk2&e=1z-{R(rnLk5fr!XUA`17kQw*N>}A*;Yei(6*~S^7LCGem zmbWJ@m)zFHg+2EMF(;E9EHl$`dvC=8Nin#Y-D9y_qFb?utN(>2qgd8LJm>-^9%}32 z1EzA28D_s*9-jO?&-#lAGED@<&~){U6BqP{%wiV$3`=k%bcb*4&NF-n&zVCxy$>J4 zP~}`MHq2RW>8+JpF5s;oxb=Vw@wa8T(>cFqa$h1pxz#cS#23_b!z>_{g;=Qk2)!PO zl!&0IBV*-Zq3|Qrdb;RQktOtcx&RSbLb0a{5RoM`d%6G-S#OzLW9hwjdDeR-h-Fp^ zU7sm@GboV~5v(?o%0+OcnN+fl2k!_a-OGc&2qlT&qh`|FKk#6#&@QqrVS*^PS<3p! z;Z0IakZB?)C}Rtnh-?VKiQpqViNT3Th|n2=(09zDGZHz?!k4VPCkV?mOHCI+p-&}~ zrMFt%0T<;)o8`(xFs$4rOSw!A9~zoD8czxhjpadHf%+$*+C;F@OqwBri_E05KD-Bp znxi*e3?vk_;3Vs|Li9kXiKtWrYs{n@MKIKqQfpI6(<~H}S}Cw>nVNYu&zRL&mdmGj z)<3u}lcihNipW{B+;kBP8VVT1!CQnJsg-R+sTa&rmWe4q{3ggW5flQdU472(zPT{VFXB{>{rix&QKI<3nBMu&_+_HBTieY<9`btFbF0POx zkvSqLw2atdAR-@y;6(5#P78w*5uth|kvSsxQaGH5e99BM7)n8{i)%eeWTprT%{G}V zy~y912su&id9#(%L{JZraQ|8n5q=lUE>K-*k}zEa!$@fFmV{=Lgi;XDi1YhM~GFiHF zt%!*JL0J*L$oq-`iin^efRV0@7r2A_fDz%pm>q9f+Hd4pPnaNw1rOps|J7(z71ipa7b z5EP}Fh^C96P$R?7;_m8CF^iRoV5t6bYyFnqAI}lo!F@KaJREAj<&z+^(S*vFL`p<( zg3z-eGbZ!kf>2UqLjfX(AXxG{=g_G9m)eaTC#W z5fr+2U5$t+cFZhRDuSW<%dPcWM&uGla6NA;Mnr@|?YE4GMZeDatHcUo*+f`DER)fq zduOf43Sz0q3Sz0qqU2_+$O>Yq$O>Yq$fDS0t;h;usmP+?X2oI!v0$;Nx>>PUK`dA- zI&W4iRuBsoanoQbzge+ZK`dA-8gN!D7M(XMh|qGY5E^7w5S3@m;XWpg2#1PUc8@~Y z?Sbww3-z@F-Gc}L!vy}QyF@BPFv(1+6u}8*65j0Yn>GqYVYMKDzT41wsULUz)6m?7FzV%BA8*CL+vJy>q%Ae+0#BC_rYfr#LX zJjq6uE)?NiCK%oT?c|>1Sp&^hSvW(Ke!Y7vLW1`b6N{yj1;}qr5X%%1An%$WmNiO% zJY<4c$Q2+$#8)DvA}9omyZUg6Vjr8BEoXLj^Q?pXmJ%~dgkKl3%VequhHA6!Bbzy@ zP>0QUfn(TbVwxd>q7sReh@kMh;KHXZxM%O+INMCzmJ6GGmQt3UeZvA`Ir)5xgM7&S zE)Lgz$7%SZNsDEY2<3oa#h zK~trI%zKk3iH?+rMNsH^b$N9t%C(v0EHiL2&suHvhSLm( zh@QHIXN&4EQ6t??IjT@?)5q{)%guhBE`p*$iA)ng;dgO*z1V_#MmEQ}(!_1~Nx9Ne z%JLg)KQnqj!YH)xvjBm$1Gp|&K7nT?b`P?cXNmSpR(=+0sq?u8r9?_Z@LR4~h;v&J zmiS}JT`;S_^u9@tg;@oNP)wD`G&5)-wlJ$G^`?o~!mI*hmkClTf{XYN%Hf0S79lS>l^Pw~9 zs;ZVx=MS>i&+t}wtI7$?^iK0tEUNLYD6XihtEpYU4CP+utF3fbRkJ>D)zvMkN-rw9 zp*VeMReeLvlG^k!*`w04n6Af_V@CZbdt~;gtB0g#&8ujrnxDR;)_@(IJ*r`8?GRI; zBfFA}C~2swZy4cS(y(xZdr75laaFCiVT8MCY1N`7b%=~uSW{gyqH1ZyB12i^%AD*` z^_4kLEisfwerAwbzPO@}pt|x!RkaJe3rS6_mn;Ew6^rW@Rgw8imem@;@_7}t^Ox1k z_bw#Winprf#8=x;v!J$Wema`$ zE3c{bjviI+B@K1U%Y7oU#OF1DYkiB2!2Bv+oOd9pomXDDu%foMYEc8Ju36+oN0P-= zi_0q(Em~4p-cYl$ip=v>S69^=;hI`+dByyt6}6RBq`JPM(u`F4yi2O9323aTSX9$c zHJ>ziE9$*f^U0!$25&hZ5kVU0G{Y5(>&h9jTHj)_xMD#~B?oT+DGYYmlKS~MSD}G5 zwUwfO%%B*4QyZwf&RZWAn^)0LQ)vurO)VZ`ubE%PdWQ$QoDy9mb~z-BbW6_sss?ZU zk`gt!w_f>jDR{7$^A8y?n|Ip6NxdsS!EF zu2K*&Wjd*q z(hdNFFZi-wUQ;{2YB`ogmhJPhbrIp3%7wn#n~i1C_?%u(YFI`sso@JJ`(!Msu5KX9 zk+YmEF$#GX*OhaW4GWjlhWnM)ufIbD#PUgawLcBB5)pt|AJNUy~c2`JG zXLAu&Atx;anj`6{=X6B6PdGkdZA#$z4afT&_XXZaC&Y$Na{OnxAIHT-lenMB{VTXX zl>4x$1qb`XT{&SjN=P~jgHA%sIno{CQdsTWcXC0eA>5C2|6TY@F6|R3SQhCb#nYbS zbO}+oNcRB8`#ATXj*u#fbiyR@n_QrxgZsU>kV2&Ucj1Mh;7X2f0r!P`Mx+zBCqLs? z5#p+(f*&_Wx&(g4EY8+n;&E|$9_fS`6>)g_EkB17$D@%BmM`H(a(@E%S91S0?*Eqi zk*+6C@6G)_-2Y=Y@ZvP)GX8V<3hoc%elGW~<$fXei@6`^-sWdSk@&=6RHVC!A5VzW zf>Zn_q&N@wUe`7){^N-1swj2TuKH*G;#7mbWa^BV`{v zoi||TEpNwtb1Lte_Ls*j>w7BitHBw!UK;UfUdM#|#%sr(%XnU4hr$%nS6txL5k}jl4-s z3%;g9kLCU2)p02|H5|?J9~|@JQAgVIjvrZhcGsrEdCgZWPa68GSMu7_yWU&zc3a*v zul*!rV8Q;pYiCVN8TjFzyk}mOCiLIBE3f$Z%`fb~>gBxb_{*<8*6>1J_0MVSUi*%` zTW9uaUGd4E^X947UtZhusl3N}uD`FTUvu7PPn}Nx-MxRvyKk$@bJtzJ%^Sab#22M8 zzsY;!AKMDr-hDW4(QC!MbC>=y@5^(?PX-U%lc&Tz^V=1zTk=YJFZ$_;oZJGx_52QvA()I@7kvy_&=;&33wDm z+OD4I2_XbJkZ>p{DCkBZNDvhS9R_Bg2POzYBw#RxAqWZqNrK#Q(bp`$0JiFxZgh( z5q~SscmI6tzEe+i9OZUbtp09h-(l__`-yu`Z5ZI5{o;<{S1;(}zHr#z&OdffH+SWT z!W(C$o#&ow&A+0A3-?=aSxa*kfW*>Dw{Z8v%smVv&Pk(#sd3R1Z?4EY;-gA>) z_{RO=dlNTJ-2Jt?{HZ6?mL2}e-D{=zdeF%)+~1bA{d`B`{qF3WKj_{s>l1hXF`xaq zV)Y)kG5SPB+0`Go+q?E{?ca2ld*w}6bZp~!$Gtc-EAqvuD)+JH&AM!lL zUs3M9CDA@koV9(yWj2}n)u=#SEFM0?Nt}Qskbd~fAamaOJCS`t-I~k z2Opn2;0pGe`mO`LDuxH%Irq!z`cm|}{i+^pYW?6&p8U=7`6s@2FKUr7vroqN?gz7e zdL=pYJNMc(<*z-OaMZp1fo5lo|M$1#J1*!{P(UGmN*cj)No=k^{ccOU-n zq8sKVz3%?J^{L%cx~_F6G`&3_daiMAeZ%|pPnWE6|Fh-E@0QPa%su!&!*|W>zubM_ zyDNSQYfIds@QSOVt4iIUO+0JBjt5HI`^y$@`yxH)KK=BMyRyditygcVzAm_T|7#t- zt*$Rce>S-DyE|6>;2zyR`ryGnKe)5sZN2v6r@nW;xpLfz$B%sH{%A?zmFtqebB7MS zThJ)+sC(^aQ(pS&;J5A^QJnVkGl$*hPs{F+nRCcJ^zG*-u04Lxopa!2t!m!a?)!Xy zne@6i;2zj{(BMz!eCdAriLY)R_w#=DGf)5hA8#J|%-w3!tUJsf_PGa--+oV7E>4(;Tv)n!EyJp`UF1g!%o}<}ggLceou)ahzx>@`d9dOsP7o*R*dq4Bcn|D2X zG5%`Nc5~eC4u7|H<VYuT!sva_?_b`#&S z(;th?6RO2WqtW?w{@~yzad=4(Cm&r!R>9;c(`I&%TN7++3OkI?pE#*tTvyRAe_V&y zrmjN~jwZVbf8q4}NfXC)$e(tTJSl|F)RN*3`Gw;;*n92{_6b!{2ORxP%AeX*WEb92 zIOVp&4s!F{wFB~%j~#+j#uap!g1o2Y7v5A5JIS0pv1oFBac}~ZIniNFiuLaovqrd2 zr02$dCoY%Z|KJ0o+|LipkNKnB!oOl`zI)?;CdB+9$cwzzom=28Ex$SDkBWx>s?E2! zKYC(n%pY8oct>X9q+0$r(jRflj@%lHzkvRiURvbFpDI68-XfoSHk7#Wr~F}y8)e=5 z&TVe|DSs%$hW~>P%yi=~=Ko(hbGXOEehF(cR43Q4Qs1^F>>UCc1ma--14$jMi?MbE zQz5u~5RUX%XJJhP8f%&MLP*(j=uU&$!V91$m-0cA?r4AuR zID{AnE%Oc`7CMBu&mqK<4qNtilS7Ez4j~RWgn;g27~$yP6r!8cR^|ppWj8v7fFimD zP9c^!g@BU6HBKSQokBoAD;ur2_t!fCn?opd33=t6jPTQ(9(@fYhtJgf`xk}kw1 zU5MSf5C?Q2e$s`|T|z)_Grs70mk^)fV=OCx&1wqge-mD39$#*n*IDw-2Q6hI4|5JIY!7ec(naH+0P*!mRVq^^1)#N7;+ zYTktqL9&oZn;Q@NjV8ocO^6ar zh((%hwDNgPhzd=J-I@^Jz`my@L{oo}QVta`a|$m^E!12q z4PHVog(DUV$|c~1d(Bk)0#w?<6hc7%I`e`lO?W{MBlD7WG=*)Uk+Gy2M+|ZuV+o}R zMr5tWyreBoAq0$ZGNH6uDr}RZEQHhpDTILfN5+!+9)%Flc1bcGi*O|o3l;HI!m zMKTsFy}}FHAsI`W_7p-uc_d>&F9W=A^~*v)MJ2qTqml_>)&gFzYe6sAe{_gMbT!%C z(AN}W1p1shEJfc_<`~fjmElG7MI|K;h9Qzg)k zQB|o3fGHIv-;PmM$&zC>k~0#fBPENCX-NrPV|r53)tIJ~7&WFVB`=L>OPNE&a3O~b zj2FuI9L5ZFP=_%@9g<;=lJgWMDRmNtflm&882Qxk6-HD!s$w`*XGR!a75f2(d^zl6 z%vUPZ0b7XC^0f=wyRQ1v;Egdip5HG!wK%N4ljdAi6NHML+N8e40gWt%BLh48VXn93!Jj+rB|{GSW|OkspXUef>cIpj~2C@ z5!StJ?0hjE{89Wlh+kyK$M{ey{?OX>hWuA+ zLX=Op<6}Ii6+cdSKGB32dfT6ikMEM~5Mn>$b3Cc8N4^g6uvgo|cpO*a#>;gGQO*N%|{1f>FuowLk@rs>7 zv|&7sOL2e4!%iVm7?0yq+<2R6Y`m@jOpJ zb~8pX{A^-0)lLsH!p($exjj{$o1OC(OtuMe&LgQp3=$&at`>6q%^281h#o>@+}T`+ z?m}eznj)a-FXNLGAp$~N(X<^B*;D5IW6t| zb_N!)_txU$5O)xtBtA?mBHlvm zPP~}-pXPQx-x1dl*AQnDi-^!cfcIWb+>&C`6~wv365`p!7Q`(E;}ho)i;3-tt%>WK z+3{Z@<`G8{PdBy0eB_IEpxo`1dAu_&vlciQS2BCE4Mx5HpDv5#MZV zhhuY%dO4feg7~X_%8(EteoOq42<9N9OCqkc&w3J;6N`wq5Qh={#7l^OAz~qp{9ME% z_V}6b6>$r(g7^|~HSu1eMTBNQomh_iF#(~Fo%eBC~L zN`S&ugg>GQ?A;P@Mg}Y*-azyd(}}6X_3LY^!i5hnFO-%K1!97%);K7{um!bBhF=ETOtGo5UInDj&VJ|ay1fnG;kLwu6> zF!5d@Oa>x;ArYp=Ko2Iu{uk(UA`F9pb`fD=4D^>om_h^n7V#D0Y9dUhA>1O~PMl6G zBnFAs6NeIEiVf+z5IYgiA~q+wh%n_Q%SVLmH_&eo*Aky0!d4u@?Lf5{G(h~!Fn0!Eksy11N~1Tte=4{CBh~dXqY7f!gw0+D&l3ti;1wkhVVwj zDA#X45swnTAnql;L&V7_(mz9docMR*J;YKXY{4P^jYJra1Ko$%gLn}U#^w;7K!hW71KpemgJYn-=Q{NuaUT)($`HPe zxQ6%-;v>Yr5$__-C&K<2(qB&;POQ5=?m>UpPm|>%!r&U{@3?OMn)oph2HFt*3K0g} zK;K7%fj7{%5@7%i^bjHp#DVTigz+%Yi9{T(f&QB7@=uBH5w{TEB*GjS;y*-$oiflf zh%jIVI-3Y9XP~Wdz9mB3L)=MROMH&_81Vt(JfhkM-9kD@ z%pt;v0_vv+u?z7$;#tHqE$w(Gh)0ND5%&;x64w%+BR)=ika!RAPU0luIN~VcFya8> z)x?g(wnT&2h?ytWf?j>#~ZX&)){1@>) z;$q_M#F@k!h}RMQL=W+DVpk&04^f`8h|P!z#9z3t|B-l*_!;qi;x^(M;ws`|;zHs~ z;;qE%h(m~%5<3%9h>66bJV!V{+)I3q_%iW%;!`iT%0LOci^0ioa;2qojd#>AsM zw>d!EOMH*`GVyuh6U2vzONfhzvx!B-2}J0i#(Reo2NU}edlJtfwj`e7xzTYVRA(cf z&xyN<5Xypo1rb71pr0rHllTyEDRB{T0kMEMhS-mIC9yrRHSsjht$rdxaX#J)#t@)7 z=fb%@=%vIE5rzlgKZ7`im`%Kr*q!(nVtb-aJk9elm}f_Rdx>unUnV|C{2TF3;(X#b zVlL4`>_t3>*piq;loo}BNce{5a-S175!VwRBR)W!M}+wgq`#gxoY<2Hp+AJTB*I89 zXlb%nh=gx>e)ldBW-8#np7;{+DdGy^9mHA0Da4zIqlwoNuOO;(#7?B!5t|bm6VLFR z?}R$imJ(+WrxFW@V~E!h$!nP4CVd4F25(Sr z>YVZ{(#?qp#4|jPj1bj1=6=$9h%mE*{N5%$Lwub0cj7(7Vj}K3k?uxf4)H4DWyG_I zH;l>X$iPUuTIo!EichL}P;$#!;(c!;>4xQ7T{ef*wvMDXx~UPT07Kj=k7 z@cV@Fd$Gd0!I_k={?NB9;^D_K)TCUqW0& zTtJ*aypfng97^m->_)8HUlQq$OL19VwojOP1HFd`6L6rbh~-2Wz=Quv;&LK*z~B#a zdceB<=0^JG5Qh>W1cUf}i9Lzkh;4`|#6%(zA>B!~W7V(rkOmJt!pR7o0C^tJ>xgTJ ztB8;TLii#g?(sp-AWkJhT^IZze*}bWLm=dofIW%eGX)LVWFYvNfOY%d8kZ0)g=n?_ z@+Cqv!?+6;4vcRtglL9(XevZA+-D`j-@eakhI&a7q8aL?F<3reJYI-q7*~M!{V75; z!|w%B&Z!xGA87m@Lx^VhJwTMd8Qw!gc|jkt^BqCd50ED6`$-dZ@Q^hZVgyk~djd_= z!OISssH2^MChFTs6LqvdgcJ2mq=`D(CBljNdeTIF9ciNe5^18ohBQ$J&m8h2>S*tv ziTabIi8}fL!ioCBq=`EE2f~Ru<`>XJ9sLG0QOCRknyBNR6Esm@NSdfGAWhW4pMv;A z9sLnBQ79 zK@)Y151@&=P^Xrd0e9?(Sns4X8df~ceaqzN&Cs2?Cr)c2Dn z>YtD%>KK2Jo~Z98P1MmZ5l+;%lP2mIuMkeu!K(_IsAC)hP1M(uChF+#2q)?wr@^-iT8+=(M+6O7P9XT2foh&t^E-rw z;IHOyHE*xv{Hf+;H6Qn-zgnNFc^2a%@=^1snm^HR;jiXLH4kE(hd=(w_p^Lz9#iv` znx`Q5ig;=sQol>B^A5O#Xr_sn`~n0gFvzdGOY*bH6(PbE|9L`!9bfT_L&gZ0?aanREx{enWrw~SK zAr|m`kP}0=l7G0$Wry#1$j%S^jtE!s7vPOW`WqQOhv}7kM3Ctv(>-K88Ls3nAn%0q zYnc8;=C9;K?qvQc44=zzC4UlNc=>~N`TovuC4VxJ;fELwwoH^?IqXaE{#E=Q;KxL` zlK*MV`q|0wrx>o}ca}1I73*&^!5(<}Ly9~r)g;n2j3@+s5K*w>?cg1-;4n+R9( zL6A2D3Xzf>}O2E!pUSL5@E-|Enu7h^OzU3wdB={0=0$EM#^Y)^F^@I z?3g!=YWMQ;^2S0@VEx>b%1m2XVZGdxwnJNUW`n^{beWfzS5%xIyd^I<;g-CcO7f?T z6G%2?TI~?1o%r31V%jtR_?@w+^8N8@LaJ@87ZOvo*-*&DI5mYtv5JlNu39QF>%~Cw z-;YsWYi8U`YOBqR8>P11%(zkND9)@Gr-tUtdSTV7GwTJ#bZ0_kCBOgp`q7}VwrjzJ z_yMwE#|^E~wi^tOb&a?&*xciW)oSa%8)IVOABM-8rfkK3lv^xzLpiHXA2%b_oPRHH z;*+i;)ir9K_sJE3$SQ`pfsp}42w#LsuUe}`H zX_pZRnZ)kIONl*19u;n19((E;d&=xq{n%aP)z#EZI;No8relh^ZBi-Z_L&$DCKq%Q zwd*(T=a9d|4w+bJKh&-AT2&>ZHW0(Et++Ajf3`o2R-KzjN=i!Vn0ZNN_YT!A^U^Ca zFYA?=*(0+A8-FwRDHzwJNm%2{DV&vUZ-<`o#9>h1X z-T@B9E)5$t>hd{6eID@~_`KkzQovHt&{=^$C5M@pS6nayg0pmac_Vx|^-M_E3J>6r zAH?T!&XwnkAh5NJxxBn_1!GHY%9~g?UjB}}Jnu-)wYX)l9TX?PeZaCqz5xz=qF6h| z6ztQf{PM?+omMbi)XVQS9F#(b4Ht#qP{&LSrzG~Ii{&RZRzbUR?ehIICID)?Rxtt7 zn2Vd=!Xn_4oqc;?iCqPqEkp9hYriNwFCIHQJ(n_p4!G#RCCe&d*5Yo^-$C-dXyt(V_y zHhi_eJ3^(PH+Hn!b)5RkFRo#aC@;_J8R4n^HP5P!MAw$OavE}ZdHJyXkXM*Lxu8hY zFQ3W}=elqzzXctIU{UMTpPk>7u{X;PT(|zNpddcvtKpuiuN*aQezJU1^MiHsyS`3- z+x}#Jva!VZz4Mu$#^3t`^XuD5-YdY>DW4i&&_l-6`@QO%3Fn}2$EfECavjv2Rwq9w zHO~(g=am$~WJO+HASSvG=Vg1txf$F`6s%6Uz#fz9m#<)gJ+ImE>yD?Zm>!-QNzKag}gPZ+Y zrO!HO24|-X2zR-{*XwJaG30Bnwf~}%W^kwJ>>aSq$jrT+Z%Lfj)(j3#@dr1V7ghPS zN`LSJGZc#u8l2|UezXRsh59GYo-GoMH`5KH>}wPVs6#X71`$VO+EGqW7%9 zDPHTCEUG8hGsbg+CvVKg@v-s_A8JMX))`M|Kw_^w#*jV!;Jg%XxKD3SuS$(31KPxJOVHn+V$+^11!aN zW#35_b(Jd0J5~n{dbLZnF7|=A?P5LUI_E!SFplZqbPhkU7%nM5co|Y(j??btF1z2s zDV+-1WsUv;@o_mG%NQyIw*_$8<%x(vvsR69sFa{3foG%fv*@6D6Wrsp(K;vNSgQgl zx;Q!tEg7Xl*|ZEt$3!jp1x0psbWGNgaakinFL88C(ULbPvYVr0nkJe;(f(eUSJHW! z5Y3=(O}kpt)UTHdGWcERl)v(7{7Nv0=*s?7rTT2$B7+51*lY- zM@9gP3Wi0gu*<8-0^=GP4(u*)st8^b0eADx6Zl?Uuvc}}gm9jgB+}vrQNPnp7EA9! zy=f+D?l}!39**S(BKlV#T_6X5Ou%{K2xzTh4%FBxv}@&^8QkX#lJRh%1gAW;>+oBe zqB!I1--0U_I4C!RQ@>>#ehc`J?81-3>%q39tF@_0V3&3x!dE#|X(xdE%ppX=1uh}g zyuso66Hc4fsJpGP0G|sA6yXYpG6`;mYIyAIf`dLdIPG5jLOyzkGG4Dbp4$ERQZ zx-QdRlm0S3zMXRz1h_>i*ae)u8C}NdE#p9)ptCoaEbZvMW%O3yR&ZRS@%7grsz?QE zoa0jFAq!&SwTx+5AO%lTC61KNL)qzcD6Ad9kxO&v`PdG=*Ohrge zlTl6Nz9uuZU6K%qE|Dn{Htr;x&8}|Jq=^tohVZ8f(Ii!KHfz!ZuM{G=sc<&)r-JC2 z1nK>zt%N_-ezOqGs>@bgGUFUk^OY%0wCn^Snpc+>?{86EOd(RMv+<{PXd*;fbz~u0 zViDJ>Itn7RhGJf+G1DOpF>2bc&6)~Llj~+Q@2=vKlA>vsOe_peDj8RBNl`(tWLkls zxv{QtZ!o1Ouc&0|)G5=7yG}qFY`P{E-qdx1TxBK*G#A@BFV%F1t4TsqV&6M-&1D>O z=~oRdDJgM@gulAzYd>IH!+?Z{p3aMt^hZ6$7RRbf>GQ^On`R z=F*+b?{GCLlpZ%Fc9lMDSKrjz)hO#Km%ebtNViKQB=$x6!^>65e7se6w#`u~$BdUA z7c9BS?`o7a*rl&rF)|AYXSf5bLJpt<3R%g z=GAtQR?oM~v{T&SYUFIZM5cIZKFhUF+)?6c^t?;I3R&NWG7WZ#gg0F+5|SQAg*aEv z@1tw37S8=*wM*~kXcXJG*jkt2G?7iiB(X(>CT?KG#++I)1n3jT7O{##EwAx%Q8T-m zzcrDq9%GYoedCg9VjmZKcRd5zok7;T+um5h9%3j4H;}PnS zH+({?Z@X2cx;<8$Vd^my^SVJjVu=M8$Mo?$2B~+}cs(yDM+$H&-8qQ2p1wUkgR1WjbC$H!uISg-AX{V1ltF6esfnTL z5lmNhs(My)RTQ<MQEqV3e)QtW+@51~9r-@(G)Oi&D=PxQf!LI*Q7$`ghe! zRc}>Nze}o>h+0HwB3nJ;Qr#|bz2B))#nvzNjo7LMNOhEY!-0yjH1?u;N5mMV>`)x- zVk;s|KK8TCUCQG9A8nrUc>Mpv;;DU6LQ|a55~w`ov+V-HN+<4}rxoOnlcq0kn>Mky zKtAP9&!0F+8Z)i+<7yDKvsRbzwcaPQi{n+(oFR*bBGitFd$j6O)XH~SfoUQoKRcB)Y-m5)$%|}DcsMmL0w+Mxw4lh7_Twf^DZHse zExW0CdE@e@-3F7O6K54jHMHQ_sKs zopaW+YzR}ZRWvi{X?E*_Aw(nr&1Uu+yusTAusV1a4c(9;? ztre`XV6Vj*8+(~69YTzC2mw(Ah%vy)oe9E7lO0mBEx{?J*J`ws%X=KnIfQ8I6yjYF zFx`M9ps>vqz+tZd`hDgr7w*C?Qy2j_3dXu!2vGt>*tVBc(T-q03r-%c zP?t8G`WB3?j#wqFzQunNM_o^;V;TIsx~kZf!~5}G{6u_Ps8SC;-g?K<<2&0fy!G(A zP@%qd|AjxiG3T;hamoSFn8%^08){;O5c`A>-wPp^3&;msG#-=V^TG?m7}b2EHNp!U zA)evNvliIUfR1)q9WnMH9Q80SYmkKw!~%8?kD09O+5-JNZJd@J_~$T~Dg`Opf=1XL=pu)zibu-w(SdsX}C2Wy_6ZoJIT; ze0@S>fqjTQh>BnQDC-&aY7lP=5yw=ZX>%k2XJDYA zKNUEeSXb^Zi~cxqL%fTLFrEs!H4*29plO#S0mq4;-y?1zzDdOCBf=jdfabF^$-mh_h0JALRGM2`=c3#Mg;Rt`!Hq2*;QSEF;b$Dmhmr z*Ln^8VZ#XVm7ME&q|txj-;9X!ZqP^g{c#))x~_cQTKePk9O0^c-9>sn@iro+8^lxX z4f+#7dx)14ad;1Z=u-qXA%Xy{^rf)bArr)R&MZ>WfJe zb@1&YJyFL2256#=OEl0#9rB0<4+J|oP{|{!@uraeV~J|q0ZRqqL(e!+$)#Yv2i=go$~0VbwGgp;b*z)X zU#{kVtkH}XLLB1K3t}G#S8I{pnCDsuv7G!;Soa`Yxs6O;&h+31N4Q#$W8sbT6PW%V z3|DIzT-6}FoZ*lwlJDmWpl=l6&<6~MeKo?>84qm1AiOWbVS=Yd@#K1_CS8}`9p{TR z!znjj?Z`A(b1z(nL!CitFI$VDoMHBs7JJO#)R}d%lwtPXwl24N&0TKoa@5}D)(+!7 zx0(mO)-JdX2XgJg+Z=>)gIu%Z4S35!*AK&{yuNR(64wv53l0BjzQ^C?7wp~uzu=`k zFTI@nfo#f@%4aFmXu!x!U}>GngNEU*Pss^QB40 z^PiZD<%b1+ocy4-6;AE5J6x!ab#2GW~1@>}vJ^J|Dd zas=~J>w%Y;-;I}&kD~VHiH(2usc(J$$YS;{=$nDt&5pPK(il&8o!|TW{E@e@e_?$F z_Yn-of=|3htYCHW`+fe%b<7XzXt*{P|2h811wG{YSMXH9|f$rJ3ZEayw>FP;G4vfvnG?|M$;No?zJxUTDRz4Yj$G4u>J;KYX(o& zjMl${*E-}eUZ||t@2nNnFP!`w;s=61npXexIxLvJHKx_SXDv^^wJBf)`_}Q>?78Lb zp=R)8z$!AU-|M&D23KELe;dV?!MAj)4mPa{1Z(AB87wO|t-&etZidfsB)7jHanjB@$U5#qRUgRjbOy(@Y6jP$DG#;B&fr2nWYBfUa#Bx+_T zYiF;Dfc499V|01MXs$nCS{qAVB-de9x#ejS@~tl`H$z!#jJvV9A-|x%(kF*Jf2B`0 zJ%6Q7j*$LJpJeU!SNdej_E-935As*~HgBqx>;JG`%B**8m%h1(+v5_&C*TjHMm2K_I>NLkK2!8pJrNXVdcxT=B~^v zFWX}HD@sp}o8Q8&!cnfwcBrS(RYwvdMoQD`+abX+m_71_2I{`Da^r3Y_eP8qSO0dv z=HW@vXf$HvR78x?JI&BFrWqR8(+rL5d)ye+@<>~Oj}S3NR~$D|njUD2%tuunH=2iY zqR}Wm%$~MFWbQj|5VA5JdKj2i7lSijN? zmIt(B5s#6gm*UgDYDO!)y}p@qAahIEF0b|OyzVvHk0-1ro54K+En)_v##{P4`CBe7 zk9dsc`a@o=GFs8=y*YaW)|llHBc%*AVRUs}D1S#v8GhmP#N$Sa{1y29r_aXk&#jW} za&(0;a$m&A+v6)c5U}0}*j?AOva5`{VO-T~?YGNcg(hwWcLqY)Reo)QsckhwzLkMc zPD&tTb{HJipD-<7xfvR>+zfk{t}(-b(3(Nvt{!dQJYNpvNaJSC3(3S+~5oQG&7v`vRUz^9`P8Xl1uSl51HC2 zf3PYLF49o6UKOTQ<&kH`ej}^gezIFcO4=O}W7PZp;M>UZj);-FHDZj~j@QaMd;p)| z4v&$A-&p18wHXaLVx;KH<%=G$BL%F8$J${mzA74x20|rO5ua^JPXO#^_z>#V|i~+{k(VxG{QH z#2B;HS5_V|@+u-m$^`@LBpLl|EV&OAXWWg0I5U*BDC|v)mY&pKl~p*T;^&=SeE1F(f?V zi8ZFR&6j!LNSe{!D}+Dz5!%)L7z({sG-9OWE=TMBEMlajEsq$v@0+3Qb%Vk^&JK^% z0>M+>-gCRfXdT;We^O znbD1AFd8v(_ePB7?cQWGZ?BCJkCD@^8Cq+*X2#-zXf*1>^e}hjynf!$HM$wPrbFfl zGvr%ihU8#6-t(HaVEhszeS5?hll-rU(PgjE_3(I)G4NwESU%or*Uzg}nbFPOUYqB9 zi~%(e%33qP>az#~YbdL{pOt(U#@a|fqq%OC`c^wIJo}>+zFrk(NDlDE;&)C(qvq|K zFzDBq7i!LrHRK^?r*nFn-Az68R1cU+HnP^U6=5x42E(VxCC%JX_A!8@=^(p zByp_SNO8lf^oeCS1Rjpma$AykXKlK%JbWI3cPCw*5Zm9w{+x8$h$j8P`6xni?OJB5 zILuyG5rQ%Tl#|%mV))R;Nl$3-u|4Ho%1zP}Y9+CB2RFJ)cYJ{lqc_7M#L!(Sz~=93 zxT$Lfg_O-uWi4=&K2+J`fmD10N%nSh)U{N614;IQ1VQSDLWp-z&HW)V zkot`Z^*TDX(Ne*_AVYnQjvcgA+=ffibaYJDQehJNOQiKXI(E}iadZ#!;@Tib$DUd$ z?%yRj*wL}CmI@QeGHt-o(bPoRQCP`C?7Nyh=n$f%ycn=F4GNFodhmcqyUxCIu<+Rr z;;45iQd!dygn%-o1e~;L)@=zwbao1n0EKLtgsi^a@OpgGWqz5TU6q!B%{KEXzdstCu5K zzM>T>Mq7b!*x_!B@2LG9WaAI;C}TF>hsOtyv@vR3dsse7Bjk_ZvCTONLf|q$+aUR+ zr9P+aXPt5h;aad@!D;7Nu*{`Lqfw`5jmz5BIOc7IYh3L^l;v-7m(%D;p3@v8#ys}X z<7}D4q1oj>69pFpF8;yzr?t>DtuJdzoy2L^wUhm{g&ZW-x`b%tuM_1QEL^kbc`Z>p zOG^erIW+y+F|K3C^(w~Mc8q4|mokq$hCur=oYvNk0ejzej0p^xtYWmYV~mK!xRoK( zRg81&7-&&;9cuO;){jp03SK#Q=$xqRp0F8^$E@U2IacNAJ~cL#I2xG3FX=CPwbY z@@{vQd;}+mHhY`=_8kgA+@WFA*X*=+Ag$;CHV?<88VaGchh{OyrFg68=(ryY^^P=1 znuE(k8=f{YK?o=@)UI}ph3+ezx-$=6W4`?>0X@bV0kS+1hI|_a{{I zzk|8Ikz(#otmc{r6Mf@qQi!D5oc>L~;EzbjiqpR-B4j7nf&k5IUVo#LXwu~BCPJiW z8hHPkpC|mOmoyQgMNJ`q)Ve|dX*GoaT2}vtY9WAD)kVWEXl)Atw1H@VD#BSkSi-Xz z*X5T5Zp-{!f2omQJJyKH7I!$O#*cLgac*@HARW-Yy849ZP#tCq7o68xQ_>CRV-o2o z&%kjr?GTsXL)Moi5b|yzuGBznL4o%KB?X-09bGiZq<_vGC4*hb!z91_XfX08J1?wq z83E~$^Qf-5nmaG5lGI2kUEoabV}}i@7nb6@__z$a4q=9~i%pFHmE!Ddr^{ZVYp#~g zOYV>{hk?W2aCWi7MlkF(SNa}Te@FiouEwvr`ftI1qnoSoL03{@rmK--XzEQRuEx$; zcewOKFC-dTB}$P7N5@uox*8`&T&d0;iGy5?oHrad2fI?89q~N=4p-74SL!-vn@61! zj=LH;rzb9X*c|+-E2+ZO*m=u%SCX^kYp&$P-mb>ZNw2w*oUM<$k`pUksgBFrxEk$s zC2w~nCGK%0Pje+rcO^US&{AAU0Y~3fqn~vpJ7*?7>e8KAiA%P)S~;)EaW$%NwQ|mM zoDaE(eoI`foL4{UY7}|imFjjiN?hSeN*v|VoiENWb|pDK6p637bmz149XDtzT*=N4 zg-xQ&JH?=fTxY-LYLs}DD|wi!(G{*_N5|H#o{q~}yOOSPB|E3DcJ*|e-`bTt+|_f3 zE6Fjkr7PJvW00$-$CXqv>M`fViI2L@be8I2MdG6npx6chiu-kkbKSf_y5`)X<>(IQEAn}(e12IzZ=%xu`mX0#iFmz3TdmLD1<57pJ&twK$OX4w}e@HFUV))m}I9 z5zIVr5Jll5_!Tp*@o}!VWNwO3tI#;?{_2;jQfp#_dThs4h*L~IHct`NS=D3BS6QjGuO^16$5*RM zb#k5})LKy!!_=c%tvki^ld5~goXUTI+9!%@)uT%15GhL9DCP#sGY_nNk zniy;F(X94TwN?Esz~)lRIat!_!jDmfhl+bRO^g}G$9rR5IT?J-6|vV1tCcafEOmVLc9~iLp>54yRD7U&gVFGC7v&+WCA`AI2e4l#pA@&0@*^8Y^MFPpTA63+an>uug13Yye@mQ+4yZoqi8Wgr?@q@^66PRPJZj4J!)%b$U_nXN{ICdz67w1b6!oqN*uCm8=PQ zzKYs_?W0$9A@=D){HDv@t?;;n)FoZU<{^)#gb<@SL*hsSX~FLaUGd-#flhe{R6*xF z^rbz`HLpD579uu*l4n^w!%rs9O@t61^OMPA8X?5jq*dK8yLxqldiZbRpxpRVdj-6v zrqB}{-i6}f=b{Q~);k2BtZBW+e!IKFqZc1GS3LB^t%mo+saYQ!8=bOaX`dHyR0Mup z$gn^|2W$-BC<(%45b(kwH1fw85cy!pwk;b@Xgf* z2H##C<)aO#Q+u=pHT#?PX=v^E_=FI;OZ?i74?gc&@hN8odwYpO zWGp1kCQc(xB;H6INgP7FD?!@5X$gCEO@(L)`*g`dw8YtFGa*`DMgK)OiWef|N|zlD zZ90et`%ggFIYat)95%g)2)PY}KSrGEu;b+uhtq$GZD%I~f^$uT$mnm|;b{qhe9)aq zAF;>N3`iI@5+VckHh>rtfzV+9g!%>`HgmuXB98TONdmp;KxNNv0_h>d0mQm?>yqg2 zAReN8jgs5iO!`gYlf;LK${ro`^5gx=9vyZppnDT9CDxVexsviS-HFOR9QH*>ujFO^ zO*s~2_d?l=%Ckp~gptIHh>*cV`nqIq0?_k`SSEnZCE^|ebT1-qE;;;sWU>}&v)9YkgKu!{c5?ji15 z5br^vY7f&%7ZNd`ARexufPINQi5WyFn?iV7B5t@qpXB#DM*N!iDRCEZEAcHNF3gZ# zwU_%yTg2OmO5U%KbdY#Gv92Asy7mq0+JkG!bWMp4BJT50o==Iew*Y!85toFZ|4CGK z4{_E4e_S#G3yI^2*AsCHh42BytBIEqac7BeW%n(S^sj8+5n^5YZ*SB84PssSu}A2y z>?A@J1m1H8@iwB8M}!10!j(Ltk}Fg4h>#XWcz5Doi0z4K#AKpI{DuAQdm?UdkxyOw ziFNJ4Nmc+M5^$;t981Kk3ffJifPBmz5N_@f{tNpluKGdao*VcMQF0~-5wnvBO?se} ze3Fuf1fv4{XA+fNARJx5U)cx3VGC$K@xPTfgIzJCm$%ulH%MC9_xZot$HP2>e3d;s zWk(5o!|?wj`*>h3K|EzY=#T8<)wPEQxi+MiSJrXt;X#fJ{z{%y>T0YZ*9FEa(2{ZD zPuRoz|CV3FcZNJ0QK!AT5kx6(*MjnPErcy^2O1kD&{*q$CQA7`(2&1FIQBiDiBkR! zG=2xdA$JFwDCO@!quvny-`cJvC>6)<)qwUOCfghl85q}F~|8k z=GZ@D4q_HHvXf#_HEAVdR`&?1S{4pwFXYh<<;`lu6nRsp+!n__c1~1FX0Ap;oO0EW z6{`^v-&bWASB}h9EKe8HJAYYxIkL;Ub-&EkQ-5Pp(d7I|lg1Y-Q8MY`>7PG_uT6Ob zsJULG_5g9*49Q3=L<)~r6s^t^)L!?`%9HKA!hQ+z!yb6izyEjgWGbJ_DbRKp4F&RP zFA34xeq@Wa-5<%58CiBb?04bX*SmdbAioCW$v%W(-Wu*;JzY%k^J_?+?0=hIL-J%Q zzjt^bq{_GCVH@}AD$^OFpunvQ};!oz+kUZG|DvHBA2=@~YCE6Uc&wye_`gBmL^n3c}y%0FA z;iSO&@3=pb|5Eu${%6P|uddzTcmx)6ey{?0o2?f;YcH6;J_6Z2F0WOOWKg%C5o z;pAKU^TfuhhUC9yV&R74Ya4{c{8oL_Q2YCR`L9;&4@ytqg*e!Sf~s#~8ZqnC-|x$R z<-l+!rWvN1@UK57{{;?eoM)XpECg)A)|CGOpFaL@#)@?VkBt8-S6BYagueP2a5C57Jh=PP})yqy8cSFWF5So$*VXEjB)5@xfZuUUQuCO+GtWCA#r>v4q z4|sk)ZB?4V%@9=x^|(DeBx=0yuGiZCz|Utq)~1WLd8B-n@1hS&&p1lDn!%0MnBAt+ zSCtj^mI<$Q&{KL!D;XcKP6e#PN5&!hYJKsgXY`U=!g_BrxDBa7*;S_YURKx}7G|*A z3@1CX!hx{RPJ+^Q`jI2DGs>`FG%dZ8*E-0YXG7j8V0{~~evvHcKI`~lG^bkcvwray zFKjQ3YCgkzyt=3|V_(^clD?+p?bIeXnW$vo+`$Hw0qVJTRffUWU(3ssuS?EkOieFgVuB?1snZ19X%QgJiYPIi>Z+CQ? z$9UmWZKD~=Du-B1D0_Vr@?vX3CF_i`&SxN*a-#U0vhsOnjhF39@5J^6slxxVeNBMb ziPIjdU8h?%Cf5=ZH7(yFzvb*RymOxl8 zu6&uhyw*uy=7}S%YL6G5XoXefv%dF~{^Fe9!XMn?3#BbO(saC%Z}XIHaQK5~Jf)i* zQa;G4c);`XDQknrcwv{v`mNV{C2#nw5$h8@)~{x?(o=fMQ4;W#?JFKQud5sZy;h`F zeTD}|&ESuoP>+|);69JlWbH4FZdOIazGN@a=&7~)`l0`nNPbZHxr<3k0 z+h;5*_mzET+>N`QKAKT>ixlmfyD;K0F0O=(G)x!3YNX*%uvLs^Rg;Xb#+az@2|hiUoNRQkZsFMOFN*uS(f<(|^h&N*{Da-}I{ z^DeH67^AXQqqLihky`@Ruhs22V&ur50qH8=rid{LLZP-~uI%oVr|p0GxRK(sy&^_R z)^7Sc@gt``Duh|OG0{`{w!_!!>p9N`oO9QBqMNJ|??Yqm3xxiGHfEH4dL|k*OE*oZIab#CzSZ(iW&4WHH$$@%&9Z2* zOP19P%}xQ;q=tbQ`*CBez15w6r)F7O1C|tE4OnG|&P1cu+Ah&()OzEmGtnq!Uuf>J zj)f#`yigek?jI7?mWa_jx%Z%OyS62N_lC;wi#(+# z9meACbsagXuBPSaY}AsUT_dt7T; zYuiMl(f;9LamHGk%SVT`7Sglfv=*kdEF~I^_6w(#ok2}58zHH7a_MP3l8jsJ@U6OO zt;G#@|8Ngst%cCAKX}Zv)}A~Qjb`r3j8>KfsB^Wl%#22*I^@bSFa4}X`l7wG7p670 z+*;NrDu08;!+VF-r#DK-mJpWymNHd<41RQv`x*Q6e)a3v32ure;{b-L!m5 z%!-2!f5lf0f5n#$f5kzE8I+>HW^fr^7zlS-_LIaeWmx^0Az5jD4Kn=eOzlH-T)*~y zz#6m443(jp%&^|mw1-eLRECP7j~p>VWvEp8Oh5s(T>&e5jbHmPV3n-&Yr6wh!6Lu* zLBN{4z?Zoz5PA-kmSug!{%(eR3nBxIl-!=j0Le>yMtViWXXI=&L%v1uO6zHce5<4k z_7Wp~H{>378R;Jb_dqHcAv)r$!Bg@QtZeYq1AfbqLl?|C&2!%nJ|q3>h}XzHXr%9r z7`c1UI6X$rQ8VOQg4Wk%NyKa9d>`>i0nMB$BmGB&<6rKVXu^~3)g#8J?~U|L@Om3w zeeR7IqfSPQ+~3TQtbu;v5hTST6q!~Lozh?ldSM)2VVa*s4Zr2BXkg$!40P6tBUkDMtSemJ>mWi zGZ^&;KMYu3nZXnA?s0F#$T{Zi1vLUa{$+;NLS7gZ;=Lb*--yR9kVE}8V&oo*7|pxf z8|i0^8gai4fP^YUP@A`VRi;^rG!=METN*J&?T#3^J0Un7F`B2{js)YD%5=#~BSy}4 zh~lEp-kxQBY=-8R8;jeW!PI*^REBP&m7zszQcPX5dxh*JS{WL&SCcJSlMPlYLwhxy zZ=gSgWCw|E2+5(X*KyO@W0Y+;9gTXe@`^+4y;^zc{xe={!$lj)P8g4tm!8ttu#JV# zF}kqaD1$Bx>zK!Qp&U9M!fEsU!E#SHCu#=wnH66-eAdQ5SbsebPX2XBIBhAWr~ctS z*PFqpr{XI|R&XEs6y^$ZxfED#>RpZ{VP8xp#jl-?7%3wh_}|W9q<-XsA~)ANK_(vJ^ZJ94{zh|su~*xZrTyfIzFV?QzQFQr zFO52k#aPkXV=?Sz90o6pX=Sg%;5-#_oG<)b>66;!OE){LlB%%Rea7;Yhtu3v_Db|@ zGu-zl)AB9PEH{Hcn^wsZxpXtFlAV=4Sa}zfzI6aA`z52juzYJuqfTQn_-g{eto4E5 zn3v4pm~u0iz0M4lY_fCgvBnIiEeV9vmSYSU5^lHLU-5+_5S&|u0n`lowwvL0as>2i zTm0I)rnb!|rKNYGrRy)F+c}{q08QMcbDelhei5B92{n@ZFMsLAlV)kTBP(3!@P!K; z7!K0bNXc#$H7Chmy5S@Oa@U|IVc2=!)9bYSy#JQHc#RH7UL#jB$oG{j>w9By5qiqp z^&#I%&9_POtzuVY5p=a~LaRvc=t zoh;pd#yVBAKV+{ep0u#MWC9yUxf!es=gHweuow{gHaQ8#P+^;nOp$I z_InW{We_HIIW?aZF;bG`Tt2c2jV8H`shu*ljnQ{XKC0PRYpfS)wO7+xhB?Dl4`R*T zjWz=YEnA%2I&Qr1Q6RWW+hqnT1Hq524cZ1XxGNCuA!p*S-Zv0DiSLPix$Zu@U%qso z5LU#rs?5+@H(sc;d{2f0Zikh%veJhu zRuMKGR@U-xz!-PwG#M zc#Ra-hf9TgX!_n#Au7w}a3vAeg*`iGmSa4!%8H}WsO%yip(h5j76gJN_XUD;SE8!q zl0bHaF-y##?_o2T{iGRu1B+KPSh6q>ELa{0K8L*h6<<626$czxP?+I9Z^-3BIBgj) z5KfbwXGpl+Bla?abAP2@+iYqTIO6eZpZc{=Ozkt%Dp_Z0pJSn8Y9E_&aj+p^Wv}vU z8#8xdPheUf#l|zKB;W#lr+D!OL>G+;4`j1wHDpk-jHl9Hi@RX}$%a?A_Wjd^9s8n~kYuEz*2TG~dHo_Hr$Ip_cum zCY3;hWb25Q_m(RW>m#FV`)|=`jjkHA?1b@y`Ja&=Xv_NlFxltS65fvb?oY%D)C^s-DiD9D>+&IC8s`(CDYPL>PgIR{VOZ# zZ;f7|(F}rBylmfbE3{?bua+2R`ZNAXPiaTZq)_uwbK>r*>%>zntsNBz`dN@3U*S zy92d5+}W*-{*1#FZ+kePW!HO4y)-(O7j#h1Pnf3G_HYOSzD3TP( zUlI)O2!?k@L_6S%7Sdzq2Z2bGnzFIcVHVwSY&2E0)!E^HWz%D{sMh~*Wr?L6DehU> z;XQ#!ewRQr;dYVuUxLl0P#Rnnn&5*Xk zcV6+5tkzw=kyTqN9`;$^*PhVKCG?@7RZ;KDc!-__%&1>ujFJ+J{Ebp&*6Z!49i)O0 z4YWr5OUzA8!EpXEdLXIY?y^G7(a|o;-xR5+kNQTqXei(tal-O%j=D!!{`EomxGCnG zM0@7nPuIqEF$@TVL)6)C4n$rgqXeVF?hHoVD}v!rb1+=o6pYO3(zd@5`Tvig z)e^LJ1+A~Ei%)reZ84LsCVNZ}U2@*tG>9XIA~@Vm4xQ;qw5WsVwC^T8Cz{#0#VqKM z6YU{gZ_kOQUR3d9cI~UbX4f_vH0-Z!bY=Wt*5A_F+8Xh%r|#RoIpSZU`I`p#nG=YVZBI?hSBjZ z>o4?h7zppfQ*I!9B4D9auUZzcM5iUnM>N}IMd>M&<|i%rglGMQo_qsV-G!~KqV}}u zudNq{iKS%@1tNY`!OZ3Kb!Q+PrBQoYYveu(&nn&=5s#==@rKBK^gL`8uaDeE5wwa| z2O{^;J%W*E1M8GO;wyGLL9@A7%AY8Q}5H8+K;}0s?!EpY1Dmv6NiS9@f%gF__ zT>-1ADO-ChTigEv^+Eo$??Tp*hOtriMcLNd+0oSQGzd$5vSo}}khl4#U^JmiAW}t7 zR>`U2(I)jtn)Aty=F_;XC~xymzUZa&yp^14iGkdsz$zW!NNsa#b&KyL!@e%R<&NMS{;bUT!<7m2ejV<+VP++mdc4#HMH*X zMW$}^WqfJY9iv$zIToT4A|8VVi07j~BuWqAT9gc`Mai0hh|Dfs%x56;28bu9fEFe5 zMns;q?iyLO#jG1iW5SAh+1k*gCpF!weaUY1Tdzm{LXEo5+;lMNPKjop5Hs%0q3|EU z@YkZ0_?xoCte|-{J<@b6jL?Mo_tV6Dr`i87JxYoP>OvY^ecWOeekPt^%%c6F@S(c5 ztmZ%@)H@KVN~#`0kJ(9QKGI?q(o<3&dN_JcI8iq!hg=WS9CAR;3-8OK{ROCf(aF?4 zTIs3(L9>60Sx+BWnZ20V|MwQN@DH>9*YsfCVip`}F$-H{_(fmTy_IFXTYY7AxXEX= z1S0<4fk=MRsqHoO(uF^@m<7Y0q(|l_Tg;?k%UaCBpIa_93x+*F`8(_Z*_!X5*8KIL zcEo2L%^J|0)w;tsGJlKN|7Wv~#_K`t`>X-`vs!ohMiy@|`+qLy11(`+$^go6v!3=t z6YX2j`YQ4w***{{?v3`juGRW2V0}{E!)dSG%UjHXb}eRdyFl%$?$*~Tz6okyiPocH zpUl=88Z-Ns_(W6NC_063etls3L6>}a6tZ>(B2j9d8~m~+S6`AHK2G&Z^bemn^^u@x zs1}G(GW8BV**#FCvud}ye9_UaV7R!R9<*hwMfs|&s@Ki><#LWVJG?y*sp=Al4!bQo z+>{;7t7CzvdqsA%D9W~xhL`~`y z(P8IjYj0#nQ+tSK-Va08dneV0E2G2cc{IuQcbe8Ia=XSx6Eu1(r7^2?&#v9+qN?F` z`J)p=i%I9`Ik}w}xBs0yCi^(c%GhB$7s&vV-FhfG+E}VOV*%}0 zq@uC)RoNzfVb%?$j>BIsdd$@W{0)IfXhT4c3UgVZ4Fmk^BcWxj+ee1BWLxi;b^FDr zm@1Q4BvVxM>P}+3r?r^LE*jxc!_wMR@onvkRQ_B(VN!pWg;xZ_p(QjykR5KK;iPym z6SVe_Jw3d$> z&#cd(!tY-qo&~qi!iQF9bvE_G{>DJmEuLy=4tJNIzKW%((f%~oMy*8ZVqTl>s?GkUBG=>7(gdRoFx_phe6MG^mcdUhd8hbYsJoM>(R>St7&aL)WUG^s!U{*DYk%#rZ*^33EH@axG z%t)wzbxA1vuFv{BV4ZO4C)EizO#!>p>2WS-(UV;;omw0*B@!I|hwa6e{)giyA)Rd0 zN~>Zf2Zytq=&(^0Pm;B28(qGP#-R1%!rGu-+!*mU3)?hD{7owHW}TmUjay%)r?WOs zZ)UGk=2vRJ9UZhpoe5bxg4SPX?!tOTjLE7R)ytuX7)4qqBE^m7rk1F?G8jIg{Spj+ z5iRfDYE?7`!-u2p?v}qP>b{R`XZc@_y2ZO8%fC4oZlO5^f7*uutJ&;D?Jbp|0=Jl# zPoSCjf`kob|9vfHL31`uFeazoMT>DpDqfBb>q&FgX0rQW2m&&XpiW>D7E4l zH|k~qtBzhUMcq-F&#~(0EnC#*Jz2117QkGylP7DroFXGPI=QbrkM5? z6PjYMM$)tfEA%q0ziPcm1H9U*Mm=cl30nU!>uH0WKv=%m3yVO4;fH7pO`~Ah#lI+C z1BpR$@ypq@JLwICm^F`7GzFsWA>w^dM8q2EvOq)(@}VyBr+t_8JVhj^Pu(1}rqYD$ zmTavtX!$qDA@*vY?8HLWx1zq##A7g0v20A#H^@aR+eWGy#ze~py8=`Ch9xS6|(mDt?gOXuVbP`gEg9h4>$Vgy^qfz**O=(SL7JEbrDZXbQlF=bXo=T-KC}PZEq=4`Z82L^ z*hDAZYcZ2DZ>6y%y$Pg~AkBYj_EI8n!xkjH^ z@F7hOWtshtx0nSdTFj!4Xcp?nEcy2HpArAdmqiyEt(QjKhCiAu-uE2Niq6r3;disc zKV;Q5o-q59NeXskQS!`!1Jn_UXO2FBNN6=l?mnSt>6r$-*?NaU|6Qc4V5h8g@6t_a zN#by8B-GeKH;)#(GWG-__fcmWj8tu*CVkl2Q1lv_-%9RrCuX{m#WY*8`!;gTe6Hnk zGdcB6OhyDFqA@Y+zxfx9Un{m`Td!wZ???QN^7T$c)DQK-hYG4D+U-E3xGA9DNA)9; z|FX726SXHIiht`aS%))rS^EOk2WH);e~5azW@jYS_{(-JXdR^5T=yEi)A`V>qt4IT z<%{GuW|^CQi_Xz}QQv6IZ*JNV2!EPoZaUifW-$Dw?AVWviDstItFma1y8_y=tk$Mb zxRK^Iv$h{}g~D&qGbYVoEvlCD$P26Seuth{7SsRKIC|?y87Pa@Olsr{zG*R&XQq*~ zUq19Cm8SpE+SEc5$Yyfs^MA;TdUT^#YH2NIL29=^G&P-?!RK?L3CR^}0<|xXZqtUJ zGCy(Bd^xQWY~^pUDpreG{4DF0EbBzwFV$m1;eTEp4UTBNJeoQp6#j(9&}ko9#{yQf z(;iccN-uWS!l}r;E-RYQH4xq{oLBg?w}aYyt$Qn84_P~W){nKvU1t3t`{fSp;P3?B75yc7oyjjq+voXEcIc9|%`%ruL3T zvcd4Ib=kGA{7b&AZqC-4gW6u2WDaV30#Oubxc%xdPA@#V4cXW-9>8} z@5qYgohfD$5>``{N?4g)yW<1}o$wTO_G&62VQt21v`Vl#Q$(+GlM@~ZMQ5D|S)ZHr zS5q@@9SvDcTIgvlv>{TlO3W*)4@8QW1+@1xdb9qCR>aR6z7K8HLe{SGsY@CwN}|=8x#@W8USD)vYaqNmJKE#6ENgc#yem8W z8qKKswcU6!q}s6NmQ(E~;=GvN_n67?v=Z{|EoSl+e*|ce@ZVeCtoXD|QKs?pN#z&o z!3V9->Y(M{EZ=ctS?|!!0alAu+>m9RP*cgR3*=O?nm}&G=R9(Oc3(8C`K)iU%uSzI z#q~6!EYDk?_^ltZqN7`B5}95$XYKpLXHDG_j8t^V65prBw__~JI_kH!M?{BQ*I3<4 z&QIhg$?;2Ei<#_|lMp+^^MWr@+>llKyNli>F3bsqcTo469p2sMSz)IdKa2U{BlNt` zSv@Z#i06fb5%O{2`=GXyCW1ex*dMTV2B{>4`uj5eMv*m_(+Z|^E5Fs`v)(o9sn$g= zqgm2GG|P?eFyy$lnZA&fA8zgPZ=iwMF27h~mqyKPo);F0DD5zp(@*{V^swMx7l;nK zH4yf12t>r-Fc?j^HR5li)!u7=)3dD;3vZ^U6M9b+JwHCE{phC$#g8aIbE293s6r&% zMKAw@cZ%nL)HU=Rkare+jkWK}sQYXx&v^~vT*4aVk=~Bp1&`tx(kzm%x%*_-zHDSg zZ*gTDShzN59n+eFdVVv_JV$12^Jg3(3z>COsLQCR*D4w{@#45ieN|@po3#855&xpr zM#?E)#(P;-vsve&=kY_di$NQE(vlCtp3R}~XEc%$hRWJX<~#X$fYxCMhAWzBbekPM zDyJ8wH3XxRT>iT60@iQU#i8&XpLHZ?{m^EnM@xE zP;)>Yg5(MxsX7^>buV=bE*fxDJQuJIs2K-;#;&0C$-*UmZHF*`d=x-h&AMzcd0V{N zXHnv1L5k9Ac$$b1ZE9zlv;Q&TZ!kACS)oPI(XHmDSEFNHR+JtHY8zeh4Pq$#SIG|#YCf=~h$0zy`S=ujwum~{_7H^wE(ahz6NY!eZ zqoG_1MN{vPk66)!JLxOmNbw^1YNJi~{&fMXVuP5g7CT;KSv$?;w^BPU@+a!fpidU) z)!WjL^|Rl4HJUmy7(N)XzNeYqguhZ}mT;?2+a>%wmnELCiV|oZI62{d=}6+94Hq$39f#|Sy6?HV|tldd3F#?f_4T0KMT@n8} z`Lt%%(-b&mj+osY@C=QtB4TJGChDjl)0|A*i}b`w+Y;M(a|_KA`5R=OSpG#KTj+9n zhLs;#iF!_7@zDH)722StiPi-pRjW@KFIeJLk$6!?%LxX;6^qguWi7Wt%@L73R;Vc$ zQT?yKkuuOvU!Bn!A%U>Jnfd`WVU!(BXcyFe4MorF8PtCFr+pW+zHa+|AUm4biHdY^ zg}cQp2tMZySw}LPO{LMXKk63~M!{#@A?sarvLGRq@*v5dLBsXn zbJT7Wi2#!mIs~HQjfHplwBlx;R!jr(4cXfEfc9#{-$?a+);3?pVLyEjl&*4sj5k2; zI1=%%3+Tdh0n5K`Kn04Mm^L!&n&s5E&+@N|h;QlYeyQ$f{Sb(Rk^+(Z-m3kM=?^IH ze3ASHv;Ibx*xNzO&eJPOdS4mw*9XImS=NtPR*T=<^jg+{?U<2WC1zwr(GJqSG8L<* zHTdhktG+xt{5}n7eAeNBwO3@Q{eFZBZ0aZ~u&F(%bs#Y*wI`W0brd=D6mzm~w>DMm z4{F2H|*Wyh1)7Yq4PWgXV_aRNS(-&YBN!1shk{%jQ)BF<6 z|DR3s|6&+)CVh}5=l?gzsdh2by)TQtuAs`I(}2qtnfhPO|9_ZeeMgi8P4?Va&rRM*ir}_Wq$%zJla{m7jG5`NapmwL6KYWem|6lc4zh@2jNPZ*ScK&}? z)_{+*TDSW~hG_mjWPM`Ry>>#r>lI}+lHaiK64|U;+o?Y#TjeKNp9CURy{o&6`AYZg zEoOnI#Z30dNy}aC);BA@3~Jluoc|lX$kbJSbJKpGmEY{o_%;~H-&|GXuRCNer{CzQ z3Y;B&ojP!TT4TuC7qpIIK2W~DKIwfp-Kw2<{ku2jefVb;Z+>$nmC>9~_+@&>8v8z6 zzF%(+T0d5Ik@0_mW@WaV{{8pY6>rGuY zKG==;y9A>>=zGr1W23{CQRShjlI-w)N*Jm1XeaAa+xPR;8QI|-fk;J{Ks0ly&-x~4 zy%)69_vPZ@$4tJA`d%dbKtOAzvDu!AgF(HxDWtvWAFxAJqD?;QVC`>OB-B75noDRu zW1n?6Lkup>Xu3vIh}$ShX8pr1##(o0iMKFv+P!wWD_Wj%!WRvuxT2XUR@J(!Xn`vj zK4=d;EdK_vJ65R4s%W-C4c2?K@(Zi|O}CEutT&~N+Kew~=C`^c5Z)IIHwMFR2Ezw@ zk>YJMybVUGHcxAyKFqh2<{1lochJ;hvTuc$fs~F#%JEJ)ExAUQFCPMz5eL%iQ%@83(9Q zcW;w(IrOBy+-L1uxZJ1vn`z2ieA!4}SZ$Xt7`K^qSBiIsVz{RHR|hozBJ_B|K9+x7 zB-9Y`*ALh(-$LV!@K^MH=OS8vy41K_h(Dw<=8b!p3*H#Tdc|=gQGsx_MK0Pj3{kdft&BMMQkM#(iMBt0P`4 z!}69}6Q-ww_AjSHyDDJ;d4J121i#czxKHY2I9enkQ7s{$E@?luJ+9sFHviI|Fw8sxX&HLLk=AxZe3fePvEq${4O?xJmrZbPVXN;_A>Lz0!k)P7` zjGgUb%rs5LvPtM}GO?nvd5+203K{Kq+OSVM;MTMxq+=RQ#k5J!0g)bB-AAV9fJhIm z{*y@0ymY8b+OObDZY1-*+kBTZ)}S+%d>3czDV?z-S|C#dZXV=}y{j{3e$N@B1&~bI zCWKbzN`8pTJxt6CX{`p%nCWZBST<)YWfqz9Hc^^a(Ft0M?==!=>8kJKPw(UD*;)I@ zt!ZY6CxABg}9Y1Or*r(DvZf;0MTQyh1L+NbX1#hkITDO};> zZ#eU$^6{BFm3)XT&RK^X&R8=}^;41ghdX%!XDr*pSn?#!*sUa#amF$XS_6)q=8_vt zdM)@|JI0b}34)J3jG44h;$IBL%s(^6UMFDQZ)|Dtm= zFIyDHnAx5dnk1pC#@J^hoT)LU$1`RQ))*U0LZ-&pQW7R|n>}vQbQUQJC zP9DV>>y}7)Kt878jJizwM*6szd{8Z=r8{Xm6XTHB&Sbe*l2U9>GF#J(PpD|krivX=5Ex_!w((ZskzZ|bnP?jqI@5AW7V!o5I4#ZTXg-@g|P$?ywp2& zV=O^LT^FqSgc(QhSPtZ0@i!tdUfv6NfrybSMPKgN0-BLm3$i~5;T<9Og_ zGM4h2?d6m0jYOAo3Rwp|44le>9rKzl_CM}kbaw^pK%UjDG^5>PdfDp z@V|`oKa(yae2nzf&iQWr8B4j>(J$`LSdVq2w@uK4P5?{k0(!9k50CU`teY4W$P2oO z_1qxSS{X{d*tw?L=r%HSY06Jg8~JY}j}=z$_Jkud*4;~?Zgy#-#WskHeTp)z%JOCx z)#$+;RoRt#J?WyXZgx>w{g!l57Ns8S#8|>NGH5!#f%GG!KOyuzofu1;amp=a);=w6 z_mdpY z0;GOBg?7?g6dW7^mM}M4j`hX1A@9V;l z!7>6egCUCyhAgTeWKlgKi_C^BG8?j}f>LIzdlH#wp-XE(qdyE*R~fue*n3b1mBCUU zN4m)1g(AZ?kuEY=>U~pH220(a%2?w1Q*I$Mv`XCImQ==ih~g~uHW}K+L1vJ2c#^IV z83Yd^gG7#3iyWt1ml-DYgpLeGlov=NLKbBSvM{KW8SCDe40Ob$EkbX38&aVRbVS7e z+C*g_seeJbFwhZUAYXfBAgMn`x~KtC|A2H+1AY+x&oUWHXrWt6ePl9YiO-%Ag%r^m z9u*PTYpTXi>g|#k>mk|%sms<A#3{QA4F(L%OI?Qh$JSQDde43h9HL@D7tc z)Y0QRFxE}fXc=MIT0#~T2(rj~$Rh6{i^>F9R3<4i)}<$9%q1>OlS7tEM3%{63S=>S zxkTiQ9J0W@&4UVtFImEq9Hu}PrFyh<7b615VgLeJj3h1SvPRAS3DU(-M(Rs1WUQ+g%A|<%vSpF-kx`6w6~h>u6GIp&Uv?>Di6y5* zRSsdgiHI)AU@YYsDk4(<^&&N-=_Jli$y7s_t{OETcatuPkUak)>0*e|Mfk57rG_va zh5j7rVgw@f{LyLzB6Tf`q0-9mR$Qt^B=Y=6q>Bz;>Lp_sOA)Q2^uL63QFNugmvm9d zr9Q-`hDyb7;Idvyf3jXe7IhJ_=-42O zp_aT)H!)0;GGk|)PsO-gn2tssLzrrns1?An8sM*ZKs6ZOSI1O$@Psi#(IfzBvf}gW4%PS3N=KkC^Z%2`HpnP zdW$ANsG^JRCR#fc&y!ip26LyDqZlcH$Wgvi(#L&+MCY3uM< zQi6CZYdl8!>;08Agt~Tsvc_X%jnKKu8bUops<4Jo_ngOAPtlicB+r@WGuBgdWkUVi zK*kc^Kjq%NLZgY6&Wnl<%1cE6NN>jAx;z{DT*>9MUl@^6!|Pf#$2>D zg4^APY}1F#*_XB#?V|VUM?Dfb=)Gyz(S8dx#wd66KD2{yzoi;u^bD@|r5%J>pWo;~ zP)pX%YTtqD?US{ncHP_mqb7l|wtIi7T{hivmrbsA*=*7$NootuWVK0XinA9ddFXKR zKAWj(Q_+rX+~XPRF!kW$yxi5hFW=O=5s<7cv#qK%GYtcMd1+Qjq> z=LX70PschG(_W5gNbT*YbbTMW-D%&pyPEbpbyrjN8fBZ9@ILJxpja37wA+BHlhegA zy6qS(f*=olpI760yEtQ%{=)(zM{nSVIM?sIB}bpU#(1&xf$*PeFVH&{9M%_PPS?wg zHQbZMx$!dhq;viV_uS999&ZeqqR%!O^lsDU|Ks8z+@sHQ4bV8(yBgEDM=x}xYh2d{ z8NGRj$GK-C*YuCvTWQP5CAjhC8Y4$XIjV7+U`X_UKoza);^Z&VGNZK{JHm}G_KIcP7{zt{W+R1jSD@RH!WVd)@i_Om&g(!son~;?n^*9-1IBec z!FY>z$>9m*JZ=C_&EauJDI6n{YkIxcC?H$D$a%ZC_uVe;*1xKxZB)5_m$yLZUsg8o zvrF9?*Yq`B@~qb`Jjy-o;`BJz2#s^s#Lfq9+rEmVbT+>b3^i+Sk+9(&6@EVj$=XWqxa?cN3e^`%S z%ss9%J9DqGihEpH?YVa>_gu!k#%At$Rw&Mfc{k&~B=fjUL@=6l8O+eiKF2 zyODeK`HM-)ypDTm!&&Z`!joL*Py{F!X$vdyQpuhfMDMh-eJr-mitQb?&$K>P2=%;GP&#XUBfj!&S)??7#(>0<=mULmd9U4nT7vT z$kR05fs%F8yFA6{O`8N84Ln{?q*ltK&y(^%A-hJAJ+JD<<8R~MDjt6&_xja;;|cEl zipTHd-YeJgczwY%?p;PK=ic1wc)WhIQNX=E9Z@_Do?vX{@p{K;oa?2=QKJ`+*U#8WTN4*>k1^O7%)R&0d4uZ20%IC^ zFotul@lRtgkN<(n*H)fN`CE3Br%dBs{d{VLySvUz;oc_hso^P^+++B-*EO&+_uTd7 zKe_iH_uR!(%DJw$H>g6LVNBy*<2LT`^LRbZpo|=lxL%qwpL^5(#^b-|-V)v+hkJI? zO+5N_#zr1*{1q8t_(*V_Np>61na78?_j2{$_?de{JpL8#4OQ^?IU-x8aPQa(9&cR0 zy_b^pr~pKH3e{c1&r_(o(bJ4f-t}GXS^OgRx(26m&qepshR~k5JSmgw&D^7RHIDN5 zG2Ely+{ELJhe&XpO;I?n6OX@yqTsokd-b?OJpK_8hkwX87U!mc;iv-9m3=1a_;; zMkZB}M{lC-r$rsfpo)BX>U}T%lY5NroZm9fxPl^>$@y^NR?f!}MN2!#7|cDc{?yiH zb>beQ2j{Lysob-O^GfawavtEG@n3#P-JYK4O4FV*a`TOT`hs_tWvra2FUT~?jKa%* zoTM)(ShoAtwb@ruQ#7B-OTuD(LC$1-L5`kS@HqGC*Hbx3&RPEFvHF6={2kDY6|&`;c?j z=nlKN=U%QoMDhBH9TM$coGVS^o|Y@PZuFt3FDU1_an^I(WBkUu9^#(GKU2v=`}Y|4 z+$hSa9#6(HUf_v7ibFY1{43ElQsarYlXQs3ALiasJU+k^jZRc)5{*}Qe5isa8udJW zEKj_f$A89CsfJDwRl}>NxX#gdd=^znkL#=s+?&ngpLmHUj^yzderUAtMB`o_KZGY< zMTNX$4p}C}pcJMW(~K3|`#6s`Zss1>KyxJb8ohWTwVq^-Ceb2N++63FJbpA!oWkQr zzd+H~7Z^F*`}Rm4KaY1T=iX0wDmCwVN2>LS#zIO<15Y$Yh~%BE@pxBSXPy|M1{wd2 zFGcc>$kc7%@k`h8#P4|gr6Tm+JU+}*=_ZDsr^*W1*(m2-sa06~cYS5eyU%m4{xhR? zYe6RWtmR(gO77Xm`Ng7RzQE{abl~1U(71W@6p^TSBZtT9U8sF6ah<1$2DUdfu+wSa z@Hf@Kb`cHi&1hgpv~6I^PibHWQHR@ojc8tyUFHaavmxf$YD zj+5HGAqTrSXl!yR#3vl5Mu^`#PAw31G07%^?*MU>;8%oD% z3^EF*y5mMvrjvpimVF036`PyqU1Mh z!{sU~sc*VYSFHkw4Q<^fZBP`OcSS0si|i!R)=eiJvtt695F5}06%g&1N5^S4T>oEa zC)zER4*HmZ4vpo~mXCDwbj&0joMQk^o&WE>%)qJpZ7<`M-JOCPQ@hk>Z0g%IjpZwG zyKRpc!>X%lZ7+FB++{mWP~u1O+c~OTN>pFX>8x@|OruR(BGRFP)c#}W2kje9racjBsvC*8D>0;s}h|gYf7fgR_V~#cqMj1(sfq3szxdH_oT7iiQ1O_Ej!6ml&I38 zv&xMzRl>ln!%nnpS()F(Dn~0>1$MfuP+@hqlM_>H{uicL-9?opjpZv*MN(&#+hS5Y z2(cS($Fe|)F30HWYm~y_s4?1W@uY(`bEbnf;ibdHl3YsuryYE;5>>Rwo4mj|R8XsM z8MCFw?0}{yvB|z)WuB7NO*A$|iRyl_$1Mn8krTEO)kQ8=Nqa4xbkL^4bo|x6tmLHg zj4|~QFn#JwhsN@is6N^~P3evK;y1SBlp#R-liye`>N}^$oqH?s?{Lytg`M~j~ z#6`3RllbXGg`2e3fYpg(tKif{&AI>>cEOsI&jpc>B^7KSdV|hxfML<+JtCfQ4*;!4{oFBgd)O1o`|!kDMT z=isEX%Fn8ma)BMKJS93YohZX_j+Ka^Dq|Y6i<|n=?sToB@?M3Tksl>HcZS+-wI_dOZRfW~aaG)T=IwxvJzhTvcx0ergtO zTWa54yqj%%wF} zV7?j?qgkiM=nZ(8Vc)CtDx`X%oqF26{iNfon1HW8={#fXJ9xR-4tR?CS;I|sz%jY{ zGp<^1Uv=H70Vm?ra@$Kx>#a)CN4A%k{8Q;YXnUcpZ%;Z@fk?G&9ur-axNf!=?5pV< z4M^-i=*tD!lQ<{kp}Y)JKdfSTRS;_(Cnes6fOJ;5zD6lO*`dcgLaWdR*g=g`;(9pg zta3w*Ql7T`c_Ij%{j{moE0*3eJLfza4PQNaX<-^A32S zMn}ocWij<24k0JnH_KI``r6vXDubuy%kS`>XGbWeqz%WZiME%R0-!$JeM+H9Fwsf8n)z|wvtNfu_DSvhRDN+5PK=?b=1S#Xu{wNl2yQDeDEY!m+Be;a<1ZJhB++-nClL5c6#P7{^r*d}IbO2ysr z5>uXHy~K3n%ABv-d6i_#PRKDuZYvD-j%~Q`EX4jvI~6g->3#TSwmHJj!gs(f1Tj~A zj;nsM?^WuC?~CoLV%qR?aF12?y>jn{*e1)?$2@o}M}(T}WW+SCuj5pfefJnIAH&O1 z+e=L2dI(+y+g@V&0{X(7jsdopm{wd_;CkCjj3rbw=h$9iqN{#MrhcBKv3w=w;?0J} zCM)p|{FYW@#Y!|f$(U*^Pl@y!96EGXSzn`+iJfhKN?Zsh;ZG@BXlHOa7F6QGGo+LB z2W3uAd*LMfDJ9xV`72Q3RO~^nu_7f#)DP)mtCF&i`n|Bm@|1YBZJ`NDd>zr( zS>>T>rF?FuX}l8E&)|eV8AIn#xAfTIk5l5+v;nO!PmvOHom+0JQOc|KEsKgH zp1PItAk3+;A|;kOX53bzltH!`iUbr-@1$#0 zwNjqyrqVx7iE&7m#wIB-!*&{{#C#|9tE!cC|2T5$F>`)m159#%A%x>S7JXn(XgyqDV25!ELP$pw$nHz zUSa1zkrMB)oyI9~sa;Bol^C%r`$Q!=l|5z_@F&rW|T9e?={=Q+*Qk{YE% z?3$6QL?3E~xUW*i+0`XiiK;}L_D$0@$mdCReos*10LPxoYLqhAwr9Q)+k_wc{^weR z8@9tAuf#UjZHXDVsaEYuC$oO2Rt@^^PB-;KwNfV8-Bh6x+uY%Ym>zj5Vl=~!S*{Y> zT-OkD-A3eu(}Bc1Q>w`S3ni0g^OdaHbdBXIaTn4^-juA`SB>Q=aS4hZc~kN#yEx`6 zaS@6Uc~kN%yY!4#;@fZ{Z%Xdx6domRwVlQ(akSn17Anzce*dj43Z0BRT&)z9p&FZ@ z#0`j-=sA_**g9q&bS|=Qs9k|$+BEvPFddGUm z-^2#k=Uz}_&KjxeymSR@9Vyhi%2&8Z-q?v5Xnx%|RzL(6Nq7$;08Mv0Np( zoY=dRY}m1%tcJ={abtSjq+~T_KFv$@ZLs;-j-fRrJB2mob%(mFFY<}m(m*?RN|oq@ z6Z6oj!Wm?Tqa^2|n5Rp1Qx(4UKf0B=>H*wJW2H*$Y{z+;5}iVJof7}M+x-vH@n3j( z+>Ufui7Hweo2tbBV6)R)C0iut_!mlVJG&Q~?|>6|Q!=fLLWdUnK1U_# z4LeDBN>o4k)LG^0)k^7Rrzu~F>)<5(DP^DSFE7V4 zJM7TMDe*cx^dcoDC@Zn?(;*tp4G&id{CO5Eod=hteb^s;X_L5WTrVrF!oKw?!z*PJ@9eu+(0P2So$l=n%v84V+p?A$G8 zhW=dGG26Ch$ta}ZAy8w}o!iJ`1bnO3MPpOa;k%=q*qI*sIWc2w7^uZge=1YH2vh2; za&@&*j@tIkRfS4b7vWEa?i^pif2keun7P#N;l+t%%$vdA;N?;~l$c4|R(QF>_7c;$ z>o|3h?Ip&D22PEzy~K=B2jJ8?+slkzFy=flI@oU>@k`mt?ATwNJml(^bIr&4|zra~)H;-cZoX`B)hN3^+ADZ4JP{Yk+&l%=n+ zZJ4LTi0w2%iNC^0XO#^#N_omQ>@`Y!045Xul=8W4$7__he4vbp@TZiuaMai}O8k3U ze@fY9`^!~g0jZu`qs;zcNe!k<#!w##L) z690rkDEukqMcZ)2N*v`FZd;8~JhnlKmDtI4%2lGWmAHjc0=D6DmH0jitMDhY(>ati z$J^E%uf%;$*?g~BDMxL8xj#Wv)EuXeoz%Zqt&~A_>hqNNl_%Fjb0zc1#PDc!y)`%{59~|wT)WOsQeqp+ZvMBH4cPH0 zR3bw;6{8HLTxl2HTqWLPSI7xU9OjhM)ip{9+2u4}iK@JcTPUT~_E)IHN1XD!x<)B$ z>=tyg62~H^M0iTsXlGx{z{rPGtF}-3Keri-*kyI%YKW&PbE+{ssb%bI*Lu5U%(E+a z%)_#>x$4>fZzs?GH+AyL(yFP{oK~|lRW1N*Qi9LAgr2!Wm=K*C?gfu1N(- zJj-e2>uZ$qtX;hdl=!sMf7aJ1#Tfy{e6#l`vT3uOUAanZQ#d|~DI8D1|8w?rMM`XQ zUF=&^)!~h|%fcijeqlT1E3wqh<4H=4v%8smCC;>+#wqbB+bLg(E9^|4q{Mq{r(z}2 zT6T13Y?2bMw4L&mc&44o)DDsTnJSth` zr^a%3A;Hadrj0j{$iISgrIMYY!{j7n;2CyCPO66J4D)g?hbg{sET$>>N4RNhaw78i z0^}s!Q^{(Ktg+m`!+1_Lj+qx#)#@GFh~w2mg`&pB-voO)28-#ImFZQxNSUZ)WkB)b zTPdoxlgCq!&k>t)8D7ptC{(nS?1UUM z0je(Rs1^mWrGa*IN|oq@6Elyi!s%m&qa^2|n2G5BftLpmUS~Tt)0F762r(1SkK-!G zOH73S2VT_Be1(1QiAr?xvohwLAbqYNe_1-BBV)7>YU$i*<&$ULaKns>Iiiea&6zWE zYVTn1s!;FBsdML*-7vfNutDj)`-f+i%)V~mu=L@Bh73x-a6s?=Q%dGdE$w~7Z0UFC zp!9i_vj^CVYKGb1{CQL7&Kq2Q!@TK(eK&+FW=)-4K5wvZYUR|KH_Rbr@bt22WrL?y zmdqSHZ_d=IHw{c1ls-3{Hh5;)6rr=(<#TVI&dO$&i%6EGv3YZDnk?cw?S{GYOXik3 z4pU0PGfs9Xn_X7!oDa{OS~8c3U?)$TJ9R3XRyuduwDK}ImCT%ZLs;BpN*XJjTT(jZ zI*FkY=@P?)mub?=H0foUJU49^3r}a$X5LUz&cbXqn_t4prj>-*>}hOv2`ghW)7Z>( zR#tign~}z5OlM_tSlN75c2hblyJ;vZE2ZXO8$coz0$7%1YBipMEsr7znnc>qN8Tgg84^#`8T#YpgPCY&}caLUl(IqYJ zXXuaiPkQOVQ^l7!?!zx>aSwk<>8D)3h<>N|@BZkP6b)JpgnptQn2;5qXw&Z*>E{~w z9h_LKR%7z_)pVW~RiJC=x2E)qJMu?AnW7(@bb5OF@!NCQ{d*S7+FbwajN@-SJ^lER zXJ;JWdGx-4&wMj>@am_hA79YLlXU5n&Byl-dg(>u*%`;PpPqjF?x&|8f8)y!-c5aa z`tgoWPd`qZFVlw1Khf@QwC1wLSbvSN3pK_lk_8%L(>2Cu4JO(nm-aBGec!fejJ>YO z4amOL7!&(VFvc!IV#Iz+jIm8v0!3`f#2EYD&FrNa#C`;fG1|6`4zX-MW9$O_E=+7- z#~3?^FvNyzjIk>C7rRf<`Yp&)v0gf3>;!(1L;K#5ei<@LY#2sMi6cC*(Gz3rdY!R) zxQQ*E7_--g5xXKW#%AJY?_w2l$_sqVEjCqSjD=9n#Kt6yv99=uq}YjuF?Jz-ysGk^ z+~_zp?doo4e{+BJEb+*{3EwGG+Jf;+yD3RaO7IvB8e{Z$K_62t%cs)X+N#!NV_EH!mb%6y zwhPsI>f1&6a`y^RtH?iqn!9$ zT5HFH+Phr%qn!Is;ZnTa8e>CfoBP(*R?5kf{Ab6ebC|~1=2GdOa`yktKW%%`d%E;b zIen7<+}Q9}QTP?oKjr*M{!e3f+DkL{7U`c#!b$#56aSxRcfcy?pGw9_{!fX|w`rpN z>Uht&jCEyf;4SAe)}66|W#>xw?*}lJ$XLh2XG{GvP^UfO80(mwD*azXyXY}CuqSQ5 z#8}7LWXT2Kx+JNu27fSRxCZT3#8^kV32~-}v2KhFECBb@&X0_Be5swh&&GE0K1aB8 ze+7KoE&A9q9(Oa=g|UHmfJbyjz45>&bbj*=P== ze$vI*z}e8LZ)A)Oq+cs*jJ0b3dw{9n%oKUP6l@Q+16xda{u?j=jt1XMkmp|ouK>q@ z(Rg{j4m=m^3vTnu^G}1>U=}#UBhU8-tJ+Du0z89uOk}KGNAP#I)LXzWz)!$;z&Aiz zMvJb06eRnT{w25#d>Xt9TnWwxZvdx&6T!jYIpCjY2N%ZL-42Q^#u#gNHS`@a|JrQ@ zSAew6Ci$Z|h(yNPg=Ejz&VQM7zZgshX}cKmZ-TU)4C&wcC26}E(szT~!Dm6*o`%l< z8KnJeNS^~v2Pc8F{|%iV2@VDOgT28{Anl(+{#$&K-+-TjwBHV$-v-itJfz$bUIF6D$D> z!LcB1AVvPq1N(tpz$DNO{*fj9{|J5sehj_?z6S09p9436>%n`$25=cz1y+F9gHyn( zz_H*Ma3nYc><{(;Q$a6C`%_W+zZfm~3HTQH8u$|U9QYXcAh;TA0GEIZ!5hIcuo$HM zvgrO7f$88mU@tHgOaL|T_$BiC@4+v?55c#=Ca@8F2K*cN0C+dJ0=x}e2$q9oU7vcg$Ubj@uYoUtwEq~LzZ?7$cpFIjmC^Z9un4>o zyd2B~hk@sSy}(p30c^ckhIpM&p#&EP8_?GH!xeE_8W<4CUpE5PeP+Ha1|Uk+XZ zri15#y}-_30_X;hjg;XW0S|#6f&0MS;NQV#!NtbHVGu$>7ys5cGi= zU>bNf*c0pk#)Ax`{rSi~AA|3JuYo(jXTZOK4}f=rE5O^p1>jupI&d;L9?StR0WSd0 z1^a@XK@)U=zhxj_z%RiMz_-9%;7j0>;G^JL@J_HEr2P!ZK4oADm4}+h9Z-aZlMsN%G82BK#8f*aTK-xH!(lZ5|2!=pEcoCQmo&)v*Q@}W| zb*K#Y82BxC2z(#h2fhma9efIW3|t4&7jG2bC|CzB0Ox|&fs?^JFbHOW8Q>t0UVu{g z-9g%Dmh@lKC28|Z(%%7TZ%opk1Rn+0fV8zHoxcT~2TljC1@l4LnUnmdgXe<1z|LR- zNE>^S|HEmLpMmdyv=69=ANVM^7Q7Rz2bX|1gExZHz)2u|a6;i;0geV~Us7^E1MCRK zfiCda5b5s-cnJIm+z0Lk{|?eNs1*J^;Ge;zU^O@oq+L|We=ZmRM}kAa{$OvgBS@RF z()C9NOMVT03LXGo2VVxC2WgL2y8aH3w%R0p9!NWJiui%_%?9ZMLE6WY^f-{dQy~4z zL6V<>`$5_jl+Hf^(x#!LF9&H)QPO9CwB;!20g!eiCH*XrHY_FG1=4<|q<;*)1HK0C z0G|PA?^W{uCy+h}BE1Hj57Jj*&!z(0YvgH>P!cs)1;yc)a`^ntYXEQQ|(> z($2Qzz8TyA-Ut2#Tm~)zD?s{+ldiuOEC55GAG{D80-gn)0j7X)VC%Uu++*OkAZ^S` z_uCC_2cHEW2Ok7!{+awQ2bY30A5HG_!0F(%ApJyx&eOiY#B}gn@C>jc7zet*V*})M zN5F&N2jE_C7f3&Mqx(DwJ`B<}#pJ#OTnNqqr-Q{{K9~(=fg`{{U|+Bs*dA;L{@!2S zmwwJg_x}?76xFc zE4T)%1#baw0Ivg!z&tPjjs}N=1HnEZ{j8ntf8s33U%+p`&%p!WUXXrMOV@1!p8y{L z*MN6`w}Xqp`QQy8{mPcYD+0%X+2FZG;1+N* z_z-v>xDvF$YOoT#9-IPR4PFV30Y`#E!2Vz&$ic7s$#@?GcY!Z~PlAtvYr#9g+rh;k zt&u?Xm<;BDK`;x<0BH#g@_#ni4NL(&U~6CLuLb-D{0w{#d>wold>(uPd<*sjBhUW=egl3Ez6-tyZU>(S?*&(Z7I-UI3KoImz-%xR z90m>m`+#onkKQt#KZ0L@AA$S9-QafcX>cQWKX?~d4=w?325$sQ!6I-Rmjf;K$%Q;A`Lx@UP$+a3yGg)nFx92#y0U14n^r-~g~E*a?gWb@1>RGQOXI z?|^TBJHV~rCh%eKUT_s?fwzLRBqrHyHdq1{g0v(coxcpEr2PNw^!H>arz}LVX;B(+6a6L#%J5uga3NR@UJcSxgXGT#W`cvkbHE;8D(C@Q zyUFW+0>1@61rLC)gD->6ft$ef;Jx5V&;nZ08>e-2xs4 zKLg(Z-vApyTFaU2^*8V#a5dNf)`3;v9B?{V4CaFYa5Oj^90>LWyMZR?0srWNd;s4E z_kquXkAr^(Bj6lxIv4`|;JIL5&;z!1miIjfegN(TcYzzh_26CLO0W`~4TiyMz|r7^ zAT3)*`EV8(2fDytI?40jgKvX-z|G(WFbdXz3&6SHb>L($52R(mDISBtbHE;8D(C@Q zJ4*jQf!~6A!Cl}s@M-X2a4onBtOsud%fLzCRUj>eO!2%FyZ{^wrh*CJkEzl>eWyv+ zy#c-gZUvtN?*vzXwID4+N!QbosKf#=1p2{q!M-4^6HfkH@x9Vf@N1A(z^C&Ez}LVX z;B(+6a1~e&)`0WDnP4ec2#y0sfP=seAT4lD@%RDXO&tc`0AB$g1s?!!18YF_9aa(a zEHDEc1fC7XgF1LPS;pft@E!0C@JaAda0Pf9xDYG{%fJ%wDsU_~1{?|Y2D^ZXAP2ur zlJPqT9su`(FN52_`@y@w<=|3~_RAo^`+v&1_t2WdIF93w&SR~!tk_y^&225Blg(OILlfDNXf?N*&Ng$l6*e}>rKH42 zSu+fyxn)fmx!-b$uqG@NnWU|jh)7#W^f|xx@0{)M&+B}i%WprwbAJCl-{+~pEm(zR zScr2`M;d9~cpQm;S*O^GU$6_G;(a`W$FL6fU?rB}3S5kS%)w0bVG52$Ehg1{_px5` zD|X{se2G`_Jf6VAsKc0ay`5N&MYsePqRubV_{o@zNf?J7?D0C|KjK5YjTf*P8?hcY zVg;690p?&9PQer$fkSaH{$V}oCwzy`@iCsmQ`msDxC6K1IxNQ(xEQlA4O1~0hoKk$ z#yZch7r$T^zQT6Ah&t&`-_tQXfSYkWmSO<&aRKIF7A9j7#-RuMSeN@9yRj1=;7x4B zv)G6_b5Hlb8@FQ#7GNIgkVlR8VJgO<2m4qj{2g^xrRH^F2ezTsZL9wp9>F@?h1;+i zRjZ?UMYtSiVkS<;38*tnHBXDa8Y?cVY*&;a$9jM{z&apbFGvy|tcS<9qNKKEf6}iHC3> z>S%J!UyXU_M<1qQ9C}c-jGF%qyYM~U#~XMY58@WALe=f*dWAR#voQ@PA@z7MNn|fl z0~gcHI`>ZOz&5;tSMUhd;YO@LZSJZ2(|Oub`_@T6&O{act6kd+NbPwmb&8}^afQr9 z?Lw&a+q$!PbI(dzjQH6|ae&IndUtLLtamio<@-8}DV zRNbMT|9o`6XO#}BUA2sIEWbYm<&U)M`6}!GDOGqY3(@`lwUfEp-QS05HRA`FaAll+ zr^;?6oPNK`Ze`sgvRkRAdQ*)V-k&N z;(q4Q@1EnV_gDRf>#K}O^WA^imsI_g%-0^v>US$AYv_MLzc%*hH{HyL%1fj2?5J!4 z|7{ZxX$kKW5NQf+6cAYHYyl8hSy5#IRpo2@4RH1jaJCJIOk)cI->R~Hjqc?Kw(2ho zYzbX5)TGS@g6YPw6f+!)ry>2tZhL54u(~|W=WLNMH#ZPmU$kb`RK{n7FI}7-`8X}| Wu{8WK7#SOkj17hc7~}PNz5f8Mrq)vc From 1c0b256f92dfc4cc8886ddfc8825891bb5107edf Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 16:22:54 -0700 Subject: [PATCH 11/15] remove echo cancellation from audio code --- interface/src/Application.cpp | 11 --- interface/src/Audio.cpp | 149 +--------------------------------- interface/src/Audio.h | 22 +---- 3 files changed, 3 insertions(+), 179 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 34aef00950..59c4215cfe 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -959,10 +959,6 @@ void Application::editPreferences() { headCameraPitchYawScale->setValue(_headCameraPitchYawScale); form->addRow("Head Camera Pitch/Yaw Scale:", headCameraPitchYawScale); - QCheckBox* audioEchoCancellation = new QCheckBox(); - audioEchoCancellation->setChecked(_audio.isCancellingEcho()); - form->addRow("Audio Echo Cancellation", audioEchoCancellation); - QDoubleSpinBox* leanScale = new QDoubleSpinBox(); leanScale->setValue(_myAvatar.getLeanScale()); form->addRow("Lean Scale:", leanScale); @@ -984,7 +980,6 @@ void Application::editPreferences() { QUrl url(avatarURL->text()); _myAvatar.getVoxels()->setVoxelURL(url); sendAvatarVoxelURLMessage(url); - _audio.setIsCancellingEcho( audioEchoCancellation->isChecked() ); _headCameraPitchYawScale = headCameraPitchYawScale->value(); _myAvatar.setLeanScale(leanScale->value()); _audioJitterBufferSamples = audioJitterBufferSamples->value(); @@ -2794,9 +2789,6 @@ void Application::loadSettings(QSettings* settings) { _viewFrustumOffsetDistance = loadSetting(settings, "viewFrustumOffsetDistance", 0.0f); _viewFrustumOffsetUp = loadSetting(settings, "viewFrustumOffsetUp" , 0.0f); settings->endGroup(); - settings->beginGroup("Audio Echo Cancellation"); - _audio.setIsCancellingEcho(settings->value("enabled", false).toBool()); - settings->endGroup(); scanMenuBar(&Application::loadAction, settings); getAvatar()->loadData(settings); @@ -2817,9 +2809,6 @@ void Application::saveSettings(QSettings* settings) { settings->setValue("viewFrustumOffsetDistance", _viewFrustumOffsetDistance); settings->setValue("viewFrustumOffsetUp", _viewFrustumOffsetUp); settings->endGroup(); - settings->beginGroup("Audio"); - settings->setValue("echoCancellation", _audio.isCancellingEcho()); - settings->endGroup(); scanMenuBar(&Application::saveAction, settings); getAvatar()->saveData(settings); diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index fd72826dfb..0edd778735 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -56,18 +56,7 @@ static const int AEC_BUFFERED_FRAMES = 6; static const int AEC_BUFFERED_SAMPLES_PER_CHANNEL = BUFFER_LENGTH_SAMPLES_PER_CHANNEL * AEC_BUFFERED_FRAMES; static const int AEC_BUFFERED_SAMPLES = AEC_BUFFERED_SAMPLES_PER_CHANNEL * AEC_N_CHANNELS_PLAY; static const int AEC_TMP_BUFFER_SIZE = (AEC_N_CHANNELS_MIC + // Temporary space for processing a - AEC_N_CHANNELS_PLAY) * BUFFER_LENGTH_SAMPLES_PER_CHANNEL; // single frame - -// Speex preprocessor and echo canceller configuration -static const int AEC_NOISE_REDUCTION = -80; // Noise reduction (important) -static const int AEC_RESIDUAL_ECHO_REDUCTION = -60; // Residual echo reduction -static const int AEC_RESIDUAL_ECHO_REDUCTION_ACTIVE = -45; // ~on active side -static const bool AEC_USE_AGC = true; // Automatic gain control -static const int AEC_AGC_MAX_GAIN = -30; // Gain in db -static const int AEC_AGC_TARGET_LEVEL = 9000; // Target reference level -static const int AEC_AGC_MAX_INC = 6; // Max increase in db/s -static const int AEC_AGC_MAX_DEC = 200; // Max decrease in db/s -static const bool AEC_USE_VAD = false; // Voice activity determination + AEC_N_CHANNELS_PLAY) * BUFFER_LENGTH_SAMPLES_PER_CHANNEL; // single frame // Ping test configuration static const float PING_PITCH = 16.f; // Ping wavelength, # samples / radian @@ -86,8 +75,6 @@ inline void Audio::performIO(int16_t* inputLeft, int16_t* outputLeft, int16_t* o AgentList* agentList = AgentList::getInstance(); Application* interface = Application::getInstance(); Avatar* interfaceAvatar = interface->getAvatar(); - - eventuallyCancelEcho(inputLeft); // Add Procedural effects to input samples addProceduralSounds(inputLeft, BUFFER_LENGTH_SAMPLES_PER_CHANNEL); @@ -104,13 +91,7 @@ inline void Audio::performIO(int16_t* inputLeft, int16_t* outputLeft, int16_t* o _lastInputLoudness = loudness; // add input (@microphone) data to the scope -#ifdef VISUALIZE_ECHO_CANCELLATION - if (! isCancellingEcho()) { -#endif _scope->addSamples(0, inputLeft, BUFFER_LENGTH_SAMPLES_PER_CHANNEL); -#ifdef VISUALIZE_ECHO_CANCELLATION - } -#endif Agent* audioMixer = agentList->soloAgentOfType(AGENT_TYPE_AUDIO_MIXER); @@ -276,19 +257,11 @@ inline void Audio::performIO(int16_t* inputLeft, int16_t* outputLeft, int16_t* o } eventuallySendRecvPing(inputLeft, outputLeft, outputRight); - eventuallyRecordEcho(outputLeft, outputRight); // add output (@speakers) data just written to the scope -#ifdef VISUALIZE_ECHO_CANCELLATION - if (! isCancellingEcho()) { - _scope->setColor(2, 0x00ffff); -#endif _scope->addSamples(1, outputLeft, BUFFER_LENGTH_SAMPLES_PER_CHANNEL); _scope->addSamples(2, outputRight, BUFFER_LENGTH_SAMPLES_PER_CHANNEL); -#ifdef VISUALIZE_ECHO_CANCELLATION - } -#endif gettimeofday(&_lastCallbackTime, NULL); } @@ -342,11 +315,6 @@ Audio::Audio(Oscilloscope* scope, int16_t initialJitterBufferSamples) : _totalPacketsReceived(0), _firstPacketReceivedTime(), _packetsReceivedThisPlayback(0), - _isCancellingEcho(false), - _echoDelay(0), - _echoSamplesLeft(0l), - _speexEchoState(NULL), - _speexPreprocessState(NULL), _isSendingEchoPing(false), _pingAnalysisPending(false), _pingFramesToRecord(0), @@ -393,39 +361,8 @@ Audio::Audio(Oscilloscope* scope, int16_t initialJitterBufferSamples) : } _echoSamplesLeft = new int16_t[AEC_BUFFERED_SAMPLES + AEC_TMP_BUFFER_SIZE]; - if (! _echoSamplesLeft) { - return; - } memset(_echoSamplesLeft, 0, AEC_BUFFERED_SAMPLES * sizeof(int16_t)); - _echoSamplesRight = _echoSamplesLeft + AEC_BUFFERED_SAMPLES_PER_CHANNEL; - _speexTmpBuf = _echoSamplesRight + AEC_BUFFERED_SAMPLES_PER_CHANNEL; - - _speexPreprocessState = speex_preprocess_state_init(BUFFER_LENGTH_SAMPLES_PER_CHANNEL, SAMPLE_RATE); - if (_speexPreprocessState) { - _speexEchoState = speex_echo_state_init_mc(BUFFER_LENGTH_SAMPLES_PER_CHANNEL, - AEC_FILTER_LENGTH, AEC_N_CHANNELS_MIC, AEC_N_CHANNELS_PLAY); - if (_speexEchoState) { - speex_preprocess_ctl(_speexPreprocessState, SPEEX_PREPROCESS_SET_ECHO_STATE, _speexEchoState); - int tmp; - speex_echo_ctl(_speexEchoState, SPEEX_ECHO_SET_SAMPLING_RATE, &(tmp = SAMPLE_RATE)); - tmp = AEC_NOISE_REDUCTION; - speex_preprocess_ctl(_speexPreprocessState, SPEEX_PREPROCESS_SET_NOISE_SUPPRESS, &tmp); - tmp = AEC_RESIDUAL_ECHO_REDUCTION; - speex_preprocess_ctl(_speexPreprocessState, SPEEX_PREPROCESS_SET_ECHO_SUPPRESS, &tmp); - tmp = AEC_RESIDUAL_ECHO_REDUCTION_ACTIVE; - speex_preprocess_ctl(_speexPreprocessState, SPEEX_PREPROCESS_SET_ECHO_SUPPRESS_ACTIVE, &tmp); - speex_preprocess_ctl(_speexPreprocessState, SPEEX_PREPROCESS_SET_AGC, &(tmp = int(AEC_USE_AGC))); - speex_preprocess_ctl(_speexPreprocessState, SPEEX_PREPROCESS_SET_AGC_MAX_GAIN, &(tmp = AEC_AGC_MAX_GAIN)); - speex_preprocess_ctl(_speexPreprocessState, SPEEX_PREPROCESS_SET_AGC_TARGET, &(tmp = AEC_AGC_TARGET_LEVEL)); - speex_preprocess_ctl(_speexPreprocessState, SPEEX_PREPROCESS_SET_AGC_INCREMENT, &(tmp = AEC_AGC_MAX_INC)); - speex_preprocess_ctl(_speexPreprocessState, SPEEX_PREPROCESS_SET_AGC_DECREMENT, &(tmp = AEC_AGC_MAX_DEC)); - speex_preprocess_ctl(_speexPreprocessState, SPEEX_PREPROCESS_SET_VAD, &(tmp = int(AEC_USE_VAD))); - } else { - speex_preprocess_state_destroy(_speexPreprocessState); - _speexPreprocessState = NULL; - } - } - + // start the stream now that sources are good to go outputPortAudioError(Pa_StartStream(_stream)); @@ -446,10 +383,6 @@ Audio::~Audio() { outputPortAudioError(Pa_CloseStream(_stream)); outputPortAudioError(Pa_Terminate()); } - if (_speexEchoState) { - speex_preprocess_state_destroy(_speexPreprocessState); - speex_echo_state_destroy(_speexEchoState); - } delete[] _echoSamplesLeft; } @@ -639,83 +572,6 @@ void Audio::addProceduralSounds(int16_t* inputBuffer, int numSamples) { } } -// ----------------------------- -// Speex-based echo cancellation -// ----------------------------- - -bool Audio::isCancellingEcho() const { - return _isCancellingEcho && ! (_pingFramesToRecord != 0 || _pingAnalysisPending || ! _speexPreprocessState); -} - -void Audio::setIsCancellingEcho(bool enable) { - if (enable && _speexPreprocessState) { - speex_echo_state_reset(_speexEchoState); - _echoWritePos = 0; - memset(_echoSamplesLeft, 0, AEC_BUFFERED_SAMPLES * sizeof(int16_t)); - } - _isCancellingEcho = enable; -} - -inline void Audio::eventuallyCancelEcho(int16_t* inputLeft) { - if (! isCancellingEcho()) { - return; - } - - // Construct an artificial frame from the captured playback - // that contains the appropriately delayed output to cancel - unsigned n = BUFFER_LENGTH_SAMPLES_PER_CHANNEL, n2 = 0; - unsigned readPos = (_echoWritePos + AEC_BUFFERED_SAMPLES_PER_CHANNEL - _echoDelay) % AEC_BUFFERED_SAMPLES_PER_CHANNEL; - unsigned readEnd = readPos + n; - if (readEnd >= AEC_BUFFERED_SAMPLES_PER_CHANNEL) { - n2 = (readEnd -= AEC_BUFFERED_SAMPLES_PER_CHANNEL); - n -= n2; - } - // Use two subsequent buffers for the two stereo channels - int16_t* playBufferLeft = _speexTmpBuf + BUFFER_LENGTH_SAMPLES_PER_CHANNEL; - memcpy(playBufferLeft, _echoSamplesLeft + readPos, n * sizeof(int16_t)); - memcpy(playBufferLeft + n, _echoSamplesLeft, n2 * sizeof(int16_t)); - int16_t* playBufferRight = playBufferLeft + BUFFER_LENGTH_SAMPLES_PER_CHANNEL; - memcpy(playBufferRight, _echoSamplesRight + readPos, n * sizeof(int16_t)); - memcpy(playBufferRight + n, _echoSamplesLeft, n2 * sizeof(int16_t)); - -#ifdef VISUALIZE_ECHO_CANCELLATION - // Visualize the input - _scope->addSamples(0, inputLeft, BUFFER_LENGTH_SAMPLES_PER_CHANNEL); - _scope->addSamples(1, playBufferLeft, BUFFER_LENGTH_SAMPLES_PER_CHANNEL); -#endif - - // Have Speex perform echo cancellation - speex_echo_cancellation(_speexEchoState, inputLeft, playBufferLeft, _speexTmpBuf); - memcpy(inputLeft, _speexTmpBuf, BUFFER_LENGTH_BYTES_PER_CHANNEL); - speex_preprocess_run(_speexPreprocessState, inputLeft); - -#ifdef VISUALIZE_ECHO_CANCELLATION - // Visualize the result - _scope->setColor(2, 0x00ff00); - _scope->addSamples(2, inputLeft, BUFFER_LENGTH_SAMPLES_PER_CHANNEL); -#endif -} - -inline void Audio::eventuallyRecordEcho(int16_t* outputLeft, int16_t* outputRight) { - if (! isCancellingEcho()) { - return; - } - - // Copy playback data to circular buffers - unsigned n = BUFFER_LENGTH_SAMPLES_PER_CHANNEL, n2 = 0; - unsigned writeEnd = _echoWritePos + n; - if (writeEnd >= AEC_BUFFERED_SAMPLES_PER_CHANNEL) { - n2 = (writeEnd -= AEC_BUFFERED_SAMPLES_PER_CHANNEL); - n -= n2; - } - memcpy(_echoSamplesLeft + _echoWritePos, outputLeft, n * sizeof(int16_t)); - memcpy(_echoSamplesLeft, outputLeft + n, n2 * sizeof(int16_t)); - memcpy(_echoSamplesRight + _echoWritePos, outputRight, n * sizeof(int16_t)); - memcpy(_echoSamplesRight, outputRight + n, n2 * sizeof(int16_t)); - - _echoWritePos = writeEnd; -} - // ----------------------------------------------------------- // Accoustic ping (audio system round trip time determination) // ----------------------------------------------------------- @@ -870,7 +726,6 @@ bool Audio::eventuallyAnalyzePing() { } _scope->inputPaused = true; analyzePing(); - setIsCancellingEcho(_isCancellingEcho); _pingAnalysisPending = false; return true; } diff --git a/interface/src/Audio.h b/interface/src/Audio.h index 1e2c69616f..f6f4ff9347 100644 --- a/interface/src/Audio.h +++ b/interface/src/Audio.h @@ -47,11 +47,6 @@ public: int getJitterBufferSamples() { return _jitterBufferSamples; }; void lowPassFilter(int16_t* inputBuffer); - - void startEchoTest(); - void renderEchoCompare(); - void setIsCancellingEcho(bool enabled); - bool isCancellingEcho() const; void ping(); @@ -79,16 +74,8 @@ private: int _totalPacketsReceived; timeval _firstPacketReceivedTime; int _packetsReceivedThisPlayback; - // Echo cancellation - volatile bool _isCancellingEcho; - unsigned _echoWritePos; - unsigned _echoDelay; - int16_t* _echoSamplesLeft; - int16_t* _echoSamplesRight; - int16_t* _speexTmpBuf; - SpeexEchoState* _speexEchoState; - SpeexPreprocessState* _speexPreprocessState; // Ping analysis + int16_t* _echoSamplesLeft; volatile bool _isSendingEchoPing; volatile bool _pingAnalysisPending; int _pingFramesToRecord; @@ -102,13 +89,6 @@ private: // Audio callback in class context. inline void performIO(int16_t* inputLeft, int16_t* outputLeft, int16_t* outputRight); - // When echo cancellation is enabled, subtract recorded echo from the input. - // Called from 'performIO' before the input has been processed. - inline void eventuallyCancelEcho(int16_t* inputLeft); - // When EC is enabled, record output samples. - // Called from 'performIO' after the output has been generated. - inline void eventuallyRecordEcho(int16_t* outputLeft, int16_t* outputRight); - // When requested, sends/receives a signal for round trip time determination. // Called from 'performIO'. inline void eventuallySendRecvPing(int16_t* inputLeft, int16_t* outputLeft, int16_t* outputRight); From 14718980e5558aeb52221994dfa48bcb89ed876a Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 18:17:50 -0700 Subject: [PATCH 12/15] tighten audio latency by clearing the network stack after starves --- interface/src/Audio.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index 0edd778735..d0a49f4fe5 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -136,7 +136,8 @@ inline void Audio::performIO(int16_t* inputLeft, int16_t* outputLeft, int16_t* o // if there is anything in the ring buffer, decide what to do: if (ringBuffer->getEndOfLastWrite()) { - if (!ringBuffer->isStarted() && ringBuffer->diffLastWriteNextOutput() < (PACKET_LENGTH_SAMPLES + _jitterBufferSamples * (ringBuffer->isStereo() ? 2 : 1))) { + if (!ringBuffer->isStarted() && ringBuffer->diffLastWriteNextOutput() < + (PACKET_LENGTH_SAMPLES + _jitterBufferSamples * (ringBuffer->isStereo() ? 2 : 1))) { // // If not enough audio has arrived to start playback, keep waiting // @@ -147,8 +148,7 @@ inline void Audio::performIO(int16_t* inputLeft, int16_t* outputLeft, int16_t* o PACKET_LENGTH_SAMPLES, _jitterBufferSamples); #endif - } else if (ringBuffer->isStarted() && (ringBuffer->diffLastWriteNextOutput() - < PACKET_LENGTH_SAMPLES * (ringBuffer->isStereo() ? 2 : 1))) { + } else if (ringBuffer->isStarted() && ringBuffer->diffLastWriteNextOutput() == 0) { // // If we have started and now have run out of audio to send to the audio device, // this means we've starved and should restart. @@ -159,7 +159,7 @@ inline void Audio::performIO(int16_t* inputLeft, int16_t* outputLeft, int16_t* o _packetsReceivedThisPlayback = 0; _wasStarved = 10; // Frames for which to render the indication that the system was starved. #ifdef SHOW_AUDIO_DEBUG - printLog("Starved, remaining samples = %.0f\n", + printLog("Starved, remaining samples = %d\n", ringBuffer->diffLastWriteNextOutput()); #endif @@ -423,7 +423,20 @@ void Audio::addReceivedAudioToBuffer(unsigned char* receivedData, int receivedBy gettimeofday(&_firstPacketReceivedTime, NULL); } + if (_ringBuffer.diffLastWriteNextOutput() + PACKET_LENGTH_SAMPLES > + PACKET_LENGTH_SAMPLES + (ceilf((float) (_jitterBufferSamples * 2) / PACKET_LENGTH_SAMPLES) * PACKET_LENGTH_SAMPLES)) { + // this packet would give us more than the required amount for play out + // discard the first packet in the buffer + + _ringBuffer.setNextOutput(_ringBuffer.getNextOutput() + PACKET_LENGTH_SAMPLES); + + if (_ringBuffer.getNextOutput() == _ringBuffer.getBuffer() + RING_BUFFER_LENGTH_SAMPLES) { + _ringBuffer.setNextOutput(_ringBuffer.getBuffer()); + } + } + //printf("Got audio packet %d\n", _packetsReceivedThisPlayback); + _ringBuffer.parseData((unsigned char*) receivedData, PACKET_LENGTH_BYTES + sizeof(PACKET_HEADER)); _lastReceiveTime = currentReceiveTime; From 6cf71fb49b3d8246b8fad03963f9bbff65039b23 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Jun 2013 18:25:12 -0700 Subject: [PATCH 13/15] remove speex includes --- interface/src/Audio.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/interface/src/Audio.h b/interface/src/Audio.h index f6f4ff9347..4382a86d87 100644 --- a/interface/src/Audio.h +++ b/interface/src/Audio.h @@ -11,9 +11,6 @@ #include -#include -#include - #include #include From b4f5df17ab9d22a9985ff0d5972d9f80b17ce782 Mon Sep 17 00:00:00 2001 From: Eric Johnston Date: Thu, 27 Jun 2013 10:54:36 -0700 Subject: [PATCH 14/15] (re-commit) Added support for Leap finger-sensing device. Note that the actual Leap SDK can't be in the repo for IP reasons, so there's a stub-version of the header. When the actual SDK is put into the Leap folder, cake will find it automatically and switch over. --- cmake/modules/FindLeap.cmake | 52 ++++++++++++ interface/CMakeLists.txt | 4 + interface/external/Leap/stubs/include/Leap.h | 13 +++ interface/src/Application.cpp | 8 +- interface/src/Avatar.cpp | 60 +++++++++++++ interface/src/Avatar.h | 11 ++- interface/src/LeapManager.cpp | 88 ++++++++++++++++++++ interface/src/LeapManager.h | 39 +++++++++ 8 files changed, 273 insertions(+), 2 deletions(-) create mode 100755 cmake/modules/FindLeap.cmake mode change 100644 => 100755 interface/CMakeLists.txt create mode 100755 interface/external/Leap/stubs/include/Leap.h mode change 100644 => 100755 interface/src/Application.cpp mode change 100644 => 100755 interface/src/Avatar.cpp mode change 100644 => 100755 interface/src/Avatar.h create mode 100755 interface/src/LeapManager.cpp create mode 100755 interface/src/LeapManager.h diff --git a/cmake/modules/FindLeap.cmake b/cmake/modules/FindLeap.cmake new file mode 100755 index 0000000000..121d422131 --- /dev/null +++ b/cmake/modules/FindLeap.cmake @@ -0,0 +1,52 @@ +# - Try to find the Leap library +# +# You must provide a LEAP_ROOT_DIR which contains Lib and Include directories +# +# Once done this will define +# +# LEAP_FOUND - system found Leap +# LEAP_INCLUDE_DIRS - the Leap include directory +# LEAP_LIBRARIES - Link this to use Leap +# +# Created on 6/21/2013 by Eric Johnston, +# adapted from FindLibOVR.cmake by Stephen Birarda +# Copyright (c) 2013 High Fidelity +# + +if (LEAP_LIBRARIES AND LEAP_INCLUDE_DIRS) + # in cache already + set(LEAP_FOUND TRUE) +else (LEAP_LIBRARIES AND LEAP_INCLUDE_DIRS) + find_path(LEAP_INCLUDE_DIRS Leap.h ${LEAP_ROOT_DIR}/include) + + if (LEAP_INCLUDE_DIRS) + ### If we found the real header, get the library as well. + if (APPLE) + find_library(LEAP_LIBRARIES libLeap.dylib ${LEAP_ROOT_DIR}/lib/libc++/) + elseif (WIN32) + find_library(LEAP_LIBRARIES libLeap.dylib ${LEAP_ROOT_DIR}/lib/libc++/) + endif () + else () + ### If we didn't find the real header, just use the stub header, and no library. + find_path(LEAP_INCLUDE_DIRS Leap.h ${LEAP_ROOT_DIR}/stubs/include) + endif () + +# If we're using the Leap stubs, there's only a header, no lib. + if (LEAP_INCLUDE_DIRS) + set(LEAP_FOUND TRUE) + endif (LEAP_INCLUDE_DIRS) + + if (LEAP_FOUND) + if (NOT Leap_FIND_QUIETLY) + message(STATUS "Found Leap: ${LEAP_LIBRARIES}") + endif (NOT Leap_FIND_QUIETLY) + else (LEAP_FOUND) + if (Leap_FIND_REQUIRED) + message(FATAL_ERROR "Could not find Leap") + endif (Leap_FIND_REQUIRED) + endif (LEAP_FOUND) + + # show the LEAP_INCLUDE_DIRS and LEAP_LIBRARIES variables only in the advanced view + mark_as_advanced(LEAP_INCLUDE_DIRS LEAP_LIBRARIES) + +endif (LEAP_LIBRARIES AND LEAP_INCLUDE_DIRS) \ No newline at end of file diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt old mode 100644 new mode 100755 index 9a57a546f1..c840bd980d --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -9,6 +9,7 @@ project(${TARGET_NAME}) # setup for find modules set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/modules/") set(LIBOVR_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/LibOVR) +set(LEAP_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/Leap) set(PORTAUDIO_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/PortAudio) set(OPENCV_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/OpenCV) set(UVCCAMERACONTROL_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/UVCCameraControl) @@ -86,6 +87,7 @@ link_hifi_library(audio ${TARGET_NAME} ${ROOT_DIR}) # find required libraries find_package(GLM REQUIRED) find_package(LibOVR) +find_package(Leap) find_package(OpenCV) find_package(ZLIB) find_package(UVCCameraControl) @@ -102,6 +104,7 @@ include_directories( SYSTEM ${GLM_INCLUDE_DIRS} ${LIBOVR_INCLUDE_DIRS} + ${LEAP_INCLUDE_DIRS} ${OPENCV_INCLUDE_DIRS} ) @@ -140,6 +143,7 @@ if (APPLE) ${QuartzCore} ${UVCCAMERACONTROL_LIBRARIES} ${LIBOVR_LIBRARIES} + ${LEAP_LIBRARIES} ) else (APPLE) find_package(OpenGL REQUIRED) diff --git a/interface/external/Leap/stubs/include/Leap.h b/interface/external/Leap/stubs/include/Leap.h new file mode 100755 index 0000000000..6d012b9e98 --- /dev/null +++ b/interface/external/Leap/stubs/include/Leap.h @@ -0,0 +1,13 @@ + +// This is an empty stub, used as a placeholder for the real Leap.h +// The entire containing Leap folder should be replaced by the one +// from the Leap SDK. + +#define LEAP_STUBS // We're using the stubbed-out Leap header + +namespace Leap { + class Frame {}; + class Controller {}; + class Listener {}; +} + diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp old mode 100644 new mode 100755 index 59c4215cfe..1d2fb990e5 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -57,6 +57,7 @@ #include "Application.h" #include "InterfaceConfig.h" #include "LogDisplay.h" +#include "LeapManager.h" #include "OculusManager.h" #include "Util.h" #include "renderer/ProgramObject.h" @@ -1671,7 +1672,11 @@ void Application::update(float deltaTime) { _touchAvgY - _touchDragStartedAvgY); } - // Read serial port interface devices + // Leap finger-sensing device + LeapManager::nextFrame(); + _myAvatar.setLeapFingers(LeapManager::getFingerPositions()); + + // Read serial port interface devices if (_serialHeadSensor.isActive()) { _serialHeadSensor.readData(deltaTime); } @@ -2315,6 +2320,7 @@ void Application::displayStats() { } drawtext(10, statsVerticalOffset + 330, 0.10f, 0, 1.0, 0, avatarMixerStats); + drawtext(10, statsVerticalOffset + 450, 0.10f, 0, 1.0, 0, (char *)LeapManager::statusString().c_str()); if (_perfStatsOn) { // Get the PerfStats group details. We need to allocate and array of char* long enough to hold 1+groups diff --git a/interface/src/Avatar.cpp b/interface/src/Avatar.cpp old mode 100644 new mode 100755 index a603dbd472..98b3ad06a1 --- a/interface/src/Avatar.cpp +++ b/interface/src/Avatar.cpp @@ -104,6 +104,7 @@ Avatar::Avatar(Agent* owningAgent) : _skeleton.initialize(); initializeBodyBalls(); + initializeLeapBalls(); _height = _skeleton.getHeight() + _bodyBall[ BODY_BALL_LEFT_HEEL ].radius + _bodyBall[ BODY_BALL_HEAD_BASE ].radius; @@ -263,6 +264,21 @@ void Avatar::initializeBodyBalls() { */ } +void Avatar::initializeLeapBalls() { + + _numLeapBalls = 0; + + for (int b = 0; b < MAX_AVATAR_LEAP_BALLS; b++) { + _leapBall[b].parentJoint = AVATAR_JOINT_NULL; + _leapBall[b].parentOffset = glm::vec3(0.0, 0.0, 0.0); + _leapBall[b].position = glm::vec3(0.0, 0.0, 0.0); + _leapBall[b].velocity = glm::vec3(0.0, 0.0, 0.0); + _leapBall[b].radius = 0.01; + _leapBall[b].touchForce = 0.0; + _leapBall[b].isCollidable = true; + _leapBall[b].jointTightness = BODY_SPRING_DEFAULT_TIGHTNESS; + } +} Avatar::~Avatar() { _headData = NULL; @@ -527,6 +543,9 @@ void Avatar::simulate(float deltaTime, Transmitter* transmitter) { // update body balls updateBodyBalls(deltaTime); + // update leap balls + updateLeapBalls(deltaTime); + // test for avatar collision response with the big sphere if (usingBigSphereCollisionTest) { updateCollisionWithSphere(_TEST_bigSpherePosition, _TEST_bigSphereRadius, deltaTime); @@ -1148,6 +1167,23 @@ void Avatar::updateBodyBalls(float deltaTime) { _bodyBall[BODY_BALL_HEAD_TOP].rotation * _skeleton.joint[BODY_BALL_HEAD_TOP].bindPosePosition; } +void Avatar::setLeapFingers(const std::vector& fingerPositions) { + _numLeapBalls = fingerPositions.size(); // just to test + + float unitScale = 0.001; // convert mm to meters + glm::vec3 offset(0.2, -0.2, -0.3); // place the hand in front of the face where we can see it + + for (int b = 0; b < _numLeapBalls; b++) { + glm::vec3 pos = unitScale * fingerPositions[b] + offset; + _leapBall[b].rotation = _head.getOrientation(); + _leapBall[b].position = _bodyBall[BODY_BALL_HEAD_BASE].position + + _head.getOrientation() * pos; + } +} + +void Avatar::updateLeapBalls(float deltaTime) { +} + void Avatar::updateArmIKAndConstraints(float deltaTime) { // determine the arm vector @@ -1270,6 +1306,30 @@ void Avatar::renderBody(bool lookingInMirror, bool renderAvatarBalls) { } } } + // Draw the leap balls + for (int b = 0; b < _numLeapBalls; b++) { + float alpha = 1.0f; + + if (alpha > 0.0f) { + // Render the body ball sphere + if (_owningAgent || true) { + glColor3f(SKIN_COLOR[0] + _leapBall[b].touchForce * 0.3f, + SKIN_COLOR[1] - _leapBall[b].touchForce * 0.2f, + SKIN_COLOR[2] - _leapBall[b].touchForce * 0.1f); + } else { + glColor4f(SKIN_COLOR[0] + _leapBall[b].touchForce * 0.3f, + SKIN_COLOR[1] - _leapBall[b].touchForce * 0.2f, + SKIN_COLOR[2] - _leapBall[b].touchForce * 0.1f, + alpha); + } + glColor4f(0.0, 0.4, 0.0, 1.0); // Just to test + + glPushMatrix(); + glTranslatef(_leapBall[b].position.x, _leapBall[b].position.y, _leapBall[b].position.z); + glutSolidSphere(_leapBall[b].radius, 20.0f, 20.0f); + glPopMatrix(); + } + } } else { // Render the body's voxels float alpha = getBallRenderAlpha(BODY_BALL_HEAD_BASE, lookingInMirror); diff --git a/interface/src/Avatar.h b/interface/src/Avatar.h old mode 100644 new mode 100755 index b7d424de29..e8cc2f5029 --- a/interface/src/Avatar.h +++ b/interface/src/Avatar.h @@ -56,6 +56,8 @@ enum AvatarBodyBallID NUM_AVATAR_BODY_BALLS }; +#define MAX_AVATAR_LEAP_BALLS 10 + enum DriveKeys { FWD = 0, @@ -103,6 +105,7 @@ public: void setGravity (glm::vec3 gravity); void setMouseRay (const glm::vec3 &origin, const glm::vec3 &direction); void setOrientation (const glm::quat& orientation); + void setLeapFingers (const std::vector& fingerPositions); //getters bool isInitialized () const { return _initialized;} @@ -111,7 +114,9 @@ public: float getBodyYaw () const { return _bodyYaw;} bool getIsNearInteractingOther () const { return _avatarTouch.getAbleToReachOtherAvatar();} const glm::vec3& getHeadJointPosition () const { return _skeleton.joint[ AVATAR_JOINT_HEAD_BASE ].position;} - const glm::vec3& getBallPosition (AvatarJointID j) const { return _bodyBall[j].position;} + const glm::vec3& getBallPosition (AvatarJointID j) const { return _bodyBall[j].position;} + int getNumLeapBalls () const { return _numLeapBalls;} + const glm::vec3& getLeapBallPosition (int which) const { return _leapBall[which].position;} glm::vec3 getBodyRightDirection () const { return getOrientation() * IDENTITY_RIGHT; } glm::vec3 getBodyUpDirection () const { return getOrientation() * IDENTITY_UP; } glm::vec3 getBodyFrontDirection () const { return getOrientation() * IDENTITY_FRONT; } @@ -185,6 +190,8 @@ private: float _bodyRollDelta; glm::vec3 _movedHandOffset; AvatarBall _bodyBall[ NUM_AVATAR_BODY_BALLS ]; + AvatarBall _leapBall[ MAX_AVATAR_LEAP_BALLS ]; + int _numLeapBalls; AvatarMode _mode; glm::vec3 _handHoldingPosition; glm::vec3 _velocity; @@ -219,8 +226,10 @@ private: float getBallRenderAlpha(int ball, bool lookingInMirror) const; void renderBody(bool lookingInMirror, bool renderAvatarBalls); void initializeBodyBalls(); + void initializeLeapBalls(); void resetBodyBalls(); void updateBodyBalls( float deltaTime ); + void updateLeapBalls( float deltaTime ); void calculateBoneLengths(); void readSensors(); void updateHandMovementAndTouching(float deltaTime); diff --git a/interface/src/LeapManager.cpp b/interface/src/LeapManager.cpp new file mode 100755 index 0000000000..2c2ce9b8d1 --- /dev/null +++ b/interface/src/LeapManager.cpp @@ -0,0 +1,88 @@ +// +// LeapManager.cpp +// hifi +// +// Created by Eric Johnston on 6/26/13. +// Copyright (c) 2013 High Fidelity, Inc. All rights reserved. +// + +#include "LeapManager.h" +#include +#include // needed for RTLD_LAZY +#include + +bool LeapManager::_isInitialized = false; +bool LeapManager::_libraryExists = false; +Leap::Controller* LeapManager::_controller = 0; +HifiLeapListener* LeapManager::_listener = 0; + +class HifiLeapListener : public Leap::Listener { +public: + Leap::Frame lastFrame; + std::vector fingerPositions; + + virtual void onFrame(const Leap::Controller& controller) { +#ifndef LEAP_STUBS + Leap::Frame frame = controller.frame(); + int numFingers = frame.fingers().count(); + fingerPositions.resize(numFingers); + for (int i = 0; i < numFingers; ++i) { + const Leap::Finger& thisFinger = frame.fingers()[i]; + const Leap::Vector pos = thisFinger.tipPosition(); + fingerPositions[i] = glm::vec3(pos.x, pos.y, pos.z); + } + lastFrame = frame; +#endif + } + +}; + +void LeapManager::initialize() { + if (!_isInitialized) { +#ifndef LEAP_STUBS + if (dlopen("/usr/lib/libLeap.dylib", RTLD_LAZY)) { + _libraryExists = true; + _controller = new Leap::Controller(); + _listener = new HifiLeapListener(); + _controller->addListener(*_listener); + } +#endif + _isInitialized = true; + } +} + +void LeapManager::nextFrame() { + initialize(); + if (_listener && _controller) + _listener->onFrame(*_controller); +} + +const std::vector& LeapManager::getFingerPositions() { + if (_listener) + return _listener->fingerPositions; + else { + static std::vector empty; + return empty; + } +} + +std::string LeapManager::statusString() { + std::stringstream leapString; +#ifndef LEAP_STUBS + if (_isInitialized) { + if (!_libraryExists) + leapString << "Leap library at /usr/lib/libLeap.dylib does not exist."; + else if (!_controller || !_listener || !_controller->devices().count()) + leapString << "Leap controller is not attached."; + else { + leapString << "Leap pointables: " << _listener->lastFrame.pointables().count(); + if (_listener->lastFrame.pointables().count() > 0) { + Leap::Vector pos = _listener->lastFrame.pointables()[0].tipPosition(); + leapString << " pos: " << pos.x << " " << pos.y << " " << pos.z; + } + } + } +#endif + return leapString.str(); +} + diff --git a/interface/src/LeapManager.h b/interface/src/LeapManager.h new file mode 100755 index 0000000000..f09bbb8b88 --- /dev/null +++ b/interface/src/LeapManager.h @@ -0,0 +1,39 @@ +// +// LeapManager.h +// hifi +// +// Created by Eric Johnston on 6/26/13. +// Copyright (c) 2013 High Fidelity, Inc. All rights reserved. +// + +#ifndef __hifi__LeapManager__ +#define __hifi__LeapManager__ + +#include +#include +#include + +class HifiLeapListener; +namespace Leap { + class Controller; +} + +class LeapManager { +public: + static void nextFrame(); // called once per frame to get new Leap data + static const std::vector& getFingerPositions(); + static std::string statusString(); + +private: + static void initialize(); + static bool _isInitialized; // We've looked for the library and hooked it up if it's there. + static bool _libraryExists; // The library is present, so we won't crash if we call it. + static Leap::Controller* _controller; + static HifiLeapListener* _listener; + + + + +}; + +#endif /* defined(__hifi__LeapManager__) */ From cece4de90e90a29e3aece0f3ddaf6f7e77618b2d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 27 Jun 2013 11:14:22 -0700 Subject: [PATCH 15/15] fix the default orientation for an injector --- libraries/audio/src/AudioInjector.cpp | 2 +- libraries/audio/src/AudioInjector.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index 24e0a369d5..16c381a036 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -47,7 +47,7 @@ AudioInjector::AudioInjector(const char* filename) : AudioInjector::AudioInjector(int maxNumSamples) : _numTotalSamples(maxNumSamples), _position(0.0f, 0.0f, 0.0f), - _orientation(0.0f, 0.0f, 0.0f, 0.0f), + _orientation(), _radius(0.0f), _volume(MAX_INJECTOR_VOLUME), _indexOfNextSlot(0), diff --git a/libraries/audio/src/AudioInjector.h b/libraries/audio/src/AudioInjector.h index 6b61b2540b..efe52bdf57 100644 --- a/libraries/audio/src/AudioInjector.h +++ b/libraries/audio/src/AudioInjector.h @@ -20,7 +20,7 @@ const int STREAM_IDENTIFIER_NUM_BYTES = 8; const int MAX_INJECTOR_VOLUME = 0xFF; -const float INJECT_INTERVAL_USECS = (BUFFER_LENGTH_SAMPLES_PER_CHANNEL / SAMPLE_RATE) * 1000000; +const long long INJECT_INTERVAL_USECS = floorf((BUFFER_LENGTH_SAMPLES_PER_CHANNEL / SAMPLE_RATE) * 1000000); class AudioInjector { public: