From 689fb7a167bebd879d1e36c2b790d3c8ba5277da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Wed, 11 Feb 2026 11:40:01 +0000 Subject: [PATCH 01/36] Adding VX4 Support --- Jenkinsfile | 25 ++++++++++++++--- .../api/mic_array/etc/xcore_compat.h | 2 -- lib_mic_array/src/deinterleave2.S | 23 ++++++++++++++++ tests/unit/CMakeLists.txt | 27 ++++++++++++++++--- tests/unit/src/main.c | 23 ++++++++-------- 5 files changed, 80 insertions(+), 20 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 64056a87..9c8facfd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,6 +1,6 @@ // This file relates to internal XMOS infrastructure and should be ignored by external users -@Library('xmos_jenkins_shared_library@v0.44.0') _ +@Library('xmos_jenkins_shared_library@0.45.0') _ getApproval() pipeline { @@ -12,6 +12,11 @@ pipeline { defaultValue: '15.3.1', description: 'The XTC tools version' ) + string( + name: 'TOOLS_VX4_VERSION', + defaultValue: '-j --repo arch_vx_slipgate -b master -a XTC 112', + description: 'The XTC Slipgate tools version' + ) string( name: 'XMOSDOC_VERSION', defaultValue: 'v8.0.1', @@ -116,7 +121,7 @@ pipeline { } // parallel } // stage 'Build' - stage('Test') { + stage('Test XS3') { parallel { stage('XCommon build ') { agent { @@ -232,7 +237,8 @@ pipeline { archiveArtifacts artifacts: "**/*.pkl", allowEmptyArchive: true } } - } // stage('Run tests') + } // stage('Run tests') + } // stages post { cleanup { @@ -242,6 +248,19 @@ pipeline { } // stage('HW tests') } // parallel } // stage('Test') + + stage('Test VX4') { + dir("${REPO_NAME}/tests/unit") { + xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_SLIPGATE_VERSION) + sh "xsim bin/tests-unit.xe" + } + post { + cleanup { + xcoreCleanSandbox() + } + } + } + stage('🚀 Release') { when { expression { triggerRelease.isReleasable() } diff --git a/lib_mic_array/api/mic_array/etc/xcore_compat.h b/lib_mic_array/api/mic_array/etc/xcore_compat.h index 2d70e63d..c4c5e9b2 100644 --- a/lib_mic_array/api/mic_array/etc/xcore_compat.h +++ b/lib_mic_array/api/mic_array/etc/xcore_compat.h @@ -32,11 +32,9 @@ extern "C" { #else //__XC__ -#include #include #include #include #include #endif //__XC__ - diff --git a/lib_mic_array/src/deinterleave2.S b/lib_mic_array/src/deinterleave2.S index 6c08f352..682cb4e4 100644 --- a/lib_mic_array/src/deinterleave2.S +++ b/lib_mic_array/src/deinterleave2.S @@ -41,3 +41,26 @@ deinterleave2: .size deinterleave2, .L_end - deinterleave2 #endif // __XS3A__ + +#if defined(__VX4A__) || defined(__VX4B__) + +#define FUNCTION_NAME deinterleave2 +#define NSTACK_BYTES 16 // minimum + +.p2align 1 +.globl FUNCTION_NAME +.type FUNCTION_NAME,@function +FUNCTION_NAME: + xm.entsp NSTACK_BYTES + xm.ldd a1, a2, 0(a0) + xm.unzip a1, a2, 0 //Note: unzip swaps output positions + xm.std a2, a1, 0(a0) + xm.retsp NSTACK_BYTES + +.size FUNCTION_NAME, . -FUNCTION_NAME +.resource_const FUNCTION_NAME, "stack_frame_bytes", NSTACK_BYTES +.resource_list_empty FUNCTION_NAME, "callees" +.resource_list_empty FUNCTION_NAME, "tail_callees" +.resource_list_empty FUNCTION_NAME, "parallel_callees" + +#endif // __VX4A__ || __VX4B__ diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index 557f0416..17bb138c 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -4,10 +4,20 @@ include($ENV{XMOS_CMAKE_PATH}/xcommon.cmake) project(tests-unit) set(XMOS_SANDBOX_DIR ${CMAKE_CURRENT_LIST_DIR}/../../..) -set(APP_HW_TARGET XK-EVK-XU316) set(APP_INCLUDES src) -set(APP_DEPENDENT_MODULES "lib_mic_array" "lib_unity(2.5.2)") -set(APP_COMPILER_FLAGS -O2 +set(APP_DEPENDENT_MODULES "lib_mic_array" "lib_unity(main)") #TODO release lib_unity + +# conditional depending on target +if(CMAKE_C_COMPILER_VERSION VERSION_EQUAL "3.6.0") + set(__XS3__ ON) # XS3 (XTC 15.3.1) +else() + set(__XS3__ OFF) # VX4 +endif() + + +if(__XS3__) # xs3 + set(APP_HW_TARGET XK-EVK-XU316) + set(APP_COMPILER_FLAGS -O2 -g -report -mcmodel=large @@ -17,5 +27,16 @@ set(APP_COMPILER_FLAGS -O2 -Wno-format -fxscope -DUNITY_INCLUDE_CONFIG_H=1) +else() # vx4 + set(APP_HW_TARGET XK-EVK-XU416) + set(APP_COMPILER_FLAGS + -Os + -g + -Wfptrgroup + -ffunction-sections + -fdata-sections + -Wl,--gc-sections + ) +endif() XMOS_REGISTER_APP() diff --git a/tests/unit/src/main.c b/tests/unit/src/main.c index 88172bff..a176b161 100644 --- a/tests/unit/src/main.c +++ b/tests/unit/src/main.c @@ -8,28 +8,27 @@ int main(int argc, const char* argv[]) { - xscope_config_io(XSCOPE_IO_BASIC); UnityGetCommandLineOptions(argc, argv); UnityBegin(argv[0]); printf("\n\n"); - RUN_TEST_GROUP(dcoe_state_init); - RUN_TEST_GROUP(dcoe_filter); - RUN_TEST_GROUP(DcoeSampleFilter); + // RUN_TEST_GROUP(dcoe_state_init); + // RUN_TEST_GROUP(dcoe_filter); + // RUN_TEST_GROUP(DcoeSampleFilter); - RUN_TEST_GROUP(ma_frame_tx_rx); - RUN_TEST_GROUP(ma_frame_tx_rx_transpose); - RUN_TEST_GROUP(ChannelFrameTransmitter); - RUN_TEST_GROUP(FrameOutputHandler); + // RUN_TEST_GROUP(ma_frame_tx_rx); + // RUN_TEST_GROUP(ma_frame_tx_rx_transpose); + // RUN_TEST_GROUP(ChannelFrameTransmitter); + // RUN_TEST_GROUP(FrameOutputHandler); RUN_TEST_GROUP(deinterleave2); - RUN_TEST_GROUP(deinterleave4); - RUN_TEST_GROUP(deinterleave8); - RUN_TEST_GROUP(deinterleave16); + // RUN_TEST_GROUP(deinterleave4); + // RUN_TEST_GROUP(deinterleave8); + // RUN_TEST_GROUP(deinterleave16); - RUN_TEST_GROUP(deinterleave_pdm_samples); + // RUN_TEST_GROUP(deinterleave_pdm_samples); return UNITY_END(); } From 9eb3a5c63210590ff68a8c4ac14f9dba87662dea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Wed, 11 Feb 2026 11:47:18 +0000 Subject: [PATCH 02/36] Fix library version format in Jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9c8facfd..dae43408 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,6 +1,6 @@ // This file relates to internal XMOS infrastructure and should be ignored by external users -@Library('xmos_jenkins_shared_library@0.45.0') _ +@Library('xmos_jenkins_shared_library@v0.45.0') _ getApproval() pipeline { From 9e2b65009b2e93d200371e28ea458aa2b96e73ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Wed, 11 Feb 2026 11:49:19 +0000 Subject: [PATCH 03/36] Add steps block to 'Test VX4' stage in Jenkinsfile --- Jenkinsfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index dae43408..b0987779 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -250,6 +250,7 @@ pipeline { } // stage('Test') stage('Test VX4') { + steps { dir("${REPO_NAME}/tests/unit") { xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_SLIPGATE_VERSION) sh "xsim bin/tests-unit.xe" @@ -259,6 +260,7 @@ pipeline { xcoreCleanSandbox() } } + } } stage('🚀 Release') { From 4bf09c44ed9e847a9564d8c0499fd3cb7007afba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Wed, 11 Feb 2026 11:51:54 +0000 Subject: [PATCH 04/36] Update Jenkinsfile to use the latest shared library version --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index b0987779..eb7bde85 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,6 +1,6 @@ // This file relates to internal XMOS infrastructure and should be ignored by external users -@Library('xmos_jenkins_shared_library@v0.45.0') _ +@Library('xmos_jenkins_shared_library@develop') _ getApproval() pipeline { From efad02757f7099f20e6be9b7ee0aacdbf8f18291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Wed, 11 Feb 2026 15:40:04 +0000 Subject: [PATCH 05/36] Refactor 'Test VX4' stage to improve structure and add SCM checkout --- Jenkinsfile | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index eb7bde85..6d2bc14b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -250,18 +250,24 @@ pipeline { } // stage('Test') stage('Test VX4') { - steps { - dir("${REPO_NAME}/tests/unit") { - xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_SLIPGATE_VERSION) - sh "xsim bin/tests-unit.xe" - } - post { - cleanup { - xcoreCleanSandbox() + agent {label "x86_64 && linux"} + steps { + println "Stage running on ${env.NODE_NAME}" + dir(REPO_NAME){ + checkoutScmShallow() + dir("tests/unit") { + xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_SLIPGATE_VERSION) + withTools(params.TOOLS_SLIPGATE_VERSION) {sh "xsim bin/tests-unit.xe"} + } + } } - } - } - } + post { + cleanup { + xcoreCleanSandbox() + } + } //post + } // stage('Test VX4') + stage('🚀 Release') { when { From 1c937c0a37a117bc8353a76e478947da665acf22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Wed, 11 Feb 2026 16:20:39 +0000 Subject: [PATCH 06/36] Update 'Test VX4' stage to use correct tools version for unit tests --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6d2bc14b..1511f599 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -256,8 +256,8 @@ pipeline { dir(REPO_NAME){ checkoutScmShallow() dir("tests/unit") { - xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_SLIPGATE_VERSION) - withTools(params.TOOLS_SLIPGATE_VERSION) {sh "xsim bin/tests-unit.xe"} + xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_VX4_VERSION) + withTools(params.TOOLS_VX4_VERSION) {sh "xsim bin/tests-unit.xe"} } } } From cb3a10587c27073abb0eb383deb6a761ed83eaba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Wed, 11 Feb 2026 16:42:43 +0000 Subject: [PATCH 07/36] Update dependent module version in lib_build_info.cmake to use 'develop' branch --- lib_mic_array/lib_build_info.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_mic_array/lib_build_info.cmake b/lib_mic_array/lib_build_info.cmake index b4c7e5ba..9a5cd3f2 100644 --- a/lib_mic_array/lib_build_info.cmake +++ b/lib_mic_array/lib_build_info.cmake @@ -1,6 +1,6 @@ set(LIB_NAME lib_mic_array) set(LIB_VERSION 6.0.0) -set(LIB_DEPENDENT_MODULES "lib_xcore_math(2.4.0)") +set(LIB_DEPENDENT_MODULES "lib_xcore_math(develop)") #TODO pin version set(LIB_INCLUDES api api/mic_array From 6a01bca2d4227669cbfcb0c0975b7ca9d99380f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Wed, 11 Feb 2026 17:11:48 +0000 Subject: [PATCH 08/36] Add cleanup step to 'Test' stage for sandbox environment --- Jenkinsfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 1511f599..e7e235bf 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -247,6 +247,11 @@ pipeline { } } // stage('HW tests') } // parallel + post { + cleanup { + xcoreCleanSandbox() + } + } //post } // stage('Test') stage('Test VX4') { From 5dbab524703c4c8c9170b1b4f78477f31ab876e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Thu, 12 Feb 2026 09:14:38 +0000 Subject: [PATCH 09/36] Update Jenkinsfile to revert library version and restructure 'Test VX4' stage --- Jenkinsfile | 59 +++++++++++++++++++++++------------------------------ 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e7e235bf..9b204cd2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,6 +1,6 @@ // This file relates to internal XMOS infrastructure and should be ignored by external users -@Library('xmos_jenkins_shared_library@develop') _ +@Library('xmos_jenkins_shared_library@v0.45.0') _ getApproval() pipeline { @@ -12,16 +12,16 @@ pipeline { defaultValue: '15.3.1', description: 'The XTC tools version' ) + string( + name: 'XMOSDOC_VERSION', + defaultValue: 'v8.0.1', + description: 'The xmosdoc version' + ) string( name: 'TOOLS_VX4_VERSION', defaultValue: '-j --repo arch_vx_slipgate -b master -a XTC 112', description: 'The XTC Slipgate tools version' ) - string( - name: 'XMOSDOC_VERSION', - defaultValue: 'v8.0.1', - description: 'The xmosdoc version') - string( name: 'INFR_APPS_VERSION', defaultValue: 'v3.3.0', @@ -121,6 +121,25 @@ pipeline { } // parallel } // stage 'Build' + stage('Test VX4') { + agent {label "x86_64 && linux"} + steps { + println "Stage running on ${env.NODE_NAME}" + dir(REPO_NAME){ + checkoutScmShallow() + dir("tests/unit") { + xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_VX4_VERSION) + withTools(params.TOOLS_VX4_VERSION) {sh "xsim bin/tests-unit.xe"} + } + } + } + post { + cleanup { + xcoreCleanSandbox() + } + } //post + } // stage('Test VX4') + stage('Test XS3') { parallel { stage('XCommon build ') { @@ -237,8 +256,7 @@ pipeline { archiveArtifacts artifacts: "**/*.pkl", allowEmptyArchive: true } } - } // stage('Run tests') - + } // stage('Run tests') } // stages post { cleanup { @@ -247,32 +265,7 @@ pipeline { } } // stage('HW tests') } // parallel - post { - cleanup { - xcoreCleanSandbox() - } - } //post } // stage('Test') - - stage('Test VX4') { - agent {label "x86_64 && linux"} - steps { - println "Stage running on ${env.NODE_NAME}" - dir(REPO_NAME){ - checkoutScmShallow() - dir("tests/unit") { - xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_VX4_VERSION) - withTools(params.TOOLS_VX4_VERSION) {sh "xsim bin/tests-unit.xe"} - } - } - } - post { - cleanup { - xcoreCleanSandbox() - } - } //post - } // stage('Test VX4') - stage('🚀 Release') { when { From f0eff4f063ce2b38f0319ee011befd8d50ee06ae Mon Sep 17 00:00:00 2001 From: xalbertoisorna Date: Thu, 12 Feb 2026 10:10:41 +0000 Subject: [PATCH 10/36] removing module build info --- Jenkinsfile | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9b204cd2..3d3e9972 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -142,30 +142,7 @@ pipeline { stage('Test XS3') { parallel { - stage('XCommon build ') { - agent { - label "x86_64 && linux" - } - steps { - println "Stage running on ${env.NODE_NAME}" - dir(REPO_NAME){ - checkoutScmShallow() - dir("tests") { - withTools(params.TOOLS_VERSION) { - sh 'cmake -B build -G "Unix Makefiles"' - // Note no -C build so builds the xcommon Makefile - sh "xmake all -j 16" - } - archiveArtifacts artifacts: "**/*.xe", allowEmptyArchive: true - } - } - } - post { - cleanup { - xcoreCleanSandbox() - } - } //post - } // stage('XCommon build') + stage('Custom CMake build') { agent { label "x86_64 && linux" @@ -186,6 +163,7 @@ pipeline { } } } // stage('Custom CMake build') + stage('HW tests') { agent { label 'xcore.ai' From a73950d5b2523ee220ec72ef9ac21192b43173a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Thu, 12 Feb 2026 11:17:27 +0000 Subject: [PATCH 11/36] Add VX4 Tests stage and correct XS3 Tests casing in Jenkinsfile --- Jenkinsfile | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8ef63a00..17d7f642 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -144,7 +144,7 @@ pipeline { stage('Tests') { parallel { - stage('XS3 tests') { + stage('XS3 Tests') { agent { label 'xcore.ai' } @@ -218,7 +218,25 @@ pipeline { xcoreCleanSandbox() } } - } // stage('HW tests') + } // XS3 Tests + + stage('VX4 Tests') { + agent {label "x86_64 && linux"} + steps { + println "Stage running on ${env.NODE_NAME}" + dir(REPO_NAME){ + checkoutScmShallow() + dir("tests/unit") { + xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_VX4_VERSION) + withTools(params.TOOLS_VX4_VERSION) {sh "xsim bin/tests-unit.xe"} + } // dir("tests/unit") + } // dir(REPO_NAME) + } // steps + post { + cleanup {xcoreCleanSandbox()} + } //post + } // VX4 Tests + } // parallel } // stage('Tests') From 6ee68b2fb4400d9690e39245c3f41d78e159918e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Thu, 12 Feb 2026 17:37:19 +0000 Subject: [PATCH 12/36] Implement VX4 support in deinterleave4 and update test configurations --- Jenkinsfile | 29 +++++++++++-------------- lib_mic_array/src/deinterleave4.S | 36 +++++++++++++++++++++++++++++++ tests/unit/CMakeLists.txt | 4 ---- tests/unit/src/main.c | 2 +- 4 files changed, 50 insertions(+), 21 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 17d7f642..80c39677 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -145,9 +145,7 @@ pipeline { stage('Tests') { parallel { stage('XS3 Tests') { - agent { - label 'xcore.ai' - } + agent {label 'xcore.ai'} stages { stage("Checkout and Build") { steps { @@ -214,24 +212,23 @@ pipeline { } // stage('Run tests') } // stages post { - cleanup { - xcoreCleanSandbox() - } - } + cleanup {xcoreCleanSandbox()} + } // post } // XS3 Tests stage('VX4 Tests') { agent {label "x86_64 && linux"} - steps { - println "Stage running on ${env.NODE_NAME}" - dir(REPO_NAME){ - checkoutScmShallow() - dir("tests/unit") { + stages { + stage("Checkout and Build") { + dir(REPO_NAME){ + checkoutScmShallow() xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_VX4_VERSION) - withTools(params.TOOLS_VX4_VERSION) {sh "xsim bin/tests-unit.xe"} - } // dir("tests/unit") - } // dir(REPO_NAME) - } // steps + } + } + stage('Run tests') { + withTools(params.TOOLS_VX4_VERSION) {sh "xsim bin/tests-unit.xe"} + } + } // stages post { cleanup {xcoreCleanSandbox()} } //post diff --git a/lib_mic_array/src/deinterleave4.S b/lib_mic_array/src/deinterleave4.S index 0d383e9c..2c0c4f0d 100644 --- a/lib_mic_array/src/deinterleave4.S +++ b/lib_mic_array/src/deinterleave4.S @@ -85,3 +85,39 @@ deinterleave4: .size deinterleave4, .L_end - deinterleave4 #endif // __XS3A__ + +#if defined(__VX4A__) || defined(__VX4B__) + +#define FUNCTION_NAME deinterleave4 +#define NSTACK_WORDS 4 +#define NSTACK_BYTES (NSTACK_WORDS*4) // minimum + +//Note: on vx4 unzip swaps output positions + +.p2align 1 +.globl FUNCTION_NAME +.type FUNCTION_NAME,@function +FUNCTION_NAME: + xm.entsp NSTACK_BYTES + // load 4 words + xm.stdsp s2, s3, 0*8 + xm.ldd a1, a2, 8(a0) + xm.ldd s2, s3, 0(a0) + // deinterleave both registers + xm.unzip a1, a2, 1 + xm.unzip s2, s3, 1 + xm.unzip a1, s2, 0 + xm.unzip a2, s3, 0 + // store back + xm.std s2, a1, 0(a0) + xm.std s3, a2, 8(a0) + xm.lddsp s2, s3, 0*8 + xm.retsp NSTACK_BYTES + +.size FUNCTION_NAME, . -FUNCTION_NAME +.resource_const FUNCTION_NAME, "stack_frame_bytes", NSTACK_BYTES +.resource_list_empty FUNCTION_NAME, "callees" +.resource_list_empty FUNCTION_NAME, "tail_callees" +.resource_list_empty FUNCTION_NAME, "parallel_callees" + +#endif // __VX4A__ || __VX4B__ diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index 17bb138c..cdf3e488 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -32,10 +32,6 @@ else() # vx4 set(APP_COMPILER_FLAGS -Os -g - -Wfptrgroup - -ffunction-sections - -fdata-sections - -Wl,--gc-sections ) endif() diff --git a/tests/unit/src/main.c b/tests/unit/src/main.c index a176b161..d37d665b 100644 --- a/tests/unit/src/main.c +++ b/tests/unit/src/main.c @@ -24,7 +24,7 @@ int main(int argc, const char* argv[]) // RUN_TEST_GROUP(FrameOutputHandler); RUN_TEST_GROUP(deinterleave2); - // RUN_TEST_GROUP(deinterleave4); + RUN_TEST_GROUP(deinterleave4); // RUN_TEST_GROUP(deinterleave8); // RUN_TEST_GROUP(deinterleave16); From 512bfb80ff3adeaa1b9c9c55dea8ba45d77de0f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Fri, 13 Feb 2026 10:34:26 +0000 Subject: [PATCH 13/36] Refactor deinterleave4 assembly code to use indexed load/store instructions for improved performance --- Jenkinsfile | 10 +++++++--- lib_mic_array/src/deinterleave4.S | 8 ++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 80c39677..479767ed 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -220,14 +220,18 @@ pipeline { agent {label "x86_64 && linux"} stages { stage("Checkout and Build") { + steps { dir(REPO_NAME){ + dir("tests/unit") { checkoutScmShallow() xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_VX4_VERSION) - } + }}} } stage('Run tests') { - withTools(params.TOOLS_VX4_VERSION) {sh "xsim bin/tests-unit.xe"} - } + steps { + dir("tests/unit") { + withTools(params.TOOLS_VX4_VERSION) {sh "xsim bin/tests-unit.xe"} + }}} } // stages post { cleanup {xcoreCleanSandbox()} diff --git a/lib_mic_array/src/deinterleave4.S b/lib_mic_array/src/deinterleave4.S index 2c0c4f0d..862fc63a 100644 --- a/lib_mic_array/src/deinterleave4.S +++ b/lib_mic_array/src/deinterleave4.S @@ -101,16 +101,16 @@ FUNCTION_NAME: xm.entsp NSTACK_BYTES // load 4 words xm.stdsp s2, s3, 0*8 - xm.ldd a1, a2, 8(a0) - xm.ldd s2, s3, 0(a0) + xm.lddi a1, a2, 8(a0) + xm.lddi s2, s3, 0(a0) // deinterleave both registers xm.unzip a1, a2, 1 xm.unzip s2, s3, 1 xm.unzip a1, s2, 0 xm.unzip a2, s3, 0 // store back - xm.std s2, a1, 0(a0) - xm.std s3, a2, 8(a0) + xm.stdi s2, a1, 0(a0) + xm.stdi s3, a2, 8(a0) xm.lddsp s2, s3, 0*8 xm.retsp NSTACK_BYTES From a1873ab6bbda07eaa1285a10fb3ebf857ded3ed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Fri, 13 Feb 2026 14:27:30 +0000 Subject: [PATCH 14/36] Fix VX4 compatibility in deinterleave2 and deinterleave4 assembly code by reversing ldd/std operations and updating unzip logic --- Jenkinsfile | 8 +++---- lib_mic_array/src/deinterleave2.S | 8 ++++--- lib_mic_array/src/deinterleave4.S | 40 +++++++++++++++++++------------ 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 479767ed..a4f63256 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -222,16 +222,16 @@ pipeline { stage("Checkout and Build") { steps { dir(REPO_NAME){ - dir("tests/unit") { checkoutScmShallow() - xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_VX4_VERSION) + dir("tests/unit") { + xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_VX4_VERSION) }}} - } + } // stage("Checkout and Build") stage('Run tests') { steps { dir("tests/unit") { withTools(params.TOOLS_VX4_VERSION) {sh "xsim bin/tests-unit.xe"} - }}} + }}} // stage('Run tests') } // stages post { cleanup {xcoreCleanSandbox()} diff --git a/lib_mic_array/src/deinterleave2.S b/lib_mic_array/src/deinterleave2.S index 682cb4e4..923c5461 100644 --- a/lib_mic_array/src/deinterleave2.S +++ b/lib_mic_array/src/deinterleave2.S @@ -47,14 +47,16 @@ deinterleave2: #define FUNCTION_NAME deinterleave2 #define NSTACK_BYTES 16 // minimum +// Note: ldd and std are reversed in vx4 + .p2align 1 .globl FUNCTION_NAME .type FUNCTION_NAME,@function FUNCTION_NAME: xm.entsp NSTACK_BYTES - xm.ldd a1, a2, 0(a0) - xm.unzip a1, a2, 0 //Note: unzip swaps output positions - xm.std a2, a1, 0(a0) + xm.ldd a2, a1, 0(a0) + xm.unzip a2, a1, 0 + xm.std a1, a2, 0(a0) xm.retsp NSTACK_BYTES .size FUNCTION_NAME, . -FUNCTION_NAME diff --git a/lib_mic_array/src/deinterleave4.S b/lib_mic_array/src/deinterleave4.S index 862fc63a..5a4a8ef9 100644 --- a/lib_mic_array/src/deinterleave4.S +++ b/lib_mic_array/src/deinterleave4.S @@ -90,29 +90,39 @@ deinterleave4: #define FUNCTION_NAME deinterleave4 #define NSTACK_WORDS 4 -#define NSTACK_BYTES (NSTACK_WORDS*4) // minimum +#define NSTACK_BYTES (NSTACK_WORDS*4) -//Note: on vx4 unzip swaps output positions +#define x a0 +#define a a1 +#define b a2 +#define c s2 +#define d s3 + +// Note: ldd and std are reversed in vx4 .p2align 1 .globl FUNCTION_NAME .type FUNCTION_NAME,@function FUNCTION_NAME: xm.entsp NSTACK_BYTES - // load 4 words xm.stdsp s2, s3, 0*8 - xm.lddi a1, a2, 8(a0) - xm.lddi s2, s3, 0(a0) - // deinterleave both registers - xm.unzip a1, a2, 1 - xm.unzip s2, s3, 1 - xm.unzip a1, s2, 0 - xm.unzip a2, s3, 0 - // store back - xm.stdi s2, a1, 0(a0) - xm.stdi s3, a2, 8(a0) + + // Save and Load + xm.ldd b, a, 8(a0) + xm.ldd d, c, 0(a0) + + // Deinterleave + xm.unzip b, a, 1 + xm.unzip d, c, 1 + xm.unzip c, a, 0 + xm.unzip d, b, 0 + + // Store and Restore regs + xm.std a, c, 0(a0) + xm.std b, d, 8(a0) + xm.lddsp s2, s3, 0*8 - xm.retsp NSTACK_BYTES + xm.retsp NSTACK_BYTES .size FUNCTION_NAME, . -FUNCTION_NAME .resource_const FUNCTION_NAME, "stack_frame_bytes", NSTACK_BYTES @@ -120,4 +130,4 @@ FUNCTION_NAME: .resource_list_empty FUNCTION_NAME, "tail_callees" .resource_list_empty FUNCTION_NAME, "parallel_callees" -#endif // __VX4A__ || __VX4B__ +#endif From cd8b3da090029e57f722e3d84cf737906cac2b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Fri, 13 Feb 2026 14:33:51 +0000 Subject: [PATCH 15/36] Fix indentation in 'Run tests' stage and ensure proper directory context for unit tests --- Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index a4f63256..083da60b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -229,9 +229,10 @@ pipeline { } // stage("Checkout and Build") stage('Run tests') { steps { + dir(REPO_NAME){ dir("tests/unit") { withTools(params.TOOLS_VX4_VERSION) {sh "xsim bin/tests-unit.xe"} - }}} // stage('Run tests') + }}}} // stage('Run tests') } // stages post { cleanup {xcoreCleanSandbox()} From 614f61cbd443ac05ec2b96bef761019036807b8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Fri, 13 Feb 2026 16:01:18 +0000 Subject: [PATCH 16/36] Fix VX4 compiler flags configuration in CMakeLists.txt --- tests/unit/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index cdf3e488..8c6d209b 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -14,7 +14,7 @@ else() set(__XS3__ OFF) # VX4 endif() - +# Target specific compiler flags if(__XS3__) # xs3 set(APP_HW_TARGET XK-EVK-XU316) set(APP_COMPILER_FLAGS -O2 @@ -32,7 +32,7 @@ else() # vx4 set(APP_COMPILER_FLAGS -Os -g - ) + -DUNITY_INCLUDE_CONFIG_H=1) endif() XMOS_REGISTER_APP() From 3f807823647f52f89d37367b8229f8fc6c572324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Fri, 13 Feb 2026 16:27:37 +0000 Subject: [PATCH 17/36] adding basic example --- examples/app_mic_array_basic/CMakeLists.txt | 24 ++++++ examples/app_mic_array_basic/README.rst | 6 ++ examples/app_mic_array_basic/convert.py | 25 +++++++ .../app_mic_array_basic/mic_array_output.bin | Bin 0 -> 128000 bytes examples/app_mic_array_basic/output.wav | Bin 0 -> 128044 bytes .../src/XK-EVK-XU316-AIV.xn | 66 +++++++++++++++++ .../src/XK-EVK-XU316-AIV.xscope | 18 +++++ examples/app_mic_array_basic/src/app.c | 67 +++++++++++++++++ .../app_mic_array_basic/src/device_pll_ctrl.c | 32 ++++++++ .../app_mic_array_basic/src/device_pll_ctrl.h | 9 +++ examples/app_mic_array_basic/src/main.xc | 28 +++++++ lib_mic_array/src/deinterleave16.S | 26 +++++++ lib_mic_array/src/deinterleave8.S | 70 ++++++++++++++++++ tests/unit/src/main.c | 21 +++--- 14 files changed, 381 insertions(+), 11 deletions(-) create mode 100644 examples/app_mic_array_basic/CMakeLists.txt create mode 100644 examples/app_mic_array_basic/README.rst create mode 100644 examples/app_mic_array_basic/convert.py create mode 100644 examples/app_mic_array_basic/mic_array_output.bin create mode 100644 examples/app_mic_array_basic/output.wav create mode 100644 examples/app_mic_array_basic/src/XK-EVK-XU316-AIV.xn create mode 100644 examples/app_mic_array_basic/src/XK-EVK-XU316-AIV.xscope create mode 100644 examples/app_mic_array_basic/src/app.c create mode 100644 examples/app_mic_array_basic/src/device_pll_ctrl.c create mode 100644 examples/app_mic_array_basic/src/device_pll_ctrl.h create mode 100644 examples/app_mic_array_basic/src/main.xc diff --git a/examples/app_mic_array_basic/CMakeLists.txt b/examples/app_mic_array_basic/CMakeLists.txt new file mode 100644 index 00000000..6b7da34d --- /dev/null +++ b/examples/app_mic_array_basic/CMakeLists.txt @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.21) +include($ENV{XMOS_CMAKE_PATH}/xcommon.cmake) +project(app_mic_array) + +set(XMOS_SANDBOX_DIR ${CMAKE_CURRENT_LIST_DIR}/../../..) + +set(APP_HW_TARGET src/XK-EVK-XU316-AIV.xn) +set(APP_DEPENDENT_MODULES "lib_mic_array") +set(APP_INCLUDES src) + +set(APP_COMPILER_FLAGS + -Os + -g + -report + -Wall + -fxscope + -Wno-xcore-fptrgroup + # Mic array config + -DMIC_ARRAY_CONFIG_SAMPLES_PER_FRAME=320 + -DMIC_ARRAY_CONFIG_MIC_COUNT=1 + -DMIC_ARRAY_CONFIG_USE_PDM_ISR=1 +) + +XMOS_REGISTER_APP() diff --git a/examples/app_mic_array_basic/README.rst b/examples/app_mic_array_basic/README.rst new file mode 100644 index 00000000..578c1584 --- /dev/null +++ b/examples/app_mic_array_basic/README.rst @@ -0,0 +1,6 @@ +xrun --xscope bin/app_mic_array.xe +pyhton convert.py + +output: + +Converted mic_array_output.bin to output.wav with 1 channels, 16000 Hz sample rate, and 32 bits per sample. diff --git a/examples/app_mic_array_basic/convert.py b/examples/app_mic_array_basic/convert.py new file mode 100644 index 00000000..fe7fb9c8 --- /dev/null +++ b/examples/app_mic_array_basic/convert.py @@ -0,0 +1,25 @@ + +import numpy as np +import wave +import soundfile as sf + + +def convert_to_wav( + input_file, output_file, num_channels=1, sample_rate=16000, bits_per_sample=32 +): + with open(input_file, "rb") as inp_f: + data = inp_f.read() + data = np.frombuffer(data, dtype=np.int32) + + sf.write(output_file, data, sample_rate, subtype='PCM_32') + print(f"Converted {input_file} to {output_file} with {num_channels} channels, {sample_rate} Hz sample rate, and {bits_per_sample} bits per sample.") + + +if __name__ == "__main__": + convert_to_wav( + input_file="mic_array_output.bin", + output_file="output.wav", + num_channels=1, + sample_rate=16000, + bits_per_sample=32 + ) diff --git a/examples/app_mic_array_basic/mic_array_output.bin b/examples/app_mic_array_basic/mic_array_output.bin new file mode 100644 index 0000000000000000000000000000000000000000..f3a3f7e75e545804de7e0fed6509f4e09a5822a3 GIT binary patch literal 128000 zcmeEu1DB*(v}~j^3vEo>wr$%sr)}G|ZQJgiwryL}Dy9)H=H8$2?yOa7x~ej>KAf|6 zXn(-}{r7)Y;Qy|`|6PIqKd->IhId#$`8_U~e2?UPJ{s|mC!aiG;-pWRyVx^sOZANJ z-aTW@ug|!A%5zq^_?&UZXB<@Y8BPD=e`ddSN9W7Z~a8LKXLoy zPxN&D#OH55ad+;|T-En8bEf#rh(e!ve$i+8_k8Br&}XLG@rAROex+^EH?}c-=flqb za!KuV#+LT*6-@!%}icaFnd|zu!jk}ZswWi zX0*w}A>ZAsv&6+RaW3A;>|wk09^R_u;qlyVHoEBMOS;+cft#k8`n=U{9)9O$(@`G& zJ=Du)iM+h|*~3H|JS;lb!@^U&+-mf(=R6;qp7k;Dbsu-+^Ye2dKVzEvxnrQ8XJ7kS zvZz zdU$(_huJ54xUQ3zY3KX6_K%O(=la?5l%Js`e!AZH`Rr4Gg|-B_cvFZKv+D0X2r}P| zAYViTSfjI_r8oGv@tco%I{KORh>uUw=v;q#*=wke2~K#~u8o)fj`VWbd@p?iyu8@n z%g=Yc{L{uyi_g!@eFEI0(}kkfRIw{<_0)e14DGFfC8*)1VZN4x*)d!Ww;;O{qN+fl&E7y~NB z8qoJ|BkJcep-y@o;{p@fTsNV^Iuq^`FrjTzBiPu8^E4pcU;6t!47j-6fNMpKm{8G( zR|W%0AwSJnK`8fH3mroP>SbnLGB`SG2P3yT-eJ`i# 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 F{eOFj_|E_U literal 0 HcmV?d00001 diff --git a/examples/app_mic_array_basic/output.wav b/examples/app_mic_array_basic/output.wav new file mode 100644 index 0000000000000000000000000000000000000000..dc80920981ba6954ae510e3574d3c39d2e8637c5 GIT binary patch literal 128044 zcmeEu1G^+yv}}~C4%(QuZQHhOPTRI^+qT_3ZQHh{by!Bcn0tT5yEEVU`k;`Nx%XP3 zm5pmvubwsDfEJaSSL@z)NXA3}4EldUd41yp%*cqYorZLR9`k?y{ofh*zccWEXW;+W zGw`k99oA2Nk4q-sBYB^XMm*%nCy$so=~Lz|_Ke$7J>$D~&sg*8GcKR`jY1lz2cHBui3Hn8}6O*hFyYh_&e)6E`Ixt zgDSn}vfz83-}0Ut*1hM2*!S$Y?*qrx{lwE-KN0Rv+&=jeJ)J-C`I}GNo%=Ia_5IA8 zDLylz&}W`s^qKxWpLsU)ndx?X;q0YfXBp37!9x#YZy;V<0$dxx7V8o7BQlbepr zZu*zI`L2eWV;i`bGK-t_yLxytlb03DUY0oQVFIt4dFHtpZSru)cQ@-Saj{ICi+3`6 z*lxXtw`zHKJhz*TF1q=WZZ>@2rfH^LZ?&6;-?`azl!t#0^|DzaFK>SKFwq7Ni_Z11 z@Ki6i8hz|J&&Q@`eN24a#~u0n{9MS-nC5=&80hEO*M634>ZiT7kJ&r7%K!kHy0LoKZf&O1A#!hebq(^y zq5!LY^E1mSANx%5GHF>K+pP97c*V^_dEGpcQ0J$thbf#M-rnM2_Q@Wu>*QtH`97}w zUrBiYZZhgM$A*P=d;+Zo+z8VnZG=0X~ zx}M2ug&0$rEHaGjmJq0;-T(DH(B}j2_Zzb9C}3rb0hMA6==--3^>dj}C%ukwfeCG{ zo6upM33m#Z(6*@&Y;44N8j$WUy?+k_E^asAT2Uh=R5aq1!GKcvNrx}QH4Q?n{42n; zzkOVFQ`c;*pQdI$PJZC!)5JcOU+QCtN?uOWdM;Jp%c;74qpy1z)ym74Q67HT}KfUDwEHx#_3zvg@=nQf~{UC=1 zwN}dMcT)q*xx>#+x^`j401w>?@@b0@Pw03$b}-=JVXeoCCKT})(W;9H^`@E8$8UyL z>*eQU6XusUp=c%}iX}5*)P5tP&KPlajR{Y0SWvUD6*E0%q(5lFfa6A7%wa^{R7Uie z1ypHjK!r9y)YA|XWD3z%BuK|!A+{SGWb8kF7Rnpo+G;^|s}y9;(|(?+?qlxzK8Bz0 z@vQ1#o)vCp?C#-+41QM1?c>ECZl>?+=G$8y8nSrVys(GeCcC+Omxnoz`q=J~mj$b< z_Ad9*d_#5YFE5*9@N$=a4~L(L^q4fNn={7v8Eoh0?K}aN(|W6S*w0zty&P2E$4g25 z%-+DyF{-2M`}+9I?qmHgURr9XRzLH1qIzaW|6`cd_{cCyzghXV!>#rcWHl zEYD+Tc^%F3g=4sUY7Ad?ie=iWaV)kxo?RBiv&Yjo-ntma9%JH}|4cm3tcqi$#c_0P zie-r$Qi4zj|903TV&6WxG8okASEJjBT@L%iIKyuFW%8w`|7WWd81a&l<{R?ah^ z$28Tb^y8R0a=HJ*moS6Mg7aAUQJ(sDIWUi z)84;-B*5ZVeQc#Ya(9E585(;yuz{OX+q+r!h?^hGZa(boWP&gk`&D+cYBx7?O?0!w z9buW8>a)wdta#MJG8eu4qFQt=CcuW;f9W>(nI~tEqf~#}PYkeHD9DC-{};)jIvZrG zz9Hr-3>ZHH*EfdPRJCl~HQ@ew16~a=;J-fmUOgvoWh1QXjkvYagmx#z*aujU|AZNP z)KkCIQ}6x9g!%(iM}`_O_`Lybn;BtWWyIKECw`N3!GgCI7EF8w`;YEhZqL0-xcqUT_Uc^`-PZeobPQihm$Cpp4I z-Y7#J)mpgmiR{`T#O8dKK(r`$ib?OU!zp#8~VB7 zim+8zA8(FOj}3a5w55;jM|*j5M=OXFgyJ1#ct>SB>) zPTo1?V$t5}H>2ImyTr*gQ{owRB92*0$Ft#~IKI24{e9laBYB;yCyac5yo+}yxOhpm zVDzFmwux|Z^7|$BF;#opV%xVd*lCcZdPyOV&QF0{;ca}{5m(UlymXVt9Vwtp&Fdi#Tnr)I$Tax5`J$u z#YNi}CkNJavg7$U7HI8c1^w<@F(=dHi09-Uacu04=Z3jXew*uJ_1kU^eB$Pefgava z-&rf%8Q;sxvl;y?e>}jMzx=$ESAFERpY>m9joF0LJ_T7>z4q6sAZ;&$wC@PA`YLk& zO#|YF8Bt@Ha9&q2R2ML|suAfv81X2n5t+9D|Lv8<;YPGu2t=kPGgS+5Tv&)X#|9a# ze%^6!fd6W(6#VVyR$=8z>h-}i0X95(-BTy{>R0kHaFil7H|3NX8w|1&dcTIapAJ0>c5kgtIvv4 zEY2@HzrfFBZ@hdw#KSZOFTKJeck&DWE%7n9&d+(`B-^VA!#oVIezp+rJR~>&4Dot& zkk40=)3i?tZvcvJ7JeH|HqE2@&?m(D!jg-%UmH~hhFt>k4g?OC0+v~UacvCvx=Wa3 zs{wU|Ir@JBE}RsWm;q#Y4D7iA{1SGaCCq$zodM~m0hNU9cMG?EerQA>yAc!X8jw$T z_~9gA_hR63e=_%%AR7q}oj)63`I-Sc6{tQ& zFIj;6k&s-eI?+ex#Zo)OJQV`;_{HDo=fj-=M(TYl^bXMcPk^Vc1ZYYYq_tv*6T5}z z((`Io4zX^Y5Dzs9v4VQko2eAG0d53={H={R{m6vKoo38UWkIH=!lGF%cz@l3f_u$q z(%pm|ErrX>Cj66FwKU2A>k9)i2%CmR8Bk*-@Hmq`*U1olJwxn%F34>P_0H(^;*WY}+x7-jENH}9^^`(BBU-c*ALwmDV!y7z3lp-HGvRXv6IvuOVx9W* zb*+t$KC+K`Rox9n>@90V;xHptY%$=R-Y4G}6UOG#8k%IprEvy0(;M(WSanZVkty}v zNs^c6pG|xj(i^E#?x9mS}(S@0oM8NXVrO+es-M+ z@a=>EvsnYQrVj9;YDX6FoTLrJ$uId?<+7KTg;Ad`^s((CA2;k5cb*wwyFPwy{^V!8 z&f)CiLH4PuI>Qjxe^3vZu5}z6;?C^aN9whoPmos{lLr!oSgLA>$&QHwmmQ*9f#-Jk=JBL z>6cdIdTT|#Qx^Obw_ba}f@_s6cq-hqIEfW?j$6<)r4?ODSkd5bD~eCF;_yuij_5fM z4`Z0C50?>6T`S8eanlz-Ztcb4UNUj_5TPD_GK>u56(@%J_1z##i5q2BKYvz8 zI>d_rcb^aNK=A;76!3F_*79*_3D=W~ukQ2mKo2jSLsi%Q_Ob9g@!9HrPCw%3uOJ{|xQ3kjAu6kxGCqG|{ z=L&t5Q7>*+(xv_HWZpjN#s9kaRQ2}d2ld$cE;6r2ds;eDb`Nuzyv!wjVXNTdv;wNP ziqhBW6?{C5k@kgU-K}=&4b_xRyEp5Wc zFzx5nCfr+RMnrK7woEajLoE}M)HdOgj%9+~gqi2`9P!iH@kW%Zsv6K%Ygm6zta>nX zvJv6pw#U>P1mRd#>p#^ya}H^CBZ#NtHSivtZvE>7~J5b#w!vC=>jZXXm^uOSXT$%MJOUY|=C@pGdA z5jvM6g_#?C6vh~9!ub^@G%9Y!-`k96ozs9*P9s*2)Z@RYUZ`hP(eD~cpDK6+Se{9> zH^zucQ6`kqdxRx6pEKv>LNV@M(k2Q`B$8!gOlvt8aP=&*I>R8IrAED;sJ2n zYDDvB^=SEa&m>aaQSUFIKGW@Ni2W*&e(l>)MTDKX@_=B=MSO+K#MJDCl6e_Ob-e1s+vAl8}H{CVWSwM zpPjv4#vIk!TB{o0)<;*kpDBdh3Mce)uG`PVEdop~tv9T>*2#Dszj}ked4Mmo1?W;8 ztJX}~g!cPF^@-2hrSY1@0cQG`*WqKNdPv*xUMA7syJ`(y5jU{k_OfAZ{r--J?kOI2 z=`I~4*2|p3yqvJn%XEjmES1a4`t@`y>f`xR1sMO*&&#oX{`1|(hkr@`SQup5PGtRZ zKxm3IEA_*5Iv>+A0sFTBGxr%##b-eDRrSqpMr0XmMh)@cG%GDgQPhgk^{pu5Q%%^a z`q0;cp3SWoSHX%^Gb}L8uwt7uxx9&O@E5Qm`$G%X_ z(Tp@XtT^JfVn-({Hf+-Kvs;m^uN4Q1+R(A74gb`$;KW&R$}VQK)?P_}+>F|dET~Z3 ziWviJ=+w%F90lwsG1`X1W2N1x*JM=Bso2AUgDtG^G`1no%Ymq4b|floL;fc=?09R3 z<$?nhqz|s?X2-FXc2thDVRjxnvPIcZ?4$#yX4z0Sg^uHv1>WUWtP$oqo63srzpVJQ zz>3HY7L2|m-R!dw1I2|W7BeE|hU&1sUvj~SA`gskX@ADX>XTAYC>a7_qXk5yIx2lyT4q4Ezgbk&~S&?wC6+vm6L;i9gWd{dpML95TYZx*m3&WaL zVOTag9LF+8VCvxrWJ(u-jAJ4Y{UQRbUq|55$VkL@OMv_x6Qb((ggE{o5u&yyLc;Nh z5c@hI4y8(nk_i)HSEGcum^v|jJV>bXngGUgkvMKofWfH};7s`l?7kU+DVM_Wtw$J+ zz7KgStvRAWwI!HrVw*a3USxz5U0Kk zaqNBrMocik^4fs;4&l(~RFnSkKtU*c)EjM%*5f3=O<*`+}|mtLOMfPvCO zjy(x6Vy<|Eu-Yzh{`tFn=AcaTkbk=4Wpox{ljYWKEh;zOUwzfG{8ppC+6apO(y#R@(jx>9sG(En|RzO@TYp$fsk;Pv=QP3o?QF z`^bsF&&0sJss^;mYJkZrj4zpKNME2^aeaN!`{}X&sP?96B0SkN#FY6|A8V^Y_91WX z0vZlBp!_WZ%IqHgP4n0CmB!JCB{iW!jXU-2!K z!M4)PXfnW)Og(C=&aZTtp}RsnZwc}4$skv!3UcP2AV;?jGF%$$;qpPIY!%=ZziLq@ z>DVQL91sy?NogPRZU)&;I^BuCgs;V!{v8u!xe5RKx4eyl{PrTq9dCk6ULnM7Kgivu zfM()}EgS}{s$f7&O(XgVzpi;|LeFX97x_)7Bpoi;#e`Xh<%fuC)GIG;veAT4D-#wb zQP2Eg!VBTxw9=un3cplOW=3Uw*~*&ms*kvP79+l7GGS|R6K={sIr71XT+;c%hY6F2 zgKldj4l~{e_i__5r#EA#YTMXHX5{;6M)z74WU-hrPp{jqkg&~aGkDYtOTdIr<4pK? zQy5Es_em>jxm%jNQ^z7)v_ZV+igdQ>F}ju$g=fkF=cM14uBh64D#U@}vUQ~ue6A+l z>XfvkivdnOD;-IG+2+;(Mjw-=Jy}}UbLj~BeYpD0O7*s8OF|sBJ;W;WL!8uKTxX4X z;L#B84JPYpomS{*z_QB*bWW(x`oV-LyMztH%*drRVbngY*jE@u$6il;fB0_$3K@)e zSy^7&d|^p(tw+KKWAwX9;;c2?LFSjHkyLtHnS9c|Hi(DY<bbT<7Dg zTRsj{k2S@(Ij_8jO;fuWnNga>J~uJk#Z{%H>(WVAMHj2=aIuuZ!@*TN+}Y60@g>|0 zR2OF3pueYZa`-hTzh-d>&pFw0Q#}9m$1&N@cvh|D;>%}FhT1uquXa4ozKi8IozQiC zV_Eub412GQ;gzMaY$x5w;)v%=`Nuo{#Ia$!IHr${V~2L}?332XA@Y$Id-XaSUEI}C zeyP{P7e4uy{e28bw@I2kz&RI!Y$0v1j`s4D>IO8p0CZJ7XrcNsO6zT@uiWIN3$Iet{)%%vmRnzZ*ykJQ~XcUt^dtdo1f#jA5da z(M*snnx$IGf6pJ!1;w4*Rnp0<>EiiUo_MzL$1}-SC(pfiGj&!k?@32W+{ee>qkObV z$E-yCPFOC~%Ex6h{rn(Y61XP}RWQiYB{Tn@YoP5Enc3fKM zK*T^huHLeu%}FateG#t}&rKa~Mo*ft@4X3qRUeGf9(=;WQ(FpqtH&i*FM0UJfU;pG z4A$P6GSYx?^$i$OLu=xr0j(1V|< zK1P;5N_Oa@+C9^NHL-wqrL2Yi(%s&W`}P5+>i}(4lc(wReMJDtgR~z7rZ+a=u+EV? zxAb^vAT?DpOOG(%>N)M(+VYNb8qq=fcZfK|jvT@(AtUYz(^OKwem~cYs)@}wP{NEd z1+ERCns5{gM!(1cUbd+wF%Zy** zv<0Pwn8lymt#u4d&1j+LXZ$38|A-k=`de@{sLv-afABT+1wCe+eCVrZO~@mDI-`>r zrPV`{wiJfxV8#w<9S-5YJP{Ub=xIaBJT_#lYen;RHf&F8!bUCFvf}y)D@s1IVNGEh z_H4EycT?#u!eJS&TQQ)5aBZv=d()cHZkrh^lxJwH)Fsl0_s=zr+zQ;&s> zhWdp$RPRGJVOw#&v#L3T-T{jykdI!4m{@vP*YF@$8Ksj~^7E?dP4Az6X3G-b4)L4& zxq@sgZuPOaIM$#L8)gXd-Q*zs*OfI$;%AXu0sav`r}$y+G69yAu2Z$F@*mX#q%`@F z(rVVLR?IA@-#rR2ORXSN%#&V|H^}|lrH9GiY1AReisEp4H;I!U_w)2+^~Hup}Eo-9-RZ$3cEfKp6aE&|3JLFLv8t9^~}iB(1KU9EVxd6V;!S))F=4gz z7jcU&d!_G)hZK?)xL!K_*|G-Q*biJx5n`>c(hh&<`svyYa)cOApH5pk$Op<79KILe zwSFOnLP0(nALIsUmK(&ouYd5fl)Tn0(zUPj@^MoMWfi^#xWwz@nrA*{lO{4m9N8e> zerq%7SmLY&h5tsX58e3SxRr9i_a!A7{Y!^CsL?t%*3RS`#DOy3~wk zC8a|uuVEBtTQk{;D@UwI7H>zx26oh5=0NR>;(7hTu+A0%-{&yoC=sq4PdHv&cA$kj z46np}%EmkJ@lF^Xc-1p**d+Blwt@5{sQ9LwQ1V!5zG95V}p#5aiNrfz!NXXW-< zIGORByu*yj%+ztyrW~FjrI&I2J#2s8`#<_jtk&4X=K-$Dn_>sV{&O&QyzL4CjPUawU1H9eC%LXKEV=XI@Pf{4W)Cp zBfGZ?aQJHZXMgLuZ}Ib!uI<4-L3)LgI;;#aT6PO+h|QsWv{{+FEPl4_7vScV0lrhs%P#LG!zTTlTYFl5^f`HN!{zZG7$H6goo7WDATKE-%w)#C&OldDRQMZjna#*^IBZ)yFI9>!uxXNyPJ0*|2@}Ogut8w}Eu(*^i9qDD66x)^W9aAvPPQ zT-Z42cFI8A7pI&O@8{tc^7D#`Pbv#FeN&Jtbe@`K3z9Pe>=`SrA+9^;pfXbGMSnL_ zj!k;+DB+$%z5N_MHN^b+$-brl3nW#&E=|Tr=l>uL;m42=FZzRw$Sxf`4Vhf{>0%D) zVLFcZW8&V@G0SI`-%y0CB@X{bIIWs^ceSiQ-*ReA(gmuwG~m84cg8ygBrKuKLS%^3 z)CbHupE=hG1NIU&)aPBdKzKzM=G_wu5=tu{lUiJIj};$Io6uF*rAKZnuBJ01LnZ0o zqoj?!G^5yO6Xr<|`VW8f6jwazv|zP-t+F+(=yS<}jFT;}46z`j-fs_C(N8}=s%FKZ z7V-=i%lnbe=5`zK;kYte7Yvv&4XD|lT%!FyMH)$wnL#$G6yo@`e&$Hv<1qEQeEr<~ zEY%bOO@$}kX`eI<3-F&u^4it!TIJL}UZVVk@)kEN^1xSmImG8<{5&rc zn!OybH^e{EU{gc{XgnWesFQSxcwmf6{&9N)wyAbTN&_iUSsbrlkd`OXpB!WlJ*K4m zl?$VF-rYt_C}Kp@E(UacX2kcS%D@~Fc9f2PQ=IO~9BGp=79<;FLGo;Nj58^tI?;~Y zUOT=Qw_#rbaS`>EHIMA5;ui`2ZN=FnVd!DBWBMnpr(zD= zmyXz9y{^p_3o5Gbn52m`siHM_OvVfS+Rq$Pk(t$}p9RyRgUyN3ZqIs$8I zYJIC`n7aT=FH>1XvYE80C}ozq6$N_E1~SP5ztBQlrx4(#_2-8BO&&|b{3EWQV;MI` zIOA}LEgA^J>=pk1Te+*oA(s44pDiveQyQvklCXX~;X+~ibQyFF^ZVIEIAeHSd86g! zv0e2rc*aMsIlzh9yGOKFo1FJCr*y6ENtM^=>}7Z1)F#41d6c1D{3gI~=`aJ!>viS* zZkG;rW1FA0UFz@Og;86Ia}<@2EDxxfj%)UI>957ehY94P|JQ>n0#B6rs`Zh)+S`EQ zBlP`l^^0}-ET6>D?}}$T#mRRAL+?qmR*&y@UAlz&&LVN1e}%)Ax|D$xrZ~Sfzy=TW z`6r3jh{t4Kq|Bi>&M4~kM=Q9 zBh}lve(ou&j6=#0v))jKNOkw2_H75Ru2r{gmH-E3ZmgfA#yy3CGE6l|SZ@ z$8}l!pn=wayQ`PcQC=n=?B;W2Qb$R9D!I(bF(;iobugY&S3CLYgp;k?IJx12GLqw! z9qZ&}%7Bk$_gXQevVeZZ+tJv&1u!!Uj|E94$W~?E;{-Q+jej z@m=-wYv+x)`cyglN6JU;RW@{|5nU|uRpnKzQGJ?sM^iaHf-Jo&$VKuwqs~cx-KBM< z=blI>tkB$qRN^EK)wPDwaK5V-oGfj|Qt`y|(oYWT7f*ro4(Y;er6FCoF0Xc`342YN zF}SEKO$IYgh{L_!DDQZsK^b&|^eKvGhnT3DdYMstSla#oeU3@W6P}(NWUiN9&XIR` zVuScp86OXdpUu(nMV|I^r?_lZ;pJBQ#Knbqa%%m5&kR^Hgt&CMYE=dCTIo`OZ@}bJ z($Rk_qjS-Ko{>g8lXl{ju2o8&-r%`*yz6K|Y4MqWH1C3^jp)4Ej1&W`XtF`;b*6G! ztqi!N^EyU;cA`ZFbX2YEBCfxvt(OU|csWow`Mo^KG};U82K)J^zK6NPJ+vM1Fy^G2 zUkkf=K%VAv?d8F##T66zIq|rUIfTD^spf8qSLUW&kkjW1557>=JTl1is=@p888b~+ z?OpFd?%5x-evr`u@Bd5qWJ?`e`7H&>z z>E@oI;yS|770LzJXS|MEn4n}|@#BKRnRkGuJ&c&N!-V+WW;8w{&aeD$=e^Q{rrObJ zg*2USVQ5-60`7NVSkYIyjrM5di7*^-BtUc<`E}_d@TR!@v;5+r53R`A&xYI=9q5$I zj>oTUSfYKMLHl#bH!Ex&%{pkm-h5!iO?mV`#|aC{+l&?t>hRfymrd;`_^%Dsh0ka2 zF=N(yBT^~{w&9?(oM&dd6Q*2VQ!_6=jHui|*H_0b%Egn?bh65KI42I+ye*k7!iY|T zr0w`fl}IM~rgd^$e%ER3&Gh0XUioEujXJ9H^`ti!uA_|E33BN?AbX?<*%OMxE>yl* zT0>j;PzyfFtC_A|CjaY^>fOWgs-;Vm zD9k+{$T3CFleXQsk1{SXz?-`A4Yd}R$s6$>|Ifb%0tSi`$isFh2llsg&Bp3y@-mi4 z|NB|XjAdHKPxmWp5i8s!?A%S-d%80=bY2jK*)d_byfGYsV-Xl#FajHEMPNefNc7E| z08{QqqVUs5^x7Q>XYvR%9T5 zuA9$}S5NHN-_eTs$CRroFU@VWw7~AVPJ8TFaZY+rCOfv)(cVcd40zv) zZ^Mf5(htg8uzk3Et2JgMn>1{`cw+<{`6NaoM94H)P!<$jUpZ(;C z7ng^7Hw^XGhhx@IeTI5Abi8T9()BiMI%DHbjf#-TZCAuXHv{?O?^8N>-d) zW`$QXQkNDB(@R4QJhGtKAsadrupvoaE6Vq@p#37%vro!^Co$d#i zP14KcMMqqc54~SFBU1aLiSk(0g^OM(1Ed;$P8hG@G9!*Flap1r?r|j(Y_&C$BTkWX zxdBU*9Vjbf<8Ey;n!nL?jI>~vFjmVRW^|E;URi$P2tBv0`hxwF39Z^$khGW;%l}o@ zvaGUKs>N*!TJfxd4e?HK!s&XhGMLpy>-oveD68I+O8fVhH1~pe^jZFpvgr{nE_;yj zoS*8wn;Vf{(rZPd@^??fn}ugfy$$h;dS*`H?nC*cJ9+c~=|s;)DI?lIdWW=;xpVw% zCjBFztmuk;(qJ_ER9C$ydC<#lPSw_T9)Tw5H~|kADOXisnQ}ExT?~}dJZ5?~o6L8y z?l2e6uW<5ULl=V{H{aA#{%VIblV5K3Qmu}9>Ez6NZr<;$IY#w@Tk7lSg$=Wc>z5Lb z9eF@K#U9{0X~KWJ%7FbPPJc?+Z8{m0A9p=ozG+;5`!qk0&!8+_P#SVDz|W_Y{W<98 zMU&>#lu=5W$;-O+r4`qa?jIr6WT$pYMvMcTcRetQaoH70Wq$V_2kjETiAX zvenjDc9cfv-xtT-N8>qvf|D2LxcK;`W@at&@0JO_&JWUAJIJZh^lzM1u25R6XO?)e zNwuh(GTOtGVUXXm{;{y@0QuU>OxUHlk#fbw@v0foaIpzz*P5}?uUVNCR$NeqXsuUS z;j?C(yC@#<%7iDXdr2n9PZ^+jyqz`_&M6;bgC4U@nPGYH!#;~&?lhs#60K#QvaJ6o zo77gEq=E_7J<7idcOSkS;4$fd&)56eH>K7_56#LZ^Rv6ShE1A4g)P#Cq-(b5;AOcq zJ{HhA{!7?4CNjX57o~;Xkshbo(K4+($eQGb+3GdYp>vDpPky1ig*=h?8=3)-9xz`z zRjw%Mv+^!;57$gjVm+>Zh~BHpmCIkB8XM%S;+pAI{BqAnIXhJ_pwlIKfkE< zz0#~(?3Dng2w$e{Y`}BX&7gS7O5yh1F{+vB$34~WQ%sev4cJlFu{YE5 z5AD3ef@;#niq4YGvq#r)m=W96+cqnYVCbPWkkp1l>y$l9sF}>d%2tREy^K%5FOBk+^e9Y&g?RX?Sg(}L4NmuJJ!h(p-7DStrxtAAzPyBm@Jo>lAOz=tH$)z=T zdy9NYVXmYjg|$?-Z_l@&&?433cQ!1lV?|Zz|J!Z~gXn9g`uO!&BW^3}`9%NL74Pa; zO*LMxGeTIUt+dvq69JQY%QJBZi+aJJ8k)5fkMQg;;Jh-ur;>&^Vv+cU_-h|&YG(Ps z304F1rDKda1dRUxyeq9>dhn6#jy!cc8eYgSqQYZiIt zV-lM&v9}2;?<-roLGuHJ3|KCWv_(?&h#W=~kdM-6wiTU})k|6=j3he zlNUKR3{lg=(BNSh2Ft5D7A_274adil~v z(j~N_>jo>B#fFh~8x9JeWsjC``$)Oo0=hGdaOh3(?dH;=W(<>-Cg10@I9f015$8Al zm-W?GD8zHpci(&?%U#v{M0R;}#l*X=2+tl;zDanq-9q`y<<+;fp6_hbT8z*>Ci{vR3%_mMfPT78Or}y$gI*UteJK^O~abEj+&1#Et<&h43yJL{c z-UYd7X^=+ozaxu78n;$HN?uE9@wAEJ(rJZf)4dkwl8!iYg0zQRS@3w{=qen0cGbR*&F zlIue{24zW4sE=vBY~Ks{1Z&BeiKY2YHsDS<6Ha{-mg;Fh?`xXl8z;@Qsu@M(Px++z z+*d6=KFo@kC@Ts{M=X%Xj-~RtT2HiLcV094z12GTrhLPG&9Fd z0oWeqt@>9utrypGSzP31Q)Am9;v1D!;aCM-xZs|`e zg_|Rj%YTrb(eSJ^W9gy+^@B(K&G;-V6Uu1Bp;N+i;sc3)3L9Tm{z2y^yb|y-iSo$B}xxLq2pFj#xdjrWp9{Zo0rV_nJT%D42Eo*Z4)%M2yF z%&aWAL38sr)x)=>aIr;c-E%@&^SEi!R2m9H$vgazIbNZvvyo*?!Y~H+l%F6kJ8sih9h~01juqb z5$YC92*-(VL~pa>Ucid)SsV!53PYo_;ds?744vYvNb}l?r;BWu@Y#yLil_EuBM})6kVco<5~no!**h5;h&vS@ZG2 zV2iu>c&>xyDznO~*e0Dx`|$Aq-6umC^+S0yt9i#yYi8*tlYRUZ@N?yYAZsYk|LbFj z?Gq{EmMX~gtCY{~E|RDb7)Ulw#3u|WK>m9)+z;sh`9iGy_zR@V7j7xlmMbftv{7Eci7 z`=T0|%*%sWU0iWLo(nZUF+;lT@(r5BsUh!qkTRdMq_0a83`lcb*j?*rB3Yw}X6NRK zlZKh_Zkz?>X61{-|EiDla_D{eQrms(E^R$q8|4{0NW+qjH?oQ}c-3&zKSAdCADo`A7{+ z9jp0*%gV2ulb8NYK8bKgCJ~}SUqwDZYnpO(k%VD_q%prNuC8UkcEEQx4 ztveQ!?)8tnICwbfs+&(c>b?h6e9}|3X2wVto8w`Lavt7k?%}U0(gTINUusP(lD3j* zy9seV)r(C z)9K6mJ&xhFIPS_F&nJ81 zc&?|D7Y2K{!tQ5P~I&e%RIgVd$Sxbtc+@q{1A_S1FTw!32L<8!qG)21#W>MdiVADaX4^+1yde zQ|*whbG4uiXH-LL3t!*=Bdjmo>yz+wcma8Q^-R)2l&{mzc?(LDk~Y;;`}5z9(g!q8 zQF!rx8AlIG>YfF4t9Y41*MCk{?G3H%LXn!SafN6%3&&_pPtt9z3aI2DF&+3jdt#)`{LENC=Hnv0HY{s9|IqpbMW$A-OA9LO9Ofh|K5p+JeG zXf-hr!aGLdge?rCrA2joMh;dzv8by%Psbzr2=W71unTI2zf-KWln$|hZ9vL)qsu`#Ww=`3xtjdFWnkiR? zwQxXLzO2H?%5(iIzu2%_@3Sim?dC+_;V{jB4A*?k3eCj{54?^y;zf30mv_QMJxu>| zpPxzB4d`>+fHU8ftqsW+Q~zlxO}($~h1ImEmy7r69xL+3GU&KGM|58)VYpHzVbw93 zVXLb7ROu=SuS>hg;^l|wnxRzx>orFA3OZ=SD)sCvm#p}mR{4%OW}IxNoM#~;Zsd@z zrTsYDuQ@kymP*lP+)#$JkFb1)+6HX2sFv>x@vZP}cjaQDHMcb7rMxp~P;G?&2Fa(q zP+oc2!OHV~mgk|p`$4s|S|jzf7Mf9bWyGGo%Jw#};p$xFxx}|tcGSLHZ$?)2);ZFz zch(NE^lja9)M>IX70cmue zLaJ9yq+=YKVMKHzGNt^au&(0w`s^pAtJ>d%SVYGe^+w*baux+{s7DMCR!~-|^cJ_~ z*8IHpLLO8F)eY5=y6cnyej$$7F2n^(Rez;J>^`E|`KrR!-3@4yPY ze-JNPqI&=(S6(GdT(^>Xm~gHN2pU$my7vb+!Fd7jlwr`Fx+^vWug6AoJ#;+VYB^E6NJRGxEF@wp-5TZ-X7tpW3jAWsxiuDXphIAO8M7p&Nl%Yp2rta!UivlL-L_7bOBdPm-(u5qL| zZ*lSJbA^H|UPzcs^N2MU2Ko4^@~v9`%Qm{1P+7HM&*ND3o0H4rG1k$2C495uSudT7 z1#~Zl{B1NF_{hhkt2OgdRQgkli(X|(p7)$4sd+;Aipn^2Bx}IP3J?AAkLa+z}{54PtHbh zoHpVV((p@YMj^o~GlC72FZiQ#uAW^ewe)Xcw;S2@zFCxg{cjGhujXCH1sQWtvjGXE z&t6kL1mc*xgXMHU!xl5j2Qv)(;o$XnptcdiUm;aiuxTFCkTS+?=zbdA6l_6+B zRdLq>!m@4p8u0TV#33}tI#xJG8Lxxtz4w%PYxc^=m@Fn7I}?V3Pqh}GsF!OWjrU2L zZl(LgObxPbZh2TkAuJqX7IA^~skEk53rmXwH&*_;sI<;smoy)#{{A2CD^-FV^g+7P zU>m&ataumcK=Z3Mtdn17cFHd~CH~S~_drnA#@<77R3YhMXLV14wRU7IZ^H@I_P}h- zg^0)0dZWL~BkJ?ahM(e9{@&^lssST9D$Ai9*P-1uj5k}+;)8I)R(bOcf;`qo8PB;U zT+q45{ZX?L_53X3_OSdK-T!KTh^N%UdWy>>m-e0~qjchbqM2e}4F8IaXM&V2cGdbE zrTZ#Q(tVcdpZdx7!+tVFcnm|w? zGNYxBuhl)ZG@~&xrvdYnx5%J6GdhWzzjVKsBV}|B7YZxu^Yxk}&Ao%XU18-!pLCz5 zeLmVY1o^IAfG@;%R~Gbgn0n2y#+r3kjcXyDKCQIQd-4dX${(nb$Hg(yqZen6XTpv8 znyY(l=^i$bYvduQ{<)%DoGCA%^{6-wpYw-#8@pKSs*AI;#p^y%9v%p&=Ij18Np@%t zztSAH*8Q7U%_JQbM(F0{W?_oqD}<>BIyvBxn<=DkW?U2GCt)zh5CbNhrDlSZ<>=++ z%y^&i=}-?o9%Q!vo_~-KS*KTZ?AP9f=wQdtFGR= z+{vf=UHtOQ%{dEwJl<4!-hi?bR@HI+{bpYe3#L+EkVeo@na(rHz4X%_{JWU0r7+^* zgPN}!r&;D4UIr%Vo@V+SM)8}@*~x#Evne$U=w4kukuo|zG+S_`j1BFi^;opF!^Fd= z{EtieX}1^?ZmpL-SyEY&MpmSk&RIo%WUVQ}l+rm9ONU+Y-H3a_v?F^<=hwPhEFEoz zbcLqtEr=7|E2Tb_XQmkkg@M-F9H??v+TI4u`^$@bAiTU;jeUbW&HbYyF(E}Hj?8yp z-ZSOeqU{*^%Ze09C%ti9BJR%;S955_-qHJ3I7gG ztQnoPVJOr|uhBmYlXp9iAaxj4y^!8GE==`6dW`Pxm-zp2bly=t`2QEbR?*&jDP=?w zLL?DoeT?iKvPVXCw(Pz4&fXNFXc_H^_TD?$+~4#2`@=b(^EpST*ZcK)j(Z>Xivn7S zc*^~cBGhG9=__+CMd>@8#h;S2KtA`=#4jN`vS0FdxacqUQiKBhEM#x~t10~7OATQz z^RWL~;-rT7C3?!gPjng=r3YCg+NT4HWKQiYGv{8iFI*y=5M`;0oTNsUx9EMGcoOFc zS43*0?J-ReEA>SALwVb!*I9J_45NZa9+B3w{1{$5zX3_>ih0+hgstwrKIu5_U}uk*lhLE;8qK5l_BOa2=n|t>c!wYHBU2 zt>l}`G8QEj zag0t87Z&C5cW4f8duH*a&lj0ZHC%jS1xki=R+L5;WizYrf@=^O5ul9^7p9%ZtpDY zTqWT_oHaoAp{?Llv#95m!;savT(9wk0|R5Y zMTBhUC%)ha-zW~BozCsYD!A)sC3X83)4FX5m)i>eQ2wshMw?-8zs^{q+Y>6@J@KHV zKQj6bm-lcC?#!HkM|PvpqsK@b&KQkeS~JkR*HWZy^TDW%Ubwf@6ZbRRp^-5drSB)< z@*gi;_3^-6JK=jNJZFI2O{x`y%ljn!LvvwCJt}AKhzOo}aG9?LoM7hW`y6PK&k^^O zg_WcMRW0EiD2cYuS{E;uJL6;0aJ=p1A^pD-(skS6)?rIwoY=rF%pN;uI3hRC3b`^n zdi1Z3J*$h@`#?DZ0t@N2GKM?O-Qr{a-Q4Zv$2iliJY#T)zfQd2tWGh^-yO}l)^B*S z^f}Kpf5)Z6i|MKtA1!>yH@v#z1+!MXVS!gH+f{vLaJxK)*B8-2e4FXwMO^ViUpSu~v2C>@ zI=Q%F)4cxTpL4^3pW`sicOELUe9-jJatwA}h@FZvG2y@*wANpYo$-rdFmM5!+j-%3 z`Z&Zj9Shg2eo&D)w&wl_?&)=hjw7BiqA-lM*L&kRpHn&7^k3EV^Mpj15)Mh&xYI({~ku1mT#h#78o3 zeZsPWP!7A3#`Gh?juvg~z%Jsg5+8F5*_-?o)-p%&-r}V zC!L2=)0lfak!vZ&1L@7JT^BjXYGhzj99FWUyE!o z%gg~A7CK^^QeS-Wb%j^Ze<%*{hGqYiFgvjf3AOVPUpyP78dDMdV>Z@BE<(Zn8So4p zk5@xS!(-E6eDG_J{Vu}#JRi*2Hg|b5Hk8`tiEO+~P;Yf=E`%zDDz z+39>L+M$($^zj4wc>K%+H>|or>BLB=ewu`-u@eztG8zVD1F-%_Po!ydL-70V@^*Ab zn+;YNpV$n#=Sz9z`DZ>F5XT0$NalTh!13qK@V_zpn4hzY*XxdPpz<{izJ8akEAH~$ z&|CZ#c#q8-qu9268M{vxzK4Z2j=#}Boy^R7kCMKrS4+HEtb>yc`gr|S6Mg##`|e6P z&+bm=E|Qm8gwaCnEi0P5V{JnMR~<Nsi-WP(-w{*(JWIILFT! zclcpQBKt@kIlO}~FR~5fy=;s8@P1fPKUQ??lVDyo7Ipq3(e?UZoc!4j{c@bK$h2Z;}TOOs7^8xCN-%q>fqkO1!o`cri;KSko zT8+EOv)><3FFAszv&(sRK{IIdQ%A~qRTxJq;D)=*>tdBrWN!dZ7@^^%HuR+?>-MmU z1x{(ArHSUrO;P-GGlGk<<=l1&;?t3Vyl^*|H+7>}ks2#(_9RZt_$2pJ0sqKMZIQbs zR&4K#yEk3nZto%c`=PLUHWJ#yyl|}3a$Fv;4mWSC!Rmn3C{SL7#?C9Due}mAu`6(K z$WrVKnSrbFbBX97Iyk39Dr|YgnJG^g@F0q#gJRgY<*hL99?(PSBD?H8$}TU?Fn04J zZv2wWlcGV1l>YUaEaf(J>WGk0L(#6;G<-FmgmyDW;mXGmP<}Q7lhQ_@%gE92E+3Be z@A~0oyfw<-DxznXdVar_!zlAu_T3dIn(}kh|9OClt~siqt2#!|+)UW^!jiX;UB+c$Yo_`BU>8mCcdysQk6=?AtT#jPH608x7ER^X zT0U!?$I!HNzFVBkgGTSz`Ta{OJ3kR_Z4fPAz2$(JADQwrhA(tt*)TDQ>a}^izCxIm zS2S=yuf6=tdSmAWcbvjdgg+aNYujd_TfQ$``ugF&6hHh8UXO?a>k*^09`}c>!|JPR zU^i+Bp3L(^O*eB?-N9DA&fqDQ;CbZK^y_m=PCx;Z;JbHFLi zR(Q(J7ZdsWYcV4Y|1s~CA$EW4h4Idw7`SIF)=wRR(A%aY6Y<-9x z%?|LB;{{&58OUB+V;NOnN~hm-{L`a>fhJ!$ebgUD3vf34wmFV@o8#?GUDPHE&+Vdc zNk7zb{(=IYUYJQG&1hb0^MV8VJ)n#BefkFnv7lEtU+w-tf1M9}b|IWwilSNXme1?k zL`$A(0R2JMxb@5yx6by&!HI4#@}7ig<_nSXXEi={U5iD1S7WZq27D~?L&@e{Sd+06 z=30K3oVidqlY`*jOBcU23iw~^Xx^xL$4N-w3Y}E(%tbLODUjQD-eS7>Ira-b#q@vx zez_CMV9QL-Y%RTG7Y!5`wuMV$Z@70Fgt7=X47)uT*Gk7=(*-Xq`Lhhc%hq7)>c!CW z8;|#UdSYaTF=j7T#vAc1Ewul^gzJSIq8iPvW975+Zr*Epq<-e<(dELHE2n0=8r~gL&0NtRZeFSj+Xxd>Xjx%})U+2XT0(VR zE7;0z>B3I&cgntI(YkcLj*aI%ok(8X7{%#75_zyDnVp`oBcuBXS??#gPlgvE%Al%v^LF zVISAv)%0<=RMrNwmxzu*qn69>mNHUyN6n1N`OhJNWs5>Nx#bP^)H%f{ixd1AcZMOI zpHbI3mY*jSh)!Kt#IkQ+a?BEMtnILHsV#m@?uqYd1L2o6L43_ikYv9czvF%I*xMWB zvqwoE*ALT;IwLmF674*Uu&-ZB7$}PV$~Tkm>cb=t;swvYe#D*;w;3LGlkKCAk5tgmLj`fN zYacsN8P{bGu5;-(GpBv!)tDkS%r55W`$c>{rigJ1iaGdY78{ObGfFL=muyPewo3fh zZYmfu&=AjT&9NZJ6y|zuvD}~s%saT_z3q6UKAeOG>zNqybPO%u zb9&tkB#42!~2y!+#V}oLZ81Ja-)Vb{mNK(q<~R5=`=bK&)Q{g==$slhn~Je zi|@C%YV!k*{_t8@F5&#QGK}#T-^jfB4JUW`zz~-tZZ49(;a@iU6lU>(LO%QMFXZy~ zWo$9Do=MZ{L_1o;zG`LcvZ|CF#7pe^Lzp6a{_@^!sN_!WVQFg z$K?|d_jLqLFLTEC7#p1QH^4}L9c;K@0AE`ZR7M%XXRkJ5|0uyx<|pSwFVy5}9j9EX z=FVvq44hRVKHLVLbQ3*-=pn|;(7^2@Dmd#PGaAwUB;0A_7-6qe76@;Bq1=N9g>xzW z=m}%s%U0p*$o_dtWfNRe`9-heHOx#Yq1xm^_9!gk>7x~V*`$_Bp4TyEWeq>&mUGSe zQqGfmrhm*fXB75RE99uII z4}FHA$EP8%s~C%=@iQ?`-l6cT6Vdt25UI7C(K)Xl6skSo^VA*2lY7G}zz#dS+M)ZN zj`(G0hhvA#aqgNLJY?pQAY9uNCD|(l$&U3(Q}_=1%eX&fjQE|-@fSaH=7?;rAC$vO z1!=6aiKE-J4}AXi17BArue(e+-~BU}jfo|;C9>b99Hwn3rs~`R4mpv- zsbdRxU1p}f)xy|5D>_)wM|r>h%?rZIzVBPb1cPek-xUtg(Qn)=bHEzJBh9NtmvdEkD2El$EIXl;+59qYF#OC#w?6T;TNZ9|I+ z4@L;fP<9Nb#V6SvKe$1%fEId`N)A#H{nE;1mM=U34cSR`Z(tA25*l{PXP$g7Gm*# zOD07<{f_^mQGX@)R%v6-5+g+QH^tIe3mi$XMJLxD2>#q3_tS>LQ_B;+_h#UU+G5n5 z^Tm>le$X@D0lz7`@q5cA)Eg{?)|*-Q{BSzD$IZakztf@BWFle@jRZFg!rEqz=y=Bl z*LD~qZLSgwn|R`x`inr?5pfh4dvbHTF2qrMSGqt{y%@=whgbN?W00Eh2^mQ zkW4OapUevX_tdU^#lWk9T(I>iSKGW`d3pr5=R|Y#kdM5+J&XlrujtS`gvF*2y!YiJ zFSkr)l71Gux|ed?l15=)Dxktt7u^S#BKfK*T7NgevL2Su4(o)z?1PCrhoD85v6$J% z3(+nM5jWy{CHdTk6)l zlv*H=(-oi7tm|ujm>S9z3}@S6vAp#@ot2Nu=q~)TGNa_SrN@6;1YHQdvwfn8-S zx-wJ+I#!xExk3xR^K~)fxDhrDH;3~{bJ*|KN42Li)))w@RI)eRMHlg2cI3G?Mek(% zowv`(=WSXJHyfpMpPYdl#&EuTKWEzo@zj!gJhS5-cfNSZfv4Vcl|l@Mzl-4B>A`&I z`+^IVLb*6GN@g&U9cG_OpO2ZGd!~pt#S8HGk+3ia>S60dWBKHpU`drJYQI}y-;mBo z+}#_F{XL*PcoZ&bjKS-$@o3k@3q_9>BQt*`x>x%mwCPHu{q=?C7GHcxo+p_P6A*EB z7LR|-$+qA{wLl$uDrHu}gg!?Qz(XSn`#L-?R1miH_2*#ArwH6Bzk zX?z(&FBDUISrNa)m(on9mcLs6;N6v?F%iwtwHVp+tZ#yW4x)eQr-yB2nxYSHfm=2| z`Q}MA3qz`T{I2jzM33TaA(|!mI=1P#{5YeK=Q0X8p?fxS79{ZcfG{pjdd`XO0@*G% zRC3H>`S4i^>r@hXw&DZpTt2YL=s3fVRQ4jy4-9c} zR~x)^wt*koVz$iVs$~Wf>Cq1r1KrW>?QrDX9D~CR6Y=Wx3@mq;k0X1QYcc-je8hd5h+#iRV42xa*;x!k^>!z`Ytsqia;)G}B%h@Z zTKK&{33GOc&vtGNHScHegLe!+b^J(MwK(c8Oyuk6SYDqMNv}I^IZ;1^+WUg3AM}bH zD}wn%;TdP%eMqw&Pr1u0j2os%|2H<9tM})zZA~t%24!>Oy-Zf>$t*Rdl0~5nEcLEu z*!p@dY9>Bl(ak3<){NBapx26+W3HZ zfiHN&J&s?y<#AYP8I7E(X>U@^wo7M9 zaty0AL-?)dBYM1f!U4}iX{ZvzW}oBfFfWE>17qp)GKpoO>1^>Pmjh?#^ZTM)Uc8gd zDSdKTD|tYRM31`qsSYAO8KKE41H>yDAWPc_;m6I9)UOSU6x$&%w*wx|?SMGSK5C^C z^bQV{8hi|{w-_z0=1|Pvlv<;%FfBDTxO8MBP~@1D<`eR*6ElFr>)aWok4 zny1G;y<@k ziwf?3ES^c>1yly8qr+>tFE48&rA80xm4?!DnqcibGvr+{L-ijsyjgFB*nORFR`wvS zJ$u1Jc8vXdbj5MqF0ha9j8UuXG3jAzYE4}+($F29jeS6@Sp9?as^g;J8_So>i8ebpVV9!S@c*UE+f0H)8WRvys zmIeHH&)t9C(DLR7raet&WZ%!6FZ1y$+R1!$H;KS;G}d!ZQgLEtxQ)@(2B7(|L_tF`_A+FP3|1xA=Jdgf-c|lF9ePFr}`D zI8Sp7Kiv*H>`gFlo-+EG)G|o!y^+U0$viui`!W(ZbkbV}WxnQ!6X8tNiRT9s5no(R z;*fxM%+Uy9)T{tr_YdH~BM&(vIFg=nZ>j9h5QuOIZH?<$b6hf-28gHQjPP6cO14Xv z8h%_`#n0QtA9-FGjnggBv8E&3rr2WAinchkyS41WOi}G)gwFqTan?W^!3Q+aE8PHZ zLfT?tn3J%DJkas7JJxFtKu%0wnb}JJblDlhg9jkdaxD7f%tVF3GGV%GLwNl`bli0n zcV^uXEy_)-T6Yl{YW||tnTGBs+M#!vWEpB!@$!xW9+7jj?m`ZK>twT2uXGw-4wJd_ zRc2@%=Y*A;xiW7xHP-sj#(X1h=U(TQP48ILtcJ}GtK)sO1;#~M!FruG9-kFY{82qD z9BqQ>eZ(9-r3)U}y2JIh7Z$CWjmhEDG3n7rJaOxS9)Fuc`#=I)uYJmYt?#ju+C6sn zy2o`@f$Z1qEuE%>a!J`EF7mh{IZuZeSF@h~j26)E!a@$Q+QVh#cNw)Yp0nSUvv84c z4`g1`R(7$k-q!N;{!-q%mB($0x$N`2kPG@W&|$7RPFR?t|N7Rb2{6Ut{jKo7H!fq{ zCpwOdWY$%guNz13{qIt4p#tc61s8+oaLYCy#HB zH}Yq;5>z!TPv{h&whnRxnbI#dRDV8HWXc$wA{wfEJr?zHGs=L_3K^dR-F8t5$= zhC7OyC>}4l2v)B+@X|4=jPm7Wc=1K`RLR5{#llbXxNPH2_IrMgZx4kCwq*unB!0=Ioc?Tht$J( zZTCa&vVSZ!#!E(Cd`HivpQyU%6W{42Gq86oKTQjxk9#1M2Hj&^@@<(zzM$v(Sa$hY z!Y^-B;qk>1gYMd+$3a^({m&9Nx3(6}g)Vxo(uKiH9eloPh`F7tQQFQ9Idl<^x;v~U z4#Mino+x*0k4eofa3M_x4_E8LuFwD{PTD}>MK3ID~$ z-na@+TdYIH!ClDnJ`b;EH_>v!8A3 z8(8UdkdrzeXT^>4ydHjuM#iVOBH#?QjE;&elU1s%Y6w_DsEnaUWR4U)3Mj zCiNkor5)m~Ig1%NdAjt_Q#izbHqU1I(&^@Q{z(bo;IIfbK^hg-l<-ti8EZvM@I@s}%B8ua67~dCm<}A9B_H zJ2HQ`&C#)s7+3X@bKkz<<}2Y;Pl@HTwrTuy>BZ?v{;pbt9$u62`*q{oX-QrE!(F#-7D5Gqb8af?Q!MPiX zIM`f#$6F+;{**A`Zb)u}=$6+Hk<6RjN-!O%i@{A=OU_0oc%OGd)0X{kw&NIKf=C3 zUwmO|f!f=>u=~t-)W^>fw!<1kFW!i1XJ7R6nIrK)BQfu6FDM%6zW zRHFEPoa{pVZZXsA9IqWeO7kYW`NhGX|2k~rphMeOXt#%tMxUX^<;T47JBEgq<(wv; zd5tF0N9x(ZUgmO&E^aXGJrItWE*P<*8$6C#Av-}Ad-^G3xA-~M%g@DOZW%M@X0qkz zBwF2yV&3T2oY(XT-#@#}+1{6_8hVxsa^yU>xXmGlU$f($SpFWF$D8|wLoF=eXOlEB zexwnepKXm_tt`=PjRj7eH-W)0Q#jKMB{N!!AKen6kBqU?RUgAd-*NGV5(0(^8`@X& za<^)zFt3D@&gL`sR{`HvmGWe{^pxhp_WmpW#X`|XPf$UX%zv``nIh>&TWsiSkLg`| z!#`{wa%)DS=CT(iUYd{2ua={guOHH9Y(tjUKD=9X3ib<5A$-9(c=S9aJmj4iTj-A^ z2bW<>lbKk0WC%`QwZi-%;_bbX&eY_`%sp^|p3XbiCuoImpV!m&zvYa&y@5$9k8n=G zRrYBeNyC%`Mu!*ihVbb|j#5Erp#|>w^n$MQ5N!9JfCUX+NIW+atf`6Hj_3y*0cyVKvt zUvb{6aBdHlemYL{4jwsN)1{U-J4)WeT6N4^Y=B2ne>(Y^Au`Miq2o<4Vv;_lL}|e1 zqXGs#mGgYDj%}h#=qWn1+3BB|y*`m!7sqjgTMTXHNYDE=mho-kIoK$P{k+n6pdf>R zw#B?Lt)5Mr3VZT`5`G@gNBx*Ks7tbgqH-^cxZEG%e}}=V$r#zmjzix0$w=-y4G(4h zkvw7v67789ykY~+B>SQ9$#&%L-HMA}x8kAU799P#5<7RUz{$r8P_)GxP4lP2&3Y&- zXZ1o_iZM?07agxcHlLn*&1r*0Uy*!@ZAKkokDLQks60j``%64}F_;HshjO@o0j&%g zn0uxP#=KL5JFi1M#n97*3as#;Bxm7@j*4Cua;o)!bfq zu-OJlgS0TmT69juCG2@To~Z|(((3#bx?MQMfH8;I^UfYlP~1be7l{S4DrU1e?R zW2UW)psRBVb3e-bZ+0nl66)9>45v8Zp#+w+l5j(9{McZGC8?%3r{5Yrnr*RpV|%=w zYz^nu#(33P9h*g)o_n~4j@|S5-uxGRW>r+P5LOA8%LkZ=D9zg7=cfc&nCTGWC~{`rctZnGbi=V<8%KK{)v+} zYSULf6fco>p!j|K)bS$05S?tSP!!z>TgG;W@5SC|n(d12EeB!1mEri+&l5R|$KjL5 zWc06^0E-2a5ch8yG;OBih2?C_h@686(|PFleIYttT8L@q=i}*%nV8*oGX72)hod9@ z!|pg2Y#r4Od+jw4ny0&PHutjv&POx0*fVh$_I9t>i>lN)pH_;Yb zMpz&%RTFpqNuKSupHfrj(>MPe4-I(46NZ<$!R9zkQg`xC!e;*HzJ;+i+u28VKi?^y zXUkDfIAQL4#;SZ_SJ4(U=!oA>ycuOZg?AjLhUev4XzZ;GH>vNh9Mi(IWBPCst<~dq z1~~lO5FVwvNO4vd4^ML(KKzrxL#t@zl*7Xj@hnXWLZ%#~X3U#ExoF~*qI-57S+hFIEK7tOD##UKbO~ZGE`l%c7F+vxN|L!2A1;YV(F{pd%8F;f#v0KRQHbO+_DrZ zyJrcfu#~y0>$zN*8e>Y7@G?*b&00%e?9&F`6K!$*U>8g^al~AR=I32+v}))LYd0qp zdiKWJ`kwfDy$>o>`eK}>E0k5_PWJG?4BMfISv3l2-NxYD$?+%+8jr!no;WaMG-mYv z56u$?py{{%7}u#cwguZ^d2Ac(>8cL*rvGSutb}bgC$Z;>a7MHWV#vumY-M+zcg!!d z{?%>1>->@mh3|Pu_8o?ID!Ecqd@iqqab2VXm;UAmceh2jU3>idD>bfpN6Z`D3309+ z;n~U-_O%_*aj6XsSz97#i3!G)nqiUr+&WxPm7Rw0m@MV}tj=f2+9Y=Q9>&`ff;eI7 zJu3O!PV8lzhoI#~|rM$VNfp^~uvtghjN)9OF z+%FZV=c}URKUEAEC%VfhMRzDA}>Jpi!mM|xvj5{Q+dzwuhC&o!;NaHV-JZOe1K}x6}t_hW{#@M~e z0!JO&VP9K&EDh|Aze>HZws~)8&UM21@h({R$rYLMYsH`eSdcRSZhwb}SAHaX_KZQ= z%83~Ld@?G(O@l|tOjLcEg}Tq)II&?KS{<2*KLt||wRa>GCiKFTG#eCc6#cyHpigIh zqE4T1IygL|kLVoM?!3fc?Q^W!e2I^8KQ*2j!iK`dgLLp zFC7pkTD1F-Y~>h4zvj1j>&_+4c0A2pG9&O=eS%LMF4A}29nPr?=8wzK+_CZt%}$lc zE>Yf=6Rlv^))05*n<4*EYn({6!ZkNb4C~(-wewA|aG4%%C8?vPMhTybS|HO>Sf&=j z<2xX`(MghR@$C=2MbBlNSj#mL#Wd@Z&36k^xa(9jleMGR?rs>vMdPtbW;Oi}yrbFA zX!cqvck1CBo;R-Ip}gqG66CdYA*HUVmS+uGJAa)Ud3UP^a1xSy&*f=8~ob#HuDbz z((OYCo0Y}$;H(_x`q$83>dM`_lo7tiKyoC_Fg42>sl!DhwAdB~ww)y3yFFY|ZP5_c z5zh9VFsH9AT7`7LQ}qrwKFG&YVt@j1MiRKs)PD||CZ5oZ^wVZ=Qx zm|fC=+cKGpJ=BpIvOWT4>LFo@F8Zd@NOK4 zUjICV5i$%mtw-S5NI4fLM`O;@F$fL4AVi#n%5Ik2H2q1Tn)X4 zHZpHX7LWIRCw{X>Y`5StkH0>~oc9O0)$afgM<3zRD(NY8?y%$f*W7zXJRJ5#^nUc6 zM{X)&{t;~)US@`ECDy3j-2uvfI-%JxIqR?6LSuLv{FrTl^Ls5YGs+B`Mwy`b4?{3q z^n(XAF;w^~f5kTxE1v7=XTNfNNU5;kGk9ck97{wep5q(DpAwWi(c}(YpWkA0oqN2q z>Is$1LYUF;k)8W|=6KQPWCaSV?voNmZ_r28%+|PZz8zfmcfxN^sh!%`!ugIh_S~_+ z(_zNg`c-!2b2RWOJXz`MV{ z@I->>FiWC2-!nq|DxvJvKZLQ*-_T5E^y95Ra->=^$H!#Te{BW5lfUs^dtpup`+K&A zI%+>@N|v!EHc2+0oAADGiC^m!|53O14_a-gXNN(R?7O*)({C4ZOy^>@&naTWtrEU& zEaRul3V!KU$6v;hakc0NZ^}F_thF#)66I{qZUQUuYR?R7h6(aD1HzRsuBRpjw>Lui zbxZ8~+7X*(Ibv*8UmRcIj?ROJqnmgywg*kbHRY)&S~N{~SaRr|&p_*mGbBUD3l0?0 z>puB)e+C}Dn*ztX6VUSdNR&@?$Bjcym{i{m^J)z6S5LU56B@bHsgSc@CDW&06c2X_ zrgiCK-d1|Ri(Q2v(DorsMg{V)?8Oo;$~@gSn=dX^akO~WeImpYmZA$)H&bk^wZy+} zHpu>MB{}1k7`4R$iL=ddIl%<27V6`!wKn2@Ne|LPa#qGRgGo=Rp{%}heq@7q^kpyI zv{<-nS+o`Hlk)Qq!h{W@s{2bWZvB+rCXacn>tjAEeadS`g4lfhEBf2Z&(Jo8DHqZh zIbZrRt6J8GhSgTQXKl>2@cEJ-(+-~s8er8XKWeNX?pzq#hjFIEVnut4t8F!g_Y)$SjgXh{au zec{Fq6V_65$%9l@f%9241ZZjDrjZt^SLkAg^h!hDnc+r&4bDAjkKyi}gui4Dr7jLA zUC*FL*}0KIc7N@^0G@9@-ertYy)(i%VvImu#v$DP^*E4IOp}@6k^fpe&a~$IbYb#*W`}WUJmZnd%bqg(&`aPg&3Kyrh-1jqL{6TN z#+z$0=yfrNZDI@9V_p#>ZOb`hObweXm7Ki-VXYth#U`f0%s&2)*W2^|=Oy|pg)uGu z_Lfrrv_15bb`O8@iL+$>h@aPlf4I`+4|@p1YKU;DyZ-x2>pj9e2^Tg|JINLoMvG}r zCA9pdin>5eT)tv}pMA`5c#swDh{l*jcGv|+EG%$>cYv#K=iE`IJ_6Gt#v**n1eAqL zLt(ZTD${1c?!+ANg3Xj(Y&tB}CW{wm1QcJoVp;ocIA+}jp|5msWsT&RXx35hN-h`a zC5cWyiW|R$P;uLHHjjM9_ya+76uo)FyHJikExU)#DU2%36rD#AdmWdZ`lzq`EZGu& zgb|b{%%Jqc8tD612jTLb5AJG+%=U)3cFO>Do%NCBt%JdKTBv)i4u>Twk}s=_o8yHs zWFriAVQ9a+{fEPz$UdX4hGv7yxU_EpGbd(A-a$Is-%aI-nnZq>kSrNF3BpT_Wz|AC z@A}ej4M?WC%(^2@vS}lKFPGNUTqC~dU*f+ut`~-$iYn&J)JDZ513dd|jK)5unA+3? z+Z7DOE2EDq@^|arLUtG&kduv&7sD?{QtEib%!QbnuxO`YG*UG+ZU6-$XDPGIpmnD~2 zxSM4WqRAC@Lq;Fr@ri%dph*kKJW{~(uPsp|{as4GR>B09?7alhP|Mt)+a(P=J1=is zjqG5z2v@mS1!Hqn@Kl&<(fX>`)LR3``f6f?t2WfO>teRlb3NW0!l}{(`u^rH7k%#l zTN{iqwMF43nR)znL`*AR)`g`C~kULg5xx?V`K-5{fVSIjHoY*Jc zsDE8B{+122MVD_R9O#kOl3y*J)l(O9+4E#FpKgibh0GA{zaPZ<<&POP;~{O*AJF;6 zL*ef|<+KkkXxctRcArr!XqOhp#OZ;J-)}&)(}Irlm2K{4_z- z0262w8zI!u2+rH|vBOy(U$*I@aH0-cZP&(rMQyCN(ZH0UDx%kH3A>OMSSXyXO_EjA z=B03OPStbdW%0O*PJh7SB96O}$5~~W>?J$d?bl^D?IAnnl2krDpDL{NRC%|)aI$k2 z)lCa%cA$(pH)Ovo`HfN5zrYp^ z*SQrwZWV^XW#O`QZGi)Gg~R$mxXyw$sS*a_Be@p_-TBU$+Zy@)cmq4mtYd+F9hIcM zT_>L0>piL@7q^@iH6_$xDf7;ibBae5=Z~r4EQ=b^H;b3yR~;MU>zOELYPOE}`imvM z=&fW{$?VTk@(;|`Dd8a`=XjPnddazI)>lJx9hxv%uZ?&|U3eGhqW?=>RBqP8wMbpu zo1lfM3L02qC-qc;8p`f!py;{|Yz+{-nT&GP8*yKx5at4&R7_2kB>oJF>Smf zzAfniH&-W^sPw_P=FWIXXSf;m#hLZJF=K%vOw+sIeryL^*=31jb3+WX*2LWbEip{q z&c;DsxvqO9y>knMzmUnqb7}N_o5Zal2@Eq7ZRewp>?ArGO|=A$D@dXB+Ao|wJ)3@2 zqI2-8;<4xkMoXO+8YX#~$NqBuEMdy^Z-F>@*Y(Y1H+NqZRq5&&(_94*3BE9Q)YQeXV7WY>x&$5mx>+AWSWPx_*BEH*Y!iqX8 z+3)_6ncUCA4hygE#lsAKLHb?kH3z!o{G!ov#DmpQ;$& zOtKMMNM1?EPu47J;mFSs zZtg(g|NfJ=;jao*rRTotp^MlT`Y_j!UGExItbV3}Aaz4@sWQOXH`>@P=YN&lS5p)9 z;hfMKd%a}Va;6=QKW>L6>t*h(U?cn5_Lx`S87TqwP-(P7^@eU3H@pwdPj-fWULPzi zbwYAocTCG^k29++@aK{dHp~3d?V}b-?KH98L1tvzWR}|hC$qcBztN`T6QY$ z%i9(E-zVO)&SC3jg`)Q<<(!Nf{u3U?Q=M=8)?H>#`og7=OxHca#XBer+6(j4@pQR- z?N_?+3pIvUZ`qynH9_(m%YP5Mtd92TD(L>C6()C)e7nw) zfqJVI%GWoC#eaaA;crH-_{vP38eShHd%$)j>?U=?=J$DYXqC@v!MPkaG=uBBQn>7L z0u9|0`K|dU?zYaRy+sbAUyH|fWCm4UX0zd75p9;%v*jDfckq=wMQ`D2Wy$W=TNxeY zt~9n&!PaaQ_{&|CS1O+Umy($%-qOgw3P>ENjQ8Tf8FN7$BZWPCVT`aMB&+qhX$w5g z6yB?qWKf(Erf6Hq94`9KCBjjSPy0z_;bvSDzJ`%7uMbz&@vCs{deztSh4dqC<7;X0 zs*3AJ*71U53|DUd#z48tblwW<`}rS+#L4gd^pl6*3F}Y1HrFl)@7cWx9G)~sl`vgS zbZ&v3M#9|mY7SFP;cFPm4q1AR(LR!WZYnIn8rg$t{9}D9`F)d`;aat12ihv(hNn6P zF4Kk9Q3E{j)fZo-yalPoGP^d%!;H3=`Kk+UjPC(Mm!86v?}1J&?ctMbi62{J@6uEc zz1`H%P}dx7gN3hdRLef%8=aY4%9(1V{5q+KJ3Hj@+<$pAiOHq5RTdx0T<}hII**hH zJK=FTE0>mY>-jPcPOD&sb_JJtR#kl zznr1_kN0Iqw_AFIjl+NOL6oqd`u?Wvl<)j>UNr6Y!i-Q5_M%gB{2tr_7sR`eFZF8T zPtocMt8Kp0S1N3*=a%!eEYGRr=@pf7hN@_!UCF}fWmLUazyh5dc|$YUe_AF#)aS72 z_W~~1Tg1nE${D$;j-{;|*)Xp`@|R_Hsn)=pBa%V<>N_{z{>sAFjkKKpjrEyv_^K-{LaL0l5hOv zD^vb9FkJZRuRR*ME>C*LgOU~9PyETfzH{&eVYhq#VE@I9ESDbc<)k{cjFCU*WCME( zPuzUq3>YsbccqnJw%19lKGc{2yZ&k}G z74$ue%2~j+*J)Hg|GTT{JiG| zX(Q>qCMMoiN5n1-Of?V>UEfx+uWE^2XIo*l_yQrb(-Nu4zDO?Sq9aN&3sXa2vNpPf z%O3Q%+MBaT>P_?J;s;PZ)%Zn z42t+v>Vo3jQf^r*=P|B=Uma`MW<@=%Y`$}aFmszrF3=9i8G51dox6l>Uvsb5uA|?h4Yu;KJ zOZ-)ErLHBElUhJAPdMp!B-_APJWM}i7W27*5B%jE2&2{1Px_w`qSNz}+yc=r_o?{B zyWJ(nYVJSkT&8G@n&7r%q@kzeAxl%+!ab}$pQF-lVd_EHD` zlkAMZx2kgAs^WadmN-91GOACsMBg=PSkqYrqjW@*QYgC@J!Pa^7QckPWG9Z6{Et*c zI2W`+3;7uidfN(X(_13;qhypeRYGo~3XDd#!pa8^9Exr!g5P#qQvwb4Vt z7#Ed|FzkUIzD>|Uk?bb&ba*Y`^H zq-b3xxC_J3S~R|I>m`$@nqI3*xjm(j+80WwP*O%X$~o*W=PtgGoz2P^)TNTg{)kU* zU>&osRrCDMT80hy$_*Yr>2;DEzC*IQpDAMCC{+aKs9@7T$?ARB09Jv}6oDXo*fHtU$_Yt3>ad%uLwV{)wdI}JL4W6 zd}wdJDCHm@X7e2KIZCgwP7?prK^&aXVqId@e%lOEoVwTlXTa<&1x* zlBxCB$+(?|*W5!qErQGig_OTVG`}Es^cJ#8$F~@jFXX=2?7u_Vl#ZCMl zxryCWXBnU0S#G|{Avddg%a`l9#itLw$lrXDzA?W%^T{vuJmEpz$SoH_ykzSbPwDY6 z2OdK?;RJb#H4`mD^wYhw(2MVvtyy@*3}2R@o38!QRr`MFx(?qpcHmb%_xH0}`TeHP zKeWo_Sk1`zp{?EE-Pr%pZVSPA*fCk(?ynZRm7<^bX6PFKObteVdQ1cw^=-{Mv?n?^ z#8`hcLT5d~i?|^>xZ_MZ1#U@AzU$7!;iJ5VWBqKz2d(rL+tGoYWz_=UL#;k$Ydy3m z-{Wgyn?Fm34(4p)tuxNgsQb}1y?iN6JE31VF>i)${Qg%nHY5}GQuS%KEOq^xrSE5C z=*;CATCOzO@6#-rQ3{>Lyl6TXN2k`-MQrIsC*!vjSin^Z(^sstVK(@P8X(+5{(Qj8 ztD!rdBW}{f&sj!wLAMw^xW#x5?EQ@o${M3iUzDW{pQ0`Q%Bqygnt2Xw*7FwKP42I3 zm#s(eqYho3seP*$wHbQd{fil?H}N&kL9cNoU2ie#8u~c{|5>AMtc;&TcN2LA?cwN5 zy|f06KVBy}96zbf1}StCjXxjNerxH|--z4>>q)w4kVHp=yylJ#0s{$S_EYVn;zy5P zF8E9PwoX!$=N!vfojuE0Ze4N0ZwLNr1xImb=Pzn3KFv#Q(bC78tFN=fHo)`T%UyEz zaKVQdUCBI-QmntdB=8!Y58`)8jQ@_tZlxdK%V6N!R=CTKT`p1^o?R$-VdxP!6#V?Y zcJN#uQfk*16&AB-5#rX5S6RAya+dm^L*H>~nx0_Cx(|Ae zGwIz2qNzA{G1`#myuX-&KCHU|-$H||T5l&FDYi0dFTW4w{eX9P;4NhH7mut%`0k=P z_`V~xA+^M+tK=f;jNJX;YLvxa8BO28A$VluAy-9-yc>;2Rw43zAFGZ@HEKRTye|tH zb*Oi?_L^kY9eCpO7oHoRVR8%_qlKt>(UlB6Y|?>vPaejLxP4ur)&sM-f!`Y6X~lBN<%c=tOSqQ=^XFXx za>$2%E;8?st60Ce$c%pU2lHK}b(FJM1DvH`4QDxlA9u(m2Wb#zE6#oJ^LmK?>uH1h zC8#ZV#1745bWh8p(X_>?PwV1?#j_jo4|=qRnfaj8w1gb+xEe9?dbUQRQ(Z0$?OCv4 zr`1`yeOjj8&4ou*Ec&gZ=wlyP^(OiySvmgm62e=!G=4b0@C0_mCv`F22ZQm`ZG$dD zq(vLlH0#amOf8Q-cbe^A4SDoS-z zcoDB#lH#>*CUNLtf)@5lRO6#Wy?p(zx*qte4GyO0zS8(oGkYz8*Fx9wc&P+hHSV;? z3@^TeNPD^Si{ALJql~A<*Inf86ZVo5f8{$Roa6#nrrka6&<9s>*`5P0UAPw~yd4%O)_Yj`xv9~~ZPVf$_i+fnFZ44mp~=1X74>LKyuvRyO88|orjI+w+-Af>^$dNob%$wq!4<6Bgt7!)J{}2Y>G$JQ3M3 zb2Mh_?;dzkIO4s)9@OwcXhV^E;+mixTMb{cE>`*xvmO`f{O4xPCMM)6hL`g;yg&<* zn`Wak+up20;Pm}QgZB{nCe}i!Iu^_%Y` zr8%1xhfMXT#%}c742>9ur!PJB#Xjj;_C~7i2v5}5fB&d2eBX<;|FYYct_y#odx6Jq zzxL^x`6XRHI;ZJ_v46Gq;$+>zY@z!o_KDx7>(@2pgw0+Y_% zY%A%X>?Lb0daw`iz1)N69R0%*^x-pmkzdf8?j7SGQ_i8?Oz$4)?<9TkuJgE$&&g+d z8G#mWQ)e5Mlt{Q4WY;X<<9Q0yF~m0mj!&L|7dr4=AKh_#O4ySF}I{{ z@&TL3BLQga^sDJ5p(i|KWQ2=+YK$lRWBlZq@poQpFI~Rl#lSqR^KwVDb{!;*U5Qwp zeQEA(=V+^X)xkc5T)ntEy=d|OXqn^y@XHr?MQl-Z1z95KK4T8p-FvFJf&wRx)X z*(TabW_w$9J{cE~7qZHrKiu4;p446CXBu@dv%b{{V0~Sw^B3cR@`BoCEwcdPNpcDN zaj5@Rkuy(Gn_V5xF4zvUUM9CUCs+DXFD@T#)XW)1Eqj)nGSP@ew@G`!Wy(Q4xc(g) z(f3XIu_bwTb%x#@nV~KVGPKb+beB({F};h||7p@M-%UE`TekXaLSq*%Mk87~o&TUS z)*r2WHxb94R((SLDL2ld$NBUB^ukinWWIJ4&xN%{J$IVdTSCvW75^Vr5F;}12#diZ ziF#;#dGy-v;-waCkP~PJM|?sf$pMdzTh4Md%tb6`T%~2On=F40CTHU&yN0{UoN?$C zM!Cz=3La9aiHA7#&LOv_=M)3H{pQa+WaU>^c~sj)o~ODIKHUotk?JKDx}_FYQ7DcO3kgQAS;O3XiTQ_$%{l9`!J5 zy>0lN&oW4jM1$OVjsL|N)mv>Wnl#&_?n8{)(+U5imGCN`GS|wZy7jO{ZR?md_vdVV z;Az%?q-_0DfSRZmbp^P4-+TD{jAqO15egBjtl z3=N(e%9&~J*KF`u1&dll>8QQWdwMEr59X%jJ z_rjYfcPUfn=E>5oDMo#h%p8KxJ9KoGI)Ptr9h$C9h&d}KWNQEW8EPPBRx6sN#d8|f zXrzB6KMhGt({d-#l88jVJP?nz^QxvcHZr3GK3w1){cRkjbvtqk9?t>s_%J&%pNPQ2 zc?Q@P7{QNfZnBUww4#EmZv-1xaCZZP>H(S zI?ANqiSI}DS+!;^Jk_`1`!1??SD5v|0+YV|$!tP1^jI1^pWb-I?8?v;FEZ7S9;8lr zI7sE0Lk><+*R|+Y?qjG3m*eMa`os*L$$fmt@X@T4#jMB;?e~;S4TM88_fxvw0LK^{ z!g(%)$1J=VTk>%4ROTk!rwSSPu<`eAXPDFrKF!ubX5H9ZN)G|V3$6Itf+uBM~;-dXNgM478p?C$Wo~lfpTc4lv#*>h^mhHyfTZga9eEbL# z%=#}ghG%n)XhCLa2kw7nx>4Jb>z-6KYt%?^%50IylK6^IH$I(UD@lb!hNRQ~B;b!i zEGyT}qJK`qq3dra@4h-p*Az!_@URz$K>VP=x=+r)J31L{c=A>9e7vDg+Kcmk_#!*t z%uGPDA8vbvmH2b!L4&_0eGN0U%BgsU^&r=8b&@gonD_lj4RD%V-B9&3=g$`pi79t2 znuGqXX^LvBCtgN7z^(D4s6Z~SztW<9^YLO?YSH@Ot^bfGp$WdNPI@HBH|1#U{(aC}fMQ{9ev-SU;yG5woAMEG7t+0{6%Xm!Q!iV}I zerp%VFC&c_-U4rn@kTA$#i(_`(k-*_PI9H@9b=FI>}@Puqxzc95*}~Tj(D-Hyh1HN z4m0rQ!}i%qUvw;A)BlfT#owQ(1b?FjX{CCM^a3DKTEA9Ub_5oH^C>@{S&-AdI zg-0v!h6dZabpkJIJbU}ohgj$#><){Z_{pqjBKR$sMi+3w)qC+cB9@ffr}}TE$g^yjOvrF~W4y%5>gg59+)tg3x z)B$5Jo(M*MfjNK`j~EyH&FkRxQ`ugk@fDbIpS`TQ_==&=mH9xoHm``U|fwUboKbe0;#kHehz7s>Y0JskfvUxPdiRK4HUs{6vhl;~M^6W<%z z^IQ&sDZz>TMvb4n(4tbD*jxr2_=Qo2O*QH0*V!657_J(B*Efit38R+T4Y#pJw)%d+ zpW}jA_w(zBH`=OTi-m5}dv-*xIKZkM$-xfi@nd%5*F%%8>XwZT6c{pjyTMuV_Fg;_ zgG~B{oH81`@!?syEFfm>8R!C>&jW_7U z3@vn;9e^fT+9?Wuk$e_?7={KrUPZmai93t%Wl!X@(Zdv>?sIA^l5&gvV$Rp(HE^;# zY^1>u^vFD{YFcX6!4;XSG~}++{|)rV8|gB>L~7QN*NFvQR_)utqG!iibRGD6hZ1Ie zx{N<7$ZIvR>T7bdc4^+s)E%F;6DjM|5o zznu5pZw#}HZ{WrBWYw4B)%DVjj-*R?B<2Gl2U}`nIIu-|^R|1;)X{ote%a9lb`EbRAFaSGReF z_NM+jaw}6;@GPEC@BF6M-LMWWDZKBvMaf#KRjRf*n4wm1nF(Mkvl8*dX<^pw8%){_ zub5RQ({*0}mdsDT^i8Ngkj$U0kdXC4OIp$*{>){1B-&s7tB43W> zUc-IawwxZSmyN_y`?}3^lgo49f~lvR&6iUiI=P7l`M=K{{A4T!DGGjk$_rnl8_ZSg zoFq?GCvnUT{^HBrk~8gQWaz=`nYz6>Ts!*B8#D3X z?ZY#`Yj^5*@)t4C|2%WnbIfBC;k#YT)CBsNz6Xq2a08y6Nq9*Ifqys0%b3@E3oiC} z1Gx3hENz9hZtQ!LF5gZ)z;_V@{y1YQzEP*`a^v0Qbq6?&RdUGZTxhO3I7vbB zt;q>|0RMziqiw~NI5`9TnnI)9B-q|vvSVE&I08>W_Vv09kQy zo-SDF`bw^HbCiozFADwy7i=h)f7^@b@HDoQFgVBgpF7K(V!SuBwBB`dmr|SY`=zdl zCU@)@3s#hynd~+&g|g%g`imR%z2hsucY4fhnzOp;oJFl*2MvggX|t$}I~sKk+GNQ$ zsH68u@t-9fdcY|4ToSoES{>A;RgSXw@ANI2C8s7u6kue9!iR9I?^d*(b z;DJOe>_z{w4sN4&7v?9++{G^3U8+2yCgz^BqSxvdXpj+CMLJOTHQU4X`e3auosSH}a6`B!5*<}4Qsa^Nf8UOa=7+o>%FF(*l|=z`Z~UABQZ zQJ9=cp7}rxye}v5zZyQPOW|DR-!uQEi=`uHEJ>M z4zg%|@^F@~S<}IImeYSaj|2-M&lcgmHYtklIr+{d%Ay`)vb8fle%mvc2a!ul!|xl( z4ohij^RxWy^;LM4Bg&ax7`-*>?4R^#yZ>QcNgvUsx>57&qoxBxddc^@MY7=&F(-y^ z`vrV^+HJ6dJk_e~rxYj5^yB@Ax)gTv^%L z-4_g_DzThCu$w<#+WWF~KyK<%13NbBd3|b!H!tyc9|7NCU6x+_lcigF;%V%_EYuqe zvkaf8`i})kr18a_kE7<(B+e}29++>v0g`&Y=KQP*1GhD;}B&!PS;cugd5A^wOwBORg|*ako9 zJR;4Xss_^s`d@UA74w`V4Sf6p@on8QcEdNqSzvc+@>t&YDZJ6&z<=0;xAqylu;Fb~ zKW{5j>GKwhAUECub1aapwyWsHLb7$|qHI-Wh`HHuS^!>n%ZofZ0v}XI6FM;DfDdT0 zZp_j_;5&;dWoS&WQM(t$t1e8{pBdU%U*bKxuRC^U>*I8zhCIvEG3B$g6#0L6tXZWT zwL85*J7%dp=2IJiD|*MNuK7hh$;{WpnLfEKTlaIHE1u*1ROkCYitqBtEL{#BwP+ds zxHZ$XzE7IoxR<7}3{Us;Hfl+7#2>iuGXgo+!T8r5GHP@Iqc&kidM=H=_yMz>$;?PX ztjY?mRDUM&lAa)Zm_Z&9E8>`cbo->5yo%nI8vP)AXe;;E?2SiG5d#{)2B|lfm^ja@ z3HR}^yTPvjqh9vM`>!)I!jhaDXRDsSLp*juBd>&2w}7#QqPv}RBvW@rfRTL6z!M=$ zv*F^5cFkrU50?Y1c{_3Fe#Zl}%okG{d% z^&%XKO8Cov!BfUyCu(OWW8u-d`r|*!Y-3Rf-plLgQKs9-O3v1beR$+;q5lHMTwWP} zOZa$~%44@mT;E1-Vj*_b`f1U6Z}9~Ot2}p&?=gyge}z^3FNjoO7TnIsUQVUh%lcyW z;z`fg?i2G9cndD;=v}^ZUYX6mTg?1~n)6O*wyv3kM<#fA2V#-)9p5R@eBwOqqZ}$@)#6RTn7}{!EHLYO`hXlW@veniyOusEgg(|9uNv@I zwP+(^!E~!WBUbdImYZX>=<=(456p?yUJ>cTd3YL(t{=66QZu{)R~tp$_5&@1*H>(0 zxvdSm?##lO0R&g%=fDON58;6uBXWTA%;-|KmBFVMd_1YHjof2@{R|ky+Ih^Sa@tB= z?%wqTgE%Gge(0CnGKekoSzS6=X}Yc2$_UqHJGk_1TbXv;PLdwjiV<(}WgnQO!8dBSS?8f1JRUZnB1QW^Y6Yr^*` zP2B&1_cJwG1abTfci2+dr0dbIIl%oHxYeYRBU`IA$<||ajoMW*wd1ICeF{G+;&GO~ z?Lh4AV$m?p?h?*z@e1tP)o0J472K?A%s7TvG<_U6(nNc_ogAgXb3Ek_JIS0na21XC zDB>MBGXcKuBzv)itGKheqxe2?z)#CT27vLr9b?b_q@5HKI|(QETG`7z08Z6~x*$&l z_QRvCy1Fp_v~N_Gd2&y@RDEtR2X!;+TyV@g#IgPKY`x|&&#Wp^6;JGBD>%+w{+r@t@9SM!gzNH??fB5HPL*JQL3A8b|ar zt-S6<)$%`>A5ts4yQX^T9Pyucc%Qtns53Pe&u`;#)kR}O@_@-X{^Cs4N1rnf{=th? z=aLHo4x;gQN2Kg?JmB5YGk!+jyO18M6EzVvhTl=urR%^wj@wAbX7*AE{9+UHhmjuK zmm^lKvzob2r);f5exH8Hq&ssP^)CMgrdU+|B1Mjgq^V6O;z|Z!O7daPmh%Z^w z%sPuWP`?#Ci+1>w!~GiClbVm5aFzT}>=IaB4SaVi*vVdM*h}*lQD=RD-HPouM@K(%XD+YUeDX||dg4g!qLJp`6ZkEd*9YShO zTjKluIwG;X4br#;e9cdG5<^c=v?BT8jGdg|^EMl6BW8H#dyhDXUy74d8tEb{f?TE4 zNLN|s4CW1*vzV&M zaGP&1Lx!J_!C5Xf&R*{40H1qcC;bx*@}9GlM&3AFkU0r8+0je~smD(Ijk+%K4D!u} zqxO>Y%T9U|hpN1ElHQ?CQgWcZEEr%T%?jIyTL~MvN=$vjouchi>_oH@I9Wr^Ml1Rp zb02$2Mx$|Xtey1Y{Mqv!rq^&3E#o4)OF2vUVsN_7aD7|Cm+Ore#bI<1ih||wOfrdi z@3z>>#S`>KS+?@MFm)qms9AzlC-ltLy7c4W@GO^518ij06Zs!kudSUlxWa3KDSkUg zzORJOGuZ7z&O!yaOcORciO(T8{hys>%{C|bI-Kv+0(QdeXwf5seDt%CP&8n^xWetF zzS+jT?@Z1v``S*TyMjNy#Y>`qS#xq97ZLz+K4wJ57rZX5P6NE$_5+y;lJY&=0AOXBPH4dm)n;wJg84>N9`lq~i6#%wi?ehDn6HuI*->C_K5t$I64^-Oz_(7f#P zfN_*$kLV6PNQ-+$ExpOCDa7FooR@(MxbImOa*ajbA0P+OBRr-b^=SYHXOUSQer0Q^ zXVg~2sOrpd%Ph^(5nD6$8aUdg`I-9Z4t>s=Y^@PN5343kCGHweW$Ki?==Sru8`3il zccyQGV|Rpo^3C*yeXr14(KpqiZm)DWUB{rs}{l6eKbPAg*@In%9xIhati#?6P>(Gobk*^b_C$OT>ju7 zG3C+N*h$Yp-{$vU-#>`@u{kppFf<=Hl_$j@_jjQKFa*vNJe4mcz`)=j9H-~b^$$Ke zBf%s1dk=^WJ?R0ethZ(EV32&xsRwh|ORx)^y;@GPxV(#uDd8eTS2{}+8lUBY_B)?x%K_?9?rhGb%rjb2BT>80*lW=Z-0Noa zhXH-f`eik}Xl)z$%v@#HOzQue_+VGEk?zdU`*p>iy`imyP_GsH3vZ+-egEcceK*OX zy8^+c*@3IaEc_?+Mf*jWYFd<~#f}(N;L6w)hl`H3cQ-hcU#GC&5eCQVALfr+v(<$& z@elX0u@CdB@o=BPAlHM@Z!c@s`^2rUV8T*u8EDq9B#X{_0q+*Psy*j$2YjXq%&W>!yFa6L zd{mnKzN(J+i-Su>Imz@c_}Ra7lqvYz_8Cjv3(j5D-ykvYe*)kkzQ~~GeaUR@3B8XW z{mHa!O<>kxpA(JkR_S_rEPnR9-l1#sPJEW2I@#KWUgLXR>g+*I%zL@NIjMi=GV1}? zFE+%gC9c`Zu+Hq=Y`2xh)TRI7kU2Ml4Np`3HklriIdDPZ(`GP}F`b!@O=m91IT!k! z3Q^R@HL0yu!8NR4QNtFCE?os?OFc{LBQy6HwPzDN#jcvwiJ3u_hV;Kn%v$$-mL6Q2 zp%vhC2f%mz+m~96Gr#dYdyk{Q<(PN$A5Gspj+{LW+_ay)+*;)%ZhhhWvqLhM?=8nI zN2$TgE1SA}fv?EX2jCynJ#DXoV}L&v_{UD{+Sy30LEwb8CT)K{ONS4IyTd)Uhnr^i z8lQD`0+Yd(2UAB39|HaYP7_D2Z{Cx-^Np=M{mBl_W$OB#Zt@3A@=HHExk{XAS{6Km z&(x_6zSJ-6Wn45GQj^i9sc9$qW*OuV80#k9ciKI4@QFbYf%AZs=|$QOFmZ#8VC zC4K7b&g>U3WBjn5+As$ktxk?|sj$8Hf?GNBOeXZt*48JiTDvE61`l>BMmb7w8+$2D zJ*UN(BUW~jBXyjl2k$*EJ*V9`aD|$-lCK>8!*>i)|E04sDF07vJvl7a7$a*Nh%z?Lr+{}6=(locWPI1P!VEA?-K@brY_BZta+RI{#^ib zM59QZT;Lq^t%I4BT|Xo82mEMQdz0?xtX<>m#kaAQcl5|9x!B(~vF8Yu7*5aBh5K6j zi0b=fa0c%D(-g4R2sjZrR6CAlr+_nD39Mnw9^%T2Yz+?vzvLdzTE+L_!_Sq-(%b17 z>R;QW8(%WxB>o?7EK(nQq1Q8$R^#6JIhl0&Sa8RI;62YRI_id1YjG}z@)^3Isk!i( zqgaY^=E@qF_3@r~KWCSKo0uJ>=u~*tk+$NnKy@8;R{z#ug`X{26h1`}dZSBl#(Y!x zwGYl^2D}Y0#q>WSA*EG+(X$?*hO$0}3$=xRj~G@iLUjrFlY#h`K9m`}m6*86q+$E; zE@Zx1bA?d{f};)I3>S{?mIwH7r?6=t@t(!h<2 zFp~hs8X95I(fO&(sMGGp0c?Qh?cqEB4*oU0Ju{*W_#j1rHFUCQZEBQgF!TX%J$l0T z+K|^qj$h?-x)U2Z+ew{JgADINFLIRg(+Lmw6KJKH?8RIU9x8p;!&}svC+YL~oOip6 zG-+rj>BL26?qxhX#f#x?gyrLIZ4mhqW7Q*IUi11emxP!3nD{h>8KE<=u}A^tY2=qy zOo5Zofe6}+|Lr4__MB+ZnPb@3=)?S+S>fFPI1Ry8E%?-=nWNd~%5BmgWr&Z@*d6ml zv+y1HkotXbe@B^n9zOMK_&p{#vCqiaoR9Dl^giT;g?{Kx@jh3$QoGYPHRXK#OYRv& z-LaLqQ)ox{1ohbGBSy5hfy4dPL4L!7Ilk9UhIE2AksChkBDmUBoaO9YN4PW0P@j>n zsDr+IwUwP)*?XAgETK=>arSkTPV}{Fo&V$8*-B`0TbaL*nIHIe+5GT*d9FX{O{Pq@ zm)%8~b$qauLfwgZO>Jcyacp5Q-0+XK;z&^=@@dCvu~De z>&JYS^Vy3$GM71EFkGBKFxk_+EP951X&gItW0<>EH)k>zF=?xVX#K%w%=H&uS>|8r z-xU3onWEcEXXzj25KowCTm}ag>gj7qX1&Rb;of4SKIV1O_WafC*?)Bido;a0;qZ+> z%fMpNK9Mv4i&8bJNty=apr*(H=braj{t7vHv57eW^9SO{VeUbht`@yy%+?Sv@eldn zkj5BwY#OyWcl)N%0#0n!q9$gpU$_enW-ZvAo&c^?MdGlv1hqf2k0@&Uyl^d7z6Xy& zL*P#k@xhXe*=5A!0hnuiv>--?==XEv1>i)@TUQH$@Xs#-UNJI?IG54@`KDB=#a zbDJi1va2%nj2a{Xe6vIwW^CZ#z0CG(t7R&u{u&CEK=0%N-T6jj5I@eFr@t%M6 zdz(b9)GbM?^-R(Bz3{an?*5_9Zj{J8Xg_-?Kk)x?P1O$%{%W{?sy0YY(}wT~EnxOB zeE*Tm9Okeu=|ik~8J(efD#EM(1g}0mO=rA;$DWItlpfSC1-yP47%u(OnknRhyUfJE zq6FU4BDQ*pMfiU+y(RgakF0~kyklT4>3$N8lDM2QvAUNe zqfHc4&`nB!8wI61iqRXarwp}CsI#1Oc9VWdj`%OogHx+DoNv{Sy4t=*}br)r`et^7wz z4UN-9Z+__g+CS7cPb|Auzx0dKPrdggR_8_i(6F|#>i8#CeNV*d@XQ}-^Zc7Osr?-u zPMq56Z~Ey(jVhb0PVbX+$h1WL?VqHfXvO4lPSJh?({u;BdktbUbnyHPEr<^2DmWrn zp2LY@rm&g((ETWw6Z@U-3p>kRz8llzJTm$fJN|J#Xzh8+sQS4j;b=Z_c~wjt-ja+U0+>%q2EqD)b9r(^$uE^YthyBDg9FYPCe7+ z_wWVP`+D%tKN>AJ^}yxpYJ*pkN7Hw@-ws`pW7#^g3tYdPS=uB|svd8fqzMm_bxj0b zxM!Ie6JNSo(CZnQs-C@n>DSCp>XP|Z&j-HN;1*H3V#PZRSsJ6S_r&Su#tC{m2RlW* z&}iKouk*r_)P-HANseeyIQdA?q~emivb;=fSzg-XVN@e`DVepUgiQEVM&_-lCROf+ z$le7FBxl?DvU^lbDg3CiTpd(SHWw}YxzY$O*RG?Y7C z8p!6~b)~?qs&etEr*s(cOY85C(&GiA_0=@?RHwO0g&!W$51ojTk#E%I>2)o5?4q8{ zy00xeeAU~9neQy~5NlE%IqOwG>{b<�mK&35}kJLoO0Fh#r{w=1;1tG~ZN03cfEd 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 literal 0 HcmV?d00001 diff --git a/examples/app_mic_array_basic/src/XK-EVK-XU316-AIV.xn b/examples/app_mic_array_basic/src/XK-EVK-XU316-AIV.xn new file mode 100644 index 00000000..b4eb8fff --- /dev/null +++ b/examples/app_mic_array_basic/src/XK-EVK-XU316-AIV.xn @@ -0,0 +1,66 @@ + + + Board + xcore.ai Vision Development Kit + + + tileref tile[2] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/app_mic_array_basic/src/XK-EVK-XU316-AIV.xscope b/examples/app_mic_array_basic/src/XK-EVK-XU316-AIV.xscope new file mode 100644 index 00000000..d3a3da63 --- /dev/null +++ b/examples/app_mic_array_basic/src/XK-EVK-XU316-AIV.xscope @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/examples/app_mic_array_basic/src/app.c b/examples/app_mic_array_basic/src/app.c new file mode 100644 index 00000000..023beb32 --- /dev/null +++ b/examples/app_mic_array_basic/src/app.c @@ -0,0 +1,67 @@ +#include +#include +#include + +#include +#include + +#include "mic_array.h" +#include "device_pll_ctrl.h" + +// -------------------- Frecuency and Port definitions -------------------- +#define MIC_ARRAY_CONFIG_MCLK_FREQ (24576000) +#define MIC_ARRAY_CONFIG_PDM_FREQ (3072000) +#define MIC_ARRAY_CONFIG_PORT_MCLK XS1_PORT_1D /* X0D11, J14 - Pin 15, '11' */ +#define MIC_ARRAY_CONFIG_PORT_PDM_CLK PORT_MIC_CLK /* X0D00, J14 - Pin 2, '00' */ +#define MIC_ARRAY_CONFIG_PORT_PDM_DATA PORT_MIC_DATA /* X0D14..X0D21 | J14 - Pin 3,5,12,14 and Pin 6,7,10,11 */ +#define MIC_ARRAY_CONFIG_CLOCK_BLOCK_A XS1_CLKBLK_2 +// ------------------------------------------------------------ + +// App defines +#define APP_N_SAMPLES (320) +#define APP_OUT_FREQ_HZ (16000) +#define APP_SAMPLE_SECONDS (2) +#define APP_N_FRAMES (APP_OUT_FREQ_HZ * APP_SAMPLE_SECONDS / APP_N_SAMPLES) +#define APP_BUFF_SIZE (APP_N_FRAMES * APP_N_SAMPLES) +#define APP_FILENAME ("mic_array_output.bin") + +static pdm_rx_resources_t pdm_res = PDM_RX_RESOURCES_SDR( + MIC_ARRAY_CONFIG_PORT_MCLK, + MIC_ARRAY_CONFIG_PORT_PDM_CLK, + MIC_ARRAY_CONFIG_PORT_PDM_DATA, + MIC_ARRAY_CONFIG_MCLK_FREQ, + MIC_ARRAY_CONFIG_PDM_FREQ, + MIC_ARRAY_CONFIG_CLOCK_BLOCK_A); + +void user_mic(chanend_t c_mic_audio) +{ + printf("Mic Init\n"); + device_pll_init(); + mic_array_init(&pdm_res, NULL, APP_OUT_FREQ_HZ); + mic_array_start(c_mic_audio); +} + +void user_audio(chanend_t c_mic_audio) +{ + int32_t WORD_ALIGNED tmp_buff[APP_BUFF_SIZE] = {0}; + int32_t *buff_ptr = &tmp_buff[0]; + unsigned frame_counter = APP_N_FRAMES; + while (frame_counter--) + { + ma_frame_rx(buff_ptr, (chanend_t)c_mic_audio, MIC_ARRAY_CONFIG_MIC_COUNT, APP_N_SAMPLES); + buff_ptr += APP_N_SAMPLES; + for (unsigned i = 0; i < APP_N_SAMPLES; i++) + { + tmp_buff[i] <<= 6; + } + } + + // write samples to a binary file + printf("Writing output to %s\n", APP_FILENAME); + FILE *f = fopen(APP_FILENAME, "wb"); + assert(f != NULL); + fwrite(tmp_buff, sizeof(int32_t), APP_BUFF_SIZE, f); + fclose(f); + printf("Done\n"); + exit(0); +} diff --git a/examples/app_mic_array_basic/src/device_pll_ctrl.c b/examples/app_mic_array_basic/src/device_pll_ctrl.c new file mode 100644 index 00000000..ea32cad7 --- /dev/null +++ b/examples/app_mic_array_basic/src/device_pll_ctrl.c @@ -0,0 +1,32 @@ +// Copyright 2022 XMOS LIMITED. +// This Software is subject to the terms of the XMOS Public Licence: Version 1. + +#include +#include +#include +#include +#include "device_pll_ctrl.h" + + +void device_pll_init(void) +{ + unsigned tileid = get_local_tile_id(); + + const unsigned DEVICE_PLL_DISABLE = 0x0201FF04; + const unsigned DEVICE_PLL_DIV_0 = 0x80000004; + + write_sswitch_reg(tileid, XS1_SSWITCH_SS_APP_PLL_CTL_NUM, + DEVICE_PLL_DISABLE); + + hwtimer_t tmr = hwtimer_alloc(); + { + xassert(tmr != 0); + hwtimer_delay(tmr, 100000); // 1ms with 100 MHz timer tick + } + hwtimer_free(tmr); + + write_sswitch_reg(tileid, XS1_SSWITCH_SS_APP_PLL_CTL_NUM, DEVICE_PLL_CTL_VAL); + write_sswitch_reg(tileid, XS1_SSWITCH_SS_APP_PLL_CTL_NUM, DEVICE_PLL_CTL_VAL); + write_sswitch_reg(tileid, XS1_SSWITCH_SS_APP_PLL_FRAC_N_DIVIDER_NUM, DEVICE_PLL_FRAC_NOM); + write_sswitch_reg(tileid, XS1_SSWITCH_SS_APP_CLK_DIVIDER_NUM, DEVICE_PLL_DIV_0); +} diff --git a/examples/app_mic_array_basic/src/device_pll_ctrl.h b/examples/app_mic_array_basic/src/device_pll_ctrl.h new file mode 100644 index 00000000..69cec226 --- /dev/null +++ b/examples/app_mic_array_basic/src/device_pll_ctrl.h @@ -0,0 +1,9 @@ +// Copyright 2022 XMOS LIMITED. +// This Software is subject to the terms of the XMOS Public Licence: Version 1. + +#pragma once + +#define DEVICE_PLL_CTL_VAL 0x0A019803 // Valid for all fractional values +#define DEVICE_PLL_FRAC_NOM 0x800095F9 // 24.576000 MHz + +void device_pll_init(void); diff --git a/examples/app_mic_array_basic/src/main.xc b/examples/app_mic_array_basic/src/main.xc new file mode 100644 index 00000000..344cc9b3 --- /dev/null +++ b/examples/app_mic_array_basic/src/main.xc @@ -0,0 +1,28 @@ +// Copyright 2023-2024 XMOS LIMITED. +// This Software is subject to the terms of the XMOS Public Licence: Version 1. + +#include +#include +#include +#include + +#include +#include + +extern "C" { + void user_mic(chanend c_mic_audio); + void user_audio(chanend c_mic_audio); +} + +int main(void) +{ + // Channel declarations + chan c_mic_audio; + + // Initialize parallel tasks + par{ + on tile[1]: user_mic(c_mic_audio); + on tile[1]: user_audio(c_mic_audio); + } + return 0; +} diff --git a/lib_mic_array/src/deinterleave16.S b/lib_mic_array/src/deinterleave16.S index efebb43e..cfb2a683 100644 --- a/lib_mic_array/src/deinterleave16.S +++ b/lib_mic_array/src/deinterleave16.S @@ -143,3 +143,29 @@ deinterleave16: .size deinterleave16, .L_end - deinterleave16 #endif // __XS3A__ + +#if defined(__VX4A__) || defined(__VX4B__) + +#define FUNCTION_NAME deinterleave16 +#define NSTACK_WORDS 4 +#define NSTACK_BYTES (NSTACK_WORDS*4) + +// Note: ldd and std are reversed in vx4 + +.p2align 1 +.globl FUNCTION_NAME +.type FUNCTION_NAME,@function +FUNCTION_NAME: + xm.entsp NSTACK_BYTES + xm.stdsp s2, s3, 0*8 + //TODO + xm.lddsp s2, s3, 0*8 + xm.retsp NSTACK_BYTES + +.size FUNCTION_NAME, . -FUNCTION_NAME +.resource_const FUNCTION_NAME, "stack_frame_bytes", NSTACK_BYTES +.resource_list_empty FUNCTION_NAME, "callees" +.resource_list_empty FUNCTION_NAME, "tail_callees" +.resource_list_empty FUNCTION_NAME, "parallel_callees" + +#endif diff --git a/lib_mic_array/src/deinterleave8.S b/lib_mic_array/src/deinterleave8.S index c3d6a955..ed0f5f2c 100644 --- a/lib_mic_array/src/deinterleave8.S +++ b/lib_mic_array/src/deinterleave8.S @@ -115,3 +115,73 @@ deinterleave8: .size deinterleave8, .L_end - deinterleave8 #endif // __XS3A__ + + +#if defined(__VX4A__) || defined(__VX4B__) + +#define FUNCTION_NAME deinterleave8 +#define NSTACK_WORDS 8 +#define NSTACK_BYTES (NSTACK_WORDS*4) + +// Note: ldd and std are reversed in vx4 + +#define x a0 +#define a a1 +#define b a2 + +#define c s2 +#define d s3 +#define e s4 +#define f s5 +#define g s6 +#define h s7 + +.p2align 1 +.globl FUNCTION_NAME +.type FUNCTION_NAME,@function +FUNCTION_NAME: + // save regs + xm.entsp NSTACK_BYTES + xm.stdsp c, d, 0*8 + xm.stdsp e, f, 1*8 + xm.stdsp g, h, 2*8 + + // deinterleave + xm.ldd b, a, 24(x) + xm.ldd d, c, 16(x) + xm.ldd f, e, 8(x) + xm.ldd h, g, 0(x) + + xm.unzip b, a, 2 + xm.unzip d, c, 2 + xm.unzip f, e, 2 + xm.unzip h, g, 2 + + xm.unzip c, a, 1 + xm.unzip d, b, 1 + xm.unzip g, e, 1 + xm.unzip h, f, 1 + + xm.unzip e, a, 0 + xm.unzip f, b, 0 + xm.unzip g, c, 0 + xm.unzip h, d, 0 + + xm.std a, e, 0(a0) + xm.std c, g, 8(a0) + xm.std b, f, 16(a0) + xm.std d, h, 24(a0) + + // restore regs + xm.lddsp c, d, 0*8 + xm.lddsp e, f, 1*8 + xm.lddsp g, h, 2*8 + xm.retsp NSTACK_BYTES + +.size FUNCTION_NAME, . -FUNCTION_NAME +.resource_const FUNCTION_NAME, "stack_frame_bytes", NSTACK_BYTES +.resource_list_empty FUNCTION_NAME, "callees" +.resource_list_empty FUNCTION_NAME, "tail_callees" +.resource_list_empty FUNCTION_NAME, "parallel_callees" + +#endif diff --git a/tests/unit/src/main.c b/tests/unit/src/main.c index d37d665b..27da8c36 100644 --- a/tests/unit/src/main.c +++ b/tests/unit/src/main.c @@ -14,21 +14,20 @@ int main(int argc, const char* argv[]) printf("\n\n"); - // RUN_TEST_GROUP(dcoe_state_init); - // RUN_TEST_GROUP(dcoe_filter); - // RUN_TEST_GROUP(DcoeSampleFilter); + RUN_TEST_GROUP(dcoe_state_init); + RUN_TEST_GROUP(dcoe_filter); + RUN_TEST_GROUP(DcoeSampleFilter); - // RUN_TEST_GROUP(ma_frame_tx_rx); - // RUN_TEST_GROUP(ma_frame_tx_rx_transpose); - // RUN_TEST_GROUP(ChannelFrameTransmitter); - // RUN_TEST_GROUP(FrameOutputHandler); + RUN_TEST_GROUP(ma_frame_tx_rx); + RUN_TEST_GROUP(ma_frame_tx_rx_transpose); + RUN_TEST_GROUP(ChannelFrameTransmitter); + RUN_TEST_GROUP(FrameOutputHandler); RUN_TEST_GROUP(deinterleave2); RUN_TEST_GROUP(deinterleave4); - // RUN_TEST_GROUP(deinterleave8); - // RUN_TEST_GROUP(deinterleave16); - - // RUN_TEST_GROUP(deinterleave_pdm_samples); + RUN_TEST_GROUP(deinterleave8); + //RUN_TEST_GROUP(deinterleave16); + RUN_TEST_GROUP(deinterleave_pdm_samples); return UNITY_END(); } From a034b2056f29fd571bae7a19ad7ce350893c668c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Fri, 13 Feb 2026 17:24:46 +0000 Subject: [PATCH 18/36] Add FIR 1x16-bit implementation and corresponding unit tests --- lib_mic_array/src/deinterleave8.S | 2 +- lib_mic_array/src/fir_1x16_bit.S | 61 ++++++++++++++++++++++ tests/unit/src/main.c | 6 +-- tests/unit/src/test_fir_1x16_bit.c | 82 ++++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+), 4 deletions(-) create mode 100644 tests/unit/src/test_fir_1x16_bit.c diff --git a/lib_mic_array/src/deinterleave8.S b/lib_mic_array/src/deinterleave8.S index ed0f5f2c..cc9a876c 100644 --- a/lib_mic_array/src/deinterleave8.S +++ b/lib_mic_array/src/deinterleave8.S @@ -184,4 +184,4 @@ FUNCTION_NAME: .resource_list_empty FUNCTION_NAME, "tail_callees" .resource_list_empty FUNCTION_NAME, "parallel_callees" -#endif +#endif // __VX4A__ || __VX4B__ diff --git a/lib_mic_array/src/fir_1x16_bit.S b/lib_mic_array/src/fir_1x16_bit.S index 576d4ef9..ea0b85b4 100644 --- a/lib_mic_array/src/fir_1x16_bit.S +++ b/lib_mic_array/src/fir_1x16_bit.S @@ -72,3 +72,64 @@ macc_coeffs: .cc_bottom fir_1x16_bit.func #endif // __XS3A__ + + +#if defined(__VX4A__) || defined(__VX4B__) + +/** + * This function is the optimal FIR on a 1-bit signal with 16-bit coefficients. + * + * NOTE: This version is optimized for the mic array and takes only a single block of coefficients + * + * r0: argument 1, signal (word aligned) + * r1: argument 2, coefficients (arranged as 16 1-bit arrays, word aligned) + * r2: spare + * r3: spare + * r11: spare +*/ + +#define FUNCTION_NAME fir_1x16_bit +#define NSTACK_WORDS 16 +#define NSTACK_BYTES (NSTACK_WORDS*4) + +.p2align 4 +.globl FUNCTION_NAME +.type FUNCTION_NAME,@function +FUNCTION_NAME: + { li a3, 32 ; xm.entsp NSTACK_BYTES} + { slli t3, a3, 3 ; xm.vclrdr } + { xm.nop ; xm.vsetc t3} + { xm.nop ; xm.vldc a0} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { add a1, a1, a3 ; xm.vlmaccrb a1} + { addi t3,sp, 0 ; xm.vlmaccrb a1} + { xm.nop ; xm.vstr t3} + { xm.nop ; xm.vclrdr} + { xm.ldap t3, macc_coeffs ; xm.vldc t3} + { addi a2,sp, 0 ; xm.vlmaccr0 t3} + { addi a2, a2, 4 ; xm.vstr a2} + { xm.nop ; xm.vstd a2} + xm.lddsp a0,a1,0 + xm.zip a1,a0,4 + { xm.retsp NSTACK_BYTES ; slli a0, a0, 8} + +// The order of these coefficients tells us that whatever gets VLMACCR1'ed last is going to be multiplied by +// the largest coefficient. Thus, if the bipolar coefficient matrix B[,] has shape 16x32, then B[0,:] must +// correspond to the LEAST significant bits of each coefficient +macc_coeffs: + .short 0x7fff, 0x4000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0200, 0x0100, 0x0080, 0x0040, 0x0020, 0x0010, 0x0008, 0x0004, 0x0002, 0x0001 + +#endif // __VX4A__ || __VX4B__ diff --git a/tests/unit/src/main.c b/tests/unit/src/main.c index 27da8c36..ade802c9 100644 --- a/tests/unit/src/main.c +++ b/tests/unit/src/main.c @@ -26,8 +26,8 @@ int main(int argc, const char* argv[]) RUN_TEST_GROUP(deinterleave2); RUN_TEST_GROUP(deinterleave4); RUN_TEST_GROUP(deinterleave8); - //RUN_TEST_GROUP(deinterleave16); - RUN_TEST_GROUP(deinterleave_pdm_samples); - + // RUN_TEST_GROUP(deinterleave16); + // RUN_TEST_GROUP(deinterleave_pdm_samples); + RUN_TEST_GROUP(fir_1x16_bit); return UNITY_END(); } diff --git a/tests/unit/src/test_fir_1x16_bit.c b/tests/unit/src/test_fir_1x16_bit.c new file mode 100644 index 00000000..18a94941 --- /dev/null +++ b/tests/unit/src/test_fir_1x16_bit.c @@ -0,0 +1,82 @@ +#include +#include +#include +#include + +#include "unity.h" +#include "unity_fixture.h" + +#include "mic_array/etc/fir_1x16_bit.h" +#include "mic_array/etc/filters_default.h" + +TEST_GROUP_RUNNER(fir_1x16_bit) { + RUN_TEST_CASE(fir_1x16_bit, symmetry_test); + RUN_TEST_CASE(fir_1x16_bit, zero_signal); + RUN_TEST_CASE(fir_1x16_bit, alternating_signal); + RUN_TEST_CASE(fir_1x16_bit, with_stage1_coef); +} + +TEST_GROUP(fir_1x16_bit); +TEST_SETUP(fir_1x16_bit) {} +TEST_TEAR_DOWN(fir_1x16_bit) {} + +// Test that opposite signals produce opposite results +TEST(fir_1x16_bit, symmetry_test) +{ + uint32_t signal_pos[1024]; + uint32_t signal_neg[1024]; + + // Using real stage 1 coefficients + extern uint32_t stage1_coef[STAGE1_WORDS]; + + memset(signal_pos, 0x00, sizeof(signal_pos)); // All +1 + memset(signal_neg, 0xFF, sizeof(signal_neg)); // All -1 + + int result_pos = fir_1x16_bit(signal_pos, stage1_coef); + int result_neg = fir_1x16_bit(signal_neg, stage1_coef); + + // Opposite signals should give opposite results + TEST_ASSERT_EQUAL_INT(-result_pos, result_neg); +} + +// Test that zero-mean signal gives zero-ish result +TEST(fir_1x16_bit, alternating_signal) +{ + uint32_t signal[1024]; + extern uint32_t stage1_coef[STAGE1_WORDS]; + + // Alternating pattern: half +1, half -1 + for(int i = 0; i < 1024; i++) { + signal[i] = 0xAAAAAAAA; // 10101010... + } + + int result = fir_1x16_bit(signal, stage1_coef); + + // Should be close to zero (might not be exactly zero due to filter asymmetry) + // Allow some tolerance + TEST_ASSERT_INT_WITHIN(1000000, 0, result); +} + +// Sanity check: function doesn't crash with zero signal +TEST(fir_1x16_bit, zero_signal) +{ + uint32_t signal[1024]; + extern uint32_t stage1_coef[STAGE1_WORDS]; + + memset(signal, 0, sizeof(signal)); + + int result = fir_1x16_bit(signal, stage1_coef); + + // Just verify it runs and returns something reasonable + TEST_ASSERT_NOT_EQUAL(0, result); // With real coeffs, unlikely to be exactly 0 +} + +TEST(fir_1x16_bit, with_stage1_coef) +{ + uint32_t signal[1024]; + int expected_result = 268435456; + memset(signal, 0, sizeof(signal)); + + int result = fir_1x16_bit(signal, stage1_coef); + TEST_ASSERT_EQUAL_INT(expected_result, result); +} From 28be345e534da0bb022adf21d3353fd8e2e954af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Mon, 16 Feb 2026 09:48:50 +0000 Subject: [PATCH 19/36] Enhance FIR 1x16-bit implementation for VX4 compatibility and add unit tests for shift_buffer functionality --- .../app_par_decimator/src/decimator_subtask.c | 9 +++- lib_mic_array/src/fir_1x16_bit.S | 28 ++++++----- tests/unit/src/test_fir_1x16_bit.c | 48 +++++-------------- 3 files changed, 37 insertions(+), 48 deletions(-) diff --git a/examples/app_par_decimator/src/decimator_subtask.c b/examples/app_par_decimator/src/decimator_subtask.c index 3e0ee8c7..f54e23cd 100644 --- a/examples/app_par_decimator/src/decimator_subtask.c +++ b/examples/app_par_decimator/src/decimator_subtask.c @@ -119,5 +119,12 @@ void shift_buffer(uint32_t* buff) #if defined(__XS3A__) uint32_t* src = &buff[-1]; asm volatile("vldd %0[0]; vstd %1[0];" :: "r"(src), "r"(buff) : "memory" ); - #endif // __XS3A__ + #elif defined(__VX4B__) + uint32_t* src = &buff[-1]; + asm volatile("xm.vldd %0; xm.vstd %1;" :: "r"(src), "r"(buff) : "memory" ); + #else // C fallback + for (unsigned k = 7; k > 0; k--) { + buff[k] = buff[k-1]; + } + #endif } diff --git a/lib_mic_array/src/fir_1x16_bit.S b/lib_mic_array/src/fir_1x16_bit.S index ea0b85b4..1033d6a1 100644 --- a/lib_mic_array/src/fir_1x16_bit.S +++ b/lib_mic_array/src/fir_1x16_bit.S @@ -97,9 +97,9 @@ macc_coeffs: .type FUNCTION_NAME,@function FUNCTION_NAME: { li a3, 32 ; xm.entsp NSTACK_BYTES} - { slli t3, a3, 3 ; xm.vclrdr } - { xm.nop ; xm.vsetc t3} - { xm.nop ; xm.vldc a0} + { slli t3, a3, 3 ; xm.vclrdr} + { xm.nop ; xm.vsetc t3} + { xm.nop ; xm.vldc a0} { add a1, a1, a3 ; xm.vlmaccrb a1} { add a1, a1, a3 ; xm.vlmaccrb a1} { add a1, a1, a3 ; xm.vlmaccrb a1} @@ -116,15 +116,19 @@ FUNCTION_NAME: { add a1, a1, a3 ; xm.vlmaccrb a1} { add a1, a1, a3 ; xm.vlmaccrb a1} { addi t3,sp, 0 ; xm.vlmaccrb a1} - { xm.nop ; xm.vstr t3} - { xm.nop ; xm.vclrdr} - { xm.ldap t3, macc_coeffs ; xm.vldc t3} - { addi a2,sp, 0 ; xm.vlmaccr0 t3} - { addi a2, a2, 4 ; xm.vstr a2} - { xm.nop ; xm.vstd a2} - xm.lddsp a0,a1,0 - xm.zip a1,a0,4 - { xm.retsp NSTACK_BYTES ; slli a0, a0, 8} + //TODO Below we could save max of 2 cycles? + xm.vstr t3 + { xm.vclrdr; addi a2, sp, 0} + xm.vldc t3 + xm.ldap t3, macc_coeffs + xm.vlmaccr0 t3 + xm.vlmaccr1 t3 + { addi a2, a2, 4 ; xm.vstr a2} + xm.vstd a2 + xm.lddsp a0, a1, 0 + xm.zip a1, a0, 4 + slli a0, a0, 8 + xm.retsp NSTACK_BYTES // The order of these coefficients tells us that whatever gets VLMACCR1'ed last is going to be multiplied by // the largest coefficient. Thus, if the bipolar coefficient matrix B[,] has shape 16x32, then B[0,:] must diff --git a/tests/unit/src/test_fir_1x16_bit.c b/tests/unit/src/test_fir_1x16_bit.c index 18a94941..eeefb260 100644 --- a/tests/unit/src/test_fir_1x16_bit.c +++ b/tests/unit/src/test_fir_1x16_bit.c @@ -3,6 +3,8 @@ #include #include +#include + #include "unity.h" #include "unity_fixture.h" @@ -11,9 +13,8 @@ TEST_GROUP_RUNNER(fir_1x16_bit) { RUN_TEST_CASE(fir_1x16_bit, symmetry_test); - RUN_TEST_CASE(fir_1x16_bit, zero_signal); - RUN_TEST_CASE(fir_1x16_bit, alternating_signal); RUN_TEST_CASE(fir_1x16_bit, with_stage1_coef); + RUN_TEST_CASE(fir_1x16_bit, shift_buffer); } TEST_GROUP(fir_1x16_bit); @@ -39,44 +40,21 @@ TEST(fir_1x16_bit, symmetry_test) TEST_ASSERT_EQUAL_INT(-result_pos, result_neg); } -// Test that zero-mean signal gives zero-ish result -TEST(fir_1x16_bit, alternating_signal) +// Test zero signal with known inputs/outputs +TEST(fir_1x16_bit, with_stage1_coef) { - uint32_t signal[1024]; - extern uint32_t stage1_coef[STAGE1_WORDS]; - - // Alternating pattern: half +1, half -1 - for(int i = 0; i < 1024; i++) { - signal[i] = 0xAAAAAAAA; // 10101010... - } - - int result = fir_1x16_bit(signal, stage1_coef); - - // Should be close to zero (might not be exactly zero due to filter asymmetry) - // Allow some tolerance - TEST_ASSERT_INT_WITHIN(1000000, 0, result); -} + const int expected_result = 268435456; + const unsigned max_cycles = 35; -// Sanity check: function doesn't crash with zero signal -TEST(fir_1x16_bit, zero_signal) -{ + unsigned elapsed = 0; + int result = -1; uint32_t signal[1024]; - extern uint32_t stage1_coef[STAGE1_WORDS]; - memset(signal, 0, sizeof(signal)); - int result = fir_1x16_bit(signal, stage1_coef); - - // Just verify it runs and returns something reasonable - TEST_ASSERT_NOT_EQUAL(0, result); // With real coeffs, unlikely to be exactly 0 -} + elapsed = get_reference_time(); + result = fir_1x16_bit(signal, stage1_coef); + elapsed = get_reference_time() - elapsed; -TEST(fir_1x16_bit, with_stage1_coef) -{ - uint32_t signal[1024]; - int expected_result = 268435456; - memset(signal, 0, sizeof(signal)); - - int result = fir_1x16_bit(signal, stage1_coef); TEST_ASSERT_EQUAL_INT(expected_result, result); + TEST_ASSERT_LESS_OR_EQUAL(max_cycles, elapsed); } From 0dda49477b9d86023544f14ed1ebaa8e062ba21b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Mon, 16 Feb 2026 09:59:29 +0000 Subject: [PATCH 20/36] Remove shift_buffer test case from fir_1x16_bit test group --- tests/unit/src/test_fir_1x16_bit.c | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/unit/src/test_fir_1x16_bit.c b/tests/unit/src/test_fir_1x16_bit.c index eeefb260..dc2273c1 100644 --- a/tests/unit/src/test_fir_1x16_bit.c +++ b/tests/unit/src/test_fir_1x16_bit.c @@ -14,7 +14,6 @@ TEST_GROUP_RUNNER(fir_1x16_bit) { RUN_TEST_CASE(fir_1x16_bit, symmetry_test); RUN_TEST_CASE(fir_1x16_bit, with_stage1_coef); - RUN_TEST_CASE(fir_1x16_bit, shift_buffer); } TEST_GROUP(fir_1x16_bit); From f5cec644c0f879e9dce78a620da16135355d9c64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Mon, 16 Feb 2026 14:16:51 +0000 Subject: [PATCH 21/36] Refactor architecture-specific assembly code for VX4 compatibility and improve inline function definitions --- examples/app_par_decimator/src/app.cpp | 13 ++- lib_mic_array/api/mic_array/cpp/Decimator.hpp | 9 +- lib_mic_array/api/mic_array/cpp/PdmRx.hpp | 4 +- lib_mic_array/api/mic_array/impl/setup_impl.h | 2 +- lib_mic_array/api/mic_array/setup.h | 2 +- lib_mic_array/src/deinterleave16.S | 110 +++++++++++++++++- lib_mic_array/src/mic_array_setup.c | 9 +- lib_mic_array/src/mic_array_task.cpp | 16 +-- lib_mic_array/src/pdm_rx_isr.S | 21 ++++ tests/signal/profile/app_memory/src/app.cpp | 13 ++- tests/unit/src/main.c | 30 ++--- 11 files changed, 189 insertions(+), 40 deletions(-) diff --git a/examples/app_par_decimator/src/app.cpp b/examples/app_par_decimator/src/app.cpp index 2b3f5874..244ca40f 100644 --- a/examples/app_par_decimator/src/app.cpp +++ b/examples/app_par_decimator/src/app.cpp @@ -43,8 +43,16 @@ pdm_rx_resources_t pdm_res = PDM_RX_RESOURCES_DDR( #define APP_N_MICS_IN APP_N_MICS #endif #define STAGE2_DEC_FACTOR_48KHZ 2 -#define CLRSR(c) asm volatile("clrsr %0" : : "n"(c)); -#define CLEAR_KEDI() CLRSR(XS1_SR_KEDI_MASK) + +static inline +void CLEAR_KEDI() +{ + #if defined(__XS3A__) + asm volatile("clrsr %0" : : "n"(XS1_SR_KEDI_MASK)); + #else + #warning "CLEAR_KEDI not defined for this architecture." + #endif +} using TMicArray = mic_array::MicArray 0; k--) { + buff[k] = buff[k-1]; + } + #endif } diff --git a/lib_mic_array/api/mic_array/cpp/PdmRx.hpp b/lib_mic_array/api/mic_array/cpp/PdmRx.hpp index 5c081d39..01bf6ef0 100644 --- a/lib_mic_array/api/mic_array/cpp/PdmRx.hpp +++ b/lib_mic_array/api/mic_array/cpp/PdmRx.hpp @@ -165,8 +165,10 @@ extern "C" { : "r"(p_pdm_mics), "r"(XS1_SETC_IE_MODE_INTERRUPT) : "r11" ); #endif // __XS3A__ + #else + #warning "PDM rx ISR not supported yet on this architecture." + #endif } - } diff --git a/lib_mic_array/api/mic_array/impl/setup_impl.h b/lib_mic_array/api/mic_array/impl/setup_impl.h index cf967363..1eb68780 100644 --- a/lib_mic_array/api/mic_array/impl/setup_impl.h +++ b/lib_mic_array/api/mic_array/impl/setup_impl.h @@ -14,4 +14,4 @@ unsigned mic_array_mclk_divider( return master_clock_freq / pdm_clock_freq; } -#endif \ No newline at end of file +#endif diff --git a/lib_mic_array/api/mic_array/setup.h b/lib_mic_array/api/mic_array/setup.h index 479d2f2f..64746883 100644 --- a/lib_mic_array/api/mic_array/setup.h +++ b/lib_mic_array/api/mic_array/setup.h @@ -122,4 +122,4 @@ unsigned mic_array_mclk_divider( #include "mic_array/impl/setup_impl.h" -C_API_END \ No newline at end of file +C_API_END diff --git a/lib_mic_array/src/deinterleave16.S b/lib_mic_array/src/deinterleave16.S index cfb2a683..2860f442 100644 --- a/lib_mic_array/src/deinterleave16.S +++ b/lib_mic_array/src/deinterleave16.S @@ -102,7 +102,7 @@ deinterleave16: std f, b, x[6] std h, d, x[7] - + // part2 ldd a, b, x[0] ldd c, d, x[4] unzip b, d, 0 @@ -147,19 +147,117 @@ deinterleave16: #if defined(__VX4A__) || defined(__VX4B__) #define FUNCTION_NAME deinterleave16 -#define NSTACK_WORDS 4 +#define NSTACK_WORDS 8 #define NSTACK_BYTES (NSTACK_WORDS*4) +#define x a0 +#define a a1 +#define b a2 + +#define c s2 +#define d s3 +#define e s4 +#define f s5 +#define g s6 +#define h s7 + // Note: ldd and std are reversed in vx4 -.p2align 1 +.p2align 4 .globl FUNCTION_NAME .type FUNCTION_NAME,@function FUNCTION_NAME: + // save regs xm.entsp NSTACK_BYTES - xm.stdsp s2, s3, 0*8 - //TODO - xm.lddsp s2, s3, 0*8 + xm.stdsp s3,s2,0 + xm.stdsp s5,s4,8 + xm.stdsp s7,s6,16 + + // Lower half + xm.ldd b, a, (8*3)(x) + xm.ldd d, c, (8*2)(x) + xm.ldd f, e, (8*1)(x) + xm.ldd h, g, (8*0)(x) + + xm.unzip b, a, 2 + xm.unzip d, c, 2 + xm.unzip f, e, 2 + xm.unzip h, g, 2 + + xm.unzip c, a, 1 + xm.unzip d, b, 1 + xm.unzip g, e, 1 + xm.unzip h, f, 1 + + xm.unzip e, a, 0 + xm.unzip f, b, 0 + xm.unzip g, c, 0 + xm.unzip h, d, 0 + + xm.std a, e, (8*0)(x) + xm.std c, g, (8*1)(x) + xm.std b, f, (8*2)(x) + xm.std d, h, (8*3)(x) + + // Upper half + xm.ldd b, a, (8*7)(x) + xm.ldd d, c, (8*6)(x) + xm.ldd f, e, (8*5)(x) + xm.ldd h, g, (8*4)(x) + + xm.unzip b, a, 2 + xm.unzip d, c, 2 + xm.unzip f, e, 2 + xm.unzip h, g, 2 + + xm.unzip c, a, 1 + xm.unzip d, b, 1 + xm.unzip g, e, 1 + xm.unzip h, f, 1 + + xm.unzip e, a, 0 + xm.unzip f, b, 0 + xm.unzip g, c, 0 + xm.unzip h, d, 0 + + xm.std a, e, (8*4)(x) + xm.std c, g, (8*5)(x) + xm.std b, f, (8*6)(x) + xm.std d, h, (8*7)(x) + + // part2 + xm.ldd b, a, (8*0)(x) + xm.ldd d, c, (8*4)(x) + xm.unzip b, d, 0 + xm.unzip a, c, 0 + xm.std b, a, (8*4)(x) + xm.std d, c, (8*0)(x) + + xm.ldd b, a, (8*1)(x) + xm.ldd d, c, (8*5)(x) + xm.unzip b, d, 0 + xm.unzip a, c, 0 + xm.std b, a, (8*5)(x) + xm.std d, c, (8*1)(x) + + xm.ldd b, a, (8*2)(x) + xm.ldd d, c, (8*6)(x) + xm.unzip b, d, 0 + xm.unzip a, c, 0 + xm.std b, a, (8*6)(x) + xm.std d, c, (8*2)(x) + + xm.ldd b, a, (8*3)(x) + xm.ldd d, c, (8*7)(x) + xm.unzip b, d, 0 + xm.unzip a, c, 0 + xm.std b, a, (8*7)(x) + xm.std d, c, (8*3)(x) + + // restore regs + xm.lddsp s3,s2,0 + xm.lddsp s5,s4,8 + xm.lddsp s7,s6,16 xm.retsp NSTACK_BYTES .size FUNCTION_NAME, . -FUNCTION_NAME diff --git a/lib_mic_array/src/mic_array_setup.c b/lib_mic_array/src/mic_array_setup.c index 3a9ceac6..336875b3 100644 --- a/lib_mic_array/src/mic_array_setup.c +++ b/lib_mic_array/src/mic_array_setup.c @@ -48,11 +48,16 @@ void mic_array_resources_configure( static inline void mic_array_inpw8(const port_t p_pdm_mics) { - #if defined(__XS3A__) uint32_t tmp; + #if defined(__XS3A__) asm volatile("inpw %0, res[%1], 8" : "=r"(tmp) : "r" (p_pdm_mics)); - #endif // __XS3A__ + #elif defined(__VX4B__) + asm volatile("xm.inpm %0, %1, 8": "=r"(tmp): "r"(p_pdm_mics)); + #else + #warning "mic_array_inpw8 not supported yet on this architecture." + (void) tmp; + #endif } void mic_array_pdm_clock_start( diff --git a/lib_mic_array/src/mic_array_task.cpp b/lib_mic_array/src/mic_array_task.cpp index 962ac90a..87a4d57d 100644 --- a/lib_mic_array/src/mic_array_task.cpp +++ b/lib_mic_array/src/mic_array_task.cpp @@ -104,13 +104,15 @@ void default_ma_task_start_decimator_3stg(TMicArray_3stg_decimator& mics, chanen mics.ThreadEntry(); } -#if defined(__XS3A__) -#define CLRSR(c) asm volatile("clrsr %0" : : "n"(c)); -#else -#define CLRSR(c) ((void)0) -#warning "CLRSR not defined for this architecture." -#endif -#define CLEAR_KEDI() CLRSR(XS1_SR_KEDI_MASK) +static inline +void CLEAR_KEDI() +{ + #if defined(__XS3A__) + asm volatile("clrsr %0" : : "n"(XS1_SR_KEDI_MASK)); + #else + #warning "CLEAR_KEDI not defined for this architecture." + #endif +} template void start_mics_with_pdm_isr(TMics* mics_ptr, chanend_t c_frames_out) diff --git a/lib_mic_array/src/pdm_rx_isr.S b/lib_mic_array/src/pdm_rx_isr.S index 96c61243..6c649f1e 100644 --- a/lib_mic_array/src/pdm_rx_isr.S +++ b/lib_mic_array/src/pdm_rx_isr.S @@ -109,3 +109,24 @@ pdm_rx_isr: .global pdm_rx_isr #endif //defined(__XS3A__) + +#if defined(__VX4A__) || defined(__VX4B__) + +#define FUNCTION_NAME pdm_rx_isr +#define NSTACK_BYTES 16 // minimum + +.p2align 1 +.globl FUNCTION_NAME +.type FUNCTION_NAME,@function +FUNCTION_NAME: + xm.entsp NSTACK_BYTES + unimp //TODO unimplemented + xm.retsp NSTACK_BYTES + +.size FUNCTION_NAME, . -FUNCTION_NAME +.resource_const FUNCTION_NAME, "stack_frame_bytes", NSTACK_BYTES +.resource_list_empty FUNCTION_NAME, "callees" +.resource_list_empty FUNCTION_NAME, "tail_callees" +.resource_list_empty FUNCTION_NAME, "parallel_callees" + +#endif // __VX4A__ || __VX4B__ diff --git a/tests/signal/profile/app_memory/src/app.cpp b/tests/signal/profile/app_memory/src/app.cpp index 77c7e465..9f487a55 100644 --- a/tests/signal/profile/app_memory/src/app.cpp +++ b/tests/signal/profile/app_memory/src/app.cpp @@ -50,8 +50,16 @@ pdm_rx_resources_t pdm_res = PDM_RX_RESOURCES_DDR( #ifndef APP_N_MICS_IN #define APP_N_MICS_IN APP_N_MICS #endif -#define CLRSR(c) asm volatile("clrsr %0" : : "n"(c)); -#define CLEAR_KEDI() CLRSR(XS1_SR_KEDI_MASK) + +static inline +void CLEAR_KEDI() +{ + #if defined(__XS3A__) + asm volatile("clrsr %0" : : "n"(XS1_SR_KEDI_MASK)); + #else + #warning "CLEAR_KEDI not defined for this architecture." + #endif +} using TMicArray = mic_array::MicArray, @@ -135,4 +143,3 @@ void app_mic_array_task(chanend_t c_frames_out) #endif } #endif - diff --git a/tests/unit/src/main.c b/tests/unit/src/main.c index ade802c9..2556dcca 100644 --- a/tests/unit/src/main.c +++ b/tests/unit/src/main.c @@ -14,20 +14,20 @@ int main(int argc, const char* argv[]) printf("\n\n"); - RUN_TEST_GROUP(dcoe_state_init); - RUN_TEST_GROUP(dcoe_filter); - RUN_TEST_GROUP(DcoeSampleFilter); - - RUN_TEST_GROUP(ma_frame_tx_rx); - RUN_TEST_GROUP(ma_frame_tx_rx_transpose); - RUN_TEST_GROUP(ChannelFrameTransmitter); - RUN_TEST_GROUP(FrameOutputHandler); - - RUN_TEST_GROUP(deinterleave2); - RUN_TEST_GROUP(deinterleave4); - RUN_TEST_GROUP(deinterleave8); - // RUN_TEST_GROUP(deinterleave16); - // RUN_TEST_GROUP(deinterleave_pdm_samples); - RUN_TEST_GROUP(fir_1x16_bit); + // RUN_TEST_GROUP(dcoe_state_init); + // RUN_TEST_GROUP(dcoe_filter); + // RUN_TEST_GROUP(DcoeSampleFilter); + + // RUN_TEST_GROUP(ma_frame_tx_rx); + // RUN_TEST_GROUP(ma_frame_tx_rx_transpose); + // RUN_TEST_GROUP(ChannelFrameTransmitter); + // RUN_TEST_GROUP(FrameOutputHandler); + + // RUN_TEST_GROUP(deinterleave2); + // RUN_TEST_GROUP(deinterleave4); + // RUN_TEST_GROUP(deinterleave8); + RUN_TEST_GROUP(deinterleave16); + RUN_TEST_GROUP(deinterleave_pdm_samples); + // RUN_TEST_GROUP(fir_1x16_bit); return UNITY_END(); } From 566d3a43f6cff1ca2942469ef528b741c1551e15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Mon, 16 Feb 2026 14:24:11 +0000 Subject: [PATCH 22/36] Remove unnecessary preprocessor directive for XS3A in PdmRx.hpp --- lib_mic_array/api/mic_array/cpp/PdmRx.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_mic_array/api/mic_array/cpp/PdmRx.hpp b/lib_mic_array/api/mic_array/cpp/PdmRx.hpp index 01bf6ef0..6a13916c 100644 --- a/lib_mic_array/api/mic_array/cpp/PdmRx.hpp +++ b/lib_mic_array/api/mic_array/cpp/PdmRx.hpp @@ -164,7 +164,6 @@ extern "C" { : : "r"(p_pdm_mics), "r"(XS1_SETC_IE_MODE_INTERRUPT) : "r11" ); - #endif // __XS3A__ #else #warning "PDM rx ISR not supported yet on this architecture." #endif From b72bb69c079568a09f4ea95965519aaeb6daeb9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Mon, 16 Feb 2026 14:47:54 +0000 Subject: [PATCH 23/36] Refactor CLEAR_KEDI function to a macro for XS3A architecture compatibility --- examples/app_par_decimator/src/app.cpp | 14 +++++--------- lib_mic_array/src/mic_array_task.cpp | 14 +++++--------- tests/signal/profile/app_memory/src/app.cpp | 14 +++++--------- 3 files changed, 15 insertions(+), 27 deletions(-) diff --git a/examples/app_par_decimator/src/app.cpp b/examples/app_par_decimator/src/app.cpp index 244ca40f..77ada646 100644 --- a/examples/app_par_decimator/src/app.cpp +++ b/examples/app_par_decimator/src/app.cpp @@ -44,15 +44,11 @@ pdm_rx_resources_t pdm_res = PDM_RX_RESOURCES_DDR( #endif #define STAGE2_DEC_FACTOR_48KHZ 2 -static inline -void CLEAR_KEDI() -{ - #if defined(__XS3A__) - asm volatile("clrsr %0" : : "n"(XS1_SR_KEDI_MASK)); - #else - #warning "CLEAR_KEDI not defined for this architecture." - #endif -} +#if defined(__XS3A__) +#define CLEAR_KEDI() asm volatile("clrsr %0" : : "n"(XS1_SR_KEDI_MASK)); +#else +#warning "CLEAR_KEDI not defined for this architecture." +#endif using TMicArray = mic_array::MicArray void start_mics_with_pdm_isr(TMics* mics_ptr, chanend_t c_frames_out) diff --git a/tests/signal/profile/app_memory/src/app.cpp b/tests/signal/profile/app_memory/src/app.cpp index 9f487a55..385ec725 100644 --- a/tests/signal/profile/app_memory/src/app.cpp +++ b/tests/signal/profile/app_memory/src/app.cpp @@ -51,15 +51,11 @@ pdm_rx_resources_t pdm_res = PDM_RX_RESOURCES_DDR( #define APP_N_MICS_IN APP_N_MICS #endif -static inline -void CLEAR_KEDI() -{ - #if defined(__XS3A__) - asm volatile("clrsr %0" : : "n"(XS1_SR_KEDI_MASK)); - #else - #warning "CLEAR_KEDI not defined for this architecture." - #endif -} +#if defined(__XS3A__) +#define CLEAR_KEDI() asm volatile("clrsr %0" : : "n"(XS1_SR_KEDI_MASK)); +#else +#warning "CLEAR_KEDI not defined for this architecture." +#endif using TMicArray = mic_array::MicArray, From 54d2362cb9a0286d636b1c1c66036fb63d811495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Mon, 16 Feb 2026 15:00:49 +0000 Subject: [PATCH 24/36] Fix inline assembly instruction for VX4 architecture in mic_array_inpw8 function Add compiler flag to suppress function pointer group warnings in unit tests --- lib_mic_array/src/mic_array_setup.c | 2 +- tests/unit/CMakeLists.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib_mic_array/src/mic_array_setup.c b/lib_mic_array/src/mic_array_setup.c index 336875b3..2bb4a136 100644 --- a/lib_mic_array/src/mic_array_setup.c +++ b/lib_mic_array/src/mic_array_setup.c @@ -53,7 +53,7 @@ void mic_array_inpw8(const port_t p_pdm_mics) asm volatile("inpw %0, res[%1], 8" : "=r"(tmp) : "r" (p_pdm_mics)); #elif defined(__VX4B__) - asm volatile("xm.inpm %0, %1, 8": "=r"(tmp): "r"(p_pdm_mics)); + asm volatile("xm.inpw %0, %1, 8": "=r"(tmp): "r"(p_pdm_mics)); #else #warning "mic_array_inpw8 not supported yet on this architecture." (void) tmp; diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index 8c6d209b..9352cc9a 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -32,6 +32,7 @@ else() # vx4 set(APP_COMPILER_FLAGS -Os -g + -Wno-fptrgroup -DUNITY_INCLUDE_CONFIG_H=1) endif() From 855a426d9514c6ffb5bb69c096b0020673b3a411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Mon, 16 Feb 2026 15:21:27 +0000 Subject: [PATCH 25/36] Add copyright notice and license terms to test_fir_1x16_bit.c --- tests/unit/src/test_fir_1x16_bit.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/unit/src/test_fir_1x16_bit.c b/tests/unit/src/test_fir_1x16_bit.c index dc2273c1..220b263d 100644 --- a/tests/unit/src/test_fir_1x16_bit.c +++ b/tests/unit/src/test_fir_1x16_bit.c @@ -1,3 +1,5 @@ +// Copyright 2026 XMOS LIMITED. +// This Software is subject to the terms of the XMOS Public Licence: Version 1. #include #include #include From 583bb9e279b7706c62b9f0ea176f29eaf960cb03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Mon, 16 Feb 2026 15:21:54 +0000 Subject: [PATCH 26/36] Uncomment test groups in main.c to enable all unit tests --- tests/unit/src/main.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/tests/unit/src/main.c b/tests/unit/src/main.c index 2556dcca..849766a9 100644 --- a/tests/unit/src/main.c +++ b/tests/unit/src/main.c @@ -14,20 +14,21 @@ int main(int argc, const char* argv[]) printf("\n\n"); - // RUN_TEST_GROUP(dcoe_state_init); - // RUN_TEST_GROUP(dcoe_filter); - // RUN_TEST_GROUP(DcoeSampleFilter); - - // RUN_TEST_GROUP(ma_frame_tx_rx); - // RUN_TEST_GROUP(ma_frame_tx_rx_transpose); - // RUN_TEST_GROUP(ChannelFrameTransmitter); - // RUN_TEST_GROUP(FrameOutputHandler); - - // RUN_TEST_GROUP(deinterleave2); - // RUN_TEST_GROUP(deinterleave4); - // RUN_TEST_GROUP(deinterleave8); + RUN_TEST_GROUP(dcoe_state_init); + RUN_TEST_GROUP(dcoe_filter); + RUN_TEST_GROUP(DcoeSampleFilter); + + RUN_TEST_GROUP(ma_frame_tx_rx); + RUN_TEST_GROUP(ma_frame_tx_rx_transpose); + RUN_TEST_GROUP(ChannelFrameTransmitter); + RUN_TEST_GROUP(FrameOutputHandler); + + RUN_TEST_GROUP(deinterleave2); + RUN_TEST_GROUP(deinterleave4); + RUN_TEST_GROUP(deinterleave8); RUN_TEST_GROUP(deinterleave16); RUN_TEST_GROUP(deinterleave_pdm_samples); - // RUN_TEST_GROUP(fir_1x16_bit); + RUN_TEST_GROUP(fir_1x16_bit); + return UNITY_END(); } From ee9634c9459562fe575e2e5cf0e6e10cd241412d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Mon, 16 Feb 2026 15:38:28 +0000 Subject: [PATCH 27/36] Update copyright notices and add new configuration file for app_mic_array_basic --- examples/CMakeLists.txt | 1 + examples/app_mic_array_basic/convert.py | 2 ++ examples/app_mic_array_basic/src/app.c | 2 ++ .../src/{XK-EVK-XU316-AIV.xscope => config.xscope} | 0 examples/app_mic_array_basic/src/device_pll_ctrl.c | 2 +- examples/app_mic_array_basic/src/device_pll_ctrl.h | 2 +- examples/app_mic_array_basic/src/main.xc | 2 +- 7 files changed, 8 insertions(+), 3 deletions(-) rename examples/app_mic_array_basic/src/{XK-EVK-XU316-AIV.xscope => config.xscope} (100%) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 2e687aa0..99700f7d 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.21) include($ENV{XMOS_CMAKE_PATH}/xcommon.cmake) project(mic_array_examples) add_subdirectory(app_mic_array) +add_subdirectory(app_mic_array_basic) add_subdirectory(app_shutdown) add_subdirectory(app_par_decimator) add_subdirectory(app_custom_filter) diff --git a/examples/app_mic_array_basic/convert.py b/examples/app_mic_array_basic/convert.py index fe7fb9c8..5dbf499d 100644 --- a/examples/app_mic_array_basic/convert.py +++ b/examples/app_mic_array_basic/convert.py @@ -1,3 +1,5 @@ +# Copyright 2026 XMOS LIMITED. +# This Software is subject to the terms of the XMOS Public Licence: Version 1. import numpy as np import wave diff --git a/examples/app_mic_array_basic/src/app.c b/examples/app_mic_array_basic/src/app.c index 023beb32..15e52ae9 100644 --- a/examples/app_mic_array_basic/src/app.c +++ b/examples/app_mic_array_basic/src/app.c @@ -1,3 +1,5 @@ +// Copyright 2026 XMOS LIMITED. +// This Software is subject to the terms of the XMOS Public Licence: Version 1. #include #include #include diff --git a/examples/app_mic_array_basic/src/XK-EVK-XU316-AIV.xscope b/examples/app_mic_array_basic/src/config.xscope similarity index 100% rename from examples/app_mic_array_basic/src/XK-EVK-XU316-AIV.xscope rename to examples/app_mic_array_basic/src/config.xscope diff --git a/examples/app_mic_array_basic/src/device_pll_ctrl.c b/examples/app_mic_array_basic/src/device_pll_ctrl.c index ea32cad7..83b48726 100644 --- a/examples/app_mic_array_basic/src/device_pll_ctrl.c +++ b/examples/app_mic_array_basic/src/device_pll_ctrl.c @@ -1,4 +1,4 @@ -// Copyright 2022 XMOS LIMITED. +// Copyright 2022-2026 XMOS LIMITED. // This Software is subject to the terms of the XMOS Public Licence: Version 1. #include diff --git a/examples/app_mic_array_basic/src/device_pll_ctrl.h b/examples/app_mic_array_basic/src/device_pll_ctrl.h index 69cec226..7fe002e6 100644 --- a/examples/app_mic_array_basic/src/device_pll_ctrl.h +++ b/examples/app_mic_array_basic/src/device_pll_ctrl.h @@ -1,4 +1,4 @@ -// Copyright 2022 XMOS LIMITED. +// Copyright 2022-2026 XMOS LIMITED. // This Software is subject to the terms of the XMOS Public Licence: Version 1. #pragma once diff --git a/examples/app_mic_array_basic/src/main.xc b/examples/app_mic_array_basic/src/main.xc index 344cc9b3..e44b21b7 100644 --- a/examples/app_mic_array_basic/src/main.xc +++ b/examples/app_mic_array_basic/src/main.xc @@ -1,4 +1,4 @@ -// Copyright 2023-2024 XMOS LIMITED. +// Copyright 2023-2026 XMOS LIMITED. // This Software is subject to the terms of the XMOS Public Licence: Version 1. #include From 5ef4dd813965551d00dcbd74b7a64e3b1739f89a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Tue, 17 Feb 2026 09:55:57 +0000 Subject: [PATCH 28/36] Refactor app_mic_array_basic example: replace README.rst with README.md, update output handling, and implement parallel job execution in main.xc --- doc/exclude_patterns.inc | 1 + examples/app_mic_array_basic/README.md | 30 ++++++++++++++++++ examples/app_mic_array_basic/README.rst | 6 ---- .../app_mic_array_basic/mic_array_output.bin | Bin 128000 -> 128000 bytes examples/app_mic_array_basic/src/app.c | 22 ++++++++++++- examples/app_mic_array_basic/src/main.xc | 11 +++---- 6 files changed, 56 insertions(+), 14 deletions(-) create mode 100644 examples/app_mic_array_basic/README.md delete mode 100644 examples/app_mic_array_basic/README.rst diff --git a/doc/exclude_patterns.inc b/doc/exclude_patterns.inc index 3a948a03..9ddf9cb8 100644 --- a/doc/exclude_patterns.inc +++ b/doc/exclude_patterns.inc @@ -7,3 +7,4 @@ LICENSE.rst build.xcore tests/**/.pytest_cache/*.md tests/.pytest_cache/*.md +**/app_mic_array_basic/*.md diff --git a/examples/app_mic_array_basic/README.md b/examples/app_mic_array_basic/README.md new file mode 100644 index 00000000..f548144a --- /dev/null +++ b/examples/app_mic_array_basic/README.md @@ -0,0 +1,30 @@ +# Basic Mic Array Example + +## Hardware Required + +- **XK-EVK-XU316-AIV.XN** + +## Compile + +```sh +cmake -G "Unix Makefiles" -B build +xmake -C build +``` + +## Run + +```sh +xrun --xscope bin/app_mic_array.xe +``` + +## Convert Binary Data to WAV + +```sh +python convert.py +``` + +**Output:** + +``` +Converted mic_array_output.bin to output.wav with 1 channels, 16000 Hz sample rate, and 32 bits per sample. +``` diff --git a/examples/app_mic_array_basic/README.rst b/examples/app_mic_array_basic/README.rst deleted file mode 100644 index 578c1584..00000000 --- a/examples/app_mic_array_basic/README.rst +++ /dev/null @@ -1,6 +0,0 @@ -xrun --xscope bin/app_mic_array.xe -pyhton convert.py - -output: - -Converted mic_array_output.bin to output.wav with 1 channels, 16000 Hz sample rate, and 32 bits per sample. diff --git a/examples/app_mic_array_basic/mic_array_output.bin b/examples/app_mic_array_basic/mic_array_output.bin index f3a3f7e75e545804de7e0fed6509f4e09a5822a3..4f69a22cbd732d381785dbac63d5c5ebb1f40a1a 100644 GIT binary patch literal 128000 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

%^QT9a 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 literal 128000 zcmeEu1DB*(v}~j^3vEo>wr$%sr)}G|ZQJgiwryL}Dy9)H=H8$2?yOa7x~ej>KAf|6 zXn(-}{r7)Y;Qy|`|6PIqKd->IhId#$`8_U~e2?UPJ{s|mC!aiG;-pWRyVx^sOZANJ z-aTW@ug|!A%5zq^_?&UZXB<@Y8BPD=e`ddSN9W7Z~a8LKXLoy zPxN&D#OH55ad+;|T-En8bEf#rh(e!ve$i+8_k8Br&}XLG@rAROex+^EH?}c-=flqb za!KuV#+LT*6-@!%}icaFnd|zu!jk}ZswWi zX0*w}A>ZAsv&6+RaW3A;>|wk09^R_u;qlyVHoEBMOS;+cft#k8`n=U{9)9O$(@`G& zJ=Du)iM+h|*~3H|JS;lb!@^U&+-mf(=R6;qp7k;Dbsu-+^Ye2dKVzEvxnrQ8XJ7kS zvZz zdU$(_huJ54xUQ3zY3KX6_K%O(=la?5l%Js`e!AZH`Rr4Gg|-B_cvFZKv+D0X2r}P| zAYViTSfjI_r8oGv@tco%I{KORh>uUw=v;q#*=wke2~K#~u8o)fj`VWbd@p?iyu8@n z%g=Yc{L{uyi_g!@eFEI0(}kkfRIw{<_0)e14DGFfC8*)1VZN4x*)d!Ww;;O{qN+fl&E7y~NB z8qoJ|BkJcep-y@o;{p@fTsNV^Iuq^`FrjTzBiPu8^E4pcU;6t!47j-6fNMpKm{8G( zR|W%0AwSJnK`8fH3mroP>SbnLGB`SG2P3yT-eJ`i# z{*AuwWmGFKUq*TOWsiqT$9Z^dwwr?@yqvq*$CfpGGaf+N@i@aM6I8n_6Rxx2iFEhd>T97fX4M(DE=n-$j#7{PCy+g}g#(#3 zJ5c|Z9VI6?@O7*MBabDa-5gNL;q zE1FQmV??ViCe)i|MjyW!Uagm(lTDak-h`r=j3}1Oh*A5Eh&p4$*)=9Sy}<7cp)pSSY_ zSWfG$-eEsyefM%ueIG9+^)q_|KgXz!uJ7yPGrN!Vzj$e>p<2Dp%kuZUtkTTG=f&Mj zQryMn51c&yD4tm(;+Z~i9J4%+q2+Zn&lis2@~JU=*(sK3tH!a|@_2Sx5YHY@<9O?0 z9D9t3XZ|zsJhLi}l@`a*wJDZ8K1Q={<5)I!#&TZiSpJ@@ewI3#ulh%`!}@5J{1U}G zXQTOJZVWeiqF6Y`A5QN7hgW+2;r@MpIQwoiZx@N?>Euy7qwjy}ch&AkGiNB8sSZSO zV$EpQt{BV6&#}C;AePVL;_ zVvQK)N*u%Ehoc##b4fNgic`-2;k2%QSf+gx?JJ|XXm%7|WQyY6K2c1YGMYUmM)OJ2 zXa^S3hpEz{e$Td>mZV$78yu1vjd;J`S?Ng#aH}$rIgxL7hSzygbCoEknHAjJ&;% zj2jG;OJu;q7;H%4Y zhS+x;nMM7}rCv>6fGHmO>C@i7egJz0 zPI^W;*)ENXsqVPgu&awjmN|Lnl#4}stKW=vGw%{7*G!3L*oio1EgjE>hvN9|n)dg3 zCy(THvYs&V{qZi|o#5gn)q>HB;@Bp_$<>RUthz0pKeog&QJ*-L9~{rIZQ{ARQXIP% zkK=?M`aWGOAIyniVbzblUE=9g-AiF`vc#KsPWu|qK{eyq;$u8(+=^!j)sft)^HtOb z3#bP7Uf|~9MJ}Gb>*Aa}!ru#BT#{Y*I<1?dR=HWdjf;i1Ir+1$oAK-1yi(4^Kd<6h z@rG(}P8Vl{yXbH^SxNZ4;S?8bUz{9R)5(tK<5-}zlNI!{Z^fKUlOvv!d&IG^JDwZn zI{9s`i`8$tIq->_GX{EiLw#qhaA$lkFVAN5v;6S@Xa4f@QeO3u+kV!6r8Q;~PWu#O zW%b%$r-HP-4AQTDZg;V5z{zX6_D@GRdHEj~huYkH-&nlmvzz%# zdO0tbo5zLAlB)ksTCP4TPO&(@@caTlm%Z`w@emKw7`*ffkKD;G{I|r%;5t9&iIZ%v zCJgg1!1~!jyz`LU{4>Ps(Lp|6Nlw!~DZBwFx>@*bG}$zd>O-Fp>kCUR)_!eN85nj6 z$U6`?SPEEX1;({8;Oj17lC1{R73S#w3Ak`lSYif{`uU*|f$T<1tZP6%;o*mqfZdCM%l*mRUxI8TJaqnSfaPljcwudTvl4{Z!5rd` zltD5i+_^xQX-bHjn+7?rN074%hj>)?WBBhNoBww{DfOAzfjq^9g;JQ1^|T3VOPJv4 zU_yZ`Cj1#Myq!l_x++k8j6Sje`6D5@Qgxz_u8XC1hAx`WTqD$|qSvkbIc|ttYD8vftQE#SF*ao-}1oF2w;`AdEB6pfG zHFV%5?p1FSC$$RKPQ8f8F@mB8anI zi=S5Xv&V1YOznl#2AxBt5MP%DO3yZ;&JGiXWisQ)Rx_S1v|wRc3pUv-C{WXk>l1bT zew#3HzX_x3ns8%_5eI~y%L#Wr3+YO}F(!=7r!_Rm zh)d%PaHcolfw1bHt|C+FyORvSoP4BBe7UpMZpG&zZn+a=k0t6WcHIZ{!jaE|+<01R zN9)D*Ho!XneXlz2(f6)10lu9OU^Z)j*39T?{^dSj4)zNdExn=MyxDq#(H6%uwoXhjWVO7IPg%t?#WLpq8r*U zGhoBCa0d>>*>QNj9eGW5lzwSNuD4d?J7vL7aqG1gEVx$Lf~Uewi<4MU=ePw;Q(Dob zgcS|`wxak%D-PeZ;E3J>@$fNP!_HJD{BRlJ)V;Et5;uJT@2Y3Ea`N-Fc&^Y_8TI0JC0*M8PUh{SUi`0%PgQSUeo&9C?;`Vhw5O#b zW%n?b$;({g7q$vMPAi~#JI>2S;?^0{`j~o*m%ntZQN@H?E_pezjgQSjett_GWTB5i zp7#mUW)AUp6@6q?vS?oY|A(-U(SS_4_uaY!a~}a$8meAOV;ESMjCv*gU<;Y2GkLHl zuxXnCCH}kTHWTt{k3CiGh^#5xRn&y=XToExwQq))Pgin=td7-XnfG zJKl(LRaFDpY7Oi6iB%7VPBtQ3-1eAygCHEsYW=5rM~>Fs?eR9q?5f2bW(SzBw4WJN zEQU+>>VMtCjQ2b|GtSK{CtS?(%*BhsAoDW2SV7q1(is;IeQ|MYD>qwL^RS}$#gmQV z=}&w#UiGq&OI&e}bdVW7Zu9#%XortOfB5*9{?=S^@iD6L8$CfjGmtquk|R3+{Zbe) zK=o->Z`HTQMvT8|LhOwaYI(3nr0V8&)pZqJ%(!ojg zZVjBQpnEXih@5#1IPm~DZZ)ELw0g7;cqWnRj(UFy^_gyGL+n?H^lRUaDk6NHLOkP& zc=%Jk87L`Fvcd>*%=aq?actm|`N(<=;>a(qc$AaqPw?Bj!E-h*Hbz$#|!quh_4_^whdneWEoLc`^ z$qfTSeEcrR>+?cf`4?HdUWi}21lcxcQ1>{%G;jUvY4UO1CNF=C@UrcF4>wlOI(gvY zWqL@6SJm{f+IT_s0wm!PT{Y)Y3Ryd)bbKQO>ZV_N|X}w|1 zwNA$C_|+Ty%>#UyEkKv*ShZ%-CbZuds!x30E{)eL4lvWlybd2D)kE5j_cDoo-&Jey zinxLOwwDcS>*seobWicHOLyrYv0mmJ=H-NqUZy+jWvN_V)~}~yQ6JBjD!}-ceqN6C z^PlfNKKx7i$HE}fb|UMS142`zS*ahc)Ag8^3E004n7Pk@Dn0|Euc~i;Ga}1iGirzj zr&(!1ilSDOu5U#dpK8KZ)rYmLKgTH_k*&kZ4CcoY* z4K4DF885XyYvnWJl4?qWk7lIFVZ{-*6+1dvv0;1Lme7$`10v6vAtH&lo9?VXi$Ag5rt_ff~7m4Hc1Q?tu z0nU_8pR{`zr3L7m5@!$&S;#$Y~Zv$_4lZBF# zUnYyPX9_X*q!4$V4sq(+5XbH}V8jFiEUyii?+^~%ZN$+bM&!}Ynh6MQ{w1Dv%ZSY@ z{#V<$on0ElbLr)24Hzgr@oC8%X{GJIkY4+e+%g6j z*c7-kjeI(m{B)i)v>+3xzmJ><{7ekot7<^2tOl68!uXPzhV%ux71!4n{XM<*AJyJe zO@t?#hL|#+>SJv+$UfxFT|mRZ29&>LK$$%TG#2LGBz-26^xo#_g$W}}I5a~&I^F+z z2-6N3F?h2uLooxA{VTquGT2tS8BGRwlBq{+)%BGwGjvyo=Pe=LJsITcR6)+%6XfXD zL553%JzPG>l&u2X;#V!|Bptg%kOLxuEGg|{-pwHUNvAvUm+-YX)4yYaEH~kQf0wsW zkl$Vex#LZc$t#4o?FYI06wpjOv4z8cRTT_~scA$%;ny`!P3SpI{35>zm88Q3yO=QR zu>25lje6z9O*WbkYGuO0Bvw*Loy;Fh)PCB+gpH9b|rK8cC(MmB}aVYlC>W zT|V7)Ka;PP&zZ{4$aOx>y5-|Q^;lDkoAb(h*fh19kr|~~>~j;tU0hXKx-Ok`Rdlh+ z4i`%qJRDrb!<`M?9ACoCKy_iZ4f=fwCx>5i@@p2C@SKw^H^uW`e;kwjjAzwaF1~!` zWT>5!`D(}W?7LWg(*<4EHu4`esct}n3qV)Z zgBGeEqqN?Z3hQnb4@>;TgcWHlhzeOSD3=w#+SrgSksXy1+3;zF6_4`h=fd1K)OQ*j zvEX-IGmM?(ISNBBX<lauO$DDQI_`89$ zz@xED@HK`Rv&XV-#TX_!8O;RQqFJh?{P+CvTu|J}T_v5&nl7Gy<%wq-e>{_Xb@JSM zH&bWz@}6|0#C?41J<3O`bj(WB&xGYdt$bWI)6WmWC4qawPz8gmKSnx8jSwSuNKaMG z>Q_*8YPPg-)ySlS^lxeS38k&fRt+m9ouy?P?FrSq`qJD+f0zDN%7}mKn{c9;8B?_% z+e?#f+0B9+tt{9oEyA$Iis9Amn03X0vT4JR_GuUf{uO})tHaTyas;lP3CHSB4&*B3 zK!JL8q<^E=j*~BV)s9OG9f%lc$JJX_v^i--sW0NS;<>5g&FD!p_PsZuuj+$Q+JjG6 zcxp>wZ}qt3>Lm}~7*ICMgu&W7Q$`vvuD$_7YG_S-G@x|?Vf=i+ZS{hA@_Qec$upwx zVbbH*oF(i23Gu4->U#CK-^a-EN68L-RJ&&yuqGDpu9UUVU%J~Ha^F7SbRD3rYVtIF zzOM)%d64#_!1Trj9M&~*=awEX4Wy=OX6X?ITs^0KTU*|7P9r*K{|*s{*pWkcC1k{1 zVVX+n*YD?=Q8lp{2TGVxrhplp+L$q*kr@@;^2Ezo(B_W#{tIEYsTL%dU_qG`W|Zt{ z!u~%dWH_hK5)aur&4~A-#3$33QK+98ujIKu%p*M_(uCm!O;{z4F@LH4c02h30V9HM z^gF%x#~l-{=yTetCbzh0L^f#!S%g8Ctg_&<^o18c%t*RVd~}lbNVpku4j7R_ytdRG zBkB${!Z6o}HXWtgcWWI(Q!`rV{TV;W-#=o;l>Qc64eI>lEOhN$5-d>Cj$g0gm;JYYw)-F95dVTbFt9Vg^T4|6!MV3z~KO55>VnDcy`13R*Z z!SOW=_ZB&jYNj1~i`%s>?HKfr12r?t&u$Th4A&jVlFk9=SUZ~4v}5Ia8xlXYqGoqt zR2^5nT2@>?VMWPjHmoUZ!=BAnOOJ>r+zQ;&s>hWdp$RPRGJVOw#&v#L3T-T{jykdI!4m{@vP*YF@$8Ksj~ z^7E?dP4Az6X3G-b4)L4&xq@sgZuPOaIM$#L8)gXd-Q*zs*OfI$;%AXu0sav`r}$y+ zG69yAu2Z$F@*mX#q%`@F(rVVLR?IA@pFIjNORXSN%#&V|H^}|lrH9GiY1AReisEp4 zH;I!U_w)2+^~HY0(Lp#`sIS#Yzy4NvOWQB!>ANJ|@bEz$SNFZ?q@YoT2j+HVNQnRX7GIO;(8 zAHw=4?Z}nXfpba2Ft4fu$*&3fCkVq|ZNiZ9N;o<%3rCw?;TTvc66NcLp}3)&qpW5R0bFX9$m_DbIo4=E%qaJ_W;vtr5*mz{nNc0 zRIj$|`&f zaEaH)HP3v^CQW3BII=;${nlpEvBX&m3jd8%AG-0u$IVNXchYC&ohYwP+DYc8>IdSh ztJF(dNtavrpB}A#>MawJ1{dUC;_0_H$(u`~<5$+8dq!#V)1+}r7gpwI<@MYE6uA>rykGm6Q&tyoOPnZOvpWt{kx@JSz-;+0kIS?uB^q(ri`~d!RhhdtpLlkb2%TV|i|6b)=nj7e+lN4$@cq z?!aLKUPc*_{f)Rr4e6iKD^g@9pNR`iy%^%HqRMhflb&T07g`hGm?YAxUj`YF|KL@x zKbSel`_DpLdoakv!sD~^XuYN;e?2El43wvFF2orXqz^U-a^k=8 z$2SI?qS*PS%-DT98#nBr5ez{|fcd06MNe7tXN-um0g{GVN{)yl417Kw~w)yDBGd|w`Z=U5KE5zB=g z;+R<&B)&mBH+9qNJ}bA^!pV&1Yxl~F% zP1^t`2c_M-7M2?0ACpVNn)1-YF!7%St$mC- z=3@uD@(Gq8)2WWtX(*k$9ofBIfWueIKl@wveT$!;bZ-y#3DPT^)L~_a(b^Mp^t6?OFq3hH%TacU) zV9!`_4RPH$2bGahFZ#Qga%|FjM+x^F>h0(7sUhaiPxdthSRkqDb!jq2I{yc02tS5| zc+nqZM0V-mX~^WlPZx7Y57TkP9~1YMj#)ml{DvZAEphli!fDmSyQ^gd`j%5`k}goa zr2+Saxij7|AYln*79vBOraoZS^~||e7_gVHq0V>R0^t>5n0HSsNGPp*Olon-Jyv`; zZ9-RJmmayTxSGz443(sRkCHa_(u`uCO_(P==s*0?Q(W<=(}LCVwaV7CqR%A@GETO@ zGQ@(AdcQqnML&K2sG1drTF5h8Ebm7;o7-)`hvUj@T`*wAG@xdGa*6i;6lo+yW(L`$ zQi$W%`k5nvkHggK^7V7`yZnfj(H=IAb#cAZ&28sg>YpBV{%?f?d*TH{-SyebcDt@Okrlcf>Mueq4Oh{G*~LvJc4MkDfT4Ga{2xtQCG z$-?L#U&?#BCB0DC<&Q98<$S_WiL_RvnVm^*$Df^6ybykW-#83I-u$OI+Hh3gXO~9P zX_7Fvys(CwfS6j+xV3h>mJTt8u)wI?s)NeDG!>qBr+v~eEWm#r$!k}?Yn4;`c!}~C z%3Iv9$OB*Lw#_bEHki zSdeUx1O?zod+qpM+=hJ##6{Fs);zMKir0qv!o3~!o|RkFS5^pLtg~T8 zv=wKQgrSGgj_IGYo{BkeUpiuc^}04!EU2iyW0EG)q>9$yHF+gH44Blwgx$;Kla>HF zwFc7ZUfmce?H&dc=?JW;sr9X%VeSGfy-Z~l$!5}~qLf+cRut$t8^|ON{6Y(Homxhu z>2E|eX)QbEh;LmopwVmjkMe>a%AbtRV?@nCCK!t8v*s9)p^O=(!CIfHC2hpbI!b@e zwo{r?7T~IMpGjYUdb+lmZ<4ugg=ns-+MSLZkVqI$e%*=RA=as+EKjWf7mW$J;mSbEAHLF3$6j5z?0NEc`^gV(7U1KKAzpbc?L{1S)+K3UI`^^{ zLL6N;#N*;HsJxv+wWSft2d>xN2>%=dzTGgRv(t?EnN?ddSa4gl=F1%AnBSU_ zI++F8q??;vHYCqs!Ns~ZJWk|55%I$MX{@+^%!*su$B~uAkFJ=prjP~Wq+5^9Yrz-s zhbz)Nnmm?<`A1wq$1-k?aK_;fTQm@c*(?12w{lmFLoE59K3iN`rZiO7Bw_t}!iB>2 z=`!dZ=J&ISaK`Yu@Q_)UP}(qRUc*XPRn-7X#M#x_4~yVT#m3!}Ca=O`*4SsqX|9oOvb(qD^_4-?2o z|E~vE1fD4KRqG>pwYLGqN9f&M4~kM=Q9Bh}lve(ou&j6=#0v))jKNOkw2_H75R?p3t7mb8r>{gmH- zE3ZmgfA#yy3CGE6l|SZ@$8}l!pn=wayQ`PcQC=n=?B;W2Qb$R9D!I(bF(;iobugY& zS3CLYgp;k?IJx12GLqw!9qZ&}%7Bk$_gXQevVeZZ+tJv&1u!!Uj|E94$W~?E;{-Q+jej@m=-wYv+x)`cyglN6JU;RW@{|5nU|uRpnKzQGJ?sM^iaH zf-Jo&$VKuwqs~cx-KBM<_nt^6tkB$qRN^EK)wPDwaK5V-oGfj|Qt`y|(oYWT7f*ro z4(Y;er6FCoF0Xc`342YNF}SEKO$IYgh{L_!DDQZsK^b&|^eKvGhnT3DdYMstSla#o zoyR2Q2~STBGS^El=g2!eu|a&QjE@J!&*td(B2W9dQ(QKy@N%nt;^M+QIko=3X9g@8 zLR`9BwW@-6t#qltH(>H9>FB?e(Ya_q&qyPlNjvdM*D57XZ}40@-gUH~wD?Rwns>p| zMs!|nMv4JeG})l_I#W5VRt8+sbsZx=JJBKoI;vK75!YYT*2@G}yc{T;{9Ybq8tsL4 zgZ=zd-^1MD9@>t07<1CiuZ7(_AW!qT_VVD=;);p$mw&1 z2VW>_9vNhM)!=}@*D}= z?9|1}$SLwokGuJ~g`1OFy1A#QxQ=jig>nJ*8L#6OCMelg{J5ZS<{hAE4DWQy%@#al(S~Hlu}u zI()X_Wm7u}{%b>Z;q%#h%$W7wh?L5KZ8#_`=b0JrgejNT)Xd8dBPuu0{nfFHa`B`z zoviX5&WQsyZ%d|&Frw2SX*)hrC6bB0X`LLG-*sAhGrhQpSALm3qmJr)J?YJb>nLM( zf?PTe$R24z_JrcF3zct{*3ecy)Pj%lYNo4~$^Uw!diSurYOV0|vEl|C?_|Im>2-V6 z1M_4t;OJ5VQZxtLy1q*W3Uki~a!k?tq-{6uql`-o@TRVOL#@SS@<#l}|MTyGfPvx! z@~|Dsf&DFAv$6V_yo@E%|9;joW0}_R)BVa?#0qx_J9m@zp6-kdofm{*c1##9ZwyD^ zSOi8FjKIcP5tz_A5`8l#z?A!uDEu@My>>^!nLGkb2S(ssyKsy@9gdw@<(DQ%hy=C- zxTyF186J+ilcn9I5dJ!%`{uLb)e}4RceG;uG3BbtOLJQ-EwH=p(;hokoRc1u$&Rgc zw0BYq1KzjdxaN}#;!>B!+puE1^n>yiY#%P)YKN*sb}OGW5M_C7G$4n#xaW(8AjSr@t)>edfU$%>Q9tng|^>e6CidTFSEM;0_YWJ8AnHYCYwMfsi1m{H!C0acestCp5ivY7#6n+oTso@V+>S-j@z$9F=^BrcIx ze!zEm1nblJuYI9=~m2D92|y+64bWz~C9Y5)F` z=3X$5&gBm&n;zlfvIi;8`KkVPb0gAAdaYZ%td4|>_nsoMI^BhVxrC*a{C<*EuS zQ?BNzi-B^Q$4u{Llld;z9p>Ws6;2*(=wi_0=9_xTU+s`)^2^O$s?||1ot$~k&HKGI z$EaR#OMN}Puwhnl{ZitwBM+#j*aLhgP56&j8L+>^=}!r}O(%o$?6z0>t-)xo7?-9 zka6$j&6V_V%w6>;X{Pg)-QQ*R@ZbbDhiGQ3$uAH0w)OB*8V~23_Hd?VKk~kD@$cr! zsvU5$z;qWEGM-T#ojk1^e&6hIZ1ymYn;Yu?U7f5wSstc5&f^7Q>Btbx=ewfm-4iP< zD~1bl#d6Nx7#8Ur%jmbUY_&C(9i`Fv_r-Dd(Rj|E;N-J4~bIQlqpx10uW>{YQ zu+QR`J5A`bL~GfnEbBkYCbbnOsbGS2kMgg=-G?s+cuYFr^YwoAO{ulfL$k8U{Om5S zVUs3MVT-gO>6$G%cv&uuj|H@j{}Q&1i43siMQNdTq{pdtv`i}xvL^Xqwt9_p=-lG@ zlV2!rAx|X!hGqby2h5jFl`Bg6th~$I!!^^BSg-3JqW7wDr(sNgQM{_ofpto+>|Gmi|ioqYTu`9r*^+F4Xtl<$dwV(+EF z33u6b?3we5`)beB853fm*CFm0CJxj}xU{o+u=wZu=fKwS@{5`a_x&QjEmAMfq0F{2 zJZF~yOU^0RkjQ`pdsS=2Lp$%VpqjL?qO+v)?9qK3X2f>&w#~{T7qtI%Uri zY9_O=vK8V(FQZhORnNLvO!%t&N1GDT&#GvSS6QmV(%-WgZSuiv_|ngc%=@h9`__iH z<81gSA2&&2EB=v3^SPRQy1($#v5uppwd1<@vD?&Zbb z6aQWzkN#~j6MWKla%m0T-XdR8m@DZ>VJ+3|+w(0bv`97ioehiXSW#8_|F)aLAo|*= zK7Kvch}+6~KGFZ{ig$IarW&u$86m9FR$A-QiGWGH<(W8yMZI894b57LM|gG^a9)|- zQ%OS{u}FMF{I!oXHM4x+1gnAh(lN#y0>*y;-j!CbT5Uv8#HLEQDHH$p+F^SEX*xQ7a_m!>Pp!tD91}v9G+9IiXL=Gbg$VX{3+lo%g z>LoZSy(->}{&w}3bMm(K$%~vDhN$UbXz(x$gXL8n3m1m4hT~|5Nc__+5(}ydL(PxC zgCX)ZobIwf7S!-^-X=-WK6_rny zhtT7Kp9Q7g&-^UiNVvM>`jC!6S<(~gW1279_d-6wT5@J$X}*&UxKqxAQ{RN8dK%FC zn&$Y%Ni(f#MiKc_K50JpRf~@gvmz$SibB#63*@n5sl2Y%6K&X?*NlE|wNAb%->_dZ z?9yuM>6#|1rTl`<;UR(?ULwF&x?Te(C}S-htgU#|+MOQO=;~3X+AW;mVl~YpwUmB5 zcfV#86(D;!+rw?o)?AEMKpi=4#%P@6H>rReHDUs`RTD%1_)@ z_NADz&GHql4wTj{{b{9eb7XS)57ILlo|R@ST{NJ6@Tk8TpM_;Y8I3q}N|;W3An{LO zuz1eULeK;6a>sB|j=EjC7=`^5;{8xe-;#lvuYwjB$%OQRJAYp=QSUec(4D(`o! zEBRdcmfq5nqsw}kp@f&2l_fW5ZvLiv_?8qdwkWMA4yS3uBiqjHGDYif;3qq)6K z^NDNa8I=!lNE^+|3fFYlE?-3VsdkuVKod)!5D(s`Y{chl%I=G2raf!NmF5oIlefKC zKK3YmePlS2cSwLNw-cdm!Gv&}2uJibJMIOn_@2dqz^yPeIvb8x&BD+r&Wbdzt$4b~ zh6$go_)Ff#2(7;8RY3x zn$_v8nI>V=F`YFZFATQ0i;w3zXs$A=yoznonY0fd572Wmlu&@`*B##%6vV>Z!RbX<&EM ze@iTpcO_18JB1Pd7?c&-5@6faUd|RCO{TgvT{XMCI8^p*W=v3>FCkvDZlt)4FjCgU zMvQK5#)h$G+%hWHXg6YaY56Y;%$TkPP+nfa*Hg+*iN6HjX@01`{B(~6#=Ytb)2vvmoK-5V zqfwQOxY=AfMQioCkIFTPrwtjanqXGGNc^w*NH2%pmoK&5$L`YBv$av4v4b=$>3Acn zNP|}mH~kZ2o*&{Yjl^$?8u00c5wpdm%BhC5e{IL#jU3oB(t#$0lxsh(KHJ`m&}}PP zCziH4*n$Ba^_-8?z|^stFSxAy$~k%I-{g}BcQpR3^_W=ru8{hI=6RMLmoNMzB&o4y4V~KOO*5QPIC`` zRgoSj-2GB(Vv)3!OxsO}^C^FLOY`W5G_T%3SY?9r8)cHKL<6U$0~vMw(tVXit@V{H z&drd~$w_Zw*i6vhu^O<_|;vjH)xy4kQ)kSiVY`+zTf7%i3@uw=hU5 z3o0rPmP0Y0Nr^5@#E=vTAQ=Z5N8vY>g{KyID9!YkH#I zlSW!uFX<1$uUZel^BLDF1wZ1WG;U>aq`w>~!P zo#H^|xCm?+ng|6-Bt@%WM{t^@?~}L3si>l2|p1Yr)aV z+NbIZ(ek?P&(@xjZ(eeCkUPHv8{{9I=w`*hR#r62r~a!9UYD#k>@2EGO>-N5B@o6m z>vKyOF+;E0M`@Y9FbvZ%JxgZ7q~<~1nW$$WiR<=F<7H`|lbh$qaKp(MmP-}Oe#_!G zY*jonXzu(-b3HGj>>n2S=NCse`ol!77#53<=j_W)u0Q1BjgOlB9;3|0TxD)`{WA>L z9DzH)2b(nWTt1#d9}DUhqlyqwa4P{Y^YyY+W=g`wS?2s|978Ia+cuUVnFIN^cU z@kYGJF6{D7n5c*8f1dL*>AC@ZjvH|1yRx+*`C{rnEv2dV)w8gg7WH!RUOi()-dF}5 zm*V7CE;~x7g@agFkLg0>VLh)=vhGrjaa3go#m1hztbw; zF~^LP?UeH@WWhvT6r8{^Q0B#)-1>uafQXo7G+dkM|=6y7WJOK>ea$mSvpy8LD+Yq@J=7~ zQ)(X#(|S*9*S<9ykpHj|TZ&49RBmP2jsR;F3G!4I{lB!bji>w^s@##atBO$qt&M*) zXP?f;@5&KP&uBmzU8j)hRTJqLhh`WN-H1#nKPjxM_`S~kq;ysLyAX@$IHTUkn^w-E zzzy|?0m2H(N|oN?*4&z(_g=_@s-U`|I#PF?GQcmy5!;2hV5#b_bco$YG&^5a*t)v` zZ4zp)Di_k^y?CSg=IIaOMN9MypybM{go*1`QV$ajcr;C3tTYM7WiK}f^Vdo*eRPLB zk2BCvsh@SS`gbc*(VHr){7+1;9v(3;qEQXGGj1+LCkRD=z^&)V?$hcs7V&NRXd zG08P=lgow}MpV#-ywkp?F$R{4SzTXH#&y_6MicWIU) zEXZEsR7>y3Thu*{6z452UVW}mki`oLlW88Y=E5K!Usb+U>wnosHxnwWHtcyE%YJim znLNfidai_TRy^yabFqM)#gM;^W&}dz}{6{$hbccYC!XM7k z0rr)4w4#Cdnf7VU$MP1x>N#J+oNI^rxLi8rOXaqGm24Po70*_tq~hKn%S$``CjL-F zI&z;@dX8Be`2?!_4N@ovzYiE7UjI;9$Qp6_gu?o7-kQ*@tTe2Fn&a%OxwkWR+_Kv6 zLOiOAo^vwvUoUGkP_2?znL_&A6lwDf#f$C_SDljXw?(?@uiXKT?;hm$h0?%Ox2oxS zC=$e3^9&#C1C8xw+y6YJT%G%g_XpSl*J?yNW zNwC(AjOA@Oq1qmpt+^2Km|Ac2dwE2Cp4sqIyvpBOJwi2LL`P*gl;b+I+lKLGD_VRI zPS`4MzCn=3`Y7W$*MtkY7P&uaR-&GtW!xT?U!&(=?GN#kdRR|!x#ZH`^JJ7x{7*Df z?2F-FvGGih(#5V?pQH3##YuY3QvFju`F_|>rU;K==y)7`n}73|41!62VpunQGzU)8 z^J1h^*ySykHMm*LrCesT^zpTNrj}+jM&>kNp7ItMRA)vfar2j+_j06+uHiyqWu0HI zNz&Xq$lDcGPV`C7Y1-$bZ9|an+6DMRe0OC*FNdku3~Q`ech$HS(&^Jm>%1qApsM_V zDtTNSBRzU?=6ELDsIR$t)|Q@O6S+nng6f|u%Eg)T5?YUn0SyW9zLk~x^bFi&f#TXlAdX%^Dv6vbk0uxtDH@#VL!kh@*`_a5vG*RnOHjPitk3; z6Q&*6TROki-D2rzGo&jtU2j30@LnnPsXQ~yI4BIX-sV7+yVCYHXx?95fuQH z-VSG&9m8ikFirS(aAM8qtPMkR#LwVb!*I9J_FC*mL3)$aD<<6oreb59ue*sIS zZYo?So~7GLxO=oEEQYDz;sSMOT-AhKcRe&|ZGvyr7RXJs#hsq*aJ`ca&bMfTMSkru zWuQH5;vJE0(glv?olw}d6RO8K;H{zq-p6&tjLlBi72Or{PB@^sN*9@fc14CwR~*Uc ziQa#^VXIYF{LSuy8@7%(@Wvi>zV;Y#+8&{G?XY%Q8?^Xn1^cE($W>ECXPI;N6;Hly za4nzDt>u=yDrzsP;Hf#qRBOoNg!kFPu*~L<=lLvfEa4_p(oHyb(=Yv?miW#*WncBG zvYP*%R`5+`DGQSdIYzgT3k&o3Cp3q*J+t`I=Znm_lDQ%-mKA@ZIb&K3`zFP3Zl8F1 zjZGBxPy%ZlljYC&!~_2_nOB;}K{@$cC*0W%S%uX9T+H5`%4xr-jBSg{IQVHLS7udn zz4+2%WiHfsMf7#DOPcaj8OMFZNAXQ`0n&qynj?CKj|!N1O9#DuTfyR88yt0O1MgY3 zII+VT7pJ#I$A|W~zo;iNr}jf=7dK>_cE|aaLy^;Z9Nx;}R$1*4>j!7Nm`_@w#yLQREzPf-uecsaW%0FqVDlPPHK6L zFZu@XWZg?X9hk-yGP5<8*@i|hVNzaf(dO9O zuM?K&^?<5(4?HODkBmOU-WTGe)DQ_6#)dxfE&Jd@yRG7w+x! z#Qh9+Xl4vX$@@vT{MQRteLQg2Uie-L&lzBUlj;TG@;(Xw&_Y;JkIL99B7$cgT;{6* zCz!eUKHY5dIpUs*u#z;PrY*b!WzqK8=;7sZ7ko?_j<-EMr2ltDx?Wq{I&3A36I>Y zK240zApw~z)=J^6<;m>+H<8cpM++bF4X^Ha!K@W;Sl|`Qww0e5+%}Klb%k^k-)6da z5m)>)5YA@@Y+LPwj(uIRX9&rxDK>@impL8%h}Up^({3Wto3C z6<0lA?eE77?EIPj>lM*L-yBannBu;^DcnQsp2K4ED=D2LriWBL(cM~gPrt+RNm#K+u1_9p*?^$;^j7rRW1u`5Ue zp0!e^MAgvbb3PyTPUqp&H0B;p?C}5@I>vOgdHVa+yChkIhZW zSTo``BNl7m_aa-&GIzv=g-+O}+y`HLUEvk~uaA?a<0W2KWgBJbq@18`fQ+d}1WjK25^Z*olZR9Sy_M0a*XD z2hudVBKUnbc{{qH^#*H*8d+ z0bYO8LZ9BkzPnP!v%AxId3ypk2gLIEhY$3zkL0BmVYF0#%kn1gSW}x!j==%m|NX^vaFk)b4SdI4_#P-(PdO z<~_Dvc8PDw&+&7{9ex;+$lg*%4sS2ai)=%AFWVqLydPH7jTIgHBv@3AMXmoxbh$nl zCx7)rzZ@4Vvgm`nyzY4FV~yH;nUTbmuv$Bn;k_bh{N^#0JT7v#(orhA9H8#_{j`rh z%7@zLIcVJtJ}e5L^|+fn`{M!ilOuRKyNq`iG=pY84Wyh`gGr;DF4u! zPjWvM@UP6&7P)I-#r96Pd$TXx9Xw=zKNQx_MnY$p7mjsYj>`kq;pUAsSRJq$1uCo1 z&}k(MbXKA|b_FgDS&E$@GjLUYE)m^D2j`qfg)NUbGvx^b9z=0;Pz)QkycOo%19~W5 zWaqs{+4;p8#%_MZjbD;^QZy)$(!XAlrQD{D9S|~VDB3oghHn;=(01l1T=_TxD$hn> zQrZY~9yuD`Wy8_#T|c~xw?WxkMfB)g#~;^n7-bR5KDz=%Q+|#HzYb8*btl&q?&Kfm zeY794mmM4r@%p#}{4?V?Ew9~TWrqk_m=9#ri(!)qN)5=!)LAX7@C&OcZ-vG(D)rYy?;p+mnXul4WiYnw;V9@BU7Hn@P%$H z>nA2rqb85nR|wPciY5-|x09b)FYLVFj#C(l@MoiOZQCq#&G$v$K7RNw#Sj02*CXP< zdc-KN$NgdJu=?s6*pFI*C-Xc}-PHn>H*%TK`~@wlpYYznH?&(G$L{N+=+X8r`!+kt zd&_rm-JG4AIp7p$D?DYVi;4X6t%#9Ejm&#xgxw!|V!Vqd-1dyc`l&+@n(HPSWe;@y zGzzXU(~#sp6*ry?L%@QL$i5&N^C4Ai!aR=bmdTNul9~JNF}oL@;6nYaGWTD{2=zTY zW_N(I{@c&RHiziZ>;OMGUEtN5f$X_8mQi&jbpBJzzuoH@X!?!QNBw2A0B6H*Ti}?t z1>WA&Lrt>q+%5{2^g|8jFDT&Yg_%^=isrS}FF2sz1NPOqPygT`7W53~tKA>yuls?| zE`)PSVKnOo=JWbC(UPYc!eEdMZauTZt+PFFaNI^N=Asyt6v*v6 zZ!z8C9Q%czVtPOTzuXCBuvI2!wvyhlvnC3R+MsVkFSvIcgwlwC7`Jh*~tejFr#MlQVqN`4ltn zoZ+C4#~J+e2oF2$rGNB(Hk*2jdU>zuk@}gZN0$j(u8dl3t9f@&6>~*@xOu4_>>^B2 zu5FDKQqx{6SAyESmavoE(uJMk@05MbqIKzf9UISkx{mpp9;fveD*I`=iM&v%& ziz63~W5?CAn7QaU!alCStLfu#skAj_FA*JsW(}9$En%eWj+z;lvC%PsrHev2S?LCQ z=$>Mf`~Ik^}}@IPKXV(LR$}G?CYllLq*YF`DXH6U6|xSyx{rQkJuyP zHp9bivR%}94sCLR7k6CXu4Xr7_x6@9dI@wImdtZqGTHA?CgcB9acO6A(`O}oh|$N| z9U8d*NEP+nRS_q<_OTOHa9#G`x|jYibJ{mvjVWaP>>`f7U&!ZU3K_Sch=X5dvHn;# zqtx?x$+m=TD#d?2P!&VmjPT6P0tdz%MH83qP;ub+l@!+!%3*OnTat^7vcEM zHE_({huPVOU@&Pvp6ywMsG#9k6=DnPK&iDvk3!jp)k>ce7A>>qC8f+dk<7gDiGB&fMRqXSpTbMs>xH zj{V{I)g31d24dBHXY?s_z~s5@uFx;}ftp{MWA^2aT%+Wdf{KfD%}OE?=>hB5x)8<|(X;pEOA7}7V1n+v6HXv}8s zuUUMckk3B*zjFEeQnnac$E0bsq8+VfAN5jpURA>O;wAR|DNK<)|9EcBZypd&h;5I0 zF4$Sit)8Ow7roM=1TE~*vVdA2Yp8{_7Vl{rB7-6qe z6bNs9q1=N9g>xzW=m`_x%U0p*$o_dtMH5_8{Y|gq)yzyOruyWs?EbZor;nENWs@2% zd0xwymDT)|TgEl(OE^#Nk&DZ7+0Z(NpC)Guvpb8X0a<)BG>?kIifLUeob|+7{?sX9 z!jcRg3{T-SoPO-trEueS<%6YKFa(3A6^h%_I=+vXh>Ao%$A8SFm!4QF~+sM4H3lue- zad_4+1YPsQqk&V6 z+6`VG9icSG7Cp}C;;-z-n$0ie2BXhhbn6pe56oilv0TpSmO=HVu~Z)#&bfPEu&B=i zUfFV&8K3Uc;qQHJZhoJ3qwn#@i02%s^PW-izH}S#iA(W?p+izRt7!r^K8xq%jcHu7 zG@tk4O8InW1)bJN_Q42Y8On~~wD=^u;U_mp7SKYE63Ia-q+eQ@%<_dNpeZ}4ZuRW0 zRZOF<`OK5=Wkzxa->*;QZ|`W{=^sUnkO(@hm3}5BnsaiKIrn%f<69|4){&kjXzs9q0VqAwBO9a=ZDkLEp7(B{hJQ$CKC~R zXe78{5Y{$xLWeuHxVFOtX>*lf)a*OAHOZq_&lJW?PvtoM&m6rYmD-W9T>bqm5C0d$ z9eeKZL6hs;-}NRJ47kge_wF;L_%Vymg)riK0+S;1=_239cJXEO@-5*H%db54q16vlEbDFsov@DR z!`_&JTl)A!tqANpHp=+&$lPk30J6{hojvHgsa0|Gcw1C5Y15|mcV2z=$N+o;4 zU33xeWk;TSQ}j+IKY06$eBP$zaI@bH^`h3jf+%tu|DPDlbkA#KkrjM-?P2`hr ziY1k1sQF=yeM34Sad$5`_4k0z;8D1!IR>x8#-nX#FBCpnjLiI%=vL*6(55Sq_Rkld zTYT{)d7flGOhClhVd&LuD6(I>!!pe6ad8ht`KO^g{$6MT9Z`t=5j~2xrD&Gq>)55|^5cxJJeTp66S`$HXF&q5 z4+!Jpr01OYE|6_=LnX&7mJgq$uvRsZXUjjZw(kcv86C&@rfJ-!l*#K|av9yHkgtp@ zcwDq;M`bVK^1uieceTb#7hCwD4Q9(cu1aPwkskd}?&glJZ-*oA<`^8VpNLnlXJEPG zd>q-c91r)eL{NszG7^_SyV?iS$F4!piH*W3TZ{2G=Oga>L=5{i0?W*Y%Feg)@qLC`C9C=ccng=d_3_aV)@Kjkj3Fm9M4{omMZuHK)=Hr2Vb9+b_E_cB?b zFSFE`3KoXev&6fOVe9L-sG0bHMK_VFw5o)FL71`#~^^Ch+R1=8yLD{5-I@IB>xU9^>1?Y)32XZe@X~)yCL= zUI$m=#qYWF52vrpXN!gJ*>`XVyScq(#|e>))sEu24R1MYWr+BeU-QMZVA?CZqJ5V) z+%xMHH|~7GT^k=TFYpC#xX1BZ*E|j@DW$P<6&*~gm^`eEMMlLm9$&%GDdK~c^S?5= zikI$H(CoEjM2J6BB|sY=sEwtv7aVdx{8OIg4DOWAQ&Z$!ZC%Eglp^lfmcbWoQzIU01 zaUW;mx5Xlq+*ybupYd>-?t;_pJ3#Mx8?0<)i~gf5pn2E;n`UU^w2l_mbQ5pFY!ytE zJ8DE=1E1~4pwpm8wjTe6S!(at>b3O8ddbX_SEea+VzAL-+l#fEnkJR0$hU#fr5!|FRHEvciyeVIXz6;@@KIr6TUqw23Y z-mJGq?7ogTD|-;v9zEe9JI4OqyWqH9XE?-n!l+danDnq4+Ain~^`@>EY2=QM@~%=H;KSjFj5QuOw?M&)eeOxk{ z28gHQjPP6cO14YqYJOZ>$V^6cPrV0nW4(Z7@ZpR zaMn-i(kDnTBpB+M-vQWEpBz^74)X9+7jj?m`a# z=w`EH&vY7H4wJd_Rc2@(=Y*A;xiW7xHP`yk)?y=X=U(TQP48IPteVXaYv6sACB{Ws z!)Bch9-kFY{84=@9Bqo}y~P|pr86Gcxx@9g7Z$CWjmhEDG3n7rJQ>&--TyU(&VdBB zTKklZt?sd-`aO2@y2o{uf$Z1yEuE)?a!KhUF7mh{IZuZeSG}H%#tZ0oVIhZD@8Pnt zyNucx&)ILw_;rzR4`g1`Ms~5U-q!H+{u181mB($0x$OP?D;M;xr{i1=oUk-Q|Mjg< z9bksV`&;6FZ(PQ@Pjng?$*ij~UpI;1{c*8$@0`V&UzNE*rQ{L2|b$2cIwyCZh`cEJ9l4v1^( z2KPr}v25J}7(H1F=WsuiPTYnny{-7;yaADQ8{srv{h&v$nRxnrI#dUEV8HWXc$wA%HTN~J?zHGs z=L_3K^dNPvn&>4OhC7N{C>k%h2-dIYcIg;ZNBQzHy!fJOs$}Af;@3~}xNPH2_IrMg zZx4kCwW9eecO&<@we zSm017Ioddjhcv=?ZTCa&a(FB?#!E(Cd`HivpQyIz6W{44Gq6`IKTQjxk9#1M2i;>_ z@@<(zzM$v(Sa$wZ%r9@$;PJ%@gYG(@`$0Q2{m%+Fx3&__g&umW(u3hlU3|W4gt;AU zP}0^OIqWMQb$3`#9E8;sJy7P<4wIT&;zF7(92c;hNOZLtpJ2X`UQ`#ijw-GtJFH!wGUh89-$F(qOL9tq4x1Pbuc#uB5Hn76^ASZP?&hi`Qc|H6RjZIE*MZg(q8y^*&#AXf}yO$-A$9Rvo z#2c2x(~~44Zi*v@9UPAvuf1^5-UnXQ^I_>f5q)I-?do8M@>pvW?=eP@)UDg2)S%Q= z_DsEmaUWR8-&G&jI`tu+r5)m~Ig1%NdAjt_Q#izbHqU1I()s3g{!Izs;IIfbK^hg- z6!TP4DQiSb@I@tA6FH zo*x+!@|+u{KIE$XcVzx>o1gae(73Xd!;$U;}9dBuZ@u!3dcSCX;M7O+th-BXER)*O~Jq&KrN^&+j!uz~4 znkx0f*$!ib2|5`wE0@6W@jCqW-vL*bHPjCO&Xtb zsZ%)1^Hb?Jyih#Dzxl$<5;eDbV)vQxsEeN^Y=ZLS#sYdbrIN62z-D0NKIbJ({lom~P^NXWD8{2Q=phMgE)qW2jjXp!o z%a3{EPYjK$$~a9v^O{YhkJPt^gUsa=`woOzFE==4_Qi-5UEy)e8rcbY*war1yT#A3 zUVbi)b4!^yHmIe$5VhV)snVezp~Ux3ognHI_JW-V}zz%-}+E6whcSesn8@J~F{hR|5dRi3cxgU5y;_czzJ5rbu?<;X`|xhnDL5=Rh42OE z;L+oh@Q`<6>{ov*Ik*g4n#{z~BSUcdsx{^h5pVC6bfzXhX6}I#^mN(5-a#vb`@EiZ z|1D?K?F~#?d4zKcuCjNlNE)RiFgm=DH-t|&a+E4Uzgps+PfzH%48eBq30P3?g~W3+ zQKq>FBi!a9uC+I^%%`C`aWF2m>4uVChWI?BQQpcD#@2jb^ME^azjlN+@BMgn!zv!1 zv|7wm>siz2&-TFwxb5Z{`X=6>=hG()P5;P*0O{LXh@MKk6ZXdy5HijX_oavW*vlE) zzqsPzX;&o8?T%G@?GackcjjGv?475G#iBL+=a|iLSK@if337ar48cBg-izv8@C;oKf9{dAn@9XxWlrgIH%c96V>wHlbY*btAT{&e;=M`V~e zLdTn7#3TbuiPD76M+LY&mGgYDmaU_U=_xw2+3BB|y*`m!7sqkLz!=)jk)HQ$EaO|p zbFgs|`+24DKtTor?TUC~S{<7<753x>W&Ao|fVwfQQJZ8BMU|cyak)Rj{|$pzlQFWB z9f!R0labtK8Xn60BYDIUB-;DJWyJ=ZN%lj-lkLdgyA>C|ZN)>QEjapXC3fyyfs>CH zpm2*fn&wZ(K%1ekn$;6&DJD48Uv#_**?fBLHKz?0eMRyqwjOna-E$65q2d^o9WL?c z#b6$k9m?VU1++G-XYQFM81qg8gT@;o_GD{Zi|K$_c0J(Qqz_(uyP>go7*3at#;Bxm z7@j*4Cua;o<=mclu-O(#gS0WnMs!X^#q4oBo~Z|(()#=r4!m%R0b>ra$DKW#pty$v zUmT{*k26ePb(J-#kD0bIg03zp%>5|yzu6_!O{itPFr4CqhZ0!aQo;>&@N)PX(6VapO2?6 zW@2`q$@n*E9FC6o54+>~V(X~3*z2H)*c8c?zxsujL=Tf=c$?<`F4J@28Fu~e2wP{K zp|=2Wyq|}0#nn`{`5?cr!|S2=6#d9nZ_O(a=i=1Es#d za!ec3jv2sNv{sMb8RGDBBY2ePA;m>QJUq>D`0y_V53QuNa}Ezj#IqzRj0aBzQT_WJ zI_lq$jFs!0yX-cT&OYFCflVDPde7g7zwqM33I=P4@AA3uGFNKDf1N(!$CzMRHxt-r z8)0cHJv6_nfosBX8YtZVgTjF5D{sI%@pE}iCqp$PYxlSCh&$ErXkZC{EtbAozNd@x z5?EFiM-A_I&Mi%$ihGuD3QL%~x{k|*sWGNl87~8M(X5s9#Xha!J<$%=4|c{>Qzy)Y zXnx-HLd*JIuo>u#ub#cIwyp=hUGI%@)jk-fAw1SRUINd%9@Ay=fyYjuo@@<|Ou55zdH~ zK@2&0hb`^T^Nz)3*1fvTcb#5R;p=-|l6{BKoeHkh5}(T}VO$sLqHli-guB}z+`b(e z|4EH&(E;;DcSM|P2Y9x$gF{VwbXaPOLpD|jT4IWECFWQpKezT5)MTe2JSHo7KdbUt zyf%rQe}wV&gdk3sdXLIJH+e~nG|pddalF|xuGf-z;>dV%WEOK@l+#zT@T$iMC%uh2 zES+>=Ahp@TR6S&88{l1>Ar|%4!{H;^xOQ0+O8wL@%|<-oGOtZgZHAq_Bv(V2Z9XoN zJyBJ{RIj1%2ulp?&vAM4RX^4tsl(ol4l8-I)EKz4ll zj@HuXOC{}li`MOC5mik~nR>LCvki)QZ*{TEQ;V4sP|6*W*FDX)mJ{P7Go;}+iyt(@ zl^|u*4cCHd7ZdDWWr?FsZLzP71C|DM!$0MoSlhf8wB|bF{P@0D_sJER@@vJQ0a%bT z00aLG5wHA6`0N>jw3QPv`uSv3e4hr7;+d%YGz+z#y>Vj0JhVJA6MqY)AZqVOC`{;y zDQUJS+$j2a*+HMq{6yW};dFF-Mjz2RtlfEu!8+$yx%m!rNb2LVAprLsGw9%wi?kzn{ z^c|v%!A?yvLwe*PvM(JFCt9@ok!@dF#$4&UQM@T{0u^S$%>}952#$-W|@V z28?2V&O7<+)C0w zb+s}+7q&pAm9R`Lg~xY5cB7Ld+v59QdW)XRB(a8TB8q6mh8a z7UpOw<4U=B2|fvj@sDIW_H3Z4cx3`)F4SD=$;EOOB4zgaGQ5)Cy{q_ro8+K7ikJFP zEpM-_<3QOHb(C!Qonz~HT{3%<)&FqiFUh4|+7ydKCvbDM7W%mu;puiWJiTZQZBIKG z=y!tRFVSKwbwbN`J<-IiFJ|iXMg8o)u<`GU6CVfQ#iBv@{9!0A-y4Pg|H--OH4#T! zPR9B|FH9($gXvClV83xT?2APg>Nx^`fA&Rxe>-G#)P_mlU)<30D}Vin<;%P`oHO(R z_b$C5JK7uk*5)?z4+L`HhY&U^jpxBxIn4F1roYscyLYJ|e2<~zNSb46mJL#ei$-X% z9SrR{O1^hH^i8!xeOL#$ICR9EK6Yps(jHGW+T-{GyR1kBV&!W2FHo28HN14fvoVum|1C|@6kd3Do*ZO$Z4XX*y;S4hBK4da%Te5BNA!&H-+6~ z@9cT9kdwPU8%ofgy@NG^` z`7N`i23~Jn&uIs1=r^K{eV)|QO#GI6?0)i?vE*mRH?XDTYMV%o(LASG7G_q_QK5zz z?sZ%&{`^6nl6S2sx#8mB{J2jMCURceJL;p&dJ_!U*BY)>9WbuJ5vQN^f^}=rC4cG< zH_iT7b!z|uln21O!3{kdJ%kZ547ROC;Mqty7biz!&eJgnA2tcQ*Gxfh*hGB2J_Z?P zgOD|^2c`_LMU90zdJS!0-jXaH@AFRlW{=o*!DSwQeT+Hp4|1#D0UnM%!ljkcQ|jJf zhxMc^1NzUbLn_a-Wf4=ZUg6J@dqdDI*Li{SB?AbqrvCrSoTxRs+Z9a0OdNRkyWYd3b zIlYs=^Ikh)P6+#Zwx$MZK50pou@*K-Hs3(uecuwl)+shpuh&mnZ>VGYK^5$?xs=my z7jaCdBDTvZWW=pvzHTVxr_6GG=~~O*CX#Wr=qGQ=JT9!2FkBMlY|m~2Yw>E&3~Po7 z@-+j(l`*b|76!L7M*4Lt?EBUMn`Sv-Y-JxDU*V2UgNLK5crUgGO~f^osVH1DO?X&x z=$_9&tBErtL&pn_6w>QH`E`E=9=@9br@IrNbbTbsrn=+CA!kggYm0f+hWMv1+|mgR zT&{0c-DO) z#1odH2epA_*jQtQ#;&%={$njU<5n28#S)3LEpR!(6fGAT;I54h;(kjH(p_>^#x{d# z52>N7e{gJIK$_E`})=(ik~k`ZDVpR*Qz!PP}KWEwu6Zk`ZooF@wQ4bA-P(N6Ke2^V)2P&u{-jG#SMLWDSi@$Qe zFnNC(A6TYPu_&2;zo&9c=X6d^&ElAkd5kuez28Fda2kALedsU#+1E&Ym!`=0EO|xq zTcV@DC>@Sy$=pE`n^&oeFIWYu7b{_ot^(@iy$n1cJ+{rsv|&K8#j%$QME!3JET_{`pz6T0&H>a zNjnU8?;8Tx>9C}FfDJ~z_KOvQ&_vxap;j~-lgDWYCrN5;e|5~4`tVp%OT75r9AndkeP8y6eI38^>&_~AA1$Kts~pkB zeC7g=Bz`f7=FQS@o{tD+)4Q*zn*M@k#Orh3<0bF53E`oQ;mleVP5ZcH_V1fb)h8uP z_O7Pm4&goe2_w`?7$46xU=*W`pKbLJ|HwcT$cC7^$q0|T7-B@D0ajKS;9s6Dnl9IZ z+jSNA2e&}vCSj!Z`@tU*Yq?tVYtwxS86-Qx%W|f*=BEpj=QG=nOXC@jR9^O!*@u1t zZ)wHT>}MQ9rY3Uogf!kYGIcyzU!0z)38EIF>8Dpy1WU1ur6$oqn;BPiD6K3}D zMqY2n|DTr_tQ5wy_}i7F{%LdQ7wsSZ;u9Ci{1HE|DgSb1-@oiG467l+rS8)Bk2ZUR zc@i#cqPCJPE{qnl9?DSqt%lk_EnL20h+nih4$D5CoC**hIfFgaOd1n zsxbo7BgP_p%LJ5$OvBe~FI1$>g8hj(;su*2z1VbEsZSO!&Il;Jbj7lEU2)8&H9}wM z;>sGyG101}{*_!V(oYhdeiS!;5250==WHJNjPVD8=p=gc`gfrmeOh)8ol+Q8k|{cm zLiRi^JM~fD_*t?g{t6=~PnbdJhc(gXpDx1XJs;e~2$}7SaP5{MYC9Pq%Uc(N?X^++ zS_6(tR3%?l1vkeFW5`w*?84A~dHXMiJ&}DzZ8gmYmvU*J0%lIklDva-w!53k6V-|Q zFd8q3Osa^4N3-x`oi4ViUEnr72h{$71sRdJ2@qJNA3+N4exda7!eGgAlU zlMM0fvk4k{n_+5GQ*2i-60eK_uE^i5TN7PO{H%o|_Ucf`SBB0=$+HtK+`^VJ|C;-Y z#rEG>Gvym?Jw)5|kt)XKs^Y0I*P;#7u&I|Oj`h*P2v;4bZ`Z?Yspq=C zH-dA8DGdBAU?KY60d}?+V`hi1n`Gwk#|iC?`=X!9K>Y0Ij(;BqW2(OgE(N(`g|j;h zAG@K}Y9Pkv_rZyM;*DzTjPbW@p(DC{W8pxLw2}O3@vNS@n9Cj~llgQ@6fb0kaR2=v z)-8X`s2LAwoBn_3w6Sn|shQ3Fh&S!9e*Cu6v5Gr$fP1AN)0hp!WL(Q>;E_ABaOy{#su3{@4q zrV{K!T414Yx;9BxQR|n&!8ujOk(b5eDmwiEiwimKMjmICX0oU3WVc_J-L!}7n2S^S z^n9wY)>Gx(`ohUBS=2Bqp!tDP>fVt3vg9{L+58rdJ$Wx*m^M#ap!AKfs-*@lStYaZ zwW^{&Qik$0RTO-eykD1=__$RV2A74))};jw%oPsn2jMyk+N4q#h>zr67cRmnFwGm7G7OlCvzUMc*u5hTpYp zh_7R!oT=Hm;_EMx{Gzv#StYYSE6G1FU#EVj$Go$!50cMNoOhN)_AoNMlahjhU}qdqvZz87XJaDrKSXWWl%k1M;Z zkZfUuVK!R0J3tA;;Bhhv~`pAx=qtQ}N z;JAVm+N}M;>C?06S1CFNze*m9u4lB=d7)vFr+Mrj=g$(RT>ln`lXu;~LUwca)liwP zficZ>5FVh5oH#A~k(rmK_)|AVNOp*eFf?T^yF++YRu#b4;s0YoO19tMrUI*KBDxvj zH#W+gBdms*CZ$}qvw-=J^O!F)(SDja)RBI8Z@(hWI4JeSzY1dsRKbMT1xydjXOv!{$H4jbu!2)64 z4}ABJd22+oT_GI#Il|3#6aH_bybb?Up(Z`|RS!MHzA%7=rtEsxsA2UpO$2Eep>w4n z&c4yXb~*p6m6lAwoPWK{eLmL ztNa^HzjD;SEMCh_<$Za(V*mTZdp0?2)$FV2eM&edqneGv!+5Iuo!`63?8!j5G?MAM zN4R(gg+Y5^o(7&Sm#_Uw4}PI0@aiSIlRl4U#qSI6g2HSGT*+teXVf1V9*pAGg>dS1_A1tKp(mE==k$eYV z$y4+ezE+m(ZoO5|LGDTudsS@BR)xRZMR_IS*?%dSiQ+Ad{HK6KHx;}W56+ki8W<_; z*$ZQY6(L!z*Uehsai;KIttErvlrTlxNak?i4=xdoYJA!+st7mZn(#G@g?W9rqL$x; zYuB@`jxVGi892U%mai(geq=2#NXBr*_U{aoyG-}3u)d%FWk{U--cP@H_?@u+#A|cy zg7BW*o51l&b5sh`}$60DXzsAePUTFUR6 z)C||EBsQ;+D8rX#MeN4mGTy(n#kXcH`ab>kZL7T@U14@E!N&E_97v;T31UL)_zj&8T~2pfn0=7T6AYy#9fTR7AnZlw z=J+$X1ulqpAz$j%#9yM-6;|7PJhHWzummUAxD@xkyKw!c|T?IAU62$j8*y)a{TR&(RKdfGSCQ^Bi_ zd!{w8i`EY&ewTdXC*PRzub$z;SAXr%z;$`jJ06s*=zii)?)ig*F9^Hc`zQM^ZeW@8 za4#p-QYl9MoRjtJB|LQ(zdEj1A~{r7Uch!<{=qvUtmNUmpkN2!1Aso1WS3;5Zn zVsRIBoD{z53-R-w8>EAz_ga{ETLTfhG%?jsJam0p%DzeoJu7?-Swm-a32$f+6ZyZw*%BOI-0(E*SB&bYR9EZ z5oWJ$3q?!}7S_Ct3YPe*;!3R&RFYaiF;6(@cO=`uL_ADCWft?fo)7%x90;S;%uo8C z5u(%cliUK)FZVA0&AZ(s$7*gPbuUviMon;AGSbjP@{lE~wIE9!!+&Vutd0)ybqru@ zB0HFgIvAy;2?wcz8znm<@U5EMw`w@wK?&yvNk;VvCG=UNjy0WBF-li7DPLvxqOXFK z%i@!h~31jR{+B-Yi8ZYb!xxnF`c3 zRM7v1@LV?tdws8DPm0!Mg1aybZA9bywoWpMs_3=4gxgcTQs+W36^csjSV{%ao^iC08yLeY)q9tSKff72JwnVFM zDhLiygJrE6`pJFK>Y*MK{bY|mT(pmpQ?xQd1@&%9sLPi*gF|!FIQ}0;XBigd+C||# zbc=}C9e`q@sF)}!c8lHJ-QC^Y-Q67=3%f85Dkd0|^b9kzzx#YYypGoqop_&T$J%SJ zWsn}%t-AX)-Wm7s;6r=!MJWgQFq`L)&ry1fb&~j}4&va97V8qL_S5@ui<_6aFYJ{(2hCI>pR#=6+6{l;i^aP+KO)#C)o`K6v;E3Ssk6tYG5Y& z(X#fn=!|*jcmBoqBp#i|EOJV{bTwZ~*U3-t1}R`tSG8zw7j*DL!JyaUi@eyXS%K)p zk3zc}ed!kS;hw)o?++}e*t<-<9+;ukv(b6$imysu)s=iVd3|jp$0l?m!_d1g2;Z%W zS^JH)==Bct4;9g2~(xYez z3`27uH~LepXJl%tIT?ClN4kcTV@_Arq`!ON>)79-E>4-c#U)d>oy^oaM^d!u88q_t z;e*E5x+Hqr9q-~dLGfZjld{@=)p3i^7DbPDZEZAtgYdsy>nuCBv+q3@&!QBxxjUHj zb3L^9hoZN>8qICaLuK-EB--Wyf851`croFvtt`815HFr@w2!Sg-KXCUw4;}0jyc9d zI#UO9zUU?aE^gxg$W82~I?MR{&T{ir4!K#~TfSV+Ek1qdMgHcK^o{xDnNNPH=Lrw$ zMsB$f;w4+hcuJ3lIq(?D2`9)?teI#LqMz=ag-&Axxb&)%I`OQ{-ISa$7)8#4{hxR@5cU*c3TL}!;Z=Nc7L_ltrY#dH$&I>XKFC| z(_r+x%HNbTDTVZ=G>|M%|CD>E%ml+6n!_iFq@0V)Bxcg^5+9yUJc#x9C4E-e$Fzg3%bSV!7avfVDE2yP}UfA`l2jt_!MpVS5~D| z*35Hgv!1u;ZgPKRyKFszA9d*ROzm66sLjyp?qAGEy@{`R4tk9%>3WM<*U--y_|F=3 zV`cm#x|_%|Xb(qc>ZLVk{P8-;;rK~)Hb|kHX#Dx8_FGGz{zl|BSWnVTgCsf{>g-w0a_fo{emn42D>#ZfJAYAQ@o8Rai~fLX z@a#gt3qy~#! z`&e~Ms!{X#;eA=qs6)N8wbvxG?!XhLzwq4n43lHf7%fE2i>_qoVUrHTd-5<|#O><} zwH}zw4gA*l9{0aO#~Xgb41DD(dAZ5ra_&;iHm7WM&LvawqD%G2Th1^~iT*d2Oe>aC zEgDTy)%Cz%ZE!F}_m#$%n%Qd! zycW8a$4e#9s&S`9W_a-(MB2-pU-ZU*9c4TB7A@;Uy`}yrl=6soy(uNu|T!C--uSYi@5T)Z9n%v9mI(XCApx65a#5TZ!xl zEI0W`jX(Ls_eMU+u{5s)M#8gxnOAPV&nKy&1!X~60Vy>tuWZVbR}!ZBNI!HWx`*(* zk9o=A;GF2;dCP=}UXoD2Q}z^hmqnKy#B(OS#9KUwduMA2{JDGG1qZ7R4|iauZf1wN zO>^=Vxo>)@R2?-Vm0jO7O+=gY9J;9MJ<|1lXFSz*W~ldJ^vwfIdan*RZy}Rfo@eO1 z9~nBHy^2Y2t1hiJ>+?CPsYBTTFM>}EGn~WZv_`$qN386+tUs&-qOs^2tx^k4UzIf|j&e|ur{Sp)3Fb(*8p2}XBxsH;rF z&+}M*4{5Lw-dKXGxG!>I&xV>1-QwRa_?<1qdj+l04Hjo2Soa!pFaGNL42p+ov;|s zA3kd=I{174;EBkNnWHgVfA_$X!V&KU_MnCrLK}+Q6W0Xo*lPHib+OWqnDw|&=RY@V zHZdVrF}$3&;RRZd+%y}V+4g1~0;lgc8oYTr1{anD9zclIAp3vHFl%tW@yAPJbmf0FZM~-vNuw7M|h&f{`*IL;rm{! z{g>UobY1ux-3vT^`?XKk%rEKs(K$^YjQy*<7boi$W((a%u}}OqUB9j&FWf>G;z5?~ zZIr3U7o!8eHeD~lwdzQHw}e@ipMQpaDPq!m)#y#gKl?i{`!0-L_zZON>w%Luf1n^H>#uH!;}HeGm81YZwNj9FL!p2-6i55xGdl^{YSgY zGxwabBQ}?qjkzUtlMmQL9tl8Wr(aDk2|eK`KJ)>`QZRJ4aj9s}A-d&^`!19Khvm#nf0ws0PE{Yoxd0l zlo!-CYncTQPm)XEk3;>pikx|h+U)9hcENU-^)k7=Il0o8dU5$^qh`)9YT2{ol!-<( zx=q>(E>jNb!S(OZh`w*qk1ff&t26ZO$P9H^kfDvnp}Twnjp<#y{!f#B`EJrd-?G(b z6B@gCF&fd@>HG(svHob~yNNjVwCWS`Pq}dxJbcXr-V%D2 zt@!`2f*6s3M_3FVNz_B@%cIwR7caGFgPcG+IN}o;Ne*~y+;WzyVJ>1h<0>tK-DLT5 zFgY7H*)`l%=8QwHFv?w?R`8HYO+3V@cMiEdJ*ODp?KgksAuGSS%A?vY@;uc=q8!{M zv!k1=b#j+iYja4)8aZV4cTZV-5N)YfZg|$YNc=PWy9+qU<`74@UKoGai4HP@b67kE z&Gm)0^06^}+dFisd(-=&*WV0Zp_jec*;<1pRWC5+?bO^;@X=-VerXpPxZ~i@j56xN zQ+RYe!C#qY^Qebe>utmDe3n6KBpT$_Yy2X&bEmfQ#(m(@&E1dd|1c)=XF5C&x)(F#mP91_<$-v#omVxrv5^@i@ZkdY=x^gFt=o}X z@OTc0$A{UG`9uUB&NINazzBX+bCZRfp%oQeC7*(C+2Geqo~==nnzI60_*c#PaDYV{ zMVfWSM6>qg`(9Tm8;^i&oz>0AcbBCXm=)ESo~6xVz?eQ$qY}enbK1yR3m#Fo@#2lO zkxmuxPuh(aM;JWWz4(OOvy*x=(L!aOdyn%qCDcK#X4`^68{~9DgSZp#=Tqaph4W&( ziC<=QlO`<7*3<(geF5fOgBtA@HTkrT>AF56L;b#IX$aWWHtM`C2hCcTd)D?nwb*>> z;kEduZZ_(%K>Sw7<>ktlb;%n3{U-Q5s2$$Ic*b}-NXPMb{~cz2;)@?!C>SIAq-D_D zPRZjS=g&LHVfEYZTl(oxj)*%kF}MmKW!xZn2qeBo{!0gKLKZc zP*2r4#4TrPgi6%q)=?(?PJBPI&#EF}Dv@Vptzdv9*hx5Lp1>x;L}8+`nX&f-@F%m59pg+JUSB(J-SeZzcs zq?5e7WG{BqC6Ut|CFlS(FFF*Bep8DCd&&FDxujQkPFci!c6=>QxiyU1Mowt}hH-nCtHhwuo;wTQ^43nW6l}dT`s*3&2aNG%R@&WDV%O)8 zww*lW$vrT4<_+~{(vPZ>*o<(N78{+UKJTfa86ODnySBu(>nk0_$<;x|EVP#i^llOK zs(bBumiSSg1CQI%82z){#3o|;abnOv{}3yf>0R9kXSyGLt!N$&Yh)1PI`VN9)ew3} zhlA8NyRvo58N4iN;BoWCqLvXNJKmz>+16H?5*O|F8RP>y4aF;1^;Bi*-1_{SH=cyV zwQM);-a33;=Ho}0VAg+`F+7`VL<=%YJ8=Iq(~a7eT=%4^S))dRQ)Y`qmc&<#y7B1* zTS+P;G9;b;CjoyHVp+L%7X5P?4qbmcdH2;(x~4dagNMC11mXt`)_rmY-qFcu!;`O) z=i?21(q5eR!xz~BXJ!JL{czhWti+!)4;uV6>1&v&RZhh-tOvP%tCNhu$Gq=PYJk(^ z>V~SPIe)%*NKCnF(H!)5O;c23J@GQy0d9>SMFnzs{goE=n~xXEQj69HZ~ccn2~ALz z*ik2gWp}LYAahFF%31W2uPnmzq5yS5KdX*#P#sLYxVxIY2z!2g&Vq&YLoK;CX_yjETVm>t#T=uMu)Om+Kt)GiT)}b!u`Ip&lk4_d`D0<_!o2~!%+$}=w{$M}v zZH0{lUdChc7CzJ$@msq=h@D_Mmj5li0E=H{jmTsAacakeL?-+v&U~gmL8r9c) zmhgC!cEpQqlsdTg*$2iEM;b`s=3!f7o&T{thuEO8a2Jakl zZI_M0tOviwbL9S-4pMW4v;47hlO1E7#Rg5pezo}yJkZYF#PfQF2N*eGkuNdW$4Sn{ zGCP6O6I;kes(^j&+etlChdyDlLAEk;Y%&ZT_-^)c^@*Ki#ga>=+Mr_%_q;MQn_a4} zc3Ac6CA>jrs@^mjqz)K+@kB843(Ntmc*MBiZ(awlpUU&-m@cm#Q|3BNDg*5j~}xezaE-&Rkv(( zpumvH+YQc=xA)?i7-Z5n;N>$(oRwMi{!KD!!R`1@ha*SPTX09FMA@NjUJ{5b)QpX zk(68P7jwQQuYr^0VIvKOphxCmRnttr6G5n{%@c^-bk16B~r7FyiP3evTENB z7Ck%GqU*rlJCrc%(`EcwL0+qgRbP{<{_{NCLmk&_E6-cGTb%ox-|(A#%x+j;gQSkY zpPpwK9qfpo6JARdY-KR#W^#40C#$|3udbI??L{rQi02oOVA3Qo=m87BAelkr zQG2tx~nk!3?#6%S-@U znU#nqP7AYc-(b>ic*U$bnXbDN;T51Ube8^fQ$6q%bTU(e?B#V!d@h^VqQ@*!>nnaU z;K_g5;lJ0{q9c`O2_Bhz1W&M4_EH{PU?})`LwfMl4cTS;j{jFX&R9IPKwkP$bYH#G zZKcsmo_#Sqw>gLN4&u49F;g#4pIK^WX&N)zKKM~psH^(qlxhb3P-D*L-n;Zxo71&F zbEO4Wsh!(1Yv0IhoAduF)1rIrt@>jkwX{36QF6Mj*qf?NPNeCYaP;cR(Q`cJ%rPGu zSr0G3`Oe}A7Wr~4_ZsfYw&nCty=)|w+ShHSn_Qj)7fe0nY`&cG(8*0a$p3xr;3s1- zNKx?PQ(pKY-C(X_=OlTmI*DU$@E2d^mYiv?O#T0Nd!SU7{$f8S7(Bg67iKTe**ftZ z6gi1k%{N;qL+|=|d$yhfw;xD8h@70QGdLqNUsG?<4?QF%t@bcTL9nhS$4xrdCPNQi z&(!VB;o8w}-k6C8Zy%lkUb|DjlfQ_8{^yyqo?{-H2;c2urY6wG^gUqIf*bJkOu|b# z2>iP_UdFuUTX3<*8^Eo1W@#(5bz|R~boqAb0lteM@W&Zb@r^odC-<5td)2(hOp~6Q zMejq7oktv>Xy+hh$dxB|&|lo3?;T$OzSCo7)11{!=PYUkJ7_>` zOq)e*+|j6W&?Za1K^?ui?@@>iM*cMe>I?u1h2DdgN|sAxSI9w;cPAWlO7tZYUz6BLthQTnz5Ws zW1dEDwwSru2jWo3bo7Mb#=Hn3Z&6oOsBa@{ZSCbVxIu@RHu9m1LGn;*ojb%Fpov9S z-2~732|frH@}if6M08~a=7l%?f6tL;P-rE2y*eIn%)c7jF=x48kON=w_Tm|w+)iyd zh&f4uMHjp_>#_~RiNfSm^2`Tn;C(rX|JCqWT?*$iC(q1=y#RX2WH@=RH!(|u3l{h* zTi@rfXql;Itx=14caTN%lZUf>&6*Czvz-3Zc_dg6dA11ewMkKY&&hW#Q5N+WldYZc z@!OukJcwLc8h+nMc34VNo1f)pudl+Z98u2n!sxA0XaA%}+x-voO8SU4)s32GA2l5q z(o4SIEs_nNh&eHQ+b`hT({6(uSLFsco*2LsLe8cesOd{cB{F zXVlrAc*nN^$3FX zpDf+d6Hj9YW})6-m}U4(N2zxw8Fj|XEZuj3-mosdiG1D&`s#1w#K_Iu6TY)Y9u}Hh zeDSEybB*J-m#9hGsct+*-A=vlNGkI25*GboX?Y?HWF0^U)?1Z{dm-({Vi7A z(+uvDtF82&4;O7Vy+9;8)$kcQ#@Nds`t$Rp;f@4@-M>N>jk?wfH)J|7dk*z)!D}Lc z3-L$f8R-z!z&7|%=MicCR5h4B(Ep-?teEE{Y2f1*h;Qqbu^YY-&H}qrlgIMDPvMRJ z2L8h)ytU8Zg$-|``gvQKN}so21iA4Rm}7x#wOvIo7Lu(y7iFt5L(I*N(*p3qTVCYR z5%{1wn$UqE2Yf)2bz_ze0^eCwDMMp|joQ61UUgxr{>;$E`V#NieciD;TOX$zHRM^Q zjwzp|rO5xoW6dh%sNLxe+A&M*F`wE9T+usDbSP{qkquVFd#Kd`KO}LMT-3@*P81=G0-hZ8$5tiiKI9v7n9pbSQ8hItGx&@3a6y5El zBbmB00*vHi2A&96nhh6cv}-o=c(@#3&D)7XC$CYz!BsNDe;v-8q53quCDFW_NZf6? z%tlh^bvtdwfAkIBt{34@RKj2W3!X9tJ5f7384Hir)gS*+W*dt_@Lpa=k22jxR&ush z?875(3;h>3=JLw;Tf)b?R35uk;`%mv6AQ7c)=!Jpdy6kPSmn8Ee2-D|`zx&Ke?g=Q zv*314_Hru4Ue*`07f*V|cAuD^z*}%xNAL2T^U7@g-D2h^)SP!hvvtiRJTk${I}nSU z?=Uyr02TpXro;}buBR@#<(I8Xsq2UCG-|`nCcWFotX40J?x@Yof%BT)i+n?$7#_qO z<5_ef$4%eFe>cMQ_l09S+@kA=yRE5H=M(2?ALURPs}^qx#svP+XMtJQ(+A|3iFYmB z+O_mSA@s4u10q*3M%tmD5)0a`&z$7{n==_d~zrmO*Tx&+5|2O4DuCRz|os+rg!8+sd@#c9QhK zR*ZO)FZ;kO4ZitH^6k%wc(%_q$c+^Sx!e{1Sfhw(Bp&N6t(rlfol=6hPA{JD)*#~p z@gj}4mCE2pS`)rkY2yA5yq~GjB8cN>xWkspCS8wy%>nMuz^x{g9NAi}NwyxVYt*ii zsU1h9>r?nq5s$O9)|W5zMWqUqznktW*X?c^v8 zp5rNh*h%Kpfvaf5M-lJ9nF;WHC)tZFT*aN$9mV&F1AbZ#G60O{?HGIZC+(z|*hx6K z*UDb*0dT4=)CGAeupb_6)zyXZr+uTk%#(ZKrRsBoIjEai=YnJ2A&%{*XX`bOd1h6S zs(4~2TfuQ=!>g$Q?|^#wSQqp&!oZ{8nq6LP)s=kzrJ90Qy`okoE`051BO|G~zZ=*U zXazniKaBL?z8tY?oz={JI%R7e^855lCf%9asQ<$Mx=syZ4iBS+v8a9PZc9p45EggsbF-Vwb@3YT&zD!A|y4!(O6K z+ECUYY49iaZMBp472#4|vy&HDBEigU%8th~mz-nZ8Gc!->e&%JBolq`M&|Zsd7ofV z2Z%on$@Lipt=f44xFT2Wc|UT&QG-nKHpsGj_|cm1hb3nsEvI%vxi@{-$sB^GHkitj zf@pT&z(wjJ3ikfyA-#^%r^#SvVD1$5j8*I1IAkS{v$eMRH>|@)@ z@{M@%!mIvC-BZIH$-;A?)elNfq}q7}&xXYAwzpSRgq8!^K>-+RPC z{8F5x(nuFs5#%bRM!L#6XE1N@tf}w_!jIC+UUrfzL)|3z=^Qc){gR=VnD^cCkfjG* zXOM3;9JQCEUv|=)I8^1Olk^UCl9B`MWx)U&X;#=q+)CKURbuKJ?i6jG zVke@Nz{whNHd@i=nETjEG8&D8W9_6D=g*$^FujJOXc-sTUCLR)7lYGvhU?oBzFcp- zC=R28P!ueWXOcHq93YqmMb*WrAp7O)d$M~faA z}?!|eCk%1PpRCin5+1M%9tKfWGi;$Nk6sHmTnXvpUDn zo1CP#u(fD+dV@SesSCk_S`uHkZy;Bv5;w_zeVB3kq-3ejH)gAG^h;nlwV5|vPN#mj zY1P|Vs%P4ZgyvjoJMuh8MCLAnyBc2M`k-=bgOydS4`-N+pn9c?Fb zd2Sn-ogbmcbNtQzfjM2f9!k@>OER-U3Gors71Byh}dzAqPo+Er%hm8nJP z&)$y5yZa3FNxWGPGFQOLKqa?9wl5(scLNh6Cp^08AlJa|x2AEPzzipGw_7c@6}$h= zI5{tOOB-1chX2hugG_+;ws`M1NuzwVGPN^(x?On@V@ zik#B{-+10uhZ@`^A6q#Nwh_aeAPIcF{6HJ|Wp5+p>Z1_?F68mvQO0z1lvCiBp6KLl z;*4iTvLgWJfT8)osXQqLxxWh?fFW?E;Hi8m z0R{#K;W#~au7B{+83`W2-+Mr8=t&PyWxXwP2ZQ8mPCb~zUV>fV?A3CT#pPXOObHh$ zy3$#q(D*DD#P@@)&I@(}?+?c(k$9E$)k(G;c9G%gB2$_=NKa-gT@Fx>a%XccWuDQJ z8j0F{#$JnV;9fVQKMd$=)-S8+MQhv0XXYxqW>Wv(#0R^QjdW**-mfeE>H9Zl>$^!7-4zHn%??~WX5l}nFWN84RMVm?Eq27H0$0YaI9znJy}QAo{5pmG zjxab@|1f{tnyoIJiGR3{jeVG3jfeXT2Du)LetTK7-Y0H-1rwff1s>O0u-N+a2w*#f zs%Gf7!D(93Cqt*^$xwG@%OP;$&eA7ro(vY$h~39c%%E&+q}~!VELOY7q#|x|s)Mrx zk{1@hCEEMhQTBP-$ZC4$Qr^tZ>!OiI%p7^zLHc!u)5$EQ$Uw7(C0TUd3wXESRqZ*4 zJK!@_U|v;*+Wi@|VoUmRRA%1Neo!O#AsqfEiyw$E7VUU2TJ{sxJG{}TWY z@kItb?@MNLPw0L8=uf6)YXY+l`_HaGE%Bee<5woo{UA=}&fWE>qX{bdx_| zl3)7S$yMS^)3V?he5Ouq@TGofFXN)okeZA(O-(z=H_IT0z*sl&zSHiZgHH^K7>737 zawpkU#Z{{KyGZj~&QkOZ`$f^zL7at;j&RBU<03C}k(iyX5|PVAlHpoMgQ0%pXD+AO zi0e*Uv0P`y2e|GNlY%zVSBR&@o#Im^6!Z6PPQ%FOUtdEVc4 z2U)Y(LB7zdeyd?CE$LHdcV@qU8RLib)P_0WXmxUwONH&l7u?F3XELFGwzfWD)!IFo zGkCC5G0IVb+t^EK>NzdO9I>*K9I4|ZJ$UbV={fDjfh*Lsm3-y!AHHLd`fo*+8?Abf zdZ`cRxaMMbSlwNva#t7WLjAMrm5q3xf?L|cPEz6E9eUy-t2p}yyHmT8gNhI{dY>?e zGj(YOWX;>u_wNFjBN|2O$;JM@ zi9JWK#Bh41F5K7JM^xV@gEMgFpQeDlM!<>4q1tgYI|ZEKN?;9Z_7GQIWNUaZ_$Bvv z)+)XaAAYVxmflX!Q2*K{-T0CjC-MJyW0Csc3%#D1v>Nx$&&j0I$AUW!1n+rn(NQ<7 zT8nczl+VxwP0fYR9K}+UGgsEYtdIA^`#HM=+{El4MW@2EjLNXGv=GhuYGVXGvIB2DW?As2`R1mi=OoeHI(%+T&OMld&IDE5vohTpA5vm z^r6h)t;EDlCJoz%cOmoDnk$St5FBmrX1H*CCl~0!F7!9)fU#g>^m7@HjcS@qUwoMv zIXFe$Cve-TSJuLvdfzuwo3F^yA^Z4!Gcd~h)C*vlW4hQ$Ir`Vx&cuV?nY#Z`x*m9t zuC=IHsxY&Cl?HBHgqZ|5*3bxxj?PbQMxAy)4qyX3Zx7%3ckr+2?U@m6zy~P`tf7-d zYg3~{gP{+A>(LXw*M__{a{MZv)1BDR*-q+&8f17EdXb}?pH6tdpFk_sWH07=@KEWy z9^RtXJV~F==e*lpq)9_NNhdBkb1&oBDP9bBBP<_xYlFy_7^@xu^P1O(xg@;I$Hb>8 z%m|%{jYSGDPb0syVhWsu4n)vq{BIwbwC6;N&K$$OMjz(q%nI)Yz-b7!YQd)_%^b}> zS8kL3C_{XF#_pIenuYJkht%(j`#Z|q^YE!>!|yS{iG4=S=6r;gp!Xp!Ec8Qniubv~ zmD-)YsVV2W;0Mb{hWd--2N& z%jSpg%X9rnZ!%@Nz3eW^tmA{N6zWdQYicXwh+_+b;f8;-6-Ro~A>g<(8iFBig%e54 zpHj=HCrf4OZ}L?q{0>)9+x}Y^em(WO`!z6R>PbT>cHpekHE>ZLeK2e9TPE#PFk3y* z{2MeUOUIDAoPD!&TR-NroX=k5k-5wPgW=)?g2|rlWzjSAOXJwF8^heSx;c}%h)G)= zMC%VeW3IpO$};~_|EB1#%oN>TI!pgBhj_wF<1#p~P)}b=GV4ud4EGir^)auLw&$;A z&;F}J*rVy~35Rb4S_T%A_KBncSd^+!P0}j^oi%rZ4m_HCl4s#F6 zbhYRuW44BXiGRokhcw2hW7DY3x!X657I0#-7Bw+*{lZ;vFl)i?^aOCFDiVjSC8+(G zeMC{)=Y?yz@;!JI8UlZUh!2)*J@J$KVP}vX+=r)w;mwevox!bikXilcNe%jgW_b7Aoh(E ztrK?M0tcecf~HUCAvYPE;4Yo3dCL2o9Rdu9-LaO;e4xp zBu|Y@=Y79{gTuLQuqj<-U7Fr+3a26{Lz}+L&^E*uA9(wV=A~#%UC!%Cc6>JeMXNbY zYwb?eJXI6*XyrdzYG|A;dhU$zq zhiCp!o9ExON$v0OaN^Wff74GVYE;=|b$XwqL#8F_Z~r6>MJpzcbBgvGn5H|}-D?n= zp@ZjVXhC#9SHTgv@*GYKGlk9MhwewgoY?PtU)Wjp^4*vw=aJE`*zu3^L2J)jM%B+P z2}kpZ%d2AI@V2y!nd~o}JNe7iO1?5EzrXZqUPi_wSCmrggXDYv>hj#Vmi&sSBYQ^F zmwZnfNZ5{0v}8iWvbP>}QK+2#)=&qEsZbHQj#tw!pTR9CKZ?DmE~n>%kt7552G5nOUbM) zC1k>{GBR&XHK}qpMD{LdAUWICm))akO5sP9d3?XDB%(n$&ab)z914+^ zokHb!W+S=qprPF9(m*!aLNoe#$9CDGcLG-}X zH-A!HrTL~3Qt*9wDVC>%xV>T*_}nk8(*32{Eqp6ka+&$RKBCu&%YXXfWu`r+*x z9kUW|;Mec9ZKY2-y7q5f6PTq7;DMF=$4llVc#G3MZ`n1;TL#4BMXSD)?D$qiE`6yj zojTT*@lUGCk>mjR zmeSKgq+@&|`HkN}Z2f*x_}pL#?b=Fwp5>B=A)j^b#RuB{a*Q@fMT6&X5h-81p!6a? z_(Xivp@uuU!iv^By4S8l|7f4SR*gCDCexzwh~KP2QrD@N{F_}!d|Ty~rC_Zd%TmCp zGxhLdPpMz2f^-WClF`ll4V43;C4~EbJJ7pF!+_$`21Pl_Qj|6=vUpw-J9R- zmip(utR-h&))@t_>%%qo^heugIwdq(#|8ea7JsCvc+kz;9j&$lWAw*MbT;aJ(U>ovwQSx`n&agg z^t4}S-;*!&R-I_Ar16>#-gLjdtJLb6O9p@Pk$(&17LTjB#H&O;Nvz>3uRB$jL4E4W z;DHU~y?;%4Ii`wu91oOQRf6Qv>|mMiP)m-^t|=AH){)yaIsdmBO7QkDiHvM2r-n9@ zvF7H|ep%S_0h#xU2IL(GhV5Bs_9?-F#fkzb&k_-_x@;5OY#vj zmn*+)B`(cQmee<^z3I39e*a$O-E(a{_qm4Oey?rXeATuyzp2lPPul+DTeUUeA00}Z z{CiKG{&}DQPS17u@lU#bQ<6Ra%PDAf65AJOxSe(vS?DU4(eHWHERVeEP+H0yt1K=X zg5=KKD)QO6lH5f{``n$f((FxTNh(u~+8D3AZ}nvC*M`#9H%yKjL#26UV`*MKOq>^n zF%NDj$(!0s)q^eZo~$mPTRMnyW6s60D>`ZDJ?(Msw7VD8J()*w_K$LbG{}wZDpdTkGyJA zLDIGa%h6l@oGR9fv8loREV0@*gy8Np*w|vl6V?OAnX|J@Y^CMk%B|;OIT-Tg_ z|7fF)FZ4YgRWn<{=P$;5>w$wTD{C(Y2cXeV2wt_5rvzsfl6wIarBd}^IsUws4A@>> zp60D6d#eXX+t=mficg@dd01WMrPPrJQ6WJPQp(G}2D*Wgl=T7)BU)Lr?0nGydqLl#?w#3gDN? zEb{#qO)2|^I{2-Y^^Q>^UIvkA$+{{qPQ!Xf>4?7fwc6JE`t;gUy%YFGuQ$cBZru;P z^dVl)=1bRyhBWOtD?vRr;G;0;v)&E=)WP@fDhV|EkB?Z~A9WlAij8 zcRSed$tJdPdzGzpr2j5zi#EYc^2ehRviwAlOrz%c+c8vjuC6H^u2zxQ0YNe&zNXB! zZ6dzq+sSU}Ax%U2$g%dlUWS;S-s`fv$o>5t+X6TO4HRR zBblkcQTK#IU3ZLLe4V3Y_KDX`Eu(aXeT2?vena18zt*%TiMkjr`HOAn^M)0aoTDp9 z=DG&*WNt$-ZEhsy6~VG`EjsJZ{bbLeN>aUh3klfOQ}(ZKM;#X^9ohRoxFbVAG3ezw_a!-*N@Q~`#$P` ztXC@33#r8(YWSN+dh14%HrxGPE8cmdg>0k1G+yZDrf>B`>NlNTBvY+!uF{S>zHd)a zJdAwB#Vr61YP0yY<)YJ(@4%knZ_@N`1=SR!gN<>b~K(I_@;8cME1hDZg}Fv5z`u_E)eglb-(L zA?|5~{?I8iV|4GAuljoVSN$4}&OyX)O+c&iN60&E zT>7EDn;W5%vmfb&i63vidX0@b zyv#MN(=bWvGShCv?nw*w%4{$Bh@nPZLa)cNGyX{&$g;1rYQ?&v9g&(R-8e|hOzPv+9h zmjDxu+27Rq_=}EO@krzG_lB_B`EmhiIkrN@am;$D4>lzZQn*h#HM;n(WfqwWkS1eiML$kS^TKiR_gWa!~Sp&iJ#L@0&Gjl;k9t)I-swV3}>Gi ziFKuo++jEN-y--8HhTbv<$_M`e@N5D?AFKiJAy9Tk07dsf1GeZeD* zZ2XUwOuVVfcRtkpKcaOKx)a^N%F8gD>{g6f=``GvozX+f06KYOX(wWIJt`J$~a{ZYd?^d?`kjk1~^65{KcTYh@&Na$7^U?Ze9=wdShqKL$WwL!N_G6G z`%`b~x*glJLi8$q3!yJh$Z<7xx~F$OJ=T6BU+KNv-_;=?Qy<}7>){XIeK1(q)IYi` z=DWr*M4h&@xLl=we_5pwo)+b0LhsySyT>5?Mr86@?3Et3sHfFI;!mjFb0@yMeXrY{ z-l;hVuk0>wv~$=UO>TGwe&I1K-sh|uPu|p&;xBYkk$3uG;tRdDCQ{$szOUcDJj1Um zTF)=|u0!8bBi%{T?D`4XuXwy(q`vISEMVq*gP4XJHL6Oo-uaQBdCR5i9eVhdi|nQ6 z8FoiK%v$moo<$Dv`l)@QUO^}K`%2X@a4)1^xCa)hAm2RE9<-qxzvTmTKgn+${9hj6+w%HSz@gNc%n3p(fAuLw9UL%ni%$3V>nZH91^rNnlX=` zq-pOm>>x46i+!D@BOAo4^WQ(}9mMyAE@;(u85*1p$Ijaktr!P!Imavue0^dqc65iN zYvM&TD9a{jCl;XYKTW_-HBmc$P1FO&e`|JEUiZaI&GF}ne)o8!RW97Y@AQgZe}7hQ zd0)a~;-*f8w|Js|U%k|}Ki}xbEAKUL@Mm54CRP`$ z{-cvD$=bfKQJ*t>j68?eCVME)9#Ru61i$O&BXx`8i88Oagw87^JKy+=&CUu^BDjhy zuUSo2f5Y?dculEzq#m>KFnMvhjU2BYE;Cwomw#9F7ytLerSb9c^7PzT$?>X>9In+| zrc|pV4=dD>YT5uD;JT7;YDKBzSX^vh7m?rb#U=7(A$g95!L3yIukLtBcK)EDpa0c9 z`M;`7@Gtds{h@zuywfddk$TS*p(Xa;Li^~3I%HqfF3y*=?t}CAwq4Pe=13i#5Upie zf7iELKdN>8OKrdRsWwu2qhGJ|#PDc6R5woRS4_}h%jjD-$7}gZ?DgNW=tdr3N?Wro zt)HUBvVUpCeQ`Qy$Zu^^GeviXv(wkbq)VTqYP?&5Zo%hsfL)9hKM|!b_P@|z+ZTE} z21kWmPc>!GGriLGy`J&=s@LfqD*JxaIdjNyv^@j9;Q8TSQevBx6VoE<(gi_q-Kxsqg;mAW zx0)1gUsFuI>xt9oMzT1gi465pcqxqfZyN^+oRe!1QbK7AkN8__<}4(+$fgB`@j>zjs5jMM_ukqytj)z6D# zwe*P3dI|T48NY7nm1b9U&fXgunf;G$D0)ZpOunUOA6-^cu1lJD>!z0P`9iPOi_e_a9aeqw!A3fi@s#S3KH}FSkJOrw zOJ2=zmV{p56z|YYUBzA`bK3mB9A)Qw_R&tTQ;{cG^S}S0-}#;oAN!zZ)_>5hPEpz} zdwe2(2;cCJW6s^=6Jp zEjuP!A84!&qJMiZ;++->ey8zMVsyOgXRUcLM(0e9(*i}(wdo{gc!!vMu+!1W4ZS~h z!3t!!NyDRd@)%sJ2VB?7!!vYfM|KXL+R1XXU=!y!N})KoR>#uRZ(E`^==xJTrF~WJ z1)uf)l22MM>aCi$ywJ7n-fBL_Z<>iu>e$gAwDzti8tQ#tr}cQCtA0My#7}Ru37;o^ z_Gi5n_C;O1V|DABL^Ux-%oD;c&jjux_tO8SSqt=J7hv{!w ze>hO$)2d6pz`8PNLVfXxs4x2`)tAp78px$NP2}UN(IkMz0>EGKl&_ZvKsq-(qUjnSx;|jR>KG#|146wHG851Iy}~` zg>PubV<&Xy@{{U-e`#RCCq4V}Cp&_lb=Qoyy6ePi9q{^%mVFqbKIoEMzRk{5QTX%B zZsO3v>FP58Gf>nL|tepMT{+E zRdPKkQnZqEI_@VmrgK)SX#R8@s`QknLkFx>H3<)=>_Nu@A<8Hu6)x){_nKf z*~fZjSA?#5d|kU%xUMS;-O#7WSF~>SFc&2K#hs4;qIplM35Ah0jkUPWRFjTRs z=ME=X{=-WGymHDxI8DyatU3w4SfPsW6Pf9G=1SD2>wf9v-FS5V`J&x|@LxRsLemT5 zJ^1>ao*DZ=bC-Ol?l#XfIP{*zr`*xed!Fdod++q!^Jx7im`rJcaVk_&EcmulK&pmmks|_gV9u4vj4hElT)s8 ztc`~l41vkL-9=)akeOCIUX9L%=-Ey0G`{!`{d+l5FO2!DgGW5oqz3D}le%Jn&erUn`P`$kNt=8=Ol4mcNy~00w z=rMC_3uYtax3@m|N6(OBYEN#9<1cGDk-@A=T&4CWGZ{XcJ*3zq-NR1(zK`S~@3ugj zAxk+mMkkdC*S8gZ>Zu3eaE1Tqq#F^seANftR{oAwu6ADgcDt%WcRkj5QE#=wM;OvK zpOF80N6jnW)C&FShpnFJg3H0WwD2|AsZaFM$45H8(kr!@9;SvY8YNbPsWP3N>Zz&f zJtRS=`=j^bYr1>VPR!Q3%jOXta;&$jw0Z9?={#q%?^KeLM_|b2)RDFAYe?p?N|La* zviPOdk%S}Yx((aPqNLXHZZ&-cb;PkPEoE>(CppxxyUZQaRmLxECuLn*%hoFGrBm-7 za$&*!t^y8SfI&tGe{qMn5b$oVS&z--lfrU48|8h9a zE6?lrxu>;8Cc65SI~r*JLSI$7ETtj>6D8^eTK>9jc5Hi831+}y55{VrkGo;TX+{!?9-@JdhHe9>oojTx{E$k9wicS3Pw9w}y91)QH9~AHJirB^XFCcH^El!Owe<-LNl? zlAq`;CIRKdXJ7?+(!GM@Ci+QaI!xCgwWUn&`to>vUFks$Zd9j+jHW)gW!peDd~7C7 z)&)w|f34(aUQ?O1tf73a+DOuKVVx}wl&>}0%D7Ff#kg+^In}5Y86O?xa)rJ!uRrEJ z=U#HYexT$IsVfbPYs#Y!b)~dlBWeG>t_+@S4CgS2u&R^LywcMJm5o6c`LTmlEA0AvXawBU|v&~4> z2Xo*8S;AiJ9-}@EKlF7R{Pxh7+GX<_U0M2*23`r%&li7a^ATV5hTBK=Zunj+FALSV zf!t-QBK1oCA1%2!T)o@<(#8%EdVX_~4qr@0&o*KN`OR`Y$&r|w2-<>+Q`txFzxIbOZ`E0RjD4a8)7X2ufj94CtRB4a zS-lRw)!8PGwG{WA9oM-p=vL?@cqWQsLdh2zZR<9kSJ*$Q3x)mY%waHf< zY#hyQ6q(`wz-P0>3quBci76iPPt{5i97vA>6MUtSyLjPKTxE#=Bp#pAN+X%~g$#me zrZObeKzi(D|7|V^rwwSJ>ieN@9h^pB-HA_vp7yd6w8Qwhgk z5lY|NnLG8$t0E2f!VdmZTR9-)U#Ggs>`!j8=dP0^Y_*mzmzA8|G~I!o8&UkP{yr9~ zqX(wxIlR)_I5Xx9XYZuF>e#95#*ZP>r8xS`fgIS6_-%d`>7Kq8a%ct2mD{Cd%Eijk z`*RJk38*P$O4OEt^=pdL>^kDIwW-WM(^kHq9W}BZDvxK572E04Di~xbY0LR4g2?r7Ma}EPNgrX zRm@@CV7pU4mD;0g9ro(jYX>y(+9@?_dsE}f1?%FbaXM_QiTo+!EsMAL$=c|0Qsz@B zS?5?<&h26b1#^7S7uZzK8_0i%$N%<%%{sfLn2xO?J;s-iUCgvfJ&w`|uCKM;+dJwo z_^J;3by$Fw`@*ZiKIZW^Su?!!X=_**xh zh7q;SM%on>mjJU8veLmz!mGN;iZ-tBn_T5(ii4D#ZzDeQ%;iyg6UolUAB*QV`hc1A zKVpE!z*$YU`1t6r`ugPuUBB3VP#jNTrpdcRMmR>S+2#6C||e3lcQlW8`{S?1ywsX8D) ztV%Z&gWTrQ?=!VhOc&|*rl-s}Hb9K2j}G4(AqOu{kkqVcvNmnLJlZx}{=`lbpRZ%- zh5L$AMoW3tr;PN+yEdprq`Dn{stf-uPWW}?3 ze$oZ)Uj2$z>w8mIFL|P!M}N|nD`RvG9`1eDe8htLq+ILPvKqGYo{%nLTeFKSM+2R6 zu$iRyLGP&-AUh|Qlk(&E%$;?R5glL+1i*tpYwl7vO8?7vul=3xsmG$TdTZrLwOn^v zca=J;Rw?JT!;T_i=@^WvQ%u+v}M~!eX#tiF01xI17-)SL*W}8UiYn@ zulQbDM$q3c_@uv*KI@B|FS?=E7rh$u1%|;lb+!!GSpPWY=CG^qUTWg&UF zFV@0;BIj&4{?GTH*ncq0)qxW;wG1AmjVIXGZJD8O$m09+EnV$~Bx_81oR<3*rJ;2q z@S;R$?>)?r+QC!36{&_9f3?0JGrsHOE-l5Ib`LI0zOzJj@sPBr5_0EuSxH?~MSADd zlpaO(WIcLwxu>n<#MaI-v8cCLR2w9oculrF87tmi6QumU@yr@W$<7L6WMTFwu_+iK zw}%gr_OL4dY139FB-fX@3;bm45+|{nOh#nypW3R*GYvR>TNjtPqJAb<$iU{#@3SKcN)sdYDjq!YVh{U68ai|%3MTD{dx)gI~0>9=)7=p_w1bV{du zJfgAP4(Zk7`?W*ey;@X$pE^!FtT*bN*RMZr>(i$%^$4D(#euQf^(Fba4aiF%UuoF| z^8Lg`7MypJSr6Q#r?a!XhEa6k3ar@;mU7{NDH%It&wWYJ>Yt*uj!C%IF7{ow+ke(* zW;!odzR(x#o@j2^Q$2L~g^r1Tt*5Sj(77|eX;?~>z9T0(em<;038@wJ7t`)ejIZ<@$Y{PCyQha1~2ODFDvTgq&^^4bV}+$l_-Mxyh- z4c4n$U+J&UuXW9y_d59S7oAW#TxVa2)!y?{wFQ3oVgHHT!k2uNebtTZHFnzyPvNtx zELqKbF9hcOeGe)4=q=O#^_7gSm8I{)>S*HhRohv-ep^$HZLTHXJ!;9&;JT9c5`WO- zy0YX+U1`#;p#+s^DZM=drA>zpl76nejBscp2amRvxV)BfuyS+RIIXd`?Zg8`FhIo#LACl8k=p{-XEloA+GH;92l}^FW97e5{V|UTEgy5M6Qj7wn3^+OSR{>r$@uo3GQzf$G_8oA#Kuob?Dm(u_tj;1P&G*(R!Kr$mK5()XK7d3 zLiRo^(4lb9y0?te6ZFN2vp;FY++g(&e5(_h1#1?4ScUtqwBOuUy4T^Yo;n($uS)&U z41+&e5R_Z&n3mF{z}s?xp=9a$Q2|j|JHUslW-W%8WfXD^F1Zx7rdkW9^$gWNrv4er}DG~ zOluP{i8m1A>-ie~GfO-BkO%uGMFT8Sv|Foq4Idw)8#_d6aF-}uv4;M#XS8me%9+7y zY}zPWuWch+ZMV6^FK3UppR2eJb(KWtV)FHcrz{L9CXa4=%Qt!~yH8%y{*Sjjj`NlV zmrIJp9$zWHy@dSkUQ))<_jL>?BhAq#N73&sdt6Cobgm>-CsmO@_}vVyH;@YrT1e)y zcG7ieSDCZ4Cs{v(WcTjja4tv6{pF+aW)6}4{{5w>LU*ZMyt(Lbe{rC{Okg*8LKObZ zj(^qW#Ah{Z@Jz@uWpi_hmU(;E8g$%h0B5dA|Z zk9n^Sqk{B0y|UHvi#qr61?_d>vbKJHRS(s=t%ut@(vZe4^>Ee)jo$GMFXJyAus2HU z(g*f=Lnb{r4Oqza9&^PLQMTkJxJUys^p6gMd6MKVWz<8;#yE@b5nGAcV+(#4$j)3Sf4xA#|Vwf&QNo(t8Ne2!O7{I09fCp)1}e(V~fhLLf4Wn_|0Ww*2E z*IZrSlijaW_Ql!Vxfn=BGn}l|^<8DQ723uu4{;vtE=A*9#W2l5TDP^94ZF}{cHqI@ zK>j`6fSHxk^mX}Ub^Vg0dn>1CO#NiF_D|DDTe5*0;3bBca(6bFGU4nF_Ym>9$1eLV zb2(Yb3Vyw{_^e>AGRje|Q%f1t_LQctyu^$%e87a_;+O0tLrZx|n2W27{bn!!iLHc= zx0M^+Y^C}jJP1xUGS=QsR^_;gQ89k)z7jI6ZYfE1XAZg9R~k1fE4?mPkYXe7R&J{# z+t>KZ`ylzpW?D@6;#Tp`kPxUtgvfSC#2MOG{9ev+Q#xCl!|9s=B|_)+$&7 zj2>yni8uAq=_|UX{&khhw>ZD=>B$C9)s*LQ!Lx6A2ft5vT83UE)4+_qt-0I>OLy5z z;37xqTj(Ys*F0qxEU~D;o^l;d`n)ObGHa8YoIC3zSy{I7+rnJp*pX=X5FS|4FLF0N zXg7;zI`+t2%~)|0=EGGjtaw>7r(M+n++(eco@hL^7P7PRqXk)8RSYD7Ha>b=q4s1S=nQ*RS&OoD>52^f`6E@!{YciZ>WR9tL5yC9 z!Bb_{PyNJfDxz+P=Fj+`=eCDvjmVGcUnx{O;otj}{7oCah}84+dJoCMt~LX2`Umc> zmCVMDm`cDJYkA$DrE=NmiHSQNMFyU^6dtGLx1$Ajjg0< zpEi=aqpcjg)lQziXd~s#TFaMCEv2|&1F1f%l0?JSU2J0`Tre=-b>X0X&`D?>2LWoo6nDKINzbQ@=C$(-MseD1GquMw?v@q5|y z3)4~5^ecLN(6T`xI;!+no!UH1Ka~8X{rgAgs6nw>=1rRBvAgo3Df>;gZKeKGCt2z5 zBG)Fn%JVg@;%e_K9>(@^ksYda>@5$ahfRiGx|_bI0k2t$n=yK{Osr<&nQv?rLmwQi zObHWSnBeS zuNQd8n`g!4@RL%qHl>VM1yqoCe71s?`H_iRMS{0gkz3&c!(FHgBq*GdY>Wyn36pk22A()qjI>#QMY%7*u} zj`JPP3B1*3A85&~&(-4Qdrdg{UEP*O=^gkK1EveLw3V>4V;Z(cU*LSSR;-r{m^@s_pQfy0cQ08o;NRXT!cDK8I$*$p2g6D1*b?Bx;PC zjHu!yKCr8;lPzWV5OS|N{crA&r>)Mx13a0oORJ`#l_hH@??m;5!S&QCQ6J!?S&#!C zbwRRD4N26QD-!f>jYMr6oS;Vs#i`Y)7+oWsIR$$O3E?AHQ4O#a02W_cQKkgGQPGxgx|R6PR|^;}Q>%wy4Nl|@l^ zH$hu`PSStprD({&RP|(!sXseRectBk?6n2@Z4FsCjq~;PK3LV`@lY`vu^mP>%UyV! z#muD5QZwoM#!TkHM!YrML@KZgyaskbT(D{w`_xX)3$*9+d_D2KP#at&Z}t{@+civN zO#%F_$_}!4zMH(d<|SiKm6VA4<)qk9>ZVEl@+Z1F0f==ZoBJy`q`o*#ZYVFhG?Wnb zGuEzbDy8k4N*}u>GSH>I3_ev?uAHwX`NPUfH)?vHjyCkRBCkurl>QW<8!LR(hEqT2 z_s6ewb^J5kJ?feE@OZ9a72oNJQ{UA8Pqg;9kp?R^OS>^En{n4zPWQBtU+h9Xv3HWU z4cL)^<+ExaoR~l}8EMDK9W;bbd*&)1JWIl3V(Q;)q*(=~_jG<1OxTOt)LI{_X1 zkGgO9t&QD(>65%)`u=8wHu@OJTXu_*PO>!dVwwR@y-)SXz z>>@9tmPmzb>a&2%mp`flHs`4254`L!+h%wsYb^dlbF{$vCI9G4k4SwJ_gf#PMW`v^ zFH3L5YG`7-c5i?mIUzxvd&g`1e@S`)ugx)b6syi*Pcbx2YbGSaI_1v{&DN_Q^0Z62 zeEmf(`XcrKADFOzXq~Gr9kX>68k{e?M+<`EwPISdzNiwdsZoD45N)@ObsTKoI9)v} zMq9Lx(hJ@Rx_5DgdIplMNLEDv{(&2x`Ek!wTq@d0$2ZPWs-}xnx$P)kb`D~)(_Ti| zIZ4=67+E>alJDXo1L0VwzH^aPGaY5v4O`g+TcgWsxOWxU>BCEG=)gWH&)`^g&X-p* zlZ;kYGCjveCay!f2y~S?UEQS9hT;QqN2b#5SL zX-y;}y|El{XeYDvuTsxq>mqHGN=EsxH5$o}tE@+r7b&!)mjU-(B`kN>6q z^}cG=(;?bh0?{r>C|#hvnyfj>ND+GS6v zQpZiI7(2?P_3Y-M6aO8@_eO1YlAZmh<~bV2?&tE`u#9IV>HXjF`rq&erTtIVOr27OgHEK)PWBob@Kcey@$8iiu~dR>>TB%n#kf#yf&X~ zm_ymg^9l~KpoNnRffMj~ggvZ6cqMq=inS)=?J_w{>0}6Q&C#q6Y3d47*``{GdTmbD z!pBJ(HaJ=Pdf^*?fIlZAUQMWzZd6TI-y*VXdgkbH7!oVV+gkD~3q1&Kj~8A@^Gt0O zpQ#m^W~&)m$tw0lhmwzDlA5hQHo=`Ycowvr~t z;jlfkmved6GNY`G?D4afZqv6yr;(kp5zYb`Z~e<#aA;V{pbRu?7e|?} zz*YVo=OK}&Jf(KJj|A`V6{~j@#pkuZM76-*@DPc8)A=?ycSI6xNGL*FPiE*wbc)zAY9;RjgVJ z#CMF(qhz@REreH`Qz1r;eWEpYLW~|58>dZ1#c9t?ug?K9!8-rMn4 zPd$rL&)gXGZWgQU>u`?li_`nmAs^cs>nHnitC8VWN6PnZC^t$qmJThNi1*xP5<%Z@g^pA^sx|jt8;LUrlt1id z#UDn8KHfsg?rbTYzc(WrtRcLC8dAm0PpZ81m1kXw$)^(zWVV@!6PZMQBYEvS;`IIb zKRWf;PfeTrO=lhWs_S}v(r8)N&Tf;`Mf9F z$7rJ-@mfAFNgdfExp9zPl9s8ubx^AIwoFyCVQCtN#%FvbS-U(=)Edtdwa6n$eTSv$ zhMj48@pp=j;P*UWA9&5XWc7Q-?7k`N&ar6UZOJ@70mG1NCa+rLCM+?AbxzI-c}HJQ zk&pAmSd1pYyXbB%AJ>wPWM(R**-QF-ki52kO(dK=fh!XX<$YBHVVo!-?~Mrjgv)lH zEKDhE^AxV z65HgOVzs-vj0~tIZHM5aE~+M_3(?9={N#*JX=$JAF3r0+%55?j3=Em$q0K*XNYK@F zqjlr8-+JXORSvsH^S#a!SJg7}}+${X3v3a_aTBq#qY_0i}o%I=+8dD-&{en`^n-ld* zW}@z(-)e9l9fLYxQjZkf@HkBaVPCHLmQAlhc6`GE^{tH7Mr~L&u}EFWe%U>ioS{6j zR>%*iUW-|4biUrZLvHbmJe~F~TMv3<;c?2+4N2MRPG-6VJL!E)a`hbf3>}zl{&XZq zN(%JJQZh^Wk<0p_NEee4P{h|d);L#7-7L_4<;mWqJ~Vwto+%pa@)Jh#p&cw#-m^*V z%*B1Rsc1LOssb|P2jCM#KRDEroOklbOYSg~C*ewF3O-PDtXo~!P1_B#x~7GA+FHsM zTPwNI!cJbJDIZApkj-aHkO@;thWsie6LQMP$Iazs^}0&bX;ox-YkxTuSw#Y!Dof_K zN-}GIWzok~WbSx>F&|w`T%D`23+69_URIElB44>z%}Z8Qb&;VlcH(=DJ*_=FoA?US zd9D*?#cKhx-^ETbI*(nOj@_8|y#A>_H~i9b8 z^&K9oofgGwalcq~svo6Yi$!VWH__;O=m$*_^y!&+%_|?L^|GV2Ki>88?A)K*AE%G` zeD*J$q!ERQ8o4Y}VX*%5}MIGt!%FamB6(Q+* zJu+RBsp(G-P1C-3Y%P9e==BcSTEYrH)x~^Wo=BE%Q}*`Ba<&-{Yu(vcEOW>N3pAG- z%=E92J=Ojnb1_{>9rfHs=Kru0H})8lXIjgPHdb=S*-E0qti|~Q%*>Pa^6zzf>3GIY zI*>`R(Z^9Hd%K9|Qg>N*vY6D%@{+!{O33@MWhD4xMM<9LFE%5qN}hF9`LA46Y2Krn zY_C^Ke&E0Gdr(_ym8&hzt!v48-&*pqX)TF!s3}hhYRHa+0P(2kC#wdOm4|sg@@rl( zd1?c9u_;_X@&ZTK&(S}3QuSw_MBP(5PBSD%cb@#KYj~d%Cr9hO+Oc}SHeT0tX*%k8 zrVb*D?fu9s^$p0;x{dPnLwTNQdyyYI$ivlqt+j=H_`X>hMNek1I#tWePSK_G@q4)! z)9Bs(=f&uJi#T1fD^cwxrRYzznxWLUNk8K?nVpVd+*vtw;a*mt*2Yg(Y(%^+{28O6 zM`CnUt$1xn_JQy2Wc4|osPWWa?*_zc>}U2I;Blt1BioX_hb6GIJ0+*-`(n&78m6h; za#(q_GdUmN=Taw|f6vrqWpebLLB6(1&(l5M^7T+fGVaOcGpJRl2l}xa(h7FbKVB_B`XbDqgT=eheP8p(ZXf{SFtPE|u$ZbTL@dT{P{@+x;`YrC>p`n6P! z9_Dkn^EJ94b;4G9$ff+KajZZ~?j{c~z*zQJn@Xoc#?oXX{~k&f&u{d%%IG&OY^CxB zTWT9?v5O+B7#5j7Y~`R9?BjH|kUHcM9^Of25IOO-ZOkPq)il#xgIrKQyP z($cJ4X*szA{o!PJS+%>O_*bkbQ#qr$XH}4kKg!F^mKCH9``ZgQk?Q=@UHYGPkkdI< z610j;-5g`G_Q<%mg(t8qO@H@IQ2WoEBldCnoLv>)XUtIWpKbk-pxr7ZX|{Ko4r-LC zJGk!#+o~=A7Rb9$(3CzH2B$@vM$(mao^DGc5R?L2rd$gF7i7-s)PO z=N{BS zcmF&5-rN)&2XFaW=@hk?nyfkKP+hObYyC5EdN@5^{o%Gw|CFMgDyQr4a~UuKGu5^* zL&x>xv&F9J*oYi${gzn?byZ^Td>zESR$*42)^UNkN8cH9ra*0(KNh?pUnP>9Vl~Be{LgPy$~tip4vX zkVRJimOT9@ELR6#$YthmE4_gCoS1WGDH*YRl*K$jg5GDP)qf(k%SlcU2fQjYYAKF;fn5@VJ~}` zbG-F%lo4Kz65{MAMIjE-s77>It5*zKgqj{O%xqGw3O@%p~zNIfF51 zOFMHkkn?%P#zal;AERFe|IxBfe`|bRxK4`vO^!sQ=7j#%;CH{Y79kfB$6Z z^(UEna#NNrYnr1Wv&avlXYY0}Q@?%8(j|j(v<0=%srxV#Ewc2-On6r8k`Hd5p(SJ;@g>=qIEi@ z=ycA`2Vp7tc0{UfyUp4AH$%5{&D659;a)FE(^f&`F`XhS=ytZgdzTMehTP#Nyf7`&_Ijb&(zfZ>3aWNs#eC|xY8tD z2hHS}Xq2I8PcpR3m2|cCN!QyKGPG+i*q`^Z^6p*S@ic z$9tTJ0eXeca^~n*CNgcS%XWmy=&i z#_aNxeCkO~pr;&9(nyzjV6=Xht?v(G`YQ|!puww38s z$X2~=EHCfDPPjnUd7WH+h1aIaloXu-hkfDTIBoDOMqOsb>Vac%nioKS?HQ*|H~1Va z;$CbTujla7kLs1CUhD8(-pSPcleil{<)~3L^71Mb>V;gMe{w8~ZzGp4G+&8f(JJJ_ zZeIYiVG@0GRIXn92s(QW^`kMRG^E1@3^&(O|mGITK6z5R^IdH+CN$Y*r$ zxGY`B=iwDS#xD2{*O=A47@DV}Cg$sbar9}YB%mBe<i9A7pG8nxqG&l#6Izo-S)-BV6~Uro#!QPD?FvOtC#G#?Ik_tc#7vyX84nxrFNX1 zM4z{ks;gmU!)ClP!B|?IfKmCCto*BFbvvW|wI%zGywlqK^0Z?CtlM(Ac#hFLzvpUH z5}L~cGGEjAytu0R;F)QY3@3C6er>+5`FLG3*^3H=SJHe7`PjUNesy^E$zFQqN><(W z0^M4Q9y}#ipQCYqEy&VLbkGG}Svn{m%_}2aS01I_DwCpn>m}*pvxz#U8rqS4yxw|C zjupD~&CT&@pBxJ_G+O7Bi&6VdaXNZ;f*N*C(&ex5NB*EX_wH{Ot@z`7sEX>^o&D>nw8AdZq3NR+Q+#>A9$WT)Oh>`{qyqm zLI|}0eO)T-j`8$k%NH9;S+s@yugS9N#(OH;#$L9%rf0&=3RHmzvV80_zG*Y-lRcHa zq~=6VsdvkRTxxeI?CdW0kGqQj|9rp7UH%5TNc=A51QV=eb0lBGNGpkSHi)9kL@) zooB>r5Aw;rQ9n)moT`5}rD;^fWSx*3NG)mLM?1(r=^7oMWXU;t-@fqq= z24CaRG+k?%rX{M8L6@GbTPw1&jt|$-D^qPatCp4}A9h^6hI)|a`Zr%Y?SoapEbE^@ z0~yraK&)qyA4)dM^Yw<(^(ni6K5$}#t)%%{3u%j|u1=DLTpVgCt4CPMvx`<@$N4a*^PHOD1k#)hgGL#wDbG!tjzFWw-ATwE+Z7v5olEYogQmVrQ7{YA4 zHd%Oer@~xXh&O7!vD65M)67iy6|=q_4$NM^!Wo4vdOp)c`kyzJrkr8NePGs>vXC-4 zmhyr3EqEL(^#E$FB@S};v4iBUbdZbP9c8Ddg9N}MuFX7RMS;DrdWx>xm99Og z865j&>z=Q08IAG1cO-Xy0-WohJY7V8vT;1TYifnKLO7M2mp*VLelvR?&Rw;q1gwqL zsu8K=qcRStQUXTAbVE5)01IL#nZDETD6>cYi8{7*6GQpkSLEO(GJ?r-P4?iq9Rf%9 zVv+8spRXnb*?Jyb=OuMiW1AeZ)0oXy;Ipufd(#C5HNE9nY7*0-S(>&XQ!lQDEBP>6 zTQrA(7?!X74v`l+mQ3Mz=DF;MKW9&RTMO6?_`fT5BOl@*dEd3kOg(9VciB?@iDYIN zWFyPxSxMtSOZhv)Tnfnd7=&-QWE)Gl3IE0V86Fmxe;Jy z#U$ek?meHnWd`}gbyfeaD$;}RVNp6#e+P(|tWvdVLMAYCV9Oe+E6@fS^b!d=MBXbu z-=5d3|7`>L@E6wYF!FdOkqLhZW;wm0e1l&wyhsc33$(+aJiXU|JoPELTJIOTtW)yT zocZJ7mgMZkrfcr%4Bbg)WR-EbJGy4b6U&E!qkNs<8 zk&aw|ziACwpX8v#aAX6GG?JC`O(iiGUM7BahySQGVanX^Yb3oo8q!M} zN`ExF@^|4&X2V+}AM$=@X7J67#cGbR^oxS4l>;LMjnjwv>WUj#%lMYA?icZFXeei` z@QA=q*-8#eM>OiLsrv`-@zD&W`!vJWG#Y%6u@8%{L9C;S}y5cmP8E z((*WSDo;b1y&Dei2a&@!U?ki$l_F;{;g6b0J2HX8XVL$oljq?(XpZhw>Z6fV!M|aP zrdq0Op?+EoX9)eG`eibZ6GV2_CnuV0+LIFtG;3Uu)-4Sm_A{D9!vbyQ3&YY09b*st z(i}Je%xR}8S@lumRiB2ZMt1WQGUweU8_DAVCem#x`iFXBk7Gsr7nTc3QEng(KMW+2}Z{s7z@M`Ibb8^%x_Qwg4FF4?~1M$a{u?fqaT^u&9)(p*9> zn9GVca6^OOEx4J>tq!Krs2e5{KRDEm)w9}-3NY(H$BO~B2DQH&+JC7`kc$wOTE%Hu6vpeEs>@RY}0h<-xN(D zyJ7aWICV54Yser$=QmH(sQ=9lnFo}b&s-oUUKia@)B)?0wc*DkZ8;-Re-2L2+Gu*w z7ZcUX8l7WLiq0OMrgKiDzw)Wt=|L(v5gFPoCPQb>MO&MlrdyAonYK#P zgjMMpu`5%HbN=|4!o%a-e)ov`T-iq*o~?7HlDobqSARYyZ#)4mG(X&S(P!k)EAUMH z*8ndJJ>=boJcIWO^}u^_C;U_=p5WPh0uP5X_&)FNAZt9nuX$e=;suywBL4l&C8&sb zV{r?)WMCmnO)O-5h?zA0fo_)1ylRrUjLzaYUji?+hN1W-;EUk%+5MZb1Q(FUZ($^z zqc}?*b7zIY1#vWxF|X)hm}zd|>j{2GW_CHwZ+e@TWS;*F&(#IgmYM5w^(Z^;A(<9)|Q0_*4HCXvGicE^u8RuE|mB135bMPJy2BhM_eAR`x%zRAO^Ab#9)XZbJ|B zF;~a)-;O8esORQfaxLM>9Lv{PusLh-9xvzvpO^gg-UGA7x(XWcCOL>r>CKDRLRtm1E`bH(|(UY%bvs+siWfDRC3mD@69absdB(T$ zKCUy7@sCVpU#zKYD`qO=#=#WGF_r5>&BXqHvl({eD(xeaxw^IV9%Utdl`SN0xtYYT zHIuJlrt)nxzs`dD`U15Tf0loWk@P@ste0vg*KEw>%U=^QFGr8{(o`lau@Dn-pC_NN zk!Rzm@7`KUppBIj|70#dZd=OOTGo;`*G3HEtzlJ=RXEc`E^xkf-e)0Sw^)ncc^hd9 zKjb)jAdk|>e=2V#6SiOe+wXv=#>51Q>q!*9z~DiIxf1fSSRC zyR}g|XAC=}kAe(j<1Hmmiy91FwA34suX{wi1B>9%<>_v8i{97B8TTpDaOPc>msGEk z>zx%&ZTCB0clRh%t~343-&d2fv@LgTXG?l|I4+AT!XC{KnG9d2n*lvFXLI~}m^Rc_ zZJF(7tT2@pb;y|ii$23W8~@2jx{o4D{5#(8Yw&UmjHPB1W2wCv_C_^4C!EUzVA|}a z9-JItDCV4Rj?4y{^i)080H(||&hGPu(u#ZbDzhy{p_+Wfuh(dl?n=_w!KIdi*PsD1de zR?ugL<5j$RgqdOuG`0_D8UtbC22mH^Bb&({Ho(1nwYizEOZLNhsKXD}TphzD+FW?{ zyD%SVRG`<8iJ%627hojKsoNVoHIj|y_%XRRohDExP=k!@!gGqIkhu?r$Z%N2 zGxK!*9keX=mpv9`YnjkYT}ofLDH;~f-c0?BAm1DId)TxL{lE;|lPvKvtC_LkdrILf z^e7D*d>d!oH#h*y<(iON^eO{?;6wa3^mOe<<*_r*%xF=b-nAkVJEA~imlSEWD=3&_MmkJ|Nbf$rort2dGQYiX8-G~^uS zeW=<5UHpEIh6mD1G)EKTZhH3`A30jr_|h<2^YXN061&pW%$DiM}$68h`m3 zGPJtFXJZFu+i;OUO5-=rikM09nK=x1I}B~&4K+4r;T1k#SGY^Ma7PU-0b2nLKZSWk z^eaBcHQA>>O1&CoB5yL$e(>HO_cN1qL(JvOG7Fh^%Tm_lah?QN$;fC+vLmgfu#}DL z!{0YM+g2V&+RAyclSZfQB+lGH&Tq7nt%t3|(9lA5GK-qaIavR-u}m#%ER)JJAE*i^ zW}ty=s3TIBXR9o)qlZzEUSE#SVw`3Q zMl;D59$cVF?%dDx5g(i9>wi!3^=WLO8Xtuup9~vV*_oz%Kqf zxYHN%;6QLE4k*wGcwUY6k*7WvZTd9qVt&s+FIa4fZgq}li5j}xRgtdLfqw(gwK%6L zz7VPO1Fh#W8MSYi$6qm(XwLr*Q%vOmy+HGe^w^nZ^6FnpSy0DHHcYgTm5=GyTboP! zOR$;nt^B!aAu-enZHi1}Bz55CW+w8|03Q7b_&3xHr#qWT;6xMIKqk$dEk<%{kFm7L zGL_T*fPUzvq0~7*rW8HN zt!4&Ni(YELH135+7?$)rHB5}8#J`4;fzM%Lo`LkF$KGniz4OsXnhZeuSqz6AP4hYD z@OA?u*-u7cvy<$6^`Q2qPq)Z~Ex}pP?xO0qyLgR545iX9?iD_p?=20a54^s03*nBP zrPijmPM9ci?~AIiq)QzDA0S zG~w^&jm_>0YcZfmYi%H}iFs7tzIZ_97wB1bo_^3fncRhqkPMR#9r!Zm-tYsQqx4su zVFF!5lUvEJ84EAsM@`t2WEqqxk*71zF1NnORwwq-X63*LWVV?3o1JLR$GPas4fzcE zh-x`Mm^1XCEhALF_ks1dRb<;mLuo^`A8ns+vzLrJa$u-!yc;V`n zK?}$((zEEVPujp=*}%Cx3?@@MSc7PkHHPHsgf;kjIQP0<&($Xm?8)-|byx<+gUrgB zrNHU%TKuY2s8J(|^i)-mnY;h@wbL`A^QN9F)PiQne{qy?^tkF zhF<2(+$_?B{=PPM_H=rl>8?gn=L}5}5C3L(`bcc35mA znQKg>N?%j?)Y+Ik6JyD31Sh_dp`XWi)9VvD?Q59RO+m!XkKW2t$5BBac1s+z%$CvUup$wb`9LbMzEP{ z8OXL}B1S1_p}bBTtHX%H_q1RNwMsocSG<2E+^E&LQYuI+{`J6rG@8jo6_AS!MEsHdr zo@g}nl;uL$zjMb zz?w6c9EewfGsE?IfzH7vQOO<6#f`cP{bD3Dfhw&E$WNi}S-~!*70)2g+n-*XSO17q zC11H2XJd;yhLYGBmM)*clJx7d4so^~6eus8c@YM(l6k`7*W^u7b3Z!C_t*vv^BnI9 z_f4s{#&QDB$G9}~ElVTm!u?ttkA7LSfOEk{@{1#{qoc^tsxTz~!b+S7f20tNgy(TN zXU%Qu&cSC5B$q$`%5F3$bf_+AaGufsdbBeTD{9Bh)UEpm;7vP5X2-1}t<+t;1zLl7&kB0~ZtRwqJqtsX8n10XG~Qjz0H@$3u8!8bF;BPW=4fmk_@gagaP7`h z3wp;QW*-&9($s$qTK?vAJ^DODk5ICX;=U#D@to?Mcz-+D5$ z8qEw-^0lxrUaJEIYKLYq8`fpxE_`hdV5>2|T-6lDH$6-!p1kkupjYo?D3NJ~vJ_v< z%zez{&Y{1W(;w1n{a>kmxizBmQQq|0-&zwmCY$h*}ws(Yz^H8jXhCupBHgJZFa;veh;?TLT9%f1SsU z>=}Ol=zM+7{dTP-cjDoE&8A1#NS|%`82{zqBAwj_M#@gIg7J3P97nI?=gi#;bW(Jl zKH?dgu_<5QPA$;+{R?zm7Jf~7k4x-cp7PF9KRms|`8sQRa`#?C6JDFA3o`RGt3RK$ zL1c?nLbJS)uQljpe(+oxX7gS#58kp2He^?x%dX67>3?RH$c#>a`ug_jfUpK9XJv#x{2y_`rxy$Bs1uTZgAIJq&7NAo%6J!k<9!E z>x|iRRJ?)gUS=fysSk|Ish{{-R;;A9KT@Pi;L2^MUruO7#t9w)|J8+>GmQIv9_QOe z?nL_9ep6seZ!?fK=#u}U1%6~6vfwQY%Y~c^)On8%!clZYBM3s@MDMF?g)Z(ubRQ|CK%;7a1{KwhTHmoiTW}TyJLc;;KA-7)RxI$ZC7vzNy!D(x4XFi3 zi6rJTgRVe*_=5Z)zK^=z#*#-LGK|-C31{*l?whGkMXve7I6n@H`XAVeyq9tDoOhf9 zaojWi^e~iFZ+ZPQ3}uwLp$xpny=Dlbq6|Bzi_FC579Q9~cuG>(+hk62wIRDH%h>1^NHTNiUvY0L9<0rBVQ_SRG8?@<~>?eDn^YAQ>tAoGS%NPzWo|8_d;`<)02*2-Z ze7@U98HvqAW`=m#kK$Jum1ZW7hMIG@n~fx9;?M;Do9YprXU@V#<$I_J_EG64U#V;-`U_p@Yywxo7^L~Yo3Q;{Ya zh?Y_NG zJMcY}q+W^NVIVj7+;m~a)nyfRGMewYlKAA3(Ko`3Wo{o+DZx(YnT;l5!OweAC#JYi zGuLD`(x1CHjeg73P^xU^`|ZH9KAm&ty6V3RnDKQ~_=)&R!swULj(%JanL*ueI1G)2 z8sOOwbQ0#Gsabf$Q}O8>r9MT|x)jGOu1J%Gn~2Y1wFGBHdl@$1O2k8GZ)nKj_^u{T}!C+Ea1yo{6K6tAL}_VrFV1Q=dfbaVix=n_Lb{r=17a*a zx!dQ#TwT5hz1YuOuG}+|Y19(7Xk-&2Or$DY-D!7>r9LyyW?f<1)}v?q0V~0u94+br zD`wjb&^L?IQ`@cLYd77 z(tMvcYtS3;+;4hhC_k77H}OT^yaTV1^Kv79XAXVp)=|uis4shPU)@FcgNy+uq;R9>h^(o`nglSwhiU;c$@c+ z`mfsrW+r?#v$I7$ai6tEw=I^)>r{+P`&&lR(24n5duD@I;8Y)GKKaK;+M^rieBqy+ zjbwUvBZ>KIETi*{O5&>?yNE1IG_664@fX<8+uSYEwA>95jZl`32gJ@2ULF0-d%4Mlkc1pd`Eq zXkabcP#ZO)uXvTOrs(G}PW0{53Uv;>${ptEchM%+E}%~5{p`#&(r|r=v`~^epwtdkSo{NX?hR0_5$Z7=hn7gMfzws{dzSxv;02WNn}}5 z%iLXz=ImRjAGo`J4=u!>%AYp}TfigLRs}FH(E`r;(F@RfIfRM$trR{J|6ku&OJ7lp zvoB>Dy$r8Gb2Os9%({E>Ilq!^ATekIrFpKpp(z<<(2Mi+PZ&oXwwABk4Go9iH=O?R zBHz=T`>M$w>CcWaelEqnNQ$u>Kr^n1=V4DA@9F=M^wn`$rr*T!VQ?dk7ctL1qaHmDvF1=8)Lo?+-Jej$;zZ124gDMsvKOr4jLKefC_iTt zd&F$kl#sIualJwM|y_Giypn(=cVd&M};%U^iEH!#zVJ)J$Voii(& znf=17))9PfIKv)#!1s&iW3wsyXN^Wo;I$Y?j&Wg&Mm(KBjjbMczsTcRj$*EJNi`M+ z)L-j7kQ(T1V{Yy$_5goZW8%>&bf?~PZ6{_M#?_*Zx-eU% zIxHiud-4yxNI6T~n%9V7U&&vxHWzZozd51__IxH4SxfyYnZ?Ze_r8WWcUR7A^Vnzd zypB=i?rcC4R+9JFafrEY#QMf_?mpa$`P@(FXTaafBW^UYmVC`zUY|7bJ3Ip`S+g#N zuwa6-Ghz!_?E8INi^TYed>Oz!mQr48&X>-dn~Pc7ELh`C+cZIx*~fEkcFk|Z z>eG!F%DT9ceN|)kCPZ+TtcE@BN6s+e-N^X`zDabHlSr1w3 zp0QuO$~k3K8PCFg%vv9&DEBW=D?$zRM{=*5A1cUxUj?zD=A%swd)xKO@}!Njv}r?( zDu~xVmG$#qX1dO1&;E(}r5-@MHTN|1MAC_+lyi=Y;8~tPeD)7(q4QK;x0EKR@asDE zobMHJzCXN=JBKLC=lM#~iM8P|F{rAk%nBsN{k~dB6pk=cq@R+sW`BKj8~35uyAPp< z!$N<0TTdejP@{g+p1daC-|@jp%;049^=D;S6iiN<=g;I{N^;_Vn0XK8b16~#siP$GFDl7- z>eFA7lk75*dNXRGrq5CR|JYwk>ZBgdq~@kxRT`)t@#Rk43*yKx=c&txjcW4u7&Yn6 zJus(E+)Tf4-LJxM)cXHEMe|GuO_6z82(;KX%lR1#5^u z?4YKQv&!(N)Y1_9_}EcZuEmj8(omK)tC^$sgkLlDHu|~BvL&AWpnnwPEYHJ*Cd3IR za<=8Xv%^hE&ar+i=A1RxhdA9e_KiuzQ&XDpWl0kj@1q|I_tEdQZN{E;tZ@(6-)B-| z$$9_t^LljVY%$T4?=xr3Gn_#b$m{6wy(}U(T1u`b;e8YCr8mQpeQ((!1@YpU>pO`3 zw>I}Iw<*bV;;;*;l}xhbeIc*z;!mAcs+zcxx5|8`Ar@UVMZ-~3?r)?|-FXdp`c_kn zOv%@CPi}Dl_n4@;yt0QnK5{M}HmQpT`4^8SHSq=a3Yfj#f`5M7QZ4bM9yg3yq&?4> z%`uqQxQC|f%GHoLf$H**TArTVkGeiXO`3V{*0I<7c!j(VpP#?zFQmd9s#@kkex=SV zgILh6Yt)i>X~^LF>Jkv5E(wup((xcMq@|okxsR+_tRl)4s^UvMXCd#=;U2`P$j=<- zxzVhwDE00N@}h{?0c*#a;(CnWbzF739&Ol1SKO?_;}~X$@2B>1ZXK5M*M@(jj=o(z z2E^B6H1%W7r-|E87m`XX_|6lYrIt3~z+v`gI~%cFf%?ahaw2v zTF)sOVi%w$ev{PX^dU7_%a;z8;`fi~QGI)*}4xz2ZBT z?WrWciI;rfJ604&EzVG7SwDxkx~`h&zEPLuE_|1G&;9bLaU(Bx?5UcJ=8tC(cb}i6 zDlMqa3>o-~M<_MfCQoN-qCgUt{8ltbw7e*~{Cih#N8b<*b7p zsukrqd&}p<&|{a8BN)z50hx^FO8mM$34v5PRE`Lmv?0t2#WNH=HH5)~ycbsQdXC&3ue?)rhsLK?e0a zTjtinC%hKBGHdYDq!zEWx$C;322baa*RE!dU{r&S+(Yp*ufiO1^kqNzYYMfPaDqB{ z?%&5H)Zrm9!i3S(S$i_CzFi~Uc4aTMyPmnm^*DE=0Ucg(espg}#zgir#LyhhiUb?5 zzu!!~6tRM1#JGc%h>H>DDM{n}!~V~oxR#!pigX^ODyvJ#k&OMnp1r%7k~n`;mKyf{ zoA{m#D^rka)~P|{Lw56iL|&&xIF!9H&+mrroMYHC4JOB7L@cpAae&pe%?RW>(229h zSU$JIId?o`uYSaUT%i}SQ1a64b2)$V=X2s3khPXN7)$Oxb6+=*vr721MlAZ;2<0~H zD+bh~MKp0PeeS4e@yGhyff-l}_xu0bjjBhvI&m&t*15anA7@fWnadith_gLw-?Uxq zS;rH#SlhQ6o|}jpJ62<0a3!YG2j*Yu z@pWGD8K9=Z)SMZlJL<5gp$-m3^z|gp7Z}XGo!3s0vqkt^a_xi3_f)f&BPZd(-q*7~ z^)T$$ZUBoJR6m)l|+;KFt*)QWOg*)3!V|Kjm@CNByLidY}tmm&{*OOL#Ra@ z(Tv&0nG3=hyRTt042VI$Nuxf1*LK1Qa{rBui1X*Ukl%#dt^E6~$T8Uv(_PCRu8Gf3 zBza6L1+gX1)Vv$q@g-mQg=f<`B{`*}B984<_<|_9UkJj`i?bnwiA1V+r%)Nsh?X<@AC|Ljs2}I{ixY~Zl)ryR!~coMZAN! zw$n}}`P`n~X#W5eb;O*00;7JAXKh7{MTNR+XOTrs%!IR66sO7m)9P}r93v7!?Be1J zMX_JR9S6?qC9Ijr7m2a)-&7Z6c|n}l`Z#kV6_n%{e}3i_xl(Fw$Hgei-E+!PqN5^l z{>q}Uf%84_PoFhPl6RD~|0(&*KJ*K5p;m^odIfc!F6?om`I)~ZE67O|e%(Wf0o(G| zIhS?GC71lay1?GE!)Rh0oGDiA5c0Jm3#vu@c)iwg7CZKeSTmp3%_I4|Zfru`SoW=) zy@Oak-Y=)7i2d~n)`54te__-?4k;x&-vX*^&>~-#Uhp5UB-nY_s)a~q3leeGLH%`8nG+Q0+sa+# zKt*w%tHA6AYU4fVi^6keJm*p);uEx&$8pxAt7T27THAyh#1bp0iMzbG9!=z^K3}5u z+!F3vuI4`2mRgK!!Si+-_py)HqIpa$){m>jl__;d9KpO>@>m|js6*kqX#1-P^I6kN z*U(S%pJsRyhg+1@jJ}*Tn>mLrB!5xAq!}u#{RjRg7d4+V8u_?&7W9@lT+6K8YFvC; zje4Hb%ESJ*$3l6 z{)-P zm2KL?`Ga%c-}=Od+3U?6%l+aG%F=6^vXqjiQ5&KvgLzJ@->M=FNy;*iUT|lLL%I?F zxqeYW+8C#o4q!5 zE#*j1^6%bD#mJrG_rCS(1f^YM@=iD6{NUkY~T#^yrSr^vf1I>6dQKXbJs~XRTiNBRa zt$-TKN%YQOANWw4`pOB^Sn%)L4^WhUpYd9Ep}vggLXM}REO|{G46*gVNaFn`o3UCN z;YR$_iapO0o(m(0X)N_3&Y0dvQn(3L$xX~PZ$wx2X50Bb6d&M@Gi(2~*PLyM8E08h z2g9HDrEbA;Koj1)YJ#T`ISFIphO0!>i0Or`W?i!b-V;Cnz+S3)GLXUhSe(OmjjzDN zw?HV*uN{|^<=S9XViVMntR}`y+#vG`cVg_-Wyk?l33Mgr$QswmUr9QqsK`h5Jo%;M z3puaf=DnNWRz>DHtIAd_6}k75vplcCBx0?1L&;lgWKL}~ukA?eZrWIX3d z*DJ)Srg3NIv9c_PRgpT*c;_B+Kih}C0fq|l-HV^kkzOh6Nn9r=$QHiqLN1_&&)cP= z^n_sjxx;6s7yI^4+`rmMFQdB~xx+uT1`A!tH#z^`KI~sx*n5)$+rV!%2kB?vP=P7* zK8VP#z<4$4n#Wfn<6IToDZpRPY!2(y)hM1&jar`nR~u`w`(iyzLmP0Bz3_cvCKC$y zZt!_+=Sc5l;`R&J<4z}cv0P16_UWjKjyL;Q?n9aUttOMGOWj3(smee#X?KG2X)J3? zCULS#<`dhg%A6bQr~XrtG|r=k*q2pRa_{gn-^*O?uZ$tD&i$2t>-Y|PlP4y&7uJc_ zSe?7>&5F{V&&h$SoN1}6drw?2o3(Cm7&)>g*0b~EeTb8e*(-7=mzwUdCTeSm0o>!~ z`9-f&&LUe5RO3E1zrE*GVvxokgp4c4#TI4AT2qQcx@GVS8;cy28J(ck(f}AOUD~AWIA~jV!@+`4>7Jse8~aK;r*Ik$ajjG zmIpU^PdVcivo8y-Xa3j&a>2x)XR)3H%_ok*d3y3z@}J)HAZX9?!le<5J2zr#Py;qn zPh`ZI!?qRQ{p*}@%tZbo#y6QYzY}{vW!C(moNZ21v$d)#^+1QI>8w+ce$?`<@getj zlp0-nVGX;cDpO~u$Y5%M|5&Pvny;qV(^agZL_;nRtNJ=YRrWI%s+M!@Iy)745lAmk zZPu!GA$W3x>kGKPvNpDcjJ+arQ|I8u&Yt7k{obPhhx+|M>%d zbEk*PS0hz%W?h&?4)^Lj6)E;qkrf&L+X-TyyiQpno~cM*Vn9!b6~x@*Y(c!%HH&8e zvF|cs1|Fu0l3t=D)q9l1j6MH|xAe^+hI6EkqWs|5Yn&%i;LE)e@>6DBth?kRZ(diD zByz~>cobxeWuDFkK#dx~O)V9<)2}GEROms%-rMgTu~nXNBpc-`aH{j zC`;lWWw}bcx-GS#N2nz-kEO2#&zJpt&wm@LN!)q%G6@JaL~Ik)Gw`66W#GhXLowc@A(QCuBwsK?N{V zfSS`|d}jam`Ph3LA`cWxekGhU${}y!Y4OBB>G2oTl{y9P3MbXpp=?Jz*0tf@umLsF zoLyEQrOyfXZ-UwTeZJO!AolA=^oaj(x2BT)-y`lB%t&lRr~y4X$q)5nuXTt$RXB#8;^sZCUl~MEbrGJ^eOpei$`K$wz#!^YUz(|g^VW!SQL$P>cApiB#lU;{( zWZYDG%U>~&@FoMf`7b>aeM^7O6S`8~ zL6>Bnw#+ZpmUE%Z$n;T@UerbJ=Ptz(>dMA>smieF)JPjLdv!MVeFL~dN1aI=IpKA@ zF3k}<*E$j}Cq|R+#`Bq)TFp_rF^_Rp_H_WCl@a$?lC!czUGo$@$?saaeLjiZ0R&tgsyH<@`#OGWmR^co6ow_ie z)0aC?=|?NEopV~=-g?}^1ka({J7CAxN^<~XGSvkS`*eZCy0 zl*-U{ZYiGMWG<31bBM+kAT%!*N7ph(A}t#eys|NDR5o^hNkbolOlGuY;YPm6rL$Iy6+$p*SZK8GSQR%nXjMxjC>nnu}$wd3f;ePdr*w zfE3R{#0M3?D!35Q)kR2nP=tw>OQG}g7yj8=3g6#lxHhm7dyiD%hFt^lM)Nu1d-IS! zx5}E_eRF=-`Z&$X6` zer;rAO&e)5)=^3=9VKIVTl&4Up)i$sRekKFV_$n&TVp5vA*Zh6r|(jv}6Pu zW*{;y8y5V$!{}W#BIv5P@NF(KvEA7CjdJz|OTP@OY4ng0{(6 z?2(MTNlAFQJPkds<-l$3FPwk#2SI`KCtgy9c9#oa_%aW>nA>r0M-g7G{RQ_$%#e>R z!YNheJ-jbN%)>J1(ht<8T{VW=aW}0ccLvf`LQi{y2ungFKMjv zmC@V$CGSm7$#?87<#)Qtbtf;mx}ux>^zSX#6$9kZTYvEx)K)6?P$%5A0Bz64BR(ku zBlneHCVNwR?iGG(lMly&EUfPM10!F>BH-@?Jl&9m9wUn|hTM$jDtejqH5WVPvFemq zNe;d8#%hX~k`EY0E=Eb2-fhhPJHOUKY-}y$N(s43;{Qp!$8J4S5z#&oZjp)jIxP|1 zyT)OhP8@7TMdAL1Xk5M;g)MC(p>iq`JNHI2cP0T-7Nz6s;1aZVt3%ZoYWRj%BgK;5 z0e6_kU`2mZdOwe#$JE?F?pGAB=Ql1!&W>yp>ZIVAQ6iel;-Eb-38!A9zn-S}q--{%$8SiXr^5B2o_YMIF4)@`I>XJ+IE<<>V>q`{)7xz)LEIc9D$r9@3dvay4x_NmI`b()(s7xt-HRsyg?M4OthNw+iVJIKo>B{N7 zbvVC^_hWD*THqUAM#W*pja+Q$UXH8O!H?rUv%wM*3GdWGzI`*2T%ZCF*>(<~_EQou!<2=kaaKlLwj-z@t1H6{1%FwvtjskDjJpw$xynOi!-m8fqS6{E6ekl zr;~#d%X8uVvk>idYIxRZ$p9m3QFn5Y#aSLQqO-gF>EAe%DUS zXAbTy>MniddqsfUwDgvf<2s3Dk(-R+?`!>b7oUP|@?u|KxvV)@2JRXnlY0#pi=#uN zL8Mw1H3$GWXA>Ankfipg%w_!NUniJ7V=+k-CRIci`7w`6Nk{InG zpR}FiiCIfYnZmPstTnT~9H>?Bk;4sr=_eH|UxS0>w`xyOHuR9`{hVabJ4eB-PGVZx zU3RYulIK>V7G7OW}1(boo@$8AoKdn?4l7Iat%FS-=Wqv3%}?&wzAPda7SMh zE+ym7ipQ9-?F78*ufUbr^YMF1kgupF3(`!)vxB2pR&_)ud0ju9&-0FZU-8eVh{TWlRJDLq6mB%XcuZ4n=@*IIPQKFnUoI)Vk)u^F$i6 zqhc^2<1^}~e8#~pKd||FIjpVpC4ZKk9PsWSg&SNs%i4*xr?psiwvqpqx0ZK<=#zez z`5+YZnco^LA!~-p*uDd#EsqYI|AN!1}m$L9gCkGza(~!6-8R;Fu@I?PLyguK-#m-kzG4ndK*WJb# z(|7nVI1yj?Y@fNLB@@1IUnrNk@bgo#QY{KCRwUzO(;qzQLjI6hjkAW5f1ro|T;!7R3QDfnny2KVpG z6k=}~#C(J5?%q<%=eh42X5p1PiLOfr>C)0yysq|=jn9Y6?YQxxA2e2sDuzqC>OkqA z7$AGs^^kr}{bXdPq4Z%KD|vh8O55)t5`yJ2V%cyR$eo07w;scP(ssDT-G#xrQUu>J zV=vrZ+{=ii@A-<5H)k-yazBd3-bL)$X#CZ!3g6r<=NIS4&aic6Wf zP_ItH^!s7h-}nwEr@ugH(G9pjH2#J#Tdr3 z`2CJTM3TciQlKV{r8?p>kmu=|N|ZgzM^j+}OuI+HI4};L1LJXKPYSZb(hz+!9!r>= z`1M>Y(z}FHTN#a6%t`ytH5FeBOYw+!z?)oCX>qN!e2i`*pZB+yvLS8cW3Ig%R&6gA zG~C1{AVAJ^87h5$j}oVDVOSr{&W?xiuFHVwPCS}%9*^dH zK=NB=rmthxvXX@u{c)0(f4a)d+g>v6o2M)vXDofPs9z#Bd7+)T{G-}W`iD-J0u*%p$6vl(qBS^j3SI-R~? zTwZ9Hmy7A2GMQn>|JNl4%Q-LFn=n`9R2Fn&GVsDX3*Ecr;YqIy{1cvvHKQ^ht(eIb zPJLC7kxbg{C~t4O%3NkLc}^As~3U*hp4%ZKAtaz-v-L*s7GH#v4%E|Zfz$FSR^zzV}0U2xUSeuI@ zuzqzoY%AkXc)AeQa~d#`82Ef*-k!nKHdU0Od3P>CyqJNU$c${=LJaPlhxSV{p{bgW z{vS)Q_)Y;F;TS-rDC)(q?^2Y%(ebXQ@Svp*N>xXc6d!Ss1>nnq;`^f^^(K7n$RPmUumbpo_&tLKRw6FA0<$q)l!-oI!GTAEtxt$oAc&#HIvW`MLk*WXf2YgzZUjXX}Ul7A1I$c_E&UaKW^#6vsmz|loFFIeu!L4Y`$#q1E9>!c1@{v(s-bn5 ze&1HV@Y;oX429q5>Q#sfKABkLmW-U9>?aO0yHza=yGDOUWMu*j>XLBiDRarEd_&g< z-!SrUB5Gb{Aoox%V%9P{v1=|qFJrFu&0<`hUI}yR7)Co#OD5za$klY|#O%Dg%mmqF zB#z9(YWu-V6pVOJ3iYKv-&j13w3O4w+Q>Q|JDF9|T99HbJy+UF^=~IxY0rLstt&G@ z+~nXWPw6??OSVOGcAGyyW(^3GVU7c2nXjK5taO!O$L(ay2S<6a)Lo)O+{NN{8#y?W zS+e@3;+-k%y6+RK#@PQQ-@KDLI1aXmzcZhpUEutA85HO z628~JVaxRx+Al(FsU{iQ%|uwON9U#`IViQJhlu0iA4 z8iX=K`2Dne`2R`8s^l2hZ;nFvkvRD5NyTifbhu7QgqBeZA{KIHHj2ZyyNQVHmcsoD z<~2tpIp0yGM^6NRz1(%~GO|nU4I^-bh?CnVC6K zOZph=GOyKGT0~ok+XNe#zRE_XO=&F`X4y;UNsbaS%te0ry2}RU+TZWfMRxV@kx`Dl zy8d+!FVRMJCSmcz5UMpge z)gc1yH-5ni(^Sk|R*FjEJcpQans>W4EBDjaJihCF! zKeYX&rWh>Kk?;4kCE$U!G?3%=u%$mZ^XGEu$NYde)fw)+{QXZA-fk;FiBTr*l*Ph= z7-9aQZ`fTD2g|JqC^_+!o;IJbAS?`K)zMgk1U$D*Bu*2HNf*ANN#PULRD8pv&}7W3 z%g0QfFV@WOd_JlIyQB&e=mTuEjQKJ#z;{i0|0O9)`$84j!yJ0W{pR%1vKL2l2N}E7 zPKJ)O72PG)G9o67@72nak|#GlS_td$|%5m?!$xEgdD( zvfv(7j05z-3|IOE`_q}&*gGB_&qX2idNlNxBp}N!1py}#(cUWx%XUQ~_Gvnv)Ko+9 zFnQmj^u!$g2f6D@m_bwsyN}F-Xa3R9{oL1B!`zKQZJzEfYy~C z!&K#vQ4@Mxrw8N~X1}%MUO#u+UvST2LOW`_n9W}PJr@>y&J+EA;K_@4gq})=Uv3r* zdM6>PCv~DnA9p!0 z*h2Jv+^J4r)?x}unv!toR1{{i-|7E70d5(;u;5k|KK?Aj z%VSx%WtGI4Jprd9Q{mOX+!yM@uh}U`>r>=y9x|UZzXt2Lr+b|H4(01qrQb?=*G{U! z8-*f-_bEk`YCT3yre6uQEu*L*?=zBk`__DW~HqtOm8i{JZMPcBHpN zXIa|QQyQ=Mi0_1MqQ0o7L=WsGMe)6*f1d#H+|X0rJn@(G{e2~PTA&!c9wsAH{*shE zeZ-#l?vB>PDl|ICs<%FJ`;?b_A^tvjwuP+RU@r3wY~@;cYnfqZA-l@7rGkCQgQOyC z8UvapwF&%+T%nIKgi#81(k#zqPHnd1W z_mm>6+FXv*al~O&vf;Nf6=T1|BY$!#jtBliLksRF8*qn>+W5@IDr`-mR*+iSW*z!| zpQe{XJb7N*GSm+&K*u%A6EmZ>aI-RbN&3jQti`Mc#W?*X3)3x9aG6}lxRZ%k*eeN> zmPf&E$Y;!I^BL!MM#6+RyxQ@2=q&n*nw}q+6ZDFnEpL%hAC9z#aWGq+j%1#fR!1@r zotlmB^Yh?!xd=xa%%CRNyws4j%$(hq-BND%w~~rl3t2VCQpPYZ zXLw?3>DbFr9ws`=(b3K_=Vd$THl(8*o8=)lh@Wq`=PQ%)yGsA}o-#DOtK9bUm2oQm za;j$^aj+jGGx`mY-MYOch!PV(Ram$hlXR!23`!Jm?`G&9C{YLm9lZbLeBsvz~MA*a69yJUtWB>awBbn1)+) zD^V!tQJdcGdBG9!su*+`|gbBIIf3!m)KabqOi> z`%wx)gOd<;`UjRogd=FpTkN^}0b5mKm@|-qlphJ`!MtI^R4B`R0kQ|-cd$cwv`Fp9VP2vdr7SA#Qv5IU&4qSS@Y`OZPOzURw?C5keVaZO<2&;p?@`ksP8uOogf!(!K#PKXP+*p9t4>GVMFbUV%BqGQx z32&8ia4xDG#+H@b!~TUyBlGc?9L0>7YMg1N7Bf**I(($&f&Ip8;wSyBbMVi`5_~DI z!5fcy^j=s2>+|{0yqt+;GqW*qK`zYtkgF`ug=TgtUK}B=>k)?IPT%o1IvXoH6yWI+ z&RzwXSn}lujvk9fpSoDQS(XC5aAtY;%|TvrHoP;lVRNt$pEQ{x$X&TF{iq4dYl1qp zdi4Y7W8AwQ!3ESskr#5bu@r5^7E+&QArm87$*yu6x%<40Onu=b2J7320`XusM`jUw zc95_q9ZH9q3q>?5DP`H0dhzK553aF4UE z6m|$=25OLK8uXWfiQaOt(m^KwZY4dg+Q_;`ZRGSiTPbxRFU(o9y>km$k!>MclgI@= z)sZyrK^)cljnJKG2%H;>+{#4EZ~lpYn3bkaT&in84t@+sf)?@R&PkETo)(R+715Zz zI~?bhy@6T5d+faa9iz3FcYUM;{eh&8?BhA-MAJjOWA_Ry zimt+}ZuD!RPn~wYI{gl{q@3vDso@gh* zr!fuc&vIb+FXt@Xa%?00=4PqvYXtL$W*Ut1}5bCv){XYpz0 zEQ5nxM5C>vJebs0RBwXyz_KeQjj$9%rdHZZB@0t)$_Y0llP+h*_J-oL+`9{~vY9XTR{9 z`O6J&lHva92ckmakR6wX|M>iVIhBSbZ=w)#@)Pbmyhr5CP&iu9E&laZGJ2tzDAOZJ`zH0;x%4BZ|3+%8mb~FSywyroru=C}+BWVcuBgKGYs@WY z?HD|z3}NbdP`#OeLx{m%^F;hTn!V*I=Kp*lS9vQ7*S2IJ>tq%R46^YvKM%dz6=0Z8 z5uz5PV`zE?Rw!p;{N>*`aE4kVYJ@%)wGyQrhGOWeL+?#uERj0$uB??rO>8T@Ms<|4 zww**}qq_`DV{gGc-t}4?rDIQ5(H!9<-ZNUuMxPead9$?yu=gKj)KSK)_mor2znsbp zRSho}`A6G9vO2ZpoaQ19Tilt?k0Y z5*1SeaqVp) z8O-6d6n9CQA0Xd;1<0vg9c0#1=8=qGHji#K|83@=XIY8$eJhEL)sxrM+f|Hbu1@AJ z7*ZRNf2auNoVAovA4A{!D%up^!Cl*r=)vCB;(8WJT+;DkdKC7p{($Sf z!boz;t1~$-PsqZBX}>YOoIB0KO=SPnmh$j~iJU*cTmq>^i;fdJ6;Y zNGN=PQ3ao|B>4yIaubl@nt{HHv(a-)3I>zEJ7@9+x0F6&Dsd(c|4QUuSC?CpP35Z> zbB7;U$v8bTxxJG<_kYm`wM8}OwF1nZkqwR9pNL!W8&P%4nru>*bFZiy`^+72_P~7~ zC*fveB&rsEg0EUAp1umjfVtnHtdNU~)N?-^K=0*C%)R(PzfATLJ@1jj2rI&aM+JDW zsFZ!~A9!}B*T+LS(s{K&)ik*>S@ z$iy~%<>Zk*@^f2%S#hMlC_V2dt6c_5{ifl}o}VDbA@e0}=_0ZHYk_2ro+t(igQbg0 z4_Wx0{d7h%%njqQ{pw5fUi=*Amp;d|bMNrO_YI16uxDKV7A7;EBQ5zc92fKcTRg@g zwWsJ=^#-MPqi|X47Y3f7)^07i%1>RTX`Y|781E;(E4zxzi;nU&ri1);n&YiH@x z-Afc|d?omG54jWMCp#wfqSn-3mTL8pfOGw&)OmmmP7IPT_d&AUJ6L9n3ljghAW2OQ zl)KmaO6qGr?ozqRyJ04hMGv#qn^GaQ5%5Y5#f1UUKcIFY}SSWl(o_ zIk?20K34|P*iKmtXEC3HbCA3$f`LgMyvfx!lty9CaBA$TpJCRMhZqxh2j%70sJp&| zV(Tktr*s>ecE7;h#BVqgmWm5Ei}2jK5_+%d;kt|b$}3HIu-#DV{Y+(rfvF^|Gm(&! z#$r#rKW?XqIMf=-MrwO!>CmTRUj>3^6(aCeCaO%5aaQp=md*Ku^LiifIP?w1ynBc5 zR-e$bECR3eV_|YN5i9yW{)T#JJwoEgYpsclVHGn9q_X43Dfl@#aOiH)j*csyw@1p{5g zu-RE=y>gP$*S69=)>;hOSxNbfmZG@VTI@gC%DyvgWq*BpIkc{WbkuYer{8X(*w#b- z%;XvKz?1uXU8KbbU-_ZeQylYpNp;0QX}5v>yz3y*Ioe<9as$LQv5S1^WiO99>r2=f zdIk(-Ci#&xjB@^tZQ0>)p7;q3FFzwpF%k{Gf1rnDBJ3Zg(=RO>1%q=DWxy=NjlaCJv|vwyEE~zQvnV# z35Yb|HSqgt9Wf%xLpu4Yo**;1_5S&Eveg#>IfkxPX-GX5F;Hs^3>+m9Zs*XnSp zqza~d-`njZp1hTqe!)*%pOuFbJvd_|WplpB#yi%j4{NjOCH@m@ZWQAz^Mdx$*T8uX z{b{LZ_M`X8i;3Ej^MIKw7j?zdnw~G*57Ftw-4O1$#5|-F-ku(I)amtpUW@6=tFiUP zAN1&4j{f~h(58P8G=>&nlS3}XJLVuUDjOpjh->d5z8zcw-Rg2!ur}S%qaR`??xK8U z-kTb6)U8G`>Xxx&R2a*9Uh6$!#>}8K7yDK%qvd&(yC^3vpfcBel`8(M|6{vl8)cR0jsl;V6-a9)n!D!KNy7UeCjEoyJH%}EQPJvB&;3UCo67RhLRo4Zm1Om7MM)XOeXV+W z^F`9@dWM?Ra_6l2uBJ3uG3z5wSFE!Pr0+XZ*`wWpzVtSdaLz$aoO6+?AUDxE*I71) zb)o*xTZ)GJ$RiD3S0|Kz8vS>EYjA#{Muz!wV+!flNuQ`?lb8io@(Z=Q@{n$n zh6nfKuqh)3*2BItUndGT45P7a`*$pT7LOe#(_uFCCw{4yp?G%{W}mEsHTMG#&ruL( z?)|^@R2F0Ifi`}jw)d8b7}IYH5#*`XsLLvPG(F{RX(auKK8{kA(|U@sErA}Jm+Fyk z#cWe%oDG=u6MK^~k@F)3Gv*TOpB#@As|1W9#&7wX=l$0#T#V1dUy}+kHnRl3lBidD zR*say-`IQTH|iqF5Hg0kTyt^+XNzGntOQ2}{6hZm5-dwBMrLU-7RQ&Mzhep1W)x%M z1nv|pCx+&mhwvS_C|&XsmD&Zc$t#4-xgzvuAN=q~DcW&vf9w6fEOGk5aYtxKMT`@VNFMF05$fV0gvZcb5+zYi9c2=TfXD9EkJIdNjXL*zCD#}CM zWOJL&@?>de*|p45%+)+a=d6e9vGtHA$K0jhrn`i2zMgC7CR=8AkQ9GnE*84d-9Ha7xDSIJ*dUyj@-!|^x7E0U7cgK z*xrt&HuO@k4*3Q12L;$VBp18XGEha#Y;_FvR~^372RR0IL9z5G_yPTE3D7f4K{b2N zsW@LelF~I=rZe6>(yIs3u z?X|nR3%gsfySrQ04v-!un1TCye!jmyeC)2Pz|6ef_jT^M=bpn1kh2l}kDFwvX_EP# zCP^A$lDOmSukJHRy+3%4B>K?0eomvTlmMjHnnSW67tzvNTlg zug)p0n8o(El}|>ry+9b?+1s9Z*EpR-!%yl#s<;OUdKwrDVCKl9@O3FIQ}3hCnoL62ImTp@%BJj`6@_476;2NclHOs z1S4ApN%Tm6i7MnTlWqPoCyy_G)?12~^ORfc+fe^ix~Ds?VG+dhhoaJrMpw{jdGjI*0#g--}7=@JiEf_iTFe6y6x@av%JM9Myk4 zWoc#difXgt){$Jb`Dk92k%w}aUix{4n%+3|>s35zUpw>?`+y(taB+*YX`ZEUC_dzD zHBV7XzXWXs*EYZ8FMVI)Tib< z5_Jh@y?Qo_Hn&^hCE0KPfWOEPyh^gc_rlxsx@^|QJ%Zr-J3d?Lc{aK0qAx0@*_d zl9YB?|`N6AIkf)ZXg zN(MBKk_V1R*|IZ2+9VW^Ti5eTk=^;_$fJC6?sh(QnDfcTmU*Sc*l-ztIJX>l5h~{o z1Sr2k^+MovDwJ1rFo>{MC@1aJ=+me$qdkbZ8`>^D6u{ma_+c z0FRbqH4QSIJGKtqA`O^hJN(E1f=ju%Hceljg(r_e+g2)8{g(gK`xrTGyZ2pt*8Zg@ zhH&?6P1G)Tll4_~iykO|Ht-nw0A>naaC})Oo8-v_ldL#~w;%PRbw73|J;}ejkMH0& zn|A-mUBnD!WH)&J!emvH#an2jLr?x;_tz6oWO zKacfza5P}Imu#nWvP4&&Fl!64MYqCpz58R^tI$iHZ_S)?Emy5!ye>tK7Qm%TC9Q+w93nqog(`DS9QD|d(u=af4`Cx+EYOWJ}fUg50vAsE+hJ; zgzVi`SUv?rNKE}ONh*+C2J-zo&cu_TDp?8jn2qAG@R#2o{VVG)?OyD=K1Zinbtb!! z-M;I?e!ul#s|0k)1bG1 zG%bIkZtRz=4+^Ggg$*fc;*2LgPu3f&6Ls181YI#ZUISLbKc&U%trkf-Cox5rRZY<{ zZP1%BFMdA2tZyBuI{9g;M$S#uZ_iS6T~)HQsb?2N++)*_ zQ#Q>XjbA4_;PH4mgpX0ZR~*k*uK zvb%1Osx3pWPKv`0ZQsaBAL!&~e>6Ceq3fzoY%koZ;#l$-kkmsGZ z@hEwZ#(r?Y; zSFPUen=VJ6l)LU9{qQAT{~V3i!)XZ`TP;N!9ZJ>j>`t~Ix3+y1Jl$5Msgarfs0tPh z4!3Bt6zTGWXbz|NTt{r5ATj{EV+ zj%63WA{l)2b3y1-6OQ2h`^qHOE8v0Ch&^m}rT>HHYC*49>^NTZzHlb*oEniE&ow+* zw}Km+Z^pl|j73L%O4GSb$yBb&Y~+naXEd;B2~F4Qk@y!BV5f3Qrh1IZ)at2DeO3~` z#m{&eH8;qd!>)2E6raRIa!s;&N#hD$vdu~ldJAveD7;a@65~?HR=r3@nwwEB)^n4n zAx2r3g6DA?SLt|yETjAeDLK+0>w?HT+=NHO8T>bzdy0Xb`)d!p<Sv;KBt`T zl2g{4$t6AB5+y$_;0-JpP{)7Nz(lbV)aOY?|O{=$@tK>dTs1; z-PQrU*10EY4t%b$Uta2uIw9=a`uXlje?Iv4dzYmwQYK@kXgIuNmUc`s`7TUS`ilgyH1+UGoEC5bnk>DeZjfA9g?imPEfbb z{MIbtzjRpSZ#5o^XGWW(o$-R})WNKCV&HdM*$7`tSDTZwSQ-5vJX%H-o~cPr&6Ons zFWF4()C;Vz82_t;4E>W6Ps+AdeV-kT>uIz$H@KnF5dcufILGHMdtYNq*`r z=Pr3m>6N|`66_~k_pw9P$X~9L$2njyel)__%I+?$j(JK@Yagliz+YS=0>%3;f4N+k zoti@4GIOZ6XahfKc_dI41ZEMRA)%r}a*+?8TlQ25lljfUq~oM8Ne>H`BFFQ}jDHJA zv)BT1b9$6yT~J8=_!pAC4-h6j}(nO9Ivak#p=nqzqCo*5B1oLCPlvE!TDWJ#jwws=bIkQ{H_Tp z?9|%h^P0_>)x`-da^{arp-vz?1|)clh0BHeMR4RGg(b(WC+{zc!Et^RI%yb z6YxG+VABD378Z#l=K$|6<9T`nJVLr{v+LSNU?#jK4rR^IS*P$>f}?82_iH;{^;|Kh z7F&u(-X8p`{=vD{*n(FRJ!{KUJwh)~`42t?!t6?(#N*yv)9y68#e%?Vg)lobD!(S zN7w&LW(G6fIx+ZLudr$?&*|K&soFR^P0QV|YWt1p`h7I`avC`fS;;{IYlq?4+jXH+ z4{>*xqVany`@dS}CQqJt$gFQZGX1)*JSK~&@+bOQW&>%7COLz5d}n4wJNJ9a=++(* z)XN=jKD@o-(KWorOY9RfYUXYcIq;$C?^MeTa?2~@{nOD+j+KTx;xjwUFV~Wu(s-zs z{OIQ^pUwx#*&SKMl95wtwhxyY_%c-He*G{uN@h643|8&@V#JsgSJq)4LnZW*s(FXHrVV|Lel6ZG=tBwcqTMMF7X=VMZ})}|Eg zwkc67T#wiHmEyGY`Z!$~{YM|vOwjLH&^=heiygssCz8~8k@sdKJ4gBO}9fh-r(KiPj2LRyl-paPuxS~QztxKe|yN**1oc> zq_5Xeq7`fpY=7#0A)T~8?Qp{ zi?L7fcR}xZYje7;7zD@snEQ#|rS)&-FnA(W`GJSqL2_p+c!-0{fK}tXCF@XMDLySo zZbqW5ew9;-uz#RFVY2l}9_dy#OeWmTBNqzfk!G87$%~3Pw9QnW#;lq-ghtHqCX2{H8SO0r#Iz5ZRqO$lb1i$ID0j=SSiR+ALi+jIwF?Z;ReO zZ^e(+s=M%%bH9?R{YR&0^!Fq+-AmHnZ&K84WE#8S+}ZFDIZ9Y`Alm8mCD;M{CrwX% zPSLJ|lJsL6_y_h;Qi~?5Pjs@r8=9!ix5n$|@^N~t>Tj)HAyzk<=^bVy=#MQ)x_C~q zzHf@oAv8(XH%-tfYdN=)pmX{rYL2vIUD%I%6fWkkJ@~4=v}kNTau~B%)F;x6KV+&t zt4dBL{pMCd@0o!YXDV7WYoa2ELdr$u~StUXH~epYD^h@xVpy z*Kmzrcl9l5l=>5m(#vF&?K9x?nz>6CW&%UO+uK~(!HT8U;8)))*n>XUL-ua* z5PzeW)L>>h7@zBHQ+(uEqPJ{a1Geksg{hgBBn_8O?ktf^nY%_*PT)kkayeCiwv*#O~H9!VL1>oc6C+jNsN~Hx}a*iF3<=oBwt2wje zYlQXpmB}$aVl{iqBW5FyhOmeH(MKM$Z|pHGKnnj8EUrJZ%F3<0bh+{M57u2ZRhbJ>+@!MQw_9Iu^9CFxwar@VY_-Yd;InER^XK6)~Ghyv*Q zecR$^n1FBb>O>GeZ7sdx6Y=`ma_ZRknDLsyViq)DV1*54(QLndE52h zo;IDy9{tyP7CpDYqCW~r8b!yTM0)2_G4O~~_rdvt+A zH=e??)`E|GI9bY1$tl7+)bT1q6RA7rCS>Zo2r_ZOVK+vKY)Lc7omJ#%S7I;k1sq3z zyd;!-xE}Z_Ja&^g@b`U~qm)_UiUyqQNN;w-BJq5KGbw%szi59W0xA47`x#{(e{aow z@?fcLq0vq~f8MU4uWdRk!lwJ#{d+hLzOWYl?2HEI&?_u2Dl*|6UWn{9uey(qG(1Qk zJ7=r%`^(awfiiw=kUU)_+!QvhhB*FNMmAdFJEqD6B*LaCnn1?)V z>?v>4c&3;Ob^J{JLtT8g2a^`MQ3?hwOuEC!Asz4wcf75@UwT(i8pKmN67b8ptuai--3(F<)LLkR!A88);z+we(5 z`&IO)$ni$xH{QaNuMqX<068*^;457HWJ0L`{NMw`7>YL=pI_e%!4ml}i!|$;UE=QL zkg2tD%3-%W^5b^6eCrY}&z9s7mn*p>A3hWnCxyy*G|L^Hh01~jIppuKoDxh=IOBDw z9Nv^gs^jZW@IP>VRX534#jLbl23cxO?Yuu->lC3MD`C|NBhu6@BT2g)V&>cQk0$!W zYf<)u!XfPELj^!Y6P5 z+-LVvV9BBQdDd}}n9F3G^oMVRYps?-el)zM$s6x_bEd9%;?%+P^=JPDe=c$8(N<)> z<1<$$jk#>HS%;M|>$zrTt?HVl&3T?DEq7>}A(^_1U6%O|@bFtIyx;iovl3jSOr~~k zlc|Y$@LI2do~$!DgG5dFV%-&sF6#tXXc;s37TcX#9j8h6m#(_O+Jbt$dNJ zp0S*rO5}_(<7tAgOEg$zBKJ}AFi#m1;U$eO`$%F5_JpVVOY`o&GIOuD)Ux9FI|J|9 z2WYbnc*xx)?s9~A)%I9dS(;2X$WC%7jbx`(&(xbI@Z0O*(EE=ax&ZznD2c4@Uib}1 z;nn?|_W&JG@g?{Y?#<91?8N?9Ymo6VWX(Ot3z)s%?nVE%?}wi-v)?79@w&wW`Pf^7 zTrjyxL=-vl>&TJco~b=gfj9FMc;Qjxv(rPnZ^vhQ09j^7$gF$K_r%ZQr$u!^ z1U{KLnRB?1Ej%$(uMK2h)vRi*NS0hryw%~kHsb}nWjh-Fm-H=@xcfUArRo@0xeYGx zYwsfYvbo6Oisb&Hfh>3nJ`p`)Bl>v1PwDD1%cgtqD;^kW)vca3tv(2!!Vh+Ry5FXU zOm=no3$Ly@^p9a^Ea>@)^6&2T?Ami5-rFBI*NYrF1bi~0CLV}yY&xBJYZ|OKCXc$-eKm}cQdpsciQjPE)ur<_p0#{o-QLMS*a09WDCu34Xt!fwRynmwh*L||5Wf$b=7v%iKn&5 ziet|3sEJ)G?&N)8S0V*Ze#0dzwF#fd!*)Hq30wkq5)@2^dQXdXWFO|h8jId-XVum8 zX2)NX^%UyR(Hk5Zkinh9y)ejzFMehGjqii~i{ianl03Les@3rqU5}6W6P|VHNA^O9 zi}(z7mHrvzZLD*Zcz*9|JG`JLxk{Pyc;k+BmF+FS4ET*coq@0DKsWaL(R6_!Hf%JB z7o6Y=vaDu2@sUfT{r}Ie_gJ{Mv~T1ir6>E#fN}m(zZN+2h=)YPy2}Zs({_@c ztS_16o5_P^XUh@j(3_v=^{bL)zMRYk{|rrH-gDdnwnDqOJ{$RieW_!YT%|WV;dPd~ z%E)m1ty^->t#p;Sb;u6FBfBzOL(OP-7JMnIrsC(!^E>O92_JrwoGRun(!oPE@cS3g z*>t|gGqw>O*#L6qsS(wcyW%7`X+#D(eX=m&Qtzi$6B0u z@87pw#m;LnhgBihMKtrlyM&W< zwm*x9sKZSvu(ufSAKn`?*$L*e9k9zqMp7r+WZ?gP*dUuql0^!(%hlc>UKikf(9GSr zruyzQ9>+Wv72U`TZTbIw=@)jz^Y~wpbL&K~oYGP=;IYB2cNf7WCOh$`p)TUzTO`yV zLvD-g>?6|fy+NwqC%=Q*7suCW0f*A`3iHdUGFhn`4Y5jgh7*bKb_zjeAM*%A)2%{`oYk~v__`DCe4qn0iu4_fahAlY;QZm>psU9xEwZ|9FHBh$+18u zZ|LIG8(~gOc}zwO^|>|m@9*dTtD$M?*F6=_aeOR2&036F&;ZPmRjs@MaCY_FWnpO#8Tkya*QMxaxx)v9xQi!$F9@H5KAnux=`)(^P%>lNxJZvX zJcFZEr!lv zj3#%Bb7B2XJ_KCDAnx*cvz%IKO}cLDL7p9)!yS082k@RBuan&gj>uOpL$_oldz0DB z{M+ezc|QGGZ;KYfJ770=W4@PQPtM5)uwtE?HXWGNrVUo}dE|1c8@ONsJ!F9~;F5*( zlTqYdt;gS)=V?e2vMZjFn_G_gIQPdZ=J6IkgFNekzd!d4a!HLr_b_B3=a8T0Kr=91 z8K;&EXKq8?3j=@r9_~~-Sq#_se_qUAdxPoj^IF~(ap;%Q4h=ezuK%>g*PeZ?NI0QC zOVZV^iCtSZ0n4_s>iJa`-EfmRStYYh?V6^G7Fx8A*~09X{&kUE18&*%da7NU;&b^J zj(5FlhECz0jky4S749P2Gq^jf%p$tD$q&5EdZQil`GGbl6Cb~wuF?S97TM8Ng26$D zdXg3Sid?CKXp3CQ5#Y52KOrBs6>|ojmbhXB5l5nHWNTJ^wwmk3+Yz z^KpI&nKtz0`_MUjxoFnR#b!OwfL^K&TqK&ngK*z7KG^licbm3rz<*P3+VG54*yYq= zZce-~xv$gHbrksL1D}bxEE+2~fS~4S`jJ_1>#xb0g1_h2;Q#lF4xz=v$ye(6=ghShtWf}orA;4;witx zQ>t!9UyI-V*C$4)PTj2bjhSB$H+hIovM!mJWzf@|NT83z@4e$dve7D-B%-uQ4sciQ z#M5;7D-ZdGhgu)Ihm@bdT|dTC8kO^qcO^U|sgZ{q`rBRRa_4qIzw6!6L(1+pv3Kky zI0VT%zOKap#-RQj$jx1h$9TcTt}?hE+L_%(X&wizW|uVnFZBOC@u_G9XTRMbW0$Kw z^8-gb0{`=TOo~reLy|*%4{{$d>s&;wzMdUSQJ)-g7q}a+@SS-2ns9?`r1$+F9yo2o z(|#Q}%>`U!_ZqM{9`y0_2M6eBrah)_NFqzNJedbAz%^}{&v2i+QR}jk7tlBv>{QA{ zmR^8k$!Zi+UROD}jdNd|OsZ$xLqAoaiM2&Ro*^`F=jrQqRW!+k1ag7~8s*p(SE-$Y z+<@+64YkIfn>~od;QkV`T_pv);=95iTk^qwO*V)>eb29j8Tx@*s?^k#+%dz!dH>~f zkzsH?%UoQ=R0+=+8###U-SDDymmcKF4kUwO!XrjcdqD=t4%^SaR4)aURdZOYwcHw9e4y)bG=9R~>SsYkY3zq0`g# zAvNi+FPYEGM9S^qIq#2dmLKtc9q{kp;4gApw$T?}*+v#aS8{#P7(VOZCP#{Z!KR}* zTuX*cZaAwm1}Sq*qziuFGe(mypO~R%@T*Uww;qfaS?Pw8av zl-JBOzu3qHA;Tul)m!f3DHUJON7|S1mP3=hq#v`ba#7@g%yO5Z(H@dUHu1&f9#U{U z&%+x}iE((!kE~!dxYR=@L- zDaE|R+Qmy66!n(Fcw&r?_LUjzz>YoOFNPm}cmuFUN3VV6u9p$9@Fe(y<~Bb8u<*;8!Wh%e=dpS?9C&;r=LkuMwz6?EH`PK zgRE3^n=klGm(Szw_ji-`XabfVBXeyjp7QXE8+b+*(XZy4LB{l1gH((pFM2YcFT7)A zX4+Tz^OfmA*3EX2AM~-WY-A{w0%yZn_7b@6FtRDCu)`7IDR)bGN%fU@`_fAsD$LAe zlaI8(V=#{AF+YAsNrQO5zI)2F3~z~r*A7>2SybO!=CT7*dN962OT47SOK+J^HiAUuWtj?tzxn>Pb9b5rN=>ZREUzV-MYilZNAa>CYUBJADOtbcaL921LJk73`N- z7616V4qb(g{zQLr!{I2pPX!~x)%>F8n6i=_z2PG7%7Bp~_I;SxiO|!|lKzmew zU#9+k#4av9Zx4RPyxy65C|joPY)Zbx9M!OQs=w0EB!HJjp$&Mw1#I07j;NUGka_Su zaD@G~!fn7qpJJRa;;&3?t7NY~Ku<85pAY@qktt4XaKNeExv#S@pK=9Lj|cPqx^2}G zV7LCscr%?z(IbB|H_V9#4!>UjzWvP;bcyrvo=1F-*+2;|Ls?c&TVAT<$U17yO6zF+N_ty!2iBTRi9PtJ%U5p`C0T@ zQ8>kuR*gX)-aQ9DJ3r&i2^K9m)1uXjS+(q6aF)4k>bPlFk51(Oc#vl_9d2r^Lr3iZ zpJdRpn9)#nA@>OGA!Va#U;5}q+;h)2I&}eD%BWK8pj0B?p3m{&7LlUE$xVA~koIs@ z&Cn2(ULz8UuIMrR)8F7c<03Sc@KA5*$4WCpf4|P5nYA2bUC}E{OxMg6%8Ro+0~`w$I)G;Bma9|e#B#@!$hs z)FWHX&N;mc2NX<}-D$E+6UcMpuALn1Dj(4b*F~e`oNN?_(^aG!b%=hxaSC@&A9ty{ z!d<$0y2DYs%hTT`c}ws8qLjNl7=zw`de-HJyL=czzV}}yX#>}mhkeAmR)d_cL?)%G zZYe=sgqM2g?IKe@8f345`?|4enf5$0{G56HGqoSRa(}B+3%`e_&CmIvKb~phwKV!4 zM+rYroBUiOJ@UH@4S2}h$wZILXVYdSn(dJ;WN`5B19`4WlbOhCUI({V1+0=cQ{)wx zW58E13%DchiiM&tB518ksD& zJfs76R<5V+vY*$wgp8l3S-mkXho@Zy_5z#zkMn5kYLtiW26^3$x?CNOw3t!8)r33v z#}%J5{DZ+w3EU6kiy0)&EYf=zJ!o*w4ZV`+Laf$K1(ak|l5~i-&?k zIQK4iU|Gh~PcvH^kJfnSMsl;uTgl@|)3F`MJ+7UmrIcQ}m06oVPSq#$k-s+LMImO* zYD1@DPt!KT(JfJHCND|TYgfp_<{A9l(4rRly_Rs7L$+Gg%I|;LY0ZVi18jPqSzyc+yY^VYd=S3w`(T@H8DrO4L&(yg{>69T9smPfp{5+A&v`+ecIRG* zhIcIRAydn9Cp@!|4GhP-34XZPf2tSCzH~#CdbS*NGtk=+Vowg!fm$pdP*3`{8o9%iAJ@(bh4)xn;*BZ=Qa>IuQJ#%O! zc#e~+(PYE*^oN&wISKqlj+232bsXotWnuWyj?6uIM$OE$$K@t(Xq!_Xl*`a3^Xc(; zHU?xR3;kE7nvObkN?W*{-|2eoIo!*sbS-!;UFTJ!uUY2MV-4Z>_Bk|L9j69zx79+6 zaRzQ<(qxCapt0yU1a12gz7O};m`L^pPQU@;Ia#f-6OUAKvx8K}_9dURH}{oQ)gvBW zx4%KAvRAO`r9pm&ajsKcBv&q1iQz0SnM6kLFnX_{%mIAq-5;ucc$uN^@;Nmt_v*Z} zP8IHqXT!rYQSkJe(Qy=R;3DDZJMDbV#V;8pg;|dwkBLkYlT7X4E`8~(7O}sT2u5y3 zul=xwn~ZwH&l+TuEM_vvZn(-({726`g)6UUl<+lf;*mhEG92G`b|b&Ak2{gR{W3VZ z!eo(wJya*<&Ct%=_f42Ty!k0oAHIFWRH#hOyHW1xB7(8Jn+UFA{sRNE|U!FS5j()c$WCYbFXB1pKzlf)tyW=6rcqN7` zgu?^}*3IQ5qmF=;={2*h^N{E4?;HRtPyWYKMtONj){6X{R%pA}Q?k?3eFKZ;`cD72 z2mKiP0X|$*qNR^84sD=?(%6Ev#1_;Jo&oGokXKt zC}WhU3d~>r=Pk2h%6g(>V@C1!euEsEgoJfl2L3tt9(mJyo+T%^GB~3TE>Ld^U%!;oe@-l{*4#7tid!>hTQiRSitY z{B>IeGGr4Ca(^1TFbj=xsgF?xfI|y3;P)mllM2n$Sq(DvU|&2NxyNtt?AymN<01>; zn+NA>nd*0%vHe%k6})8j(NM%~8uwUvvb!#Fr}ZHN`cDnziovcu&-pfZ8GQa);r_5=>T@NOkUdf@gd+|Qbwribd zHa*bWrju(i_jqg5Dlt}lwT_*-c{aTTHrWuv`$(P2Hp#A5IIOC8_QhM^?eJBc^Bv!u zGicGlF8YPJZ()2C8>eeqw{#uHZuDRqbsgV}F=*J@mow`ibp2Iknzb}sQN7bdHoDJ|~Ngp#JyYY14?-c3s|;{hrP?4NZo7Jr7o+ zMut}))0Ow~{#Apd&M-*rb7*`cT;#@cvg&z1*B*mkqi%0;@ElR|TOTpVx%{r;G{UPL zVHP?~qzC=N8O9L{@dej>=D80BH{ItBc;d&b2(BlMXME3IH_?UkeAFv< zUw2s#mRXbEO^Q;BbN@reEOohvo&3Y`snIu~? zlYFV;COb!?L%ak3vDsbPfAElx4?H9UF7P2(`r1$Kof&*RW&}gp!8aB3lnv-*E~2yj z_yr7y$4%**CUJu|=*fF^h&_iw8`vL>V^$vGCRdq-twHA&{SGZkZ|c@d@bEX)sio*q zo_#OKuNIdd*J zg4*n!|JNG~2abOG#6_xCWj`4Xrb#e9i^aL4;KN{MvNMvbV(#Or2p(4zjJ#^O0wi02{Nl}unVaz}!<8`R3w zKSeV%r-NKZdg0IXT;WeMbxl*%^KiVwsjI=%jJjxA^1!DLK7sZMY&;~%sg?UOr-bV$ zS(Dk=O3s~<#lF-a&l|!S4|b6W;4Qm98r_xjIwL(~dJ!-2PXdpiYahWr;GLSDG9GUA zX}pJAdgv)`XfG>)S9ZEFKU4HEJO@|6Xn(O=v%M}o9ay66RQR@FgM{@Hsg2%!HQtlE z9PmWZ;got^sel0&bc^)WJ=`O?>+ zrT=#5A@1bD%u8CWgl}DlUcq6}#q3@gnIkP83AfTaO|!ULv_3oTvsy6!xWYbMxiqcB z?^k3;DxUw>oh>_TzMMgBcFv~96^kXS9u$#l_vWvM84#kU^OZ)|Nkz<_Nfga*n zB6-~9s0EL~H`AHtatGc*pXNMH*6myud1FKi69#WM8m{^q`h}b1RCh8;yZdBfGs9dA zuY2`8Gx4=1`6cd>Ez~3c$7O3NzS$I7JWpu?M~%XF12`sdeZ%C(_@Yqwl|;z#hR~gY+wl=UNbRh%lqH zhQl~jni;?@GMXb@Wmrd7`Fas)!gcNfPxKpa*u4VFJ)s9TbAOzm=A3#>WC%F@&Cv{P z2JhDcOc}ZsTt=Ui|E5!4yhWojh<@ygQ=bPi^NfTetjv6t=OG8$ky~KI%iJ{yJa5sp zUC`-r=SH~7#5S%{cp*Fdr(Gqg5q<(+&{OO~o5W0}sKq45xhu=Up!^!%!Zi?Q{ zZPo?o)#v8{D>g{e&RgIQ8d^1<5xpV2;ql7!2JhMbNp@&>9fxkZgGTXly6%0!-hmrF z-}H=go}vX^lA#NqP``F(YK3RycV!i^QJ<8I@1w|9lR&V%>UZ;?lE)=^F16q%jogAXkMezefTI%}ru zqWezG{?Vaj_OM^j(V=bWRi0f#2mKii1YX2rvqj5xK>J?Crsu%)ttz2)UrrC%%c<{} zXFC_bUv7i_n<|OGwqPMJyV#(57?vj5}F)UG#3p2B@Yl5IGMwa1$)@A&XIN zl9e3+c3QaABdYk6zRS`oM3>YuAAnqx0}3&AP+@KcJqr=@E5X1pG_gPUkWy5E5- zxCSmfpQ(QD;qfbSKf>w6zhTcl%}ttv4MN9x$pLoYN{#iFjZMjpZR{f+LwqFRwwLsv zAASgSt-lX{B!76(o8TJ%3_XfZW6`ek3G_>`_>nZsfwqL5<=RE4*Wc3qZ&$uAd$d`{ zr|BGg8S2BSy?$xaT{g5YpP21^gSQDI+a@piq5MXfVRU164}I!4a@XTca`UvOLC&xY_SLv+3c%4#$CqUpubVrnJsF**;k?dFcF5@Cl84$g zdme|TGxu<-NDrHp9<~+F+IBwUF>dnofk|c`_7IcVOD2cbS0$-OJRvm}Vr1UN71aqO+XoH(~MSIcBLrQmM_ch5!wvh2ruAZMnnEd6$ z6@Qr*#yh(ooz+qz;1hP<}mp-fV7TBt(2?r0OIqXT30`TJO{eK}tJ!;|y~b>%`$b}P{- zmAQw$VkI6@_2H_9`$)ko0kR+@Q0h$&l2_qbWX;oTQZ7q&nfg1c{O6fPCPxOzYFB?r z=!NIWX=BPiE^*S`6WJ{}UU_fq5aydhcF z`={yzcJ%)FNZmqTcM*-%qax@ts^QPW%-UGoONRCIlSgInL4mj#JTi+so0C=SgR{xU zMIrdg1){0<0W^9_59Yx3R<5$&i=G86{R%Dayi^mEun z&o#1>ZAsOu;K`c@Y}%wI`s6`Q^*-a&F5TgMso$6XA#Z3d_aJzz+A_3$CCMnC&W=;j zKq;^}L<)`%kzC=yGB1eT-6est<+-oC%i}FG8vDwU7XI+1{`8H$veU&=9^nsua1NLY z-fB3yu&y)HwJ92#`+T1XFBQKYdhU75K*4&unf>%)j&r3R9NtZK5_U27YQ#M7Ix{pe z$Vv9=pVLSGsRlNx<{@L~gPUe2Lmh2KCU|Gr7;sE3IKA_(a^XID7qmKl3-PE6~&$`v0ygIZ0!a3+Kz_zz)vy0FDU$17SUagU- zMYF^8w#(3QFTf6k*&nAj&D|VaKrefT8Q-(<)VX-O<{iPzZ819)dD7KB%ci$~;p>5> zsx))IoYk1o*=#zZp;L3$QY~2@9qVoSRQ#HXq>&mZu$e(rr%BZ=qgEmZqgo|(m>w3=IGRhhQL8l zC(1C78C42=GRms|!ojDr`;m7WnnQGL-{2Ac(DSS~l&QT3Q|Ajfb?#JlH~zEfd^CS$ zz0qV{WY&C{8Qws2L+}E*;BkWK_t(>hJ?_B_qnSanv^PjVVKDH&M%mmSUG*=KN!giG zPT)L(qgqVhK4Ay3@_+D#-BMMU0hjb*&vv?5kA>hVg=a|JTg-;>O=^giu^)5Q@0|Vi z=)yX#qTa*%++!x&9bB;Op>{=Tq51IGw3?=zS-#$MEne92WQSvJ8>v92wdd z4)k`6MfVqE|8Q=y+S(@R`3*_Bjpz5_!c;vq(9DjcRa>rQ-gVllDc$iY=mc-bJng{5 z481=sLr*3!zk#lfY_%i*}ekqd9b zxz^^MfH#iuwP;;8Ji=#@Syh?4HD{7uyqc(Q!HLFv=nRITtH-#4GwXKP z)jWvLVH)_b3w$nGv3v0JUd(O6qu>kRFZ(n%$`mvp-{COdqE~u&j$RxNeMvTI;$G(T zXomNIllzR$&}jJY>&4;QD`&7L%YFbnL<4lq=g}aapjLH<)7+WlA}$||vNOsg<2rfB zi*C$-X2Eq1XGSv^t>7+p*t?LE#53?S7;UuKsW&gctunJY`38J6fF0{SR$V@tef&3O F{eOFj_|E_U diff --git a/examples/app_mic_array_basic/src/app.c b/examples/app_mic_array_basic/src/app.c index 15e52ae9..b11c25c4 100644 --- a/examples/app_mic_array_basic/src/app.c +++ b/examples/app_mic_array_basic/src/app.c @@ -6,6 +6,8 @@ #include #include +#include +#include #include "mic_array.h" #include "device_pll_ctrl.h" @@ -27,6 +29,9 @@ #define APP_BUFF_SIZE (APP_N_FRAMES * APP_N_SAMPLES) #define APP_FILENAME ("mic_array_output.bin") +DECLARE_JOB(user_mic, (chanend_t)); +DECLARE_JOB(user_audio, (chanend_t)); + static pdm_rx_resources_t pdm_res = PDM_RX_RESOURCES_SDR( MIC_ARRAY_CONFIG_PORT_MCLK, MIC_ARRAY_CONFIG_PORT_PDM_CLK, @@ -64,6 +69,21 @@ void user_audio(chanend_t c_mic_audio) assert(f != NULL); fwrite(tmp_buff, sizeof(int32_t), APP_BUFF_SIZE, f); fclose(f); + ma_shutdown(c_mic_audio); printf("Done\n"); - exit(0); +} + +void main_tile_1(){ + channel_t c_mic_audio = chan_alloc(); + // Parallel Jobs + PAR_JOBS( + PJOB(user_mic, (c_mic_audio.end_a)), + PJOB(user_audio, (c_mic_audio.end_b)) + ); + chan_free(c_mic_audio); +} + +void main_tile_0(){ + // intentionally left empty + return; } diff --git a/examples/app_mic_array_basic/src/main.xc b/examples/app_mic_array_basic/src/main.xc index e44b21b7..2c695375 100644 --- a/examples/app_mic_array_basic/src/main.xc +++ b/examples/app_mic_array_basic/src/main.xc @@ -10,19 +10,16 @@ #include extern "C" { - void user_mic(chanend c_mic_audio); - void user_audio(chanend c_mic_audio); + void main_tile_0(); + void main_tile_1(); } int main(void) { - // Channel declarations - chan c_mic_audio; - // Initialize parallel tasks par{ - on tile[1]: user_mic(c_mic_audio); - on tile[1]: user_audio(c_mic_audio); + on tile[0]: main_tile_0(); + on tile[1]: main_tile_1(); } return 0; } From bb0694b508f79cd3a32750ad541f6ff1eb9b127f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Tue, 17 Feb 2026 10:02:42 +0000 Subject: [PATCH 29/36] Add output.wav to .gitignore to prevent tracking of generated audio files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 833049a0..7ee73600 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,4 @@ build.xcore # Python cache information lib_mic_array.egg-info +examples/app_mic_array_basic/output.wav From 75df892b63251b659aadb59cae8a1604498ba6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Tue, 17 Feb 2026 16:14:27 +0000 Subject: [PATCH 30/36] Update .gitignore and enhance app_mic_array_basic: add mic_array_output.bin to ignore list, refactor convert.py to use APP_OUT_FREQ_HZ, create app_config.h and small_768k_to_12k_filter.h, and improve unit tests in test_fir_1x16_bit.c --- .gitignore | 1 + examples/app_mic_array_basic/convert.py | 3 +- examples/app_mic_array_basic/src/app.c | 60 ++++++++++++++----- examples/app_mic_array_basic/src/app_config.h | 17 ++++++ .../src/small_768k_to_12k_filter.h | 59 ++++++++++++++++++ tests/unit/src/test_fir_1x16_bit.c | 45 +++++++++++++- 6 files changed, 166 insertions(+), 19 deletions(-) create mode 100644 examples/app_mic_array_basic/src/app_config.h create mode 100644 examples/app_mic_array_basic/src/small_768k_to_12k_filter.h diff --git a/.gitignore b/.gitignore index 7ee73600..e50d6bee 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ build.xcore # Python cache information lib_mic_array.egg-info examples/app_mic_array_basic/output.wav +examples/app_mic_array_basic/mic_array_output.bin diff --git a/examples/app_mic_array_basic/convert.py b/examples/app_mic_array_basic/convert.py index 5dbf499d..95ed982a 100644 --- a/examples/app_mic_array_basic/convert.py +++ b/examples/app_mic_array_basic/convert.py @@ -5,6 +5,7 @@ import wave import soundfile as sf +APP_OUT_FREQ_HZ = 12000 # 4KHz def convert_to_wav( input_file, output_file, num_channels=1, sample_rate=16000, bits_per_sample=32 @@ -22,6 +23,6 @@ def convert_to_wav( input_file="mic_array_output.bin", output_file="output.wav", num_channels=1, - sample_rate=16000, + sample_rate=APP_OUT_FREQ_HZ, bits_per_sample=32 ) diff --git a/examples/app_mic_array_basic/src/app.c b/examples/app_mic_array_basic/src/app.c index b11c25c4..a1d8155c 100644 --- a/examples/app_mic_array_basic/src/app.c +++ b/examples/app_mic_array_basic/src/app.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -11,22 +12,10 @@ #include "mic_array.h" #include "device_pll_ctrl.h" +#include "small_768k_to_12k_filter.h" + +#include "app_config.h" -// -------------------- Frecuency and Port definitions -------------------- -#define MIC_ARRAY_CONFIG_MCLK_FREQ (24576000) -#define MIC_ARRAY_CONFIG_PDM_FREQ (3072000) -#define MIC_ARRAY_CONFIG_PORT_MCLK XS1_PORT_1D /* X0D11, J14 - Pin 15, '11' */ -#define MIC_ARRAY_CONFIG_PORT_PDM_CLK PORT_MIC_CLK /* X0D00, J14 - Pin 2, '00' */ -#define MIC_ARRAY_CONFIG_PORT_PDM_DATA PORT_MIC_DATA /* X0D14..X0D21 | J14 - Pin 3,5,12,14 and Pin 6,7,10,11 */ -#define MIC_ARRAY_CONFIG_CLOCK_BLOCK_A XS1_CLKBLK_2 -// ------------------------------------------------------------ - -// App defines -#define APP_N_SAMPLES (320) -#define APP_OUT_FREQ_HZ (16000) -#define APP_SAMPLE_SECONDS (2) -#define APP_N_FRAMES (APP_OUT_FREQ_HZ * APP_SAMPLE_SECONDS / APP_N_SAMPLES) -#define APP_BUFF_SIZE (APP_N_FRAMES * APP_N_SAMPLES) #define APP_FILENAME ("mic_array_output.bin") DECLARE_JOB(user_mic, (chanend_t)); @@ -40,11 +29,50 @@ static pdm_rx_resources_t pdm_res = PDM_RX_RESOURCES_SDR( MIC_ARRAY_CONFIG_PDM_FREQ, MIC_ARRAY_CONFIG_CLOCK_BLOCK_A); + + +void init_mic_conf(mic_array_conf_t *mic_array_conf, mic_array_filter_conf_t filter_conf[2], unsigned *channel_map) +{ + static int32_t stg1_filter_state[APP_MIC_COUNT][8]; + static int32_t stg2_filter_state[APP_MIC_COUNT][SMALL_768K_TO_12K_FILTER_STG2_TAP_COUNT]; + memset(mic_array_conf, 0, sizeof(mic_array_conf_t)); + + //decimator + mic_array_conf->decimator_conf.filter_conf = &filter_conf[0]; + mic_array_conf->decimator_conf.num_filter_stages = 2; + // filter stage 1 + filter_conf[0].coef = (int32_t*)small_768k_to_12k_filter_stg1_coef; + filter_conf[0].num_taps = SMALL_768K_TO_12K_FILTER_STG1_TAP_COUNT; + filter_conf[0].decimation_factor = SMALL_768K_TO_12K_FILTER_STG1_DECIMATION_FACTOR; + filter_conf[0].state = (int32_t*)stg1_filter_state; + filter_conf[0].shr = SMALL_768K_TO_12K_FILTER_STG1_SHR; + filter_conf[0].state_words_per_channel = filter_conf[0].num_taps/32; // works on 1-bit samples + // filter stage 2 + filter_conf[1].coef = (int32_t*)small_768k_to_12k_filter_stg2_coef; + filter_conf[1].num_taps = SMALL_768K_TO_12K_FILTER_STG2_TAP_COUNT; + filter_conf[1].decimation_factor = SMALL_768K_TO_12K_FILTER_STG2_DECIMATION_FACTOR; + filter_conf[1].state = (int32_t*)stg2_filter_state; + filter_conf[1].shr = SMALL_768K_TO_12K_FILTER_STG2_SHR; + filter_conf[1].state_words_per_channel = SMALL_768K_TO_12K_FILTER_STG2_TAP_COUNT; + + // pdm rx + static uint32_t pdmrx_out_block[APP_MIC_COUNT][SMALL_768K_TO_12K_FILTER_STG2_DECIMATION_FACTOR]; + static uint32_t pdmrx_out_block_double_buf[2][APP_MIC_COUNT * SMALL_768K_TO_12K_FILTER_STG2_DECIMATION_FACTOR] __attribute__((aligned(8))); + mic_array_conf->pdmrx_conf.pdm_out_words_per_channel = SMALL_768K_TO_12K_FILTER_STG2_DECIMATION_FACTOR; + mic_array_conf->pdmrx_conf.pdm_out_block = (uint32_t*)pdmrx_out_block; + mic_array_conf->pdmrx_conf.pdm_in_double_buf = (uint32_t*)pdmrx_out_block_double_buf; + mic_array_conf->pdmrx_conf.channel_map = channel_map; +} + void user_mic(chanend_t c_mic_audio) { printf("Mic Init\n"); device_pll_init(); - mic_array_init(&pdm_res, NULL, APP_OUT_FREQ_HZ); + unsigned channel_map[1] = {0}; + mic_array_conf_t mic_array_conf; + mic_array_filter_conf_t filter_conf[2]; + init_mic_conf(&mic_array_conf, filter_conf, channel_map); + mic_array_init_custom_filter(&pdm_res, &mic_array_conf); mic_array_start(c_mic_audio); } diff --git a/examples/app_mic_array_basic/src/app_config.h b/examples/app_mic_array_basic/src/app_config.h new file mode 100644 index 00000000..809ff7e3 --- /dev/null +++ b/examples/app_mic_array_basic/src/app_config.h @@ -0,0 +1,17 @@ +#pragma once + +// -------------------- Frecuency and Port definitions -------------------- +#define MIC_ARRAY_CONFIG_MCLK_FREQ (24576000) /* 24 MHz */ +#define MIC_ARRAY_CONFIG_PDM_FREQ (768000) /* 768 KHz */ +#define MIC_ARRAY_CONFIG_PORT_MCLK XS1_PORT_1D /* X0D11, J14 - Pin 15, '11' */ +#define MIC_ARRAY_CONFIG_PORT_PDM_CLK PORT_MIC_CLK /* X0D00, J14 - Pin 2, '00' */ +#define MIC_ARRAY_CONFIG_PORT_PDM_DATA PORT_MIC_DATA /* X0D14..X0D21 | J14 - Pin 3,5,12,14 and Pin 6,7,10,11 */ +#define MIC_ARRAY_CONFIG_CLOCK_BLOCK_A XS1_CLKBLK_2 + +// ------------------------- App Definitions ----------------------------------- +#define APP_N_SAMPLES (320) +#define APP_OUT_FREQ_HZ (12000) // 12KHz +#define APP_SAMPLE_SECONDS (2) +#define APP_N_FRAMES (APP_OUT_FREQ_HZ * APP_SAMPLE_SECONDS / APP_N_SAMPLES) +#define APP_BUFF_SIZE (APP_N_FRAMES * APP_N_SAMPLES) +#define APP_MIC_COUNT (MIC_ARRAY_CONFIG_MIC_COUNT) diff --git a/examples/app_mic_array_basic/src/small_768k_to_12k_filter.h b/examples/app_mic_array_basic/src/small_768k_to_12k_filter.h new file mode 100644 index 00000000..867c2290 --- /dev/null +++ b/examples/app_mic_array_basic/src/small_768k_to_12k_filter.h @@ -0,0 +1,59 @@ +// Copyright 2026 XMOS LIMITED. +// This Software is subject to the terms of the XMOS Public Licence: Version 1. + +#ifndef SMALL_768K_TO_12K_FILTER_H +#define SMALL_768K_TO_12K_FILTER_H + +/* Autogenerated by running 'python combined.py small_768k_to_12k_filter_int.pkl -fp small_768k_to_12k_filter'. Do not edit */ + +#include + + +#define SMALL_768K_TO_12K_FILTER_STG1_DECIMATION_FACTOR 32 +#define SMALL_768K_TO_12K_FILTER_STG1_TAP_COUNT 256 +#define SMALL_768K_TO_12K_FILTER_STG1_SHR 0 /*shr not relevant for stage 1*/ + + +uint32_t small_768k_to_12k_filter_stg1_coef[128] = { + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF2DBBA, 0x1E443FC2, 0x2788F9F1, 0x1E443FC2, 0x2785DDB4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFF86BEB, 0x1C91CEC9, 0x8DC6F6F6, 0x3B193738, 0x938D7D61, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFDBC29, 0x211BF8E9, 0x323BF6FD, 0xC4C971FD, 0x884943DB, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFE89A2, 0x721D515E, 0x02D0A650, 0xB407A8AB, 0x84E45917, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF26BF, 0x614B35F7, 0xE678C631, 0xE67EFACD, 0x286FD64F, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFCA48, 0x0C0BC045, 0x42E8F9F1, 0x742A203D, 0x0301253F, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF358, 0x5EE51139, 0x80C16668, 0x3019C88A, 0x77A1ACFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFC6D, 0x3F5E4E54, 0xAB2F696F, 0x4D52A727, 0xAFCB63FF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFF8E, 0x553F9533, 0x994F30CF, 0x299CCA9F, 0xCAA71FFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF0, 0x66554CF0, 0x78DA4025, 0xB1E0F32A, 0xA660FFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x879996A5, 0x5293801C, 0x94AA5699, 0x9E1FFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xF81E18C6, 0x631C0003, 0x8C663187, 0x81FFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFE01F07, 0x83E00000, 0x7C1E0F80, 0x7FFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE007, 0xFC000000, 0x03FE007F, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF8, 0x00000000, 0x0001FFFF, 0xFFFFFFFF, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + + +#define SMALL_768K_TO_12K_FILTER_STG2_DECIMATION_FACTOR 2 +#define SMALL_768K_TO_12K_FILTER_STG2_TAP_COUNT 48 +#define SMALL_768K_TO_12K_FILTER_STG2_SHR 1 + + +int32_t small_768k_to_12k_filter_stg2_coef[48] = { +-0x6b2e, 0x9bb0, 0x867bf, 0x6abc3, +-0x1d6951, -0x37fde1, 0x1b8845, 0xad6445, +0x6737ac, -0x11a7f35, -0x1d79ea4, 0x7ee25c, +0x3e05795, 0x27d0754, -0x49e8388, -0x834e523, +0xb8e3a0, 0xe48a501, 0xb3d7d09, -0xe33d15c, +-0x212034e8, -0x6b83320, 0x408190d3, 0x7fffffff, +0x7fffffff, 0x408190d3, -0x6b83320, -0x212034e8, +-0xe33d15c, 0xb3d7d09, 0xe48a501, 0xb8e3a0, +-0x834e523, -0x49e8388, 0x27d0754, 0x3e05795, +0x7ee25c, -0x1d79ea4, -0x11a7f35, 0x6737ac, +0xad6445, 0x1b8845, -0x37fde1, -0x1d6951, +0x6abc3, 0x867bf, 0x9bb0, -0x6b2e, +}; + +#define NUM_DECIMATION_STAGES (2) + +#endif diff --git a/tests/unit/src/test_fir_1x16_bit.c b/tests/unit/src/test_fir_1x16_bit.c index 220b263d..3916646c 100644 --- a/tests/unit/src/test_fir_1x16_bit.c +++ b/tests/unit/src/test_fir_1x16_bit.c @@ -15,7 +15,8 @@ TEST_GROUP_RUNNER(fir_1x16_bit) { RUN_TEST_CASE(fir_1x16_bit, symmetry_test); - RUN_TEST_CASE(fir_1x16_bit, with_stage1_coef); + RUN_TEST_CASE(fir_1x16_bit, single_val); + RUN_TEST_CASE(fir_1x16_bit, random_test); } TEST_GROUP(fir_1x16_bit); @@ -42,7 +43,7 @@ TEST(fir_1x16_bit, symmetry_test) } // Test zero signal with known inputs/outputs -TEST(fir_1x16_bit, with_stage1_coef) +TEST(fir_1x16_bit, single_val) { const int expected_result = 268435456; const unsigned max_cycles = 35; @@ -59,3 +60,43 @@ TEST(fir_1x16_bit, with_stage1_coef) TEST_ASSERT_EQUAL_INT(expected_result, result); TEST_ASSERT_LESS_OR_EQUAL(max_cycles, elapsed); } + +TEST(fir_1x16_bit, random_test) +{ + #define n_vpu 16 + #define sig_len (n_vpu * 20) + #define PRINT_OUT (1) + + const int sig_exp[n_vpu] = { + -58529792,34287616,70240256,17392640,52816384, + -51980800,54905856,40349696,-60945408,14667776, + -3800064,33825280,-1670656,879616,-23246848,-11620864, + }; + + uint32_t sig_in[sig_len] = {0}; + int sig_out[n_vpu] = {0}; + + // seed + srand(12345); + for (unsigned i = 0; i < sig_len; i++) + { + sig_in[i] = rand() & 0xFFFFFFFF; // Random 32-bit word + } + + // Using real stage 1 coefficients + for (unsigned i = 0; i < n_vpu; i++) + { + uint32_t *sig_ptr = &sig_in[i * 20]; // 20 words per VPU block + sig_out[i] = fir_1x16_bit(sig_ptr, stage1_coef); + } + + #if PRINT_OUT + printf("\nExpected vs Actual:\n"); + for (unsigned i = 0; i < n_vpu; i++) + { + printf("sig_out[%u] = %d, sig_exp = %d\n", i, sig_out[i], sig_exp[i]); + } + #endif + + TEST_ASSERT_EQUAL_INT_ARRAY(sig_exp, sig_out, n_vpu); +} From ea1931a002830eee6e5f43303af8afcc6d07b890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Wed, 18 Feb 2026 14:42:52 +0000 Subject: [PATCH 31/36] Update VX4 Tests agent label to use 'vx4' for improved environment specificity --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 083da60b..54440d1e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -217,7 +217,7 @@ pipeline { } // XS3 Tests stage('VX4 Tests') { - agent {label "x86_64 && linux"} + agent {label "vx4"} stages { stage("Checkout and Build") { steps { @@ -231,7 +231,7 @@ pipeline { steps { dir(REPO_NAME){ dir("tests/unit") { - withTools(params.TOOLS_VX4_VERSION) {sh "xsim bin/tests-unit.xe"} + withTools(params.TOOLS_VX4_VERSION) {sh "xrun --xscope bin/tests-unit.xe"} }}}} // stage('Run tests') } // stages post { From a9f10ecdf5fb27dda7e0b44b8d6dfeaa18489451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Wed, 18 Feb 2026 17:08:52 +0000 Subject: [PATCH 32/36] Add copyright notice and license terms to app_config.h --- examples/app_mic_array_basic/src/app_config.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/app_mic_array_basic/src/app_config.h b/examples/app_mic_array_basic/src/app_config.h index 809ff7e3..83271a05 100644 --- a/examples/app_mic_array_basic/src/app_config.h +++ b/examples/app_mic_array_basic/src/app_config.h @@ -1,3 +1,6 @@ +// Copyright 2026 XMOS LIMITED. +// This Software is subject to the terms of the XMOS Public Licence: Version 1. + #pragma once // -------------------- Frecuency and Port definitions -------------------- From b6b37b1c7347ce638549acfbe4b80c9915609dc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Fri, 20 Feb 2026 16:00:32 +0000 Subject: [PATCH 33/36] Replacing BasicMicArray Test XC with C code --- lib_mic_array/src/mic_array_task.cpp | 11 +- tests/signal/BasicMicArray/CMakeLists.txt | 3 +- .../BasicMicArray/src/{app.cpp => app.c} | 235 +++++++++++++----- tests/signal/BasicMicArray/src/app.h | 26 -- tests/signal/BasicMicArray/src/main.xc | 162 ------------ 5 files changed, 188 insertions(+), 249 deletions(-) rename tests/signal/BasicMicArray/src/{app.cpp => app.c} (69%) delete mode 100644 tests/signal/BasicMicArray/src/app.h delete mode 100644 tests/signal/BasicMicArray/src/main.xc diff --git a/lib_mic_array/src/mic_array_task.cpp b/lib_mic_array/src/mic_array_task.cpp index 962ac90a..a2815785 100644 --- a/lib_mic_array/src/mic_array_task.cpp +++ b/lib_mic_array/src/mic_array_task.cpp @@ -19,7 +19,7 @@ bool use_3_stg_decimator = false; // until mic_array_start() completes. mic_array_start() performs shutdown and // then sets g_mics back to nullptr. -#ifdef __XS3A__ +#if defined(__XS3A__) || defined(__VX4B__) //////////////////// // Mic array init // //////////////////// @@ -171,4 +171,11 @@ void _mic_array_override_pdm_port(chanend_t c_pdm) g_mics->PdmRx.SetPort((port_t)c_pdm); } } -#endif + +// C wrapper +extern "C" void _mic_array_override_pdm_port_c(chanend_t c_pdm) +{ + _mic_array_override_pdm_port(c_pdm); +} + +#endif // __XS3A__ or __VX4B__ diff --git a/tests/signal/BasicMicArray/CMakeLists.txt b/tests/signal/BasicMicArray/CMakeLists.txt index 97a1e98f..86674faf 100644 --- a/tests/signal/BasicMicArray/CMakeLists.txt +++ b/tests/signal/BasicMicArray/CMakeLists.txt @@ -4,7 +4,7 @@ project(test_ma) set(XMOS_SANDBOX_DIR ${CMAKE_CURRENT_LIST_DIR}/../../../..) -include(${CMAKE_CURRENT_LIST_DIR}/../../../examples/deps.cmake) +set(APP_DEPENDENT_MODULES "lib_mic_array") set(APP_HW_TARGET XK-EVK-XU316) @@ -113,4 +113,3 @@ foreach(target ${APP_BUILD_TARGETS}) add_dependencies(${target} gen_custom_filter) endif() endforeach() - diff --git a/tests/signal/BasicMicArray/src/app.cpp b/tests/signal/BasicMicArray/src/app.c similarity index 69% rename from tests/signal/BasicMicArray/src/app.cpp rename to tests/signal/BasicMicArray/src/app.c index d8b8aeda..b8f991f0 100644 --- a/tests/signal/BasicMicArray/src/app.cpp +++ b/tests/signal/BasicMicArray/src/app.c @@ -1,30 +1,36 @@ // Copyright 2022-2026 XMOS LIMITED. // This Software is subject to the terms of the XMOS Public Licence: Version 1. -#include -#include -#include -#include +#include +#include +#include #include -#include #include - +#include +#include +#include #include #include #include - -extern "C" { -#include "xscope.h" -} +#include #include "mic_array.h" -#include "app.h" #if USE_CUSTOM_FILTER #include "custom_filter.h" #endif +#define BUFF_SIZE (256) + +typedef chanend_t streaming_chanend_t; + +DECLARE_JOB(app_output_task, (chanend_t, chanend_t)); +DECLARE_JOB(app_fifo_to_xscope_task, (chanend_t)); +DECLARE_JOB(app_mic, (chanend_t, chanend_t)); +DECLARE_JOB(host_words_to_app, (chanend_t, streaming_chanend_t)); + + typedef struct { unsigned stg1_tap_count; unsigned stg1_decimation_factor; @@ -39,14 +45,24 @@ typedef struct { int32_t *stg3_coef_ptr; }filt_config_t; -static void get_filter_config(unsigned fs, filt_config_t *cfg) { +// ------------------------------- HELPER FUNCTIONS ------------------------------- + +static inline +void hwtimer_delay_microseconds(unsigned delay) { + hwtimer_t tmr = hwtimer_alloc(); + hwtimer_delay(tmr, delay * XS1_TIMER_MHZ); + hwtimer_free(tmr); +} + +static +void get_filter_config(unsigned fs, filt_config_t *cfg) { #if !USE_CUSTOM_FILTER cfg->stg1_tap_count = 256; cfg->stg1_decimation_factor = 32; cfg->stg3_tap_count = 0; cfg->stg3_decimation_factor = 1; // set as 1 to not mess up blocksize calculation at the host end for 2 stage decimator - cfg->stg3_coef_ptr = nullptr; + cfg->stg3_coef_ptr = NULL; cfg->stg3_shr = 0; if(fs == 16000) { cfg->stg2_tap_count = STAGE2_TAP_COUNT; @@ -91,7 +107,102 @@ static void get_filter_config(unsigned fs, filt_config_t *cfg) { #endif } -extern void _mic_array_override_pdm_port(chanend_t c_pdm); +static inline +void app_print_filters() +{ + filt_config_t filt_cfg; + get_filter_config(APP_SAMP_FREQ, &filt_cfg); + + unsigned stg1_tap_words = filt_cfg.stg1_tap_count / 2; + + + printf("stage1 filter length: %d 16bit coefs -> %d 32b words\n", stg1_tap_words*2, stg1_tap_words); + int initial_list = stg1_tap_words/4; + printf("stage1_coef = [\n"); + for(int a = 0; a < initial_list; a++){ + printf("0x%08X, 0x%08X, 0x%08X, 0x%08X, \n", + filt_cfg.stg1_coef_ptr[a*4+0], filt_cfg.stg1_coef_ptr[a*4+1], + filt_cfg.stg1_coef_ptr[a*4+2], filt_cfg.stg1_coef_ptr[a*4+3]); + } + for(int a = initial_list*4; a < stg1_tap_words; a++){ + printf("0x%08X, ", filt_cfg.stg1_coef_ptr[a]); + } + printf("]\n"); + + printf("stage2 filter length: %d\n", filt_cfg.stg2_tap_count); + printf("stage2_coef = [\n"); + initial_list = filt_cfg.stg2_tap_count/4; + for(int a = 0; a < initial_list; a++){ + printf("0x%08X, 0x%08X, 0x%08X, 0x%08X, \n", + filt_cfg.stg2_coef_ptr[4*a+0], filt_cfg.stg2_coef_ptr[4*a+1], + filt_cfg.stg2_coef_ptr[4*a+2], filt_cfg.stg2_coef_ptr[4*a+3]); + } + for(int a = initial_list*4; a < filt_cfg.stg2_tap_count; a++){ + printf("0x%08X, ", filt_cfg.stg2_coef_ptr[a]); + } + printf("]\n"); + + printf("stage2_shr = %d\n", filt_cfg.stg2_shr); +} + +static inline +void cmd_print_msg(unsigned i){ + const char* msg[4] = { + "[CMD] Resume data loop.\n", + "[CMD] Terminate application.\n", + "[CMD] Print Filters.\n", + "[CMD] Unknown command.\n" + }; + printf("%s\n", msg[i]); +} + +static inline +void cmd_perform_action(unsigned cmd){ + switch(cmd){ + case 0: break; + case 1: exit(0); break; + case 2: app_print_filters(); break; + default: assert(0); break; + } +} + +static inline +void cmd_loop(chanend_t c_from_host) +{ + char cmd_buff[BUFF_SIZE]; + int pp; + SELECT_RES( + CASE_THEN(c_from_host, c_from_host_handler) + ) + c_from_host_handler:{ + xscope_data_from_host(c_from_host, &cmd_buff[0], &pp); + assert((pp-1) == 4); + uint32_t cmd = ((uint32_t*)(void*) &cmd_buff[0])[0]; + cmd_print_msg(cmd); + cmd_perform_action(cmd); + continue; + } +} + +static inline +int send_words_to_app(streaming_chanend_t c_to_app, char* buff, int buff_lvl) +{ + int* next_word = (int*)(void*) &buff[0]; + while(buff_lvl >= sizeof(int)){ + s_chan_out_word(c_to_app, next_word[0]); + next_word++; + buff_lvl -= sizeof(int); + hwtimer_delay_microseconds(15); + } + if(buff_lvl) + { + memmove(&buff[0], &next_word[0], buff_lvl); + } + return buff_lvl; +} + + +extern void _mic_array_override_pdm_port_c(chanend_t c_pdm); // We'll be using a fairly standard mic array setup here, with one big // exception. Instead of feeding the PDM rx service with a port, we're going @@ -110,15 +221,15 @@ pdm_rx_resources_t pdm_res = PDM_RX_RESOURCES_SDR( XS1_CLKBLK_1); #if USE_CUSTOM_FILTER -void init_mic_conf(mic_array_conf_t &mic_array_conf, mic_array_filter_conf_t (&filter_conf)[NUM_DECIMATION_STAGES], unsigned *channel_map) +static void init_mic_conf(mic_array_conf_t *mic_array_conf, mic_array_filter_conf_t filter_conf[NUM_DECIMATION_STAGES], unsigned *channel_map) { static int32_t stg1_filter_state[MIC_ARRAY_CONFIG_MIC_COUNT][8]; static int32_t stg2_filter_state[MIC_ARRAY_CONFIG_MIC_COUNT][CUSTOM_FILTER_STG2_TAP_COUNT]; - memset(&mic_array_conf, 0, sizeof(mic_array_conf_t)); + memset(mic_array_conf, 0, sizeof(mic_array_conf_t)); //decimator - mic_array_conf.decimator_conf.filter_conf = &filter_conf[0]; - mic_array_conf.decimator_conf.num_filter_stages = NUM_DECIMATION_STAGES; + mic_array_conf->decimator_conf.filter_conf = &filter_conf[0]; + mic_array_conf->decimator_conf.num_filter_stages = NUM_DECIMATION_STAGES; // stage 1 filter_conf[0].coef = (int32_t*)custom_filter_stg1_coef; filter_conf[0].num_taps = CUSTOM_FILTER_STG1_TAP_COUNT; @@ -148,13 +259,16 @@ void init_mic_conf(mic_array_conf_t &mic_array_conf, mic_array_filter_conf_t (&f // pdm rx static uint32_t pdmrx_out_block[MIC_ARRAY_CONFIG_MIC_COUNT][CUSTOM_FILTER_STG2_DECIMATION_FACTOR * CUSTOM_FILTER_STG3_DECIMATION_FACTOR]; static uint32_t __attribute__((aligned(8))) pdmrx_out_block_double_buf[2][MIC_ARRAY_CONFIG_MIC_COUNT * CUSTOM_FILTER_STG2_DECIMATION_FACTOR * CUSTOM_FILTER_STG3_DECIMATION_FACTOR]; - mic_array_conf.pdmrx_conf.pdm_out_words_per_channel = CUSTOM_FILTER_STG2_DECIMATION_FACTOR * CUSTOM_FILTER_STG3_DECIMATION_FACTOR; - mic_array_conf.pdmrx_conf.pdm_out_block = (uint32_t*)pdmrx_out_block; - mic_array_conf.pdmrx_conf.pdm_in_double_buf = (uint32_t*)pdmrx_out_block_double_buf; - mic_array_conf.pdmrx_conf.channel_map = channel_map; + mic_array_conf->pdmrx_conf.pdm_out_words_per_channel = CUSTOM_FILTER_STG2_DECIMATION_FACTOR * CUSTOM_FILTER_STG3_DECIMATION_FACTOR; + mic_array_conf->pdmrx_conf.pdm_out_block = (uint32_t*)pdmrx_out_block; + mic_array_conf->pdmrx_conf.pdm_in_double_buf = (uint32_t*)pdmrx_out_block_double_buf; + mic_array_conf->pdmrx_conf.channel_map = channel_map; } #endif + +// ------------------------------- THREADS ------------------------------- + void app_mic( chanend_t c_pdm_in, chanend_t c_frames_out) //non-streaming @@ -164,10 +278,10 @@ void app_mic( #else mic_array_conf_t mic_array_conf; mic_array_filter_conf_t filter_conf[NUM_DECIMATION_STAGES]; - init_mic_conf(mic_array_conf, filter_conf, NULL); + init_mic_conf(&mic_array_conf, filter_conf, NULL); mic_array_init_custom_filter(&pdm_res, &mic_array_conf); #endif - _mic_array_override_pdm_port((port_t)c_pdm_in); // get pdm input from channel instead of port. + _mic_array_override_pdm_port_c((port_t)c_pdm_in); // get pdm input from channel instead of port. // mic_array_init() calls mic_array_resources_configure which would crash // if a chanend were to be passed instead of a port for the pdm data port, so // this overriding has to be done only after calling mic_array_init() @@ -219,6 +333,7 @@ void app_output_task(chanend_t c_frames_in, chanend_t c_fifo) } } + void app_fifo_to_xscope_task(chanend_t c_fifo) { while(1){ @@ -235,40 +350,46 @@ void app_fifo_to_xscope_task(chanend_t c_fifo) } - -void app_print_filters() +void host_words_to_app(chanend_t c_from_host, streaming_chanend_t c_to_app) { - filt_config_t filt_cfg; - get_filter_config(APP_SAMP_FREQ, &filt_cfg); - - unsigned stg1_tap_words = filt_cfg.stg1_tap_count / 2; - - - printf("stage1 filter length: %d 16bit coefs -> %d 32b words\n", stg1_tap_words*2, stg1_tap_words); - int initial_list = stg1_tap_words/4; - printf("stage1_coef = [\n"); - for(int a = 0; a < initial_list; a++){ - printf("0x%08X, 0x%08X, 0x%08X, 0x%08X, \n", - filt_cfg.stg1_coef_ptr[a*4+0], filt_cfg.stg1_coef_ptr[a*4+1], - filt_cfg.stg1_coef_ptr[a*4+2], filt_cfg.stg1_coef_ptr[a*4+3]); - } - for(int a = initial_list*4; a < stg1_tap_words; a++){ - printf("0x%08X, ", filt_cfg.stg1_coef_ptr[a]); - } - printf("]\n"); + xscope_connect_data_from_host(c_from_host); + + char buff[100*BUFF_SIZE+3]; + int buff_lvl = 0; + int dd = 0; + + SELECT_RES( + CASE_THEN(c_from_host, c_from_host_handler) + ){ + c_from_host_handler:{ + xscope_data_from_host(c_from_host, &buff[0], &dd); + dd--; + buff_lvl += dd; + if(dd == 0) { + cmd_loop(c_from_host); + } + else { + buff_lvl = send_words_to_app(c_to_app, buff, buff_lvl); + } + continue; + }} +} - printf("stage2 filter length: %d\n", filt_cfg.stg2_tap_count); - printf("stage2_coef = [\n"); - initial_list = filt_cfg.stg2_tap_count/4; - for(int a = 0; a < initial_list; a++){ - printf("0x%08X, 0x%08X, 0x%08X, 0x%08X, \n", - filt_cfg.stg2_coef_ptr[4*a+0], filt_cfg.stg2_coef_ptr[4*a+1], - filt_cfg.stg2_coef_ptr[4*a+2], filt_cfg.stg2_coef_ptr[4*a+3]); - } - for(int a = initial_list*4; a < filt_cfg.stg2_tap_count; a++){ - printf("0x%08X, ", filt_cfg.stg2_coef_ptr[a]); - } - printf("]\n"); - printf("stage2_shr = %d\n", filt_cfg.stg2_shr); +int main(){ + channel_t c_frames = chan_alloc(); + channel_t c_fifo = chan_alloc(); + chanend_t xscope_chan = chanend_alloc(); // tools will start the other channel end + streaming_channel_t c_to_app = s_chan_alloc(); + + PAR_JOBS( + PJOB(app_mic, (c_to_app.end_a, c_frames.end_a)), + PJOB(app_output_task, (c_frames.end_b, c_fifo.end_a)), + PJOB(app_fifo_to_xscope_task, (c_fifo.end_b)), + PJOB(host_words_to_app, (xscope_chan, c_to_app.end_b)) + ); + s_chan_free(c_to_app); + chan_free(c_frames); + chan_free(c_fifo); + return 0; } diff --git a/tests/signal/BasicMicArray/src/app.h b/tests/signal/BasicMicArray/src/app.h deleted file mode 100644 index c1c45572..00000000 --- a/tests/signal/BasicMicArray/src/app.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2022-2026 XMOS LIMITED. -// This Software is subject to the terms of the XMOS Public Licence: Version 1. - -#pragma once - -#include "mic_array.h" - -C_API_START - -// Thread that runs the decimator -MA_C_API -void app_mic(chanend_t c_pdm_in, chanend_t c_frames_out); - -// Thread that receives samples and pushes them into a FIFO -MA_C_API -void app_output_task(chanend_t c_frames_in, chanend_t c_fifo); - -// Thread that sends FIFO results back to host -MA_C_API -void app_fifo_to_xscope_task(chanend_t c_fifo); - -// Print filters (for debug purposes) -MA_C_API -void app_print_filters(); - -C_API_END diff --git a/tests/signal/BasicMicArray/src/main.xc b/tests/signal/BasicMicArray/src/main.xc deleted file mode 100644 index 0141041d..00000000 --- a/tests/signal/BasicMicArray/src/main.xc +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2022-2026 XMOS LIMITED. -// This Software is subject to the terms of the XMOS Public Licence: Version 1. - -#include -#include -#include - -#include -#include - -#include "app.h" - -unsafe { - - -// We cannot be guaranteed to read less than this, and we cannot read more than -// this -#define BUFF_SIZE 256 - -void host_words_to_app( - chanend c_from_host, - streaming chanend c_to_app) -{ - xscope_connect_data_from_host(c_from_host); - - // +3 is for any partial word at the end of the read. It will get moved to the - // front and we'll read again, which could be another BUFF_SIZE bytes - char buff[100*BUFF_SIZE+3]; - int buff_lvl = 0; - - /* - The host app can attempt to send [0, 255] bytes on a write attempt. The - xscope logic always adds a null byte at the end, so we expect to receive - [1,256] bytes here. We ignore the null byte at the end, and just consider - the other bytes (i.e. we pretend we received one fewer byte). Then here's - the basic protocol: - - - Loop forever: - - Receive N bytes of data. (after subtracting 1) - - if N > 0: send all whole words to app and loop back. - - if N == 0: - - Enter inner (command) loop: - - Listen for 1 word (4 bytes) from host: - - assert() 4 bytes were received - - Interpret command based on received word value: - - CMD 0: break from command loop back to data loop - - CMD 1: terminate application - - The reason for the command loop is so that the application can terminate - gracefully. This design should also make it relatively easy to add - additional commands if need be. - */ - while(1){ - int dd; - select { - case xscope_data_from_host(c_from_host, &buff[0], dd): - { - dd--; // last byte is always 0 (for some reason) - buff_lvl += dd; - - if(dd == 0){ - // Enter command loop - - // use a separate buffer in case there is a fractional word in the - // data buffer. - char cmd_buff[BUFF_SIZE]; - int cmd_loop = 1; - while(cmd_loop){ - int pp; - select { - case xscope_data_from_host(c_from_host, &cmd_buff[0], pp): - { - assert( (pp-1) == 4 ); - uint32_t cmd = ((uint32_t*)(void*) &cmd_buff[0])[0]; - if(cmd == 0){ - // Break back to data loop - printf("[CMD] Resume data loop.\n"); - cmd_loop = 0; - } else if (cmd == 1){ - // Terminate application - printf("[CMD] Terminate application.\n"); - exit(0); - } else if (cmd == 2){ - // Print filters - printf("[CMD] Print Filters.\n"); - app_print_filters(); - cmd_loop = 0; - } else { - // Unknown command. - printf("[CMD] Unknown command.\n"); - assert(0); - } - break; - } - } - } - - } else { - - // Send all (complete) words to app - int* next_word = ((int*) (void*) &buff[0]); - while(buff_lvl >= sizeof(int)){ - c_to_app <: next_word[0]; - next_word++; - buff_lvl -= sizeof(int); - // We have to be careful about how quickly we push data to the PDM - // rx service. Sending too quickly can mess stuff up or (if PDM rx - // is running in ISR mode) cause a deadlock. This is unfortunate, - // but is only because we're pretending a channel is a port. - // Ultimately, we just need to avoid sending PDM data faster than - // the decimator thread can process the data. Unfortunately, because - // frames are being used, we don't actually know when it's done - // processing a given block of data. So, we'll just insert a - // reasonable delay here. - - // With a 3.072 MHz PDM clock and 1 microphone, we expect to have - // port reads at a rate of 3.072 MHz / 32 = 96 kHz. That rate is - // linear in the number of channels, but we're also always safe if - // we go slower than we need to here. (96 kHz)^(-1) = 10.41 us - delay_microseconds(15); - } - - // if there's 1-3 bytes left move it to the front. - if(buff_lvl) memmove(&buff[0], &next_word[0], buff_lvl); - } - break; - } - } - - // repeat forever - } -} - - -int main() -{ - chan c_from_host; - streaming chan c_to_app; - chan c_frames; - chan c_fifo; - - par { - xscope_host_data(c_from_host); - - on tile[0]: { - host_words_to_app(c_from_host, c_to_app); - } - - on tile[0]: { - xscope_mode_lossless(); - - par { - app_mic((chanend_t) c_to_app, (chanend_t) c_frames); - app_output_task((chanend_t) c_frames, (chanend_t)c_fifo); - app_fifo_to_xscope_task((chanend_t)c_fifo); - } - } - } - return 0; -} - -} From bfd59186d7f5e49b22f5a83255b6071200f3458f Mon Sep 17 00:00:00 2001 From: xalbertoisorna Date: Fri, 20 Feb 2026 16:20:22 +0000 Subject: [PATCH 34/36] adding mic array ports --- tests/signal/BasicMicArray/CMakeLists.txt | 27 +++++++++++++++------ tests/signal/BasicMicArray/src/app.c | 10 +++++++- tests/signal/BasicMicArray/src/config.h | 22 +++++++++++++++++ tests/signal/BasicMicArray/test_params.json | 10 ++++---- 4 files changed, 55 insertions(+), 14 deletions(-) create mode 100644 tests/signal/BasicMicArray/src/config.h diff --git a/tests/signal/BasicMicArray/CMakeLists.txt b/tests/signal/BasicMicArray/CMakeLists.txt index 86674faf..ca69a493 100644 --- a/tests/signal/BasicMicArray/CMakeLists.txt +++ b/tests/signal/BasicMicArray/CMakeLists.txt @@ -6,7 +6,24 @@ set(XMOS_SANDBOX_DIR ${CMAKE_CURRENT_LIST_DIR}/../../../..) set(APP_DEPENDENT_MODULES "lib_mic_array") -set(APP_HW_TARGET XK-EVK-XU316) +# conditional depending on target +if(CMAKE_C_COMPILER_VERSION VERSION_EQUAL "3.6.0") # XS3 (XTC 15.3.1) + set(APP_HW_TARGET XK-EVK-XU316) + set(COMMON_COMPILER_FLAGS -O2 + -g + -report + -mcmodel=large + -Wno-xcore-fptrgroup + -Wno-unknown-pragmas + -Wno-format) + +else() # VX4 + set(APP_HW_TARGET XK-EVK-XU416) + set(COMMON_COMPILER_FLAGS -Os + -g + -Wno-fptrgroup + -Wno-format) +endif() set_property(DIRECTORY "${CMAKE_CURRENT_LIST_DIR}" PROPERTY CMAKE_CONFIGURE_DEPENDS "${CMAKE_CURRENT_LIST_DIR}/test_params.json") @@ -84,13 +101,7 @@ foreach(l RANGE 0 ${NUM_SAMP_FREQ}) set(CONFIG "${N_MICS}ch_${FRAME_SIZE}smp_${USE_ISR}isr_${samp_freq_str}") message(${CONFIG}) - set(APP_COMPILER_FLAGS_${CONFIG} -O2 - -g - -report - -mcmodel=large - -Wno-xcore-fptrgroup - -Wno-unknown-pragmas - -Wno-format + set(APP_COMPILER_FLAGS_${CONFIG} ${COMMON_COMPILER_FLAGS} -DMIC_ARRAY_CONFIG_USE_PDM_ISR=${USE_ISR} -DMIC_ARRAY_CONFIG_SAMPLES_PER_FRAME=${FRAME_SIZE} -DMIC_ARRAY_CONFIG_MIC_COUNT=${N_MICS} diff --git a/tests/signal/BasicMicArray/src/app.c b/tests/signal/BasicMicArray/src/app.c index b8f991f0..791a6334 100644 --- a/tests/signal/BasicMicArray/src/app.c +++ b/tests/signal/BasicMicArray/src/app.c @@ -21,7 +21,15 @@ #include "custom_filter.h" #endif -#define BUFF_SIZE (256) +#ifndef META_OUT +#define META_OUT (0) +#endif + +#ifndef DATA_OUT +#define DATA_OUT (1) +#endif + +#define BUFF_SIZE (256) typedef chanend_t streaming_chanend_t; diff --git a/tests/signal/BasicMicArray/src/config.h b/tests/signal/BasicMicArray/src/config.h new file mode 100644 index 00000000..9d0e7644 --- /dev/null +++ b/tests/signal/BasicMicArray/src/config.h @@ -0,0 +1,22 @@ +// Copyright 2026 XMOS LIMITED. +// This Software is subject to the terms of the XMOS Public Licence: Version 1. + +#pragma once + +#if defined(__VX4B__) + +#include + +#ifndef PORT_MCLK_IN +#define PORT_MCLK_IN XS1_PORT_1D +#endif + +#ifndef PORT_PDM_CLK +#define PORT_PDM_CLK XS1_PORT_1G +#endif + +#ifndef PORT_PDM_DATA +#define PORT_PDM_DATA XS1_PORT_1F +#endif + +#endif diff --git a/tests/signal/BasicMicArray/test_params.json b/tests/signal/BasicMicArray/test_params.json index cdca885c..33755163 100644 --- a/tests/signal/BasicMicArray/test_params.json +++ b/tests/signal/BasicMicArray/test_params.json @@ -1,6 +1,6 @@ { - "N_MICS": [1, 2, 4, 8], - "FRAME_SIZE": [1, 16], - "USE_ISR": [0, 1], - "SAMP_FREQ": [16000, 32000, 48000, "good_3_stage_filter_int.pkl"] -} + "N_MICS": [1], + "FRAME_SIZE": [16], + "USE_ISR": [0], + "SAMP_FREQ": [16000] +} \ No newline at end of file From e3c3f9a405dc093d345b6980949ec53e41820599 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?xalbertoisorna=E2=80=9D?= Date: Fri, 20 Feb 2026 17:10:36 +0000 Subject: [PATCH 35/36] Enhance Jenkins pipeline and add app_config.h for BasicMicArray tests --- Jenkinsfile | 9 ++++++++- examples/app_par_decimator/src/app.cpp | 2 +- tests/signal/BasicMicArray/src/app.c | 1 + .../signal/BasicMicArray/src/{config.h => app_config.h} | 0 tests/signal/profile/app_memory/src/app.cpp | 2 +- 5 files changed, 11 insertions(+), 3 deletions(-) rename tests/signal/BasicMicArray/src/{config.h => app_config.h} (100%) diff --git a/Jenkinsfile b/Jenkinsfile index 54440d1e..b33fc207 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -225,7 +225,14 @@ pipeline { checkoutScmShallow() dir("tests/unit") { xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_VX4_VERSION) - }}} + } + dir ("tests/signal/BasicMicArray") { + createVenv(reqFile: "requirements.txt") + withVenv { + xcoreBuild(buildTool: "xmake", toolsVersion: params.TOOLS_VX4_VERSION) + } + } + }} } // stage("Checkout and Build") stage('Run tests') { steps { diff --git a/examples/app_par_decimator/src/app.cpp b/examples/app_par_decimator/src/app.cpp index 77ada646..1b01f7e4 100644 --- a/examples/app_par_decimator/src/app.cpp +++ b/examples/app_par_decimator/src/app.cpp @@ -47,7 +47,7 @@ pdm_rx_resources_t pdm_res = PDM_RX_RESOURCES_DDR( #if defined(__XS3A__) #define CLEAR_KEDI() asm volatile("clrsr %0" : : "n"(XS1_SR_KEDI_MASK)); #else -#warning "CLEAR_KEDI not defined for this architecture." +#define CLEAR_KEDI() ((void)0) // not defined in !xs3a #endif using TMicArray = mic_array::MicArray #include "mic_array.h" +#include "app_config.h" #if USE_CUSTOM_FILTER #include "custom_filter.h" diff --git a/tests/signal/BasicMicArray/src/config.h b/tests/signal/BasicMicArray/src/app_config.h similarity index 100% rename from tests/signal/BasicMicArray/src/config.h rename to tests/signal/BasicMicArray/src/app_config.h diff --git a/tests/signal/profile/app_memory/src/app.cpp b/tests/signal/profile/app_memory/src/app.cpp index 385ec725..69df901a 100644 --- a/tests/signal/profile/app_memory/src/app.cpp +++ b/tests/signal/profile/app_memory/src/app.cpp @@ -54,7 +54,7 @@ pdm_rx_resources_t pdm_res = PDM_RX_RESOURCES_DDR( #if defined(__XS3A__) #define CLEAR_KEDI() asm volatile("clrsr %0" : : "n"(XS1_SR_KEDI_MASK)); #else -#warning "CLEAR_KEDI not defined for this architecture." +#define CLEAR_KEDI() ((void)0) // not defined in !xs3a #endif using TMicArray = mic_array::MicArray Date: Fri, 20 Feb 2026 17:29:34 +0000 Subject: [PATCH 36/36] Define CLEAR_KEDI as a no-op for non-XS3A architectures --- lib_mic_array/src/mic_array_task.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_mic_array/src/mic_array_task.cpp b/lib_mic_array/src/mic_array_task.cpp index d7e0ab5c..3e10d4bd 100644 --- a/lib_mic_array/src/mic_array_task.cpp +++ b/lib_mic_array/src/mic_array_task.cpp @@ -107,7 +107,7 @@ void default_ma_task_start_decimator_3stg(TMicArray_3stg_decimator& mics, chanen #if defined(__XS3A__) #define CLEAR_KEDI() asm volatile("clrsr %0" : : "n"(XS1_SR_KEDI_MASK)); #else -#warning "CLEAR_KEDI not defined for this architecture." +#define CLEAR_KEDI() ((void)0) // not defined in !xs3a #endif template