diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..2ccaac0 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,90 @@ +cmake_minimum_required(VERSION 3.0) +project(horus C) + +include(GNUInstallDirs) +mark_as_advanced(CLEAR + CMAKE_INSTALL_BINDIR + CMAKE_INSTALL_INCLUDEDIR + CMAKE_INSTALL_LIBDIR +) + +# +# Prevent in-source builds +# If an in-source build is attempted, you will still need to clean up a few +# files manually. +# +set(CMAKE_DISABLE_SOURCE_CHANGES ON) +set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) +if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") + message(FATAL_ERROR "In-source builds in ${CMAKE_BINARY_DIR} are not " + "allowed, please remove ./CMakeCache.txt and ./CMakeFiles/, create a " + "separate build directory and run cmake from there.") +endif("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") + + +# Set project version information. This should probably be done via external +# file at some point. +# +set(HORUS_VERSION_MAJOR 0) +set(HORUS_VERSION_MINOR 2) +# Set to patch level if needed, otherwise leave FALSE. +# Must be positive (non-zero) if set, since 0 == FALSE in CMake. +set(HORUS_VERSION_PATCH FALSE) +set(HORUS_VERSION "${HORUS_VERSION_MAJOR}.${HORUS_VERSION_MINOR}") +# Patch level version bumps should not change API/ABI. +set(SOVERSION "${HORUS_VERSION_MAJOR}.${HORUS_VERSION_MINOR}") +if(HORUS_VERSION_PATCH) + set(HORUS_VERSION "${HORUS_VERSION}.${HORUS_VERSION_PATCH}") +endif() +message(STATUS "Horuslib version: ${HORUS_VERSION}") + +# Set default flags +set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-unused-function -Wno-strict-overflow -O3 -g -I. -MD ${CMAKE_C_FLAGS} -DENABLE_ASSERTIONS") + +# Arch specific stuff here +message(STATUS "Host system arch is: ${CMAKE_SYSTEM_PROCESSOR}") + + +add_subdirectory(src) + +# Ctests ---------------------------------------------------------------------- + +include(CTest) +enable_testing() + + add_test(NAME test_horus_binary + COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; + sox ${CMAKE_CURRENT_SOURCE_DIR}/samples/horus_binary_ebno_4.5db.wav -r 48000 -t raw - | + ./horus_demod -m binary - -" + ) + set_tests_properties(test_horus_binary PROPERTIES PASS_REGULAR_EXPRESSION "1C9A9545") + + add_test(NAME test_horus_binary_iq + COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; + cat ${CMAKE_CURRENT_SOURCE_DIR}/samples/horusb_iq_s16.raw | + ./horus_demod -q -m binary --fsk_lower=1000 --fsk_upper=20000 - -" + ) + set_tests_properties(test_horus_binary_iq PROPERTIES + PASS_REGULAR_EXPRESSION "000900071E2A000000000000000000000000259A6B14") + + # Wenet - Using Mask estimator (Assuming ~120 kHz tone spacing) + add_test(NAME test_wenet_mask + COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; + cat ${CMAKE_CURRENT_SOURCE_DIR}/samples/wenet_sample.c8 | + ./fsk_demod --cu8 -s --mask=120000 2 921416 115177 - - | + ./drs232_ldpc - - 2>&1 | strings" + ) + set_tests_properties(test_wenet_mask PROPERTIES + PASS_REGULAR_EXPRESSION "packet_errors: 0 PER: 0.000") + + # Using regular frequency estimator, tell freq est to avoid first 100 kHz due to a DC line + add_test(NAME test_wenet_nomask + COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src; + cat ${CMAKE_CURRENT_SOURCE_DIR}/samples/wenet_sample.c8 | + ./fsk_demod --cu8 -s --fsk_lower 100000 2 921416 115177 - - | + ./drs232_ldpc - - 2>&1 | strings" + ) + set_tests_properties(test_wenet_nomask PROPERTIES + PASS_REGULAR_EXPRESSION "packet_errors: 0 PER: 0.000") + + diff --git a/README.md b/README.md index df0bed5..56ca065 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,29 @@ -# horuslib -High Altitude Balloon Telemetry Library +# High Altitude Balloon (HAB) telemetry library + +## Building + +``` +$ git clone https://github.com/drowe67/codec2.git +$ cd codec2 && mkdir build_linux && cd build_linux && cmake ../ && make +$ cd ~ +$ git clone https://github.com/drowe67/hab.git +$ cd hab && mkdir build_linux && cd build_linux +$ cmake -DCODEC2_BUILD_DIR=~/codec2/build_linux .. +$ make +``` + +## Testing + +``` +$ cd hab/build_linux +$ ctest +``` + +## Further Reading + + Here are some links to projects and blog posts that use this code: + + 1. [Horus Binary](https://github.com/projecthorus/horusbinary) High Altitude Balloon (HAB) telemetry protocol, 3 second updates, works at 7dB lower SNR that RTTY. + 1. [Testing HAB Telemetry, Horus binary waveform](http://www.rowetel.com/?p=5906) + 1. [Wenet](https://github.com/projecthorus/wenet) - high speed SSTV images from balloons at the edge of space + 1. [Wenet High speed SSTV images](http://www.rowetel.com/?p=5344) diff --git a/samples/horus_binary_ebno_4.5db.wav b/samples/horus_binary_ebno_4.5db.wav new file mode 100644 index 0000000..323076b Binary files /dev/null and b/samples/horus_binary_ebno_4.5db.wav differ diff --git a/samples/horusb_iq_s16.raw b/samples/horusb_iq_s16.raw new file mode 100644 index 0000000..2e36638 Binary files /dev/null and b/samples/horusb_iq_s16.raw differ diff --git a/samples/wenet_sample.c8 b/samples/wenet_sample.c8 new file mode 100644 index 0000000..15885c1 --- /dev/null +++ b/samples/wenet_sample.c8 @@ -0,0 +1 @@ +~€}€~‚}€~‚€~~‚~~~€}~€~€}}~~€€~€~€~~~~€~€~€~~~€~€~€~~~~€}~€~~€~€€}€}€~~€~~‚~~~€~€~€‚~~€~~~€~€€~€~€}~~€~€~€€€~€}~~€}€€~€~~~€~€€~€~~~€€~~~}€€~€~~~€~€~€~€~€~~~~€}€}€€}~€~€~~€}€€€~~~~€~~€€~€~~~€~€~~€~€~~€~~~~€€~€~€~€€‚~€~€€€€~€~€~~€}€~€}€~€~~~~€~€}€~€~~}~~€}~€~~€€}~}€~~€€~€~€~~€~~€~€~€}~€}€~~€~€€~€~€~€€}€~€~€~€~~~€~€€~€~€~~€}€~€~~~~~~~~€}€€~€~€~~‚}~€}€~€}~€~€€~~€~}~~‚~~€‚}~~€}€~€~~€~€~€~~~€~~€€~€~€~~~~‚~€~~~~€}€€‚~€~~€€~~€€}~~~€}€~€€~}€~~~~€~€~€}~~€~~€€€~~~~€~~€}~~‚~~€}€€}€€~€~€~~~~€~€~~~€~~~€~~~~€€~~€~~~~€€€}€~€~~~~€‚~€~€~€~~~~~€€~€~~€~€€‚~€~~€}€~~€~€~€}€€~€~€~€~~~}~€~€~€~~~€~€€}€~~~~~~€}€~€~€~‚~~~€€~€€}€~~~~€~€~€€~€€~€~~~}~~€~~€~~€~€~~€~€€€~~~€~~€€‚~~~~€~~€~~~€€~~€~}~€~€~~€~€~~€}~€~€€~€~~~~~€}€€~‚€~€~€~€~~€~€€€~}€~€~}}~€}€€~€~€~~~€~€~€~€€€€~€~~~~€~€€~€~~€~€}€€~€~€~€~~~~€€~~€~~~€~~€€~~~~~€~€~~~~€~€€€~~~€~€€‚~~€~€~€~€~€€~~~‚~~€~€}€~~€~~}~€~€€€~‚~~€~€€~€}€~€~‚~~~~€~~€}~€~~~€~~€~‚€~~€~€~€~€~~~€~€~€€}€~}€€~~‚~€~€}€~€~~~€~~}~~~€~~~~~€~€€~€~}€~€~€~€~~~~€€~€~€~~~€~€~€€}€~€~€~~€~€€~€~~~~€~€~€~~}€€‚}~€~€~€~~€€}~~€‚~€}~~€~~‚}€}~~€}~~€~€~€~~€~€€€~€}€~~€€‚~~€~€}~€~€~~€~€~~€€}€}~€~€~~~~€~~€€}~~€}€~~~€~€~€~€}€~}€€~€€~~€~€}~~}€}€€~€~€~€~‚€~€}~~~~€€}}€}€~~~€‚~~}€€€~€~~~~€€€~€~}~€~€~}~~~~€~€~~~}~€€€‚~€~~€}€~€~~~€~€~€~~~€~~€~€‚~~~€}€€}€€~}~~~€}€~~~~~€~}~~}€~~€€}€~~~~}~€€€‚~~~}€~‚€€~€~~}€~€€~€~€€}€}~€}€€}‚~~}~€}€€~€~€~~‚~~€}}~~~~€~~€~~€~‚€‚€€~€}~€~€€~€}€~€€~~€~~~€€~~€~~~~~~~~€~~€~€~€~€~~€~€€~€~~~‚€€€~~~~~€}€}~€~€}€}‚~€}€~~~~~€€€~~~‚~€~€€~€€€~€}~~€~€~€~~~€~€€€~€~€~€€€‚~}~~~€~~~€~€~€€~~~~€}~~€~€}}~€~~€}€~€~€}~~€~€€€€~€}~~€€~~~‚€~€~~~€~€~€~~€~€€~~€~~~€~€~~~€~€€~€~~€€~€~€~€~€€~€~~€~€~€~~~~~~€~€~€~~~}€~€€€‚~€~~~€}€~~~€}~€~€€~€~€~~~~€~€€~~~~€€}€}€~€~~€~~~~€~€~€}~~}€~€~€}}~~~€}}~€~€~}€}~€~€~~~~}€~~€~~€~€~}€~}€~€€€~€~~~€~€~~‚€~€~~~€~€€~~€~~€~~€€€~€~€~~€}~€€€~~~€~€~€}}€~€€~€~~~€~€€~}~}}~~€~€}€~€~€€~~~‚~€~~€€€~€}~~€~€€€~€}~€~€~~~€}~~~}€€~€}~€€€~€~~~‚€~~~~~~~~‚€~€~€~~~€~‚€€}€€~€€}€€~€~}‚€~~€€}~€~€}~~€~€~€}€~~~€}~~€}~~€€€}€~~~~~€~€€}€~~€~~~‚~~€~€~€~~€}€€~€~~€}~€‚~~~€~€~€}€~€~~€~€~€~~~€~€€~€€}€~~~€}€€~€~€~‚~~€~€~€~~~~€€~€€~~~‚€~~€}€€}€€~€€~~€~€~€~€€€~~~€€~€~~~~€~~€~}€}€~€~‚€}~€}€€€~~€~}~~€€~€~~~€~€~~€~~~€~€~€~€~~~‚~€~€~}~€~~€~~€€~€~~€}~~€~~~€~~€€€~€~€~~~€€~~~~~~€~€~€}€~€}€~~€~€~~€~€€€~~~€~~€€€~~~}€}€~€~€~~~~~~~~€‚~€~~€}€~~~€€€€~~€}€€~~}€~€}€}~~~~~~€~€~€~~€€€~}€}~}€~€€~€~€~~€~€‚~€~~~~€~€€}~€}€~~€~‚€~€~€~€€~€~€~~€€~€€~‚€~}€~~}€~~€€~€~~}€~€~€~}~~‚~~€}~€~€~~€~~~€~€~€~€~€}€~€€}~~}}€~€€~€}~~~€~€€~€€~€~~‚€}~€~€~€€~~€~€}~€~€~~€~€€€}€~~€}€~€€~€~~}€€~€}~~€}~€~€}~~€~€~~~~~€~€}€€~}€~€~€€}€~€~~~~~€}€~€}€~~€€~€~€~~~~€~€~~€~€~~~€~€€~€~~€€~€~€}€~~~€~}€~€~€~~€}€~€~~}€~~€€€~}~€~€~€}~€~~€~~~€‚~€~~~~€~~€€€~€~~€~€€‚~~€~€}€~}~~€~~€€~€~~€€}€~~~€€~~€~€}~€}~€~€~€~~€€€~€~€€}€~€€~€~€~~€€~€~~€}~€€~€~~~€~€~€~€}~~€~€€~~€}€~€~~€~€~€~~~~~€€~~~~~€€}€}€}€€~€~€~~€€€€~€}€~‚~~~€€~~~€~€~€~~€€}€}€~~~€€~~~~€~€}€~€€€€~€}~~~~€}€€}€€~€~€~~€~~€€~€}~~~~€~€~~~}€~€€~~€~~€€€~€€}€€~~€~€€~~}~€~~€€~€~~~€€€‚~~~€}€~€}€~~~‚€€~€~~€~€€~€~~€~€€~~~~~~~€€~€~~€~€~€€€€}~~~€‚€~~€~€~€~€~€~~€~}€~€~~€~~}‚}~€~€}€}€~~€‚~€~}€}€~~~~€~~€~~~~€}€€~~~~€~€€~€~€~~€~~€~€~~‚~~~~~€~€~~€}€~~€}~€~€~~~~~‚}€~€~€~~€~~€~~€€}€~~€}~~~€~€}€€~€~~~€~€~€}€}€~~€~}~€~}€~€}€~}€€}€€~€~~€}‚~€€~€~€~€~€~€€~€~~~~€€~€~€~~€}€€~€~~€~€~€€€~~€~€~~€‚}€€€~€~€~€}€~~‚€~~€~€€~€~~~€~~€€~€~}~€€‚}€~~~~€~€~~~}€}‚€~€}~~~~€~~€~€~~~~~€~~~~~€~~€~~€~€~€€}€~€€~€€~€€~~~€‚~€~~~~€€~€~~~}€~}~~~‚}€~€~~€€€~€~~€~€€~€~€~~€~~€~~€~~€}€€~€~~~€~~€€€~€~€}€€~€€}~€~€~~~‚€€€~€~~~~€~~€~€}~~~€~€€~~~€~€~€~~~€~€~€€€~€~€~~~€€€~€~~€~€€}}€~‚€~~~~€~€€~€~€~~€€~€~€~~}~~~€€}€~~€~€~~~€~~€€~}€~~€€€}€~€~€}~~~~~€~~€~~~€~€€€~~€~~~€€~€~~€€€}€~€~€~€€~€~€€€~€€~~€~€€€~€}€~~€}€€}€~€~~€€~~~~€‚}~€~€~€}~€~}€~~~~€~€€~~€~~~~~€€~€~~~€}~~~€~~€€‚~}€~~€~~€~~~€}€~~€€€~~€~€~~}~€~‚€~~€~€}~€~€~~~€}€€~€~€~~~€~€€~€~~~~~€~€€~€}~~€}€~€~€~€~~€~~€}€~€~~~€~€~~~~~€€~€~~}€€~~~€€‚~€~€}€~~€€~€~~~€~€~~~€~~€€€~~~€}€€}~€~~€€€|€~€~€}~~~€~~€~€~€~~~~€~~~€~}~~~~€€~}€~~€‚~~€~}~€~€~€€}€€~€~}‚€~~~€~€~€€~~~€~~~€~€€~~~~€}~€€~~€~~€}~€€~~~‚~~~~€€~€}€~~€€~€~~~~€~€€~~~~€‚~~}~€~€~~€~‚€€~~€~~€}€}€€~€~~€~}€~~€~~€~~~€}€~~€~~€~€~€~~€}€~~~~€‚}€~}€€~€~€~~€~€€€€‚~~~€€~~€~€}€€}~€~€~~~~€~€~€~~€~~~€~€~€~~€}€€€~~~~~€€~~~€}€€€~€}€~€~€€~‚~~~}€}€~~€~~€~€~~~~‚€~}€~€~€€}€~~€€€€~~}€~‚}}€~€€}€~€~‚€~~€}€}€~€~€‚~~~€~€}~~€~€~€€€~€~€~€~~€~€‚~~€~€€~~€~€}€~~€~€~€}€~~~€~~~}€~€~}~~}€€}€€€~~~~€~~€€~~€}~}€~€€~~€~~}~~€~€~€~€~€€~~€}~~€~~€~}€€‚~€~~~~€‚€~~}€~€€€~€~~€~€~€}€€}€~~~~€}€~~€~€~€~€~€~~~~€~€~~€~€}~€}€~€}€~€~~}€~€~€€~€~~€‚~€~~€~€~€€~€~~€~‚€~€~~€~€€~€~~~~~~~}~~€€~€~}€~€€~}~~~~€€~~~€~€€~~€}€~‚€~€~~€~€~€~€~€~€~~~~€~€€~~}~€€€~~€~~€~~€~~€~€~~€~€~}€‚~~€‚~€€~€~€€~€~~€~€}€~€€€~€~€}€}€}~~~~}€~€€}€~€}~~€€~€}€}}~€}€~€€~~€~~€€€~~~€~€~€~€~€~€~~~}~~€}€€~€~~€~~€~~~~€€~€~~€~€€€~~~€~€€}€~€~€€~€~~‚~~‚~€~€~€~~~€~€~€€€~}€~~~‚~€~~~€~€~€~€~€~€€~~~~~~€~€€~~€~€~€~€€€~€}~~€~€€€~}~}€~€€~€~€~~~€€~~}~~~}€~~€~€~~€€€~}~}€~€~~~‚~€€~~~~~~€~~‚€~~~€}€}~€~€€€~~€~~~€~€€€~~~€}~€€~€~~~€~~€€~~€~~€€~~€~€€~~}~~~}~€~€~~€~€€~€}~}~€~€}€€~~€~~}~~€€~€~~~~~€€~€~€~€~‚~€~~}~€€~€~~~~€€~€~~~~€~€€€~~~€~~~€}€~€~~€}~€€~}}~~~€~~~~€~€~~~€~€~€~~€~€€~~€~€€~~~~€}~€€~~€~~}€~€}~~~€€€~€}€€€~€€~€~~~€~~€€~€~€~~~€~€}€~€~€€}‚€~€}€~~~€}€~€~€~~~€€€}€~~}€~€~€}€~~€~~€~€}€~}‚€~~~€~€€~€}€~~}~€€}€~~‚~~~~~€€~€~~~€~~€€~~€~~~€~~~~€~€€~}~~€~€}€€~€~~~~}€€~~~€~€~€~€€€~~€~~€€€~€~~€~€‚}~~~~€~€~€~~~~~€~€€€~~€~~€~~€€~}~~€}~‚€€‚~€~~€~€€}€€}}€~€~€~~~€~€~€~~~~~~€~€~€}€~~}€~€~~€~€~~~€‚~€€}€~€}~€~€~€~€~€~~~}€~€€€}€~~~€~€~€~€~€~€€~~€}€~€€~}€~€~~~~~~€€~~€~~~}€~~€~~}€~€€€€~€~~€}€€~~~~}~€~}€}}~~€~~~€~€~€€€€~€~€}€}€€~~€‚€~€~~~~€~€€~€}~€~‚€~€}}€~€~~~€~€€~€~€€}€~~~‚~€}€€~}~~}€}~~~€~~}€~€~€~€~€€~}~~~€~€€~€~}~€€~€~~€}€~~~~€~€}€~~~€~€~€~~~~€~€~€‚€€~~€~~€~€~€~€~€€~€~€€~€}€~‚~~‚}}€~€~~€~~€€~€~~~€~€€~~€~€~€}€~}~€~~€~€~~~~€~‚€€~€~~}€~€€}€}~~€~~€}~~~~€~€€}€~€€~~‚}~€~€~€~~~€~€~~€~~€~€~€~€€~€~}€}~~~€€€€€~~~~€~€~€~~€~€~€~€~€}€~€~€~~~€}€€~~€~~~~€€€~~€~~}~~€€}€€~€~~€~€~€€€~€}€~€}~~€~~~€~€~€~€~€~€€~~€}~}€~~}€~€~€~~‚}~~€}€~‚€‚€€~€~~~€€~€~€~~~€~€}€~€~€‚~~~€~€~~€}~~€~€~~~~}}€€~€~€€~~~€~€}€}€~~~‚}€~€~€€~~€€~€~~~€~€€}€~~€~€~€€~~€€€~€~~~~~~~€~€~~~€~€~€~~~~€~€~~~~~€‚~€~€}€€}€~~€}€~€~€}~€€€€}€~~~~€€~€~~~~~€~€~€~€€~€~~~~€‚~€~~~€~~~~~}~€€~€~~}~€~€€€~€~~~~€€€~€~~~€€~€~~~~€€~€~~€~€~€}~~€~€€€~~€~€€€~€~€~€~€}€~~~~~€‚~€€}€~~€~€~€~~€~~€€~~~€~€~~~~~‚€~€~~~€~€~~~€}€}~€}€~~~~€€~}€~~~€~~€~€}~~€~€~€~~€~~€€~~~~~€~€~€€~}€}~~~€~€~~~€~€€€~€~~€~€€€~~~€~€€~€}€~€}~€€€~~€~}~€€~~}€€~€}~~€~€~~~~~‚€€~~‚}€~€€}€}€~€~~~€~€€€~€~~~~€€€}~~~€€~€}€~€~~€~€~~€~~€€~€€~~€}€~~}~€}€}€€~~‚~~€~€~~€~€€€€~€~~€~~~€‚~~}€€~}€~~€~€~€~~€‚}€~€~€€~€~~}‚~~~€~~€~€~€~}~~€~€~€~~€~€~€~}~~€}€~€€~~~}€€~€~~€€€‚~~‚~~~€~€~€}~€~€~€~~€~~~~~€~€€~€~€}}~€~€‚~€~€€~€~~~€€€~€~€~~€~€~~€~€€~€~~~~€~€~~~~€~€€€~€€~~€~~€}€~€€€~€~€~~€~€~~~€~€}€~€~~~~€}€~~€~~€~~€~€~€~‚~~€~€~€~€~~~~€€~€~~€~€~~~€}€~€~~~~€~}~~~€~~€€€€€}€~€~~€~€~€€€€‚~~€~~€~€€~€}€~€~€~~€~~~€}€~€€~~~~€~€~€€~€€~~~~~~€~~€‚~~€~€~€~€€}€~~~~€~€~~~~~€~~€~€}~€}€~~€~~€~€~~‚~‚}~€~€€€~€~~~~~~€€}€~€~€~€~~€~~€}€~}~~€~€~€~€~~~€~€~~~€€}~~~€€~€~~€~€}€€~€~€€}~~€~€~€~~‚~~}€‚~~€€€‚~~€~~€€~€€}€~€}€~~€~~€~€~~€~~€~€€€~€}~~€~€‚~~€~€~€~€€}~~}€~€~~€~€~€~~€~€€}~~€€~~€~~€~€€}~~€~€€€€~€~€~~~€~€~~~€~~€~~~~€~~€‚~€~€}€~€~~~€}~~~€}€}€~€~~€~€€€€~~~€€‚~€~€~€~€~€~€~~~‚~~€~€~~~~~€~€€‚~~€~~~€~€€€~€}~€~€€~~€~€~€~~~~€€€€~€~€~€~~€~~~€~~€~€€~~€~‚€‚€~€~~€€€€~€~~}€~€~~€~€}€~€€~€~€€~~~€}€€€~~~~~€~€€‚~€€}€~~€~~~€€~~~€~~€~€€~~€~~€~€~€~~€~~~~€~€~~}€€€}€~~~€~€~€~€~€€~~}~~~€€~~€}€€~~~~€~~~€~€}€~~~~~€~€€€~~€~€~~~‚~€~~€~€~€€€~€~€~~~€€}€~~~~€~€~€€~€~~~~~€~}~€€€~~€~~€~~€€~€~~€~€~€}€~~€~~~~€~~}€~~~€~~€}€€}€~€~~~€~€~€}€~€~~~~€~€}‚~€~€~€€~€€~€~€~€~~€~~~€~€€~€€}€~~~~€}€€~}~~~‚~€~~~€~€€~€~~}€}€€~€}~€‚}~€~€~}€}‚~€~~~€~€€€~~}€~€€~~~€~€€€~€~€}~~€~~€‚}€€}~~€~~€€~}€€€~~~€}~~€~~~€}€~~~€~€~€~€~€~€~~€€~€~€~€}‚€~~~~‚~~}€~€€€~~~~€€~~€}~~€€}~~€}‚~~~~€~~~€~€€€€~}€~~~€~€}€~~€€~€~~~€€€€~€~~~}€}€~€}€€~~€~€~€~~~~~~€~€€~~~}~~€~€}~~~~€~€€~~€€~€~€~~€~€}€~€€~€~€~~~}€€~}€~€~~~~€€~~~€~€~€€€~~~~€~€}€~€}€~~€~}€€€~€~~~€~€€~}~~~€~€€}€~€}‚€~~~~~€~€~~~€~€€~~€~€~€~~€~~€€~~€~~~~‚‚~~€~~}€~€€€€~~~€~€~€€€~€~~~€}~~~~€~€~€}€~€}€~~€~€€~~€~~}€~€~€~~€€~~~€}€~€~€~€~~~‚~~€~€€~€~€~~€~~~~€}€~~€~}€~€~~‚€}~~€}€~€~~‚}~~€~€}~~~~~~€€~~€~~€}€€}€~~~€~€€~~€~~~€~}€€€~~~€~~~€€~€~~~~€~€~€~€~€~~~~~~€}€€€~€~~~€~€€~~~€~€‚~€~€~€€~€~€~~€~€€€~~€~~€~€~€~~€~€€€~~€}€~~€~€~€€~€~€~~~~€‚}€~€€~€~~~}~~~€~€€~€}~€~€€€~~€~€~€€€~€~~€€}~~€~€€€~€~~}~€}€~€~€€~€~€}€~}€~€€€€~€~~€~€€€~~~€~€~€~€~€€~~~~€~€€}€~‚€~~€~~}€~€~€€~‚€~~~€}€}€~}~€~€~‚€€~~~~}€~€~~~~~~~~€€~€~€~€~}~€~€€€~~~~~~€€~~€~€€€~~€~~}€~€€~€~~~€~‚~€~~~€~€~€~€}~~‚€~~€€~~~~~€€‚~~~~€~‚~€~~~€~€~€~~~€~€€€~~€~~€~€€€~€~€~~€~€~€€~~€~~~~€~€~~~€€~€~~~~‚~€~€}}€~~€~~~€~~€€~~}€€~€~€~€€~~€~~~€~€€~€~~~€~~€€~€~€~~€~~€€~€~~~€€~€~€~~€~€€~€~~€}}€~€~‚~€~~€€~€~~~~}€€€€~€~€~~~€~~€€~€~~€~~~€~€€~€€}€~€€~€~€~€~~€~~€~}~€~~~€}}€}€~~~~~~}€€~€€~€~~~€~~~~~~€~€~~~€~€€€~€~€}€~~€}€~€~~€~€}€~~€€~€~~€€€€~~€~}~€€€~}~}€}€~~€€~€~~}~~~€}€€~€€~~€~~~€~€~~~€~€~~€~€€€~}€}€~€€€~~€€~€~€~€~€}€~~~€€€€‚€~~€~~€}€~€€~~€~~~~€~€~€~~~€‚~€€}~~~~€€~€~€~€~~~€~€~€~~}€€€~€~~~€€~~~€€€~~€}~}€€€~~~€~}€€€~~~~~~€~€~~€~€€~€~€€~€€}€}€~€~~~€~}€€~€~€~~€~~~€~~€‚~€~€}€~€~~€‚~€€‚}€€}€~}~~€€~€~}€€€~€~~~€~€€€~€}~€~€}~~}~~~}~}€€~~~~€~}€~€€~~~~~~€~~~€~~€~€~~}~€€~€~€}€~€}€€}€~€~~‚~~€~€~€~€~€~~€~~€~€}‚€~~~€‚~€}€€~‚~~}€~€~€~‚~~~€~€~~€€~~€~~}~€€~~~€~~€~€~}‚~~~~€€€€~€~‚~€~~€}€}€~~~€€€€~~~€~€~}€~~~€€~€~~~€€~€}€€~~~‚~~~~€}~~~€~€€~€~~€€~€~€€€‚~€~€~€}€~~€~~~}€~‚€~~}~€~€}€~~€~€}€~€~~~~~~€~~€~‚€~~~€}€~~~€~€~~€~~~€~€€~€~€}€€~~~€~€}~~~€€€~~€~€€€~€~~~~~€‚~€~€€~~€~€~€~~€€~€}~~~~~~‚~~€}~~~}€~~~€~~€}~~€}€€€~€~~}~~~€~€~€~€~€~~€€~€~€~€€~‚~~€~~€~€~€€€€~€~~~~}€~~€~~~‚€€€~~€~~€}€~€€~~€~~~€~€~~€}€~~€~€€~~€~~~€‚€~~~~€~~€}€~€~~€~~€}€€‚~~~€~~€‚~€€~~€€~€~€~~~~~€}€~}~‚€~~€~€€~€~~‚~€~~€€~~€~€~€€}€}~~‚€~~~}€~~€~~~~€~€€~€~€}~~€~~€€€~~€}€~‚€~€~€~}}~~}}€€~€}~€}~‚€~~~€~~~}~‚~€€€~€~€~€€}€~€}€~€~€~~}~~~€~~~€€~€~~~}€~€€‚~~~~€~~€€€}~€~~~€~€}€€~~~~~€~€}‚€~€}~~~€~€}€~~~€€~~~~~€~~€~~~}~~~€~€~€~€~~~€~€€~€~€~~~~€€€€}€~€~€~€~€~€~€€~€~~€~}~~~€}~€€~€~~€~~€~€}€}~‚~~~€~€€~€~€~‚€€~~€~~€~~€~~€~€€~~€€}€~~€~~‚~€€}€~€€~}~€}€~‚~~~€~~~€~€~~~€~~€€~~~€}~}~€}~~~~}~€€~€~~~~€~€~€‚}€€~~€€}€~€~~~€€~€~€~€~~€~}~~}€~€~€€~€~~€~~€~€€€~~~~}~€€~~}€~~}€~~~€€~€~€~€}€€~~€~~€€€€~€~€~€~€~€€~~€~‚€€~~~~€~~€~€~€€~€~~~€~€~€~€~€}€}€~€}~~€~€~}€~€~}~€~~~~€~€}€€}€~~€€~€~~€~~€}€~~€~~€~~€~€€€~€~€~€~}€€~€~~}€~€~€~~€~~€€~~€€€~€~~~€~€€~€~~~~~€~€~€}€€}€~~~€~~}€}~€~~~€~€~~~~~~‚~~€}€~€~~€~€€~~~~€~€€~~€~€~~€~~€‚}~~€~€~€~€~€‚~~€~€~~€~€~€}€~~€}€~~€~€€€‚~~€~~~€}}~€~€~~€~}€€€~~~~€~€€~~~~~€~€~€€~~€}~€~€~€€€~€€~€~}~~~~~€~~€~€~~~€~€~€~~~~€€‚~€~~}€~€€~~~€~€€‚€}€~~~€}}€}€€}€~€~€~€€~€}€~}}€}€€~~~~~~€€~}€~~€~~€~€}~€€~€€~€~~€}~~€}~€€~€~~~~~€}€€~€~€~€~~~~€~}€~~€~~~~€‚~~~€€€~€}‚€~~‚~~€~€€~~€€}~~~€~€~€~€~€~‚~~€~€}€~€}~~€~€‚~~€~}€~€~€~€~€~€€~~~€}}~€~‚~€~€~~~€~€~€~€}~~~‚€€~}~~€~€~~€~~€~€~€~€~€€~~~~€€}€~€~€€~€~€}€~~~€~€~~~~~€~~~€~‚€~€}~~€}€‚‚~€~~~~€}€€~€€~~€~€~€~~~€~~~~€}€~€~€~€~~~~€~€~€~~~€~€‚~~~€~€~~}~~€€~€}€~€~~€~~~~€~~~}€~€€~€}€~€~€€~~€~~~€~€€‚~~~~€€€~~€~~€~~€€~€~€~~~~~€~~€~~€~‚€~~~€~€}~~€~€€~~~~~€~€~€~€~~€~€€~~€~~~€~~~~€~€€~€~~~~€€€~~€~}€~€€~€~€~}€~€~€~~€~~~~€}€~€€~€~~~~€~€€~€~€~€~~€~€€€~~~€~€€~€~€~€~€€~~€}~€~€~€}€€~€~€~~€~€~€}~€~~~~€~}€~~~€~€€~€~~~€~€~€~~€}€€€€}~~€~€}~€€€~€~€}~€}€~€~~~€~~€~}~~€~€€‚€~~~~€~€€~~~}~€}€~€€~~~~€~€€€~€~~€}}~€~€~€}€€}‚€~~€~€~€~€~€~~€~€€~}€~~~€~€~~€~~€~€~€}~}€€~€~~‚~~~€€~~~~~€€€~~~€~€~~€~~€~~~}€€~~€€~€~€€~€~€~€~€~~€}~€~~}€~€~~€~€€€~€~~€~€~~~~~€}€€€~~€~€}€~€~‚€~~‚~€~€~€€~‚€~~€€€€~~€~~~~€€~€~€}~~€~~~€~€~€~€~€~€€~€~‚~€~€}€~€€~~€€~€~~€}~~~€~€~}~€~€}€~€}€€~€~~}~~~~€}€}€~€~~~€~~€~€~}‚~~€~€~}€~€~€€~€~~~~€}€€~~€~€€}€~€~~~~~€€}~€~}~~€~€€~~}}€}€~€}€€~~~~€~€}~~€~€€~€}€~}€€}€}€}€~~~~€}~€}€€~~}€€€~€}~~~‚~~€~€€~~€~~~€~€}€€}}€~€~~~€~€€~€~~€€~~~€~€~€~~~~€~€~€€~€}€~~}€~€~~€€~€~~~~~~~~~~}~€€~€~€}€~~€}€~€€}€}€~~~~~€~~~~~€~~~€~€~‚~~~~€~~€€€~~€~~€}€€~~€~}€~~~~~}€}€~~~€~€€€‚~~~~€~~€~€}€€~€~~~}€~~€}~€~~~~€€~€~€~€~€~€€~~€~~~~~€‚}~€}€€~€~€~~~~}€€}€~~~€‚~€~€}€~}}~~~€~€€€€~€~€}€~€~€€€€~€~~}€~€~~~‚~~‚~€~~€~€€€€~€~€~€}~€}€~~~~~€~€€~€~~}€}€€~€~~~~€‚~€€~€~~‚~€~~~~€}€~€€~€~~€~€~~~€~€€€€~~~~}‚~~€~~€}~€~~~€~~~€}~€~~€}€~€~€~‚€€~€}~~~€€€~€~~~~~€‚}€}€~€~€€~~€~}~€~~€~€€~~€~}€~~€‚}€~€~€}€~~~~€~€~€~€~~~~~~€}€‚~~€~€‚}€€}~€~~~~~€~€}€~~}~€}€~}€~€~~~€~~€~~~~€~€€~€~~€€~‚€~€~~~€}€}€~~€~~€~€}‚€~}~€~€~€~€~~~€}~€}€~~‚~~~€}‚~~€~~€€€~€~~~€~€}~€€}€~}~~~~€~€€~~~~~€€€~€}~}€€~€~~~€€~~€~~€~€~€}}€~€~€~~€~€~~€~~€~€€}€}€~€~~‚~~~~€~€€€}€~€}~€~€€}€}€~~~€€~~~€~~~~€~€€}€~}}~€~€}€}~~~€~~€}€~~€~€€~€}~~~~€~€~€€€~~€~~~€€~€~~~€€~~~~€~€€~€~}~€€€€~€~~~~~€~€~~€~€~€~€~€~€}‚}~€€~€~}€~~€~€~€‚~~€~~~~~€~€~€€~€~€~~€~€~€€€~€~€~~~€€€~~€~~~~~€~‚~€~~~~€}€€~€~€~€}~~€~~€€€€€~}€~~~€€~€}~~~~€~€€€}€~€}€‚€€€~~€~~}€~€€~€~~€€€€~~~€}€~‚}€€}€~}€~~€~€}~~€~€~€‚~€€}€~€~‚€~~€~€€€~€~~~€€€€~€~€~€€€€~~~~€~€€}€~€€~€}~~€~€€}€~~€~~€}~€€~€~€~~}~€~}€€~€~~€}€€‚~€~~~~€~}€€~€~~€}~€‚~}~€}€€~~~~€€€€~~~€~~€€~}€~€~€€€~€~~~€~€}}€}€~}}~€~€}€~~~€~€€€~~€~~€~€}€~€€~~€~€~€€~~€~~~€€~€}~}€€€~€~~~€~€~~€~€~~~‚~€€~€~€}~~~‚~€~€~€}€~€~~€}€€~~€~~~€}~€~‚~~~€~~~~€€€~~~~~~€}€€~€€~~€~€€~~~~€‚€€€~~€~~€~€~€~€~~€}€~~€~~~~~€~€~€~€~€€€~~~~€~€‚€~~~}€€~~~~€€~€~€~€~€~}€€~~~€}€}~€~€~€~‚~€}€~€€}€€~€~~~€~‚€~€~~~~€~€~~~€~~€~€}~€}~€~~€€~~€~~~€~€€~€~~~€~€}€~}€~~‚~€~€}€}~~~~~€}€~‚€~€~~~€€~~~~~}€~€~}~~~~€€~~~~~€~€~€~~€~~€~€~€~€~~~~€~€~}€~€}€€~€€~}€~€~~~~€~€}~~€~€~‚€~€~~}€€€~€~~~~~€€~}€~~~~€€~~€~~}~€~~~€}€~~~€~€€€~€~~~~~€€}~€~€~€€~€~~€}~€~€~~~‚€}€~~~~€~€~~~€~~~€~€€~€~€€~€~~~~€~€€}€}€~~~€~€~€|‚~~€~~€~~€~€€€€~~~~€€€€~~~~~€~€~~~~}~€€~~~}€~€~~‚~~€€~€~~€€~€~€}€~~€~€~~€~€€€~~€}€€~€~€~€€€~~€}~€~€~€~}€~~€~~€‚~}€~~~~€~€~€~€~~~~€~€€~€~~~~€~~€~~~€€€‚~€~~}€~€~~~€€€}€~€}€}‚€~}€}~~€~~‚€~~~€~€~}€~~~~€~€}}€~€€~~~~}€~~‚~~~€}€~€€}€~~€}~€€€~~€~€~~€~~~€~€~€~€~€~~~~€~€}€€~€}~~€~€~€~€~€~€€~~~€~€‚~€~€~€€~€~~€~€€€~}€€~~~~~~€~€}~~~‚€€€~~€~~~~€~~~~€}€~}€}€~~~€€~}~~€}~€€~~€~~~€~€~~~€~€~~~€~€€€~€~}€~€~~~‚~~~€~€€~€~~~~€~~€~~€~~}€~€€~€~~~€€~€}€~~}‚~€~€€€~€~~€~€~€~€€~€€~€~‚~}~€~~~€}~~€~€}~~€~~~€~~~~€€~}~~€~€€€~€}€~€~~€€~~~€~~€€€~~~}~€~€~€~€‚~€~~~~}€~€€€~€~~~~€€~}~~~‚€~€~~‚~‚~~~€€~€~~€€€~}~€~€€€~~~€€~~€}~~~~€~€~~~€~€~~}~€€~~€~€~€~€}~€~~€~}€~~€~€~€~~~‚€€~~~€}~€~~~~~‚~€~€~€€€~€}~€}€€€~€~~‚~€~€~€~€}€}€}€~}~~€~€€~€€~‚~~~~}€~€~~€~~~~€~€€~€}€~€~~~€€~€~~~€~~€€€~€~~}‚€€~€~~~€~€€~~~€}~€~€€}€~€~‚€~~€~€~€~~~€~€}€~‚€€~€~}€~~~€~€~€~~€~}~‚~€~€~~~}€~€€‚~€€~€~€}€~€~~~~€}€~€~€~~~}€~€€~€~€~~€€~€~€}}€~~~~~~€€}€}€~}€€}~€}~~€~~€€~}~~~~~€~~~€~~~~€}€~€~€€~€~€~€~~~€‚~€~€€~}€}~€~€~~~}~€€€~€~~€~€~€€~€~~~~€~€~~€~~‚~~€~€€~‚~€~~~€~~€~}}}~~€~€€~~€€€~}~€}~€€~~€~€}€~€~€€}€~~~~~~€€~‚€}~}‚~~€~€~€~‚~}~€~}€}€~€~~€€€€}~~~€~€~~€}~~~‚}€~~€€~~~~~~€~~~~~€}€€}€~~‚~€~~€€€~}€~~~€~€~~~€~€}€~€~~€~€~}~~€~~~€~€~€~€}€}~€€~€~€~}~€~~€~~~~€~~€~€~~~€~€~€~€€}€€~€~~€€€~€~€€}‚€~~~‚~~€~~€~€~€~€~~€}€~€}€}€~€~~€~€~€€~~€}€}}€€~€~~‚~~€€~€~€~~~€~€~}€~€~€€€€~~~€€~}~~~~€€€}€~~€}~€€€}€~~€}€~€€€~~€€}€~€~~~€€‚€~~~}€}~€€‚}€~€€~~~~€€~€~€~~~~~€‚~€~~€€}€~~€~€~€~}~~~€~€€~€€~€}~~}€}~€~~~€~€~€~€~‚€~€~~€~~~€~€~~~€~€€€~~~~~€‚~€~~€~€€~€~~~€~€~€~~}~~€}~~€~€€}€~~~€~€~~€~€}€}~~€~€€€~~~€~}€~€}~€€~~~~~€€€~~€}~~€}~€~€}€~~€€~€~~~€~€€~~~~~€~~~€~€~€~€~~}~€€€~€~~€~€~‚€~~€~~~€€~€~~€~€€~€€}€€€~‚}~€~~~€~€€~€~~€~€€€€~€~~€€~~€~€}€~€~~€~€}€~‚~}€~~€~~€~~~€}€€~€~~~€~€~~~~~~~€~€~~€}€~}~€~€~€~€~}~~~€~€€€~€~~~€~€€~€}€}€~~‚~~~€~€~€~~~€€~€€~€~~‚€}~~€€€~€~}€~~€€€~€~~~€~€€~€~~€}€~~}~~~€€}~~€~€~€~€~€}€~€~~~€~€€€€~~~~€~€~~€~€~~~€~€~}~~}€€~€~~‚€€~~}€~€~~€~~~€€~}€€~€~€~~€~~~~€}€~€}~€€~~€~€~}€~‚€~€~€}€~~€~~~~€~~€€~€}~~€~€€~~€~}~€~€~~€}~€~€€€~€~€}~€€~€~~~~~€}€~~€}~€~€~€€‚~€~~€~~€~}€~€€€~€}€~€‚~€~€‚~€~€~€~~€~€~€~€~~~~~€}‚€~€}~~€~€~}€€}€}~€~€‚~€~€~€~~€~~€~€€~€~~~~€~€~€}}€}€€~}€~~€}~€~~}€€€€~€~~~~€€~€~~€~}€€~€~€}€~€~€~~~€~€~€€€€~€~~~€~€€~€~€~€~€}~€~‚€€~€~€~~}€~€~~~‚€~~~~€~€}€}€}~~~€~~€~~~€~€}}€~€€}~€~~~€€€€~€~~~€~~€~~~€~€~~‚~~~~€~€~~~~~€}€€~€~}€}~€~€~€~~~~}€€~~€}€~~~~€~€~€}‚€~€~~~~€~€~€€~}~~€~€}€~€~~‚~~€~€~€}€~€€~€~~~€~€‚}~~€~€~€€~€~}}€~~€~~~€€€€~€~€~€}€}€~€~€€~€}~~}€~€€~~€~~€~~~€€~~€~~}€€€~€~~€~€~€~~~€~€~€}€~€}€€‚~~~€}€~€~€~~€~€€~~~}~€~~~€~~€~€}~€~€~~~€~€~€~}~€€}~~€~~~}}~€€€~€~~€~€€€~€~~~~~~€€~~€~~~€~~€~€€~€~~€~~~€}€~~~~}€~€}}€~}~€}€}€}~~~€~€€~€~~~~€~€~~€~‚€€~€~}€~€~€€}€~€€~‚€~~€~~€€€€~€~~€}~~€~€}€€‚€€~€~€~€}~€€‚~~~~€~€~€~~~€~~€‚~~~~€~€~€~~€€~€~~~~~~~€}€~€~€~~~~~€€~€~€~~}€€€~€}~~~€~~~€€‚~~€~~‚€~}€~~€~€€~~€~~}€~€€~~€€}€~€~~€€‚~€~€~~~€~€~€~€~€}~~~~€~€€€~~}}€}€€~€€~€~€~}~~€}€€}€~~}€~€}~€€€~€~~~€~€€~~~~€~~€}€€~€~€~~~€~€~€~~€~€€~~}~€€~€~~~~~€~€~€~~~}€~€€~€€~€~~~€~€~~€€~~~~€~‚‚~‚}€‚}~€~€~€~€~€€€~€~€~~€~€~€~~~~‚€€€~€~~~€}~~€~€~~~€~€~€~€~‚~~€}€~€~€~}€~€~€€~€~~€~~€€€}€~~~€~€€~€~€~~€}‚€€}€~€~€~€~€}€~~~€}}€€€~€~~€~€~€€~€~€~~}€~€€~€~~~€~€~~€~€~€~€~~~€~€€~~~~€‚~}€~€€~€€}€~~~~~~€}~~~~€~€~€€~‚€~€~~€}€~€~~€~€~€~€~~€~€~~€}€~~€€~€€~€~~€~~€~€€~€~~~~€~€~€}€~€~~€~}~}€}€€~€~€€€€~~€~~€~€€€}~~€}€~€~~~‚~€~~~€€€€~~~~€}€~€}€€~€~€~~~~€}€€€~~}~€€€~€~€}~€~~€~€}€€€~€}~~~€€~~~€~~€~€€~€~€€€~~~~€~~€€€~€~~€~~€~€~€~€~}€}€~€~~€~€€~€~~€~}€~~~~€~€~€~€~~€~€€€€~~€~€~€€~~~~~€~~~~€}~€~€~€€~~€~€€~~~€~€€~€}~€~€€~€~~~~€~€€~€~€€~€~~~€€}€~~~~}€~}~~€~€€‚~€~€~~€~€€€€~~}~~€~~~}~€€~~~€~~€~~€~€}€€~~~€~~~€~€~€~~€~~€€€~~€~~~~€€~~~€~€~€€~€~}€€€~€~}€~€~€~}€~€~~~€~~~‚~~~}€~‚€€~~~€~€€~€~~~€~€~~~€‚}€~}}‚€~~~~€€~€~~€~~€~€}€~€€~~€~€~€~€}€~€€~€~}€~€€~€~~€~€}€~€€}€~~€~€€€~~~~€€€}€~~~~€€~~~~€~~€~€€~€~€~€€€€~~~‚~~€~~}~€€€~~€€}€€~€~€~~€~~~}~€€~‚€}€~€~€€‚€~~€~€~~~€~€€~}~€~~~~~€}~~€~~~€~€€€~€~~€~€€~€~€~€€~€~€~~~~~€~€~}~~‚€~~€~€~€€~€~€~~}~€~€~€~€~€~€€~€~€~€}€~€€~~€~~~~€~€~€~€~~~~€}€~~}€~€€~}€~€~~‚~~~~~~€~~€~~~€~€€~}€}~€}€~€~€}~€~€~€~€~~‚€~€~€}€}€~~€~€~~~~€~~~€€€~€~~~€~€€~~€~~€~€}€€€~€}~~~~€€€~€~€~}~€€~€~€}~€€~€~~~€~€~€~€~~}~~~€}€~€}}€~~~~€~€~€~~~€~€€€€~€~~~€~€~€€~€~~~}€€€€~€~~€~~€~€~}€}~€~€~~€~€€~€~~€~€€~€~~~€~€~~€~€~~€}€~~~€~€€~€~~~~€€}€~€}€~~~€~€€~€~~€€~~€~€~€~€~~~~€~€~€~€~€€~~~€~€~~€~€~€~~€}~€€~€~~~€~€~€~€€~~}€~~€~€€~€€}~€€}€~€€€~€}~}~€~€~~~€€~~€~€~€~€~~~€~~€~~~€~€€€€~€}~€€€~}~€~€€~€~€~€~~~~€~€~~~~€~€€}€~€}€€~~€}€€~€~~€~~€~€~~€‚}~€~€~€~€€€€~€}~€~€~~}‚€‚~~~~~€~€€~€~~~€~€~~€}€~€€~€~€€}€~€~€~€~€~€~~~~~~€~€~~~€~€~€~~~€~‚€~~~€~€~~~~~€}€€~~€~€~~‚~}~€~~€~€~€€€~~}€~€€~~€~€~~€~€~~~~€~€€~€~~€~€~€€€~~€~€€€~~€~€€€}~€}~€~~~}€~~~~€~€€~~€~~€~~€€~~€~€~€€€}~€~~€~€~€~€~~€~€~~€~~~~~€~~€€€~}}€~‚€€€~€~€}€€~€~~€~~~€~€~~~~€~€~€~€€€€~€~~~€~€~~~~€~€}€}€€~€~~€~€€~€~€~€€}€~€~€€~€€~€~~€~€~€~~~~~~~€~€~€~~~~€~€~€~~~}}€~€~~~€€€~~€~~€~~€~€~€~€€~~~€}€~€€€~~€~~€}€}€€~€~~~~‚~€~~€~€~€€€€~€~€~~€~}€~€}~€~}€}€~~~€~€€€€€~~€€‚~~~€~~€~‚}}}€€~€~~~€€~€~}€}€~~€‚~~€~~~€~€€€€~€~~}‚~‚€~€~€~€€}€~~~~€~~€}~~€~~}€~€~€~~~€€~€~~~~€~€~€€~€€~€~~}€~€€~€~€€~€~~~~€~€}€~~~€€€~~~}€€~~~~~}~~€€€~€~€~€~€~€€~€}€}‚€~€~~~€~€~€~€~~€}€~€~€~~€}€~€~}~~€~~€~~~~~€~€~€}€~€€~€~€€~}~€€}€~€€~~~~}~€€€~~€~~€~}€€}€~~~~~€€~€~~€~€~€~€~€~€€~€~€€~~~~~~€€€~€~~~~€‚}~€~€~€~€~€~€~€€~€~~~€€‚~€~}€~€‚}€~~~~€}€~€}€~€€~€~~~~€~€~€~~€~€}€~€~€~€~}~~~€€€~~~~~€~€€~€~€~€~€~€~~~€~€}€€}€€~~€‚~~€}€~~€~€€€€€~€~}€~€~€~€~€€~€}‚€€~~€~‚~€~~~~}~€€~~~~}€~€~€€€€~~€~~~€~€€~€~~~~€}€~€}~€~€€~€~~~‚€~€~€~‚~€~~~€}~€‚~~~~€~€~~€}€~~~~€~€€~€}€}~~~€}€€~€~~~€~€~~€~€~€~~€~~€€~~}~~~€~€}€€~~~~~~~€€€~€}~~~€~€€~€~~€~€€€€€~€~€€~€~~}~€€€~~~€~€~€}€€~~~€~~‚~€}€~~€~~€€~~€~€}~€€}€}€~€~€~~}€~€€~€~~~~€~}€‚~~€}€~€~~~~€}€€€~~~~€€€}~~€~€€€~€€~~~€~€€~€~~~€~€}€€}~€€}€~€}€€~~~€€~€}€~€}~€~€~€~~~~€~€}€}€~€~~~€€~~€~~~€~~€~€~€}~€~€~~~~€‚~€€}~€~‚€}~~€~€~€~~~€~€~~€~~}~€~€€€~~~€~€~€€}€€~€~~€~~€~€~~~~€}‚€€‚~}~€~~€~€~~~~€~€€}€€~~€~~€~€}€€~~~€~~€€~~~}€~€~€~€~€~~~~€}€}€}€~‚~~~€€€€}€~€~~€€}€~~€€~€~€~€~€~~€}~€€~~~€~€€€€€~€}~€~€~€€~€~€}~~~~€~~€~~‚}€}€~€~€}~~~€€}€€~€~~~€}€~~€~€€}€}~€~€~€~€~~€}~€€~€~~€~€€€~}€~~~€€€€€~€}‚€~~~~~€‚~~~€}~€€~€~~~€}€€~~~~€~€}€€~€}~~€~~}€~€~€~‚~~~€~€~~~€~€€€~~€~~€~}€~~~€~€~€€~€~‚€~~~~~€~€~€~~€€€€}~€~~~~€€~€~~€~‚}€~~€~€€€~~€~€~€}€~~€~€~~~~€€€~€~~€~€}€~~~‚~~~€€~~€~~~€}€‚}€~€~€€}€~~~€€€~~€~~~}~~~€}~€}~€~~€~~~€~€~~€}~€~~~}~€‚~€~€€~€~~€}€~€€~€~~€~€‚~~€~~€~€~~~~~~€~€‚~€~~~€~€}€€~€~€}€~~~}€~€~€~€€~€~€~~€}‚~~~~€‚~€~€~€€}‚~€~€€~€~~€~€}€€}€~€~~~}€~€~~~~~~~}~€€€€€~€~~€~€~~€}~~~~€~~€~€~€~€~€€~€~~~€~~€~€~~€~~~~€~€~~~~€~~€~~}~~€~€€€~~€~€~€~~€~€~~€~~~€~€€}€~~€€~€~~}€~€~~‚~~~€}~€~€~€}~~€~€~€~~€~}€~~€~€~~€~~~~~~€€~€~~~‚~~€~€}€~€}~€~~~}€€€€~~~€~€€€~€~}~€~€€}€€~€}€€~~€~€€~~€~~€~€~€}~~€}€~€~€}~~€~€€€€~€}€~~}€~€€}€~€~‚~~€~~~€~~€~~€~€€€~~€}€~€}€~€~~~~~€€}€€€~€~~~~€~€€~€~€}~~€~€€~€~}}~~€~€€~€~€}~~~~~~}€€~€~~€}€~€€~~~€}~~€~~~€€}~€€~€~~€~€~€~€}~€}€€~}€~~€€~€~~~~~~€}}€~€}‚~€~€~€}€€€€€~€~~~~€€~€~~~~€~€€}€}€~€~~}€~€€~€~~~~~€~~€€~€~€~~~~€~€~~~‚}€~~~€€€€~€~~~€~€~~}~€€~~~‚~€}~€‚}}€€€~€~€~~}~€~€€}€~€~~€€}~~€~~€~€}~~~€~~~€~€~~€~~€€~~€~€~~~€~€~~€~~€}€~€€~€~€~~€~€€€~€~€~~~€~~€€~~€~~€~~~~~€}~~~€€~€}€~€€~~€~~~€€~€~~~~€~€€~€~~~€}€~€~~}~€€~~€~€~€}€~~€€€€~€~~€€~€~~€~~€~~~~€€~€~€~€}€}~€~€€~~€~€~€~€€~~}€~€}€€}€~€~}€~€~€}€€~€~~~~€~€~~€}€€~€~€~€‚~~~€}€~€~~~€~€~€~€~~~€}~€~€~€}€€€€~€~€~~€~€€~€~~~~€}~€~~~‚}€~~€~~€~~€~~}€~€€~~}~~€~€~~~~~~~€€}€~~~€~€~}€~€€~~€~€~€~~~~~€~~€~€}‚€~€~~‚€~€}€€€~€~~€‚~€~€~€~€~€~~~€~~‚€~}}€}€€~€~~€}€€€~}}~‚~€~€€~€}€~€~~~~}€~~~€~€€~~~€~€~}€~€}~~~~€€~€~~~~~~€~€~€~€~€~‚€~~~€‚~€~~€~‚€~~€~~€~€~~€~€€€~~€€~~}€~~~€~~~€~€€~~€~‚}~€}€|~~€~~€}~€~€~€~‚~~~€~€~~€~€€€~~€~}€~€}~€~€~€€~€~€}€€~€~~~€~€~~~~€~~~~€}€~€€€~~~€€~€~€~€~~€~~~€€~€~~~~‚€}€}€}€€€‚~}~€~€€€~€~~€~€€€‚€}~€~€€~~~~€~€~}€~~€~€~~€~€}}€€~~€~€~~€}€~~~}~~€~~€~~~~€~€}€}}~€~€‚€~€}~€‚}€~€~€~€~‚~~~€~~~~€~~€€}€€}€~€€~€~~~€~€€~~€~~}~€€€~~~€~€~€}‚€~~~~~€‚}€€}€~~~€€~€~~€€€€~€}~~~€€€~€~~~~~~€~~~€}‚~€~€~€~€€~~~€~€~€~~€}€~€€€€~€€~€~~~€}€~€~€~~‚€}€~}€}€~€~~~€}€~€~€~€€€~€~~€}€€~€~~~~€€~€}€~€~€~€~~}€~~€€~€~€~€~~~~~~€~€~~~€~€€~~~~}~€}€€~€~€}€~}~~€€~~€~~€€~€~€~€~€~~~~~€~~~}~€}€~€}€€~€~€~}~~€~~€~~€‚~~~}~€€€~~‚~~~€~€€~~€}€‚~~~€€~~}€~~~€~€~€~€}€~~}€~~€}€€}‚€~€~~~~€~€~~~€~€~~~€~~~€~~€€~€~€~~~€~€}€€€~€}€~€}€~€~~€€~€~~~€}€~€~~~€‚~€~~~€~‚~€~€~€€~€~€~€€~€~€~~~~~~€}€~}€~~}~€~€}€€~€~€€}€~€~~~~€~€‚~€}~~€€€€~}~~€~€~€~~€€~€~€}€~~~~~~€~€~~~‚~€}€~~€~~~~€}€}€~}~€~€~~~~~€€~~~}€~~~€~~€€€~~€~~~~~~€~€}€~€}~~~€~€€~€~~~€~~~€~~~~~€€~~€~~~~~€€~~}€~~€~~€~€€}€}~€~~€€€~~€~~~~~€~}}€~~~~~€~€€€~}~~}~€€~~~€~€~€€€~€~~~€~€€€€~€~~~€~€~€€€~€}~€}~€~€€~€~€~€~€~~~~‚~€€~€~~€~~€~€~~~€~~~€~}€€~‚€}~~€~~€~€}~€~}€€~}}‚~~~~€~€}€~€~~~€~~€~€~~~~€€~€€~€}€~€~€~~~‚~~‚}€~~€~€~€€~~€~~~€~‚€€~€}~€~€~}~~€~€€~~~~€€~~}~€~€~€~€~~~€‚}}€~€€€~€}€}€~€~‚€~}‚~~~€}€~€~€~~~€~€~}€€~€}~~€}~€~€~}€~€~~‚€}€~€~~~~~€~‚€~}~~€~€~~~~~€~}€~€~€~}€~}~~~~€~}~~€}€}~€}~~~€~~~~~€€}~~~~€~€€~€€~€}€}€€}€‚~}~~~€}€€~}~€}€~€€€~€~~~~€~€}~~€€~€}€~}€~~~€~€€~‚€~€~~}€~~€~}€~€€~€~~~€}€~€}€~~€}~~‚~~€~€}€~€~€~~~~€€~~~~~€~€}~~~€~€~€€}€~€~~€}€€~€~~~~‚~€~€~}~€€€€~€}€~~€}€€€~€}~~€€€~€}~~~€€~~}€~~€€~€}~}~€€€}~~€~~€€~~~€€€€€~€~~€~€~~€}~~~}~€}€€~€~€~~~~€~€~€€€€~~~~€~~€~}€~~~~€~€~€}€~~}~~~€€€€~~€‚~€~}}€€~~€}~€~€~€~}~~€€€~~~~€~€€~~~€~€}€€~~€€~€~~~~€~€~~~~€€}€~~€~}€~€}€~€}€~€~€~€}~~€~~‚~~~~€~~~€~€~€€€~€~€~€€}€~€~€~~~€~€~€~‚}~€~~~~€~~‚€}~€~€€}€~€~~€~€€~€~~}€~~€~~€~€~€~~~~~€}€}€~€~€€}€~~~€€€€~~€~€}‚~~~€~~€~~~~~€~‚€~€€~€~€}~~€€~€~~~~~}€€}€~~~~~€~€€~€€~€€~~€~~~€~€€~€}~}~~~~€~~~~~€€€~€€~€~~}€~~~€~€€€~}€~~€~€~€€~€~€}}€~€}~~€~~~€€}~€~€€~€~€~~€}~€}€~€€~€}~}~€~€~~}~}~~}€€~€~€~~~€‚}€~~€~€€~~~€}€~€€~€~~~~~}~~€€€}€~~€~~€€~€~€~€€~€~~~~€~‚€€}~~~€}€~~€€€~~€~~~€€~€~€~€€~€~€~~}€~€~~~~~~~}€~€€}€~~€}~‚€~€~€~~~€~€~€~~~€}}}€€€~€~~€~€~€}‚€~~€~}€~~€~€€~~€‚~~€~~€~€~}€~~€}€~~€~~~~€€~~€}~€~€~€€€}€~€~~‚€~~~€€~~~~~‚~~€‚~€~€~€~~~~€~}€€}€~~€~€€~€~~€~~~€~€}~€~~€}~€€€€~€~€~~~~€~€~~~~€~€~€~}€€~€~~}€~€€~€}€~~~~~~€~€~~€~€~~€~€€~€~€~~~~€€~€~€~~~~~€~~~~~€~€}€~€~~€~€~}€~€‚~€~}~~~‚€€~€~€~~~~~~€€}€~€€~€€~€~~€~‚€€~~~~~€~€€~}~~€~€~€~}~~€~€~~€€~€}~~€~€}€~€~~€~~~€€}€~~}€~~€~€€€€‚~€~~€~~~€‚}€€~€€~€~€~~~€€~€€~~~‚€€}€~~€~€~~€€~~€~€}€€}€~~€~€~€~€‚~€~€~€~€€€~~~€}~€~€~€€‚}€~~~~€~€€~€~~~‚~€~~}€~€~~~€~€~€}€€~€€~€~}~€~‚~~~~~~€‚~€~~~€~€~~}€~~€~~€€€~~€~~~€~‚€~€~‚~~€~€~~€~~€€€~€~€€~~€}~€~€~~~€~~~~~€~~~€~~€€~€~€€~€€~€€~}~€€€~~€~~~~~~~~€~€}~}€~€~€€~€€~€€}€~~~€€€~~€~~~€~~~~€~€~~€~€~~€~€~€}~~€~€~€~€~€~‚~€~€~~~~~}€~‚€€‚~€}€}€}€~~€~€€~~€~}~~~€~~~€~}€~€€‚}€~€€~€~~~€}€€€~€~~€~~€}€€~€~~€~~€€~€~€~~~€~‚€~€~€~~~~€}€€~€~€~~~€~€~€}€~~~}€}€€€~~~€~€~€~€~€~~~~~€€€€~~~~~~~€~~€€~€}€~~~€}€~€}€}€€‚~€~~}€~~~~€~~}€~}~€€~~€~€~€~€}€~€€~€~~~~€}€€~~}€€~~~€€~€~~€€~€}~~€~€~€~€}€~€~€~~€~€~}}~~‚~~€~~€~€~€€}~~€}€}€€€~€~€~€~}€€}€€~}€~}€~€~€~~~}~€~€~~€~€~~~€€€}€~€~€~€~€~€~~€~~~~~€~~~€€~€~€~~}€~~€~€~~~~~}~~~€}€~}€}€~~‚‚~~~€}€€~~€~~~€}~€€~‚€~~€~~€€~€~~~€}€€}~€}€~€~~~€}€~€~€~€}€~€~€~‚€~~~€~€~~~~€~€€€€~€€}€~€~€~~~~€€€}€~~€}€~€~~~€~€€~~~€~‚€~~€~~€~€~~€~~~€}€~~€~‚€€~~€~€~€~€~~~~~€€~~}~~€~€~~€}€~~~€~€€~€~€~~~~€€€~€~~~€~€€~€~}€~€~‚€€~€~‚~~~~€~€€€~€~~~~€€~~~€~~€~€~€€~~~}~~€~€~€~€€~€~~~€~€~€}€~~€~€€~~~~~€~~€~}~~~€~€}€~~~‚~~€~~€€€~€~€~~}€€~~~€~€~€~~~}€~€~~~€~~~€~€}€€€}€}€~€}~~€~€€~~€~~~€}€~€€~}~~€~€~~€~€€~~~€~~€€€~€~~€~€~~€~€€~~€~€~~€~~~~€~€€~~~~€~€€~€~€~‚€}~€€~~~~~}€€€€~~~€€~€~~~€~€€€~€}~€~€~~~€~€€€~€~}~~€€}~€}€}~~~€€~€~~~~€~~€~€~€~€~€~‚~€€~€~~€€}€~€~€~€}}‚~~~€}€€~€€~~€}~€~€~€}}€~€}€€~€~€€~€€€~€€~€~€~€~€~~~€~€‚~€~€}~€~~€}~€€€~~€~~~~~€~~~~~€~€}€~€€}~~~~€‚~€~€€~€~€~€~~€€~€~}€€~€~€~€€~~~~€~€€~€~~~~~€~€~€€}‚~~~~~€~~~€€}€~€~}~€€~~€€~€~€~€~~~€~~€~}~€~€~~~€~€~~€~~€}€~~~‚~~€~€~€€‚~~~~~€~€~€}€~€}~~€}€~€~€€€€€€~€~~~€~~€€~~~~~€~€€€€~€~€~€~~€~~€~€€~}€}€~€~}€~~€~€~€‚~~‚}~~€€€~~€~€~~€~€~~€~€€~~~~€~~€}€~~~~~}€~€~€~~€€~€~€~}€~~€~€~€~~~€~~€€~€~~€~~€}€€€}€~€€}~€~€~~€}€‚}~~~€€~}€~~€}~€~€~~€}€~€€~€}€~}~~‚€~€~~€~~}~€~€~€~€~€~~€€€~€€~‚€€~€~~€~€~~~~€€~~~~}€~~€€~€~~~€€€~€~~€~€€~}€}~‚€~€~~€~€~~€~~~}~€~~€€€~€}€~~€~€~€€~~€€}€~~}~€€~~€~~~~~~~~€~~~~~€~€€~€~~~}€€€€~€~~~€€‚~€~~~€€~€~~€~€€~€~~~~~‚~€€€~€~€}€~€€€}€}~~‚€~€~~~€€~€€~‚~~~~~‚~€~€~~~€~}€~~€€}€~€~€€~}~€~€€~€}~~€~€~€~€~~~}€~€~€}€€~~~~€~€€€~~}€~€~~~~€~~€~~~~€‚~€~€€~€}~~€~€€€~}~~~~€€}~€~€}€}€~~‚~~~€~€~~~~}€~}€€}€~}€}€~~€~~€€€~~~~~€€~€}~}~€€€}€~~€~€~€~€€~€€‚~€~~~~~~€~€~€~~‚~€~€€~€~€~€}€~}€~€~~€~€€~€~€€~€~€~~€~~€~€€~€}~€~€€}~€~}‚€~~€~~~~€~€~~~~€€}~€~‚€€€€~€~~€~€€~€~€}€~}€~~~€~€~€€~€~~~€~€~~~~~€‚~~~€}€~€}€}€‚~~~~~~€€€~€~~~€~€~€}€~~€~~€€~€~~€€~€€~~~~~€~~€~~~€~€~€~€~€~€~~~€~€€~~~~€€}€}~€~€€€~€~~~€~€~€~€~}€}€~~}€~~~~€~€~€~€~}~~~€~~€~~~~€€~€~~~€~€~}€~~€€€~~€~~€€‚~€~~~}€€~~€~~€~€}~€~€~€~~€~€€~~€~~~€~€~~~~€~€€}€~€}€~~€~€~}~~€~~~€~~€~~€€~~€~~€~€~€~€~€~€~€~~}€~€€~€~}€~~~~~€~€€~€~~€~}€~€€}€~~~€}€€€€~€}~€~~€}€€~€~€~~€~~€~~€€~~~~‚~~€~€€€€‚~€}~~~€}€~}€~~€~~~~€~}~€€€€~~€~€~€}€‚~~€‚~€~€}€}€~€~}‚}€~€~€~€~~~}€~~~€}~~~~~~~‚~~€~€€~€€€€~€~~€~€€~}~}~~~‚~€€~€~~~~€}€~€~€€~€}€€~}~€~€}€~€~~€~~€~€}€~~€~€~€~}€~~€~€~~‚~~€‚~€~~~€~€€~~€~€‚~€~€~€€~€~~}~€~}~~€~€€~€~~~€~€€}~}€}€~€~}€€~€}~~~€~~~‚€‚}‚~€}€}~~~€}€~€~€~}€}~}€~~~€~€~~€}~~~€}€}€~€€€€~~~€}€~€~~~€}}€~€~€}€}~~€€~}€~€~€€~}€}€}€~€~~€€~€}~~~€~~~€}€~€€~€€~~€€~‚€~~~€~€€€€€~€~€~€~€~}~€~~~~~‚‚~€~€‚~€€~~~€‚~~~~€}€~~~}~€~€€~€~~€~~€}€~~€~~€€~~~}€~€~€~~€€}~€€~€}€~~€~€€~~~~}€~€€}€~~~€€~€~}~€~€~~~€~€}~}€}€€}€}‚€~~~€~€€€€€}€~~€~~€}€€~€~€~~~~€~}€}~€€€~~~~~€~€€~€~~€~€}~~~~~~€~~€~€~~~€~€~€~€~€~~}€~~~}~€}~€€~€}€~€~€€~~~~€}€~€€~}~~~€~~~~~€€}~~~€€~}€~~~€~€€€~}~~‚~~€‚~€~€‚~‚~~~~€~€€€~€~~~~€€~~~€~}‚€€~€~}~€€~}€€~€€~€~€~€~€~€~~~~€‚~€€~~~€~~€~€€~€~~~€€}€}€~€€~€~~~~€€~€}€~€~~~€}€~~€~€€~€~~€}€~€€~€}€~€€}}~€~~}€~~€~‚~~€}€~€~€~€~~€~€~€€~€~~~€€~€~~~€~€€€€~€~€~~€~€€€~~~~~€}€€~€€~€~€~~€~~~~~€€~€~€€~€~€~~~€~}€~~€}~~~~€€~~~~€€~€€}~€~~€‚~~}€~€~~€€~~€~€~€}€~€~~~~€~€~€~}~~~€€~€~€~~€}€~€}€~€}~~€}€€€~~€€~€~~€€~€~‚~~~€~€~€~€~~~~€}€~~~€~~}~~~€~€~}~~~€}€€~€~€~€~€~€€€~€}€~€~€~€~~~~€€€~~€~~~€~~~€~€~€~~~~€~€~€~}€~~~€~€€€~€~~}€€~€}~~~€€‚~€~€~€€}€€~~~€€~~€~~€~€€€~€~~~€€~€~~~€~€€€~}~€~€€€€~}~€~€€~~~~€~€€€€~~€~~~~€}€~~€}€~~€~€~}~‚€~~€~€}€€~~€~}€~~~€~€~€~~}€~€€€€~}~~€~€€€~€~€~€€~}€~~€€~~€~~}~€~€~~€~€€€}~~€~€€~€~}~€€~€~~~~~€}~~€~‚€€~€~~~~€~~~~~€~€~€€~‚~~~€~€~€~~}}~€~€~€€~€~~€~€~€€~€~~~€~€€~€~€~~~~~€‚~€~€€~~‚~~€~€~~€~~€€€‚~~€~~~~€~€‚}€~€~}~~~€~€€~€~~€~€€~€~€~€~~€€}~€}€~~€}~€~~€~€~€}€€~€~€~~}~€~€€}€~‚~~€~~~€€€~~€~~~~€~€€~€~~€~€~~~~€~€~€~€~~}€€€~~€~€€}€~€}~€€~~~€}€~€~~~~€}€€}€~€~~~~€~€€~€~€~~}€~~~~~~~€€~~‚~~€~~€~€€}€€~€~€€~~~~~€€€~~~€~~€€€~~~}~€€~€€~€€~€~€~€~~€~~~~€€}€~€~~€~€~~‚~~~}~€~~~€~~€~‚~€~~~€€€~€~€~~~€€}€~€~~€€€€~~~}€~€€€~€~~~~€€~€~~€~€~€}~~~€€~€~~~~~‚~~€~€€~€~€}€€~~~~€~~€~€~}€€~€~€~€€€€€~€}~~€€€€‚}€~~~€}€€}€~€}€~}€~~€€€~~~~‚€~€€€~€~~€~~€€€~€~~~€~‚~~€}€}€€}€~~€~€~€€~~~~}€€€~~€~~~€~€~€~€€~~€~~€~€~€€~€~~~€~‚€~€}€€€}‚€~~~~~€~€~€€~~~~~€~€€€€~}€~~€~€~€€~€~€€~}€~€~~~€~€~}~€€~~€~~€~€€~€~~€~€€~~~~€€~~~€~€~€}€~€}~€~}~~€~}€~‚€€~€~~~€~€~€€€~€~~€}~€~€€~€~~~~~}€~€~~€~~€~€~€€~€~}€~~€€€~€~~~€~€€~€~€€€}€~~~€~€€€€~~€~~€€€€~€~~~~€~€€~€}€~€~€~~~€~€€~€~€}€~~~}€€€~€~~~€}€}€€~€}~~}€~€~€~~~‚~~€}€~€€~€€}€~€‚}~~~€~~}~€~€~~~€}€€€€€~~~~€~~€~€}€~€€~~€~€~€€~€~~~€~€€€~}€€~€€€~~~~~€€~€~~~€€€€~~€~~€€~€~~~€~~~€~€~~€~€~€~~€}€}€}€~€~~~€~~€€~€~~~~€~€€€~~~€~€€~€~€~~€~~€€‚~€~€}€€~€~~‚~~€}}~~€~€}€~€~~€~~~}€}‚€~~€~€~€~‚€€€€~~~€~€}€~~~€~€~~€~€€€~~}€~€~€~~€~~}€~~~€~€€~€~€~~~}~€~€~~€~€~€}€~€~€~~€}€~€€~~€~~€~€€€~~~}~~€~€€~€~€~€~~€€~~~~~€€~€~~~€}€€~€}€~~~~€~€~€}~~~€~€€}€~~~~~~}€~€~€}~~}€€~€€~~€~€€~€~~~}€~}~~€€~€}~€~~€}~~€~€€~~~€~~€~€}€~€~€€~€~~€~€~€}€~€~€~~€~~~~€~€~€€}€~€€~€~€}€€‚~€~}€}€~€~€€~€€~~€~€~€~}~€~€€~}€~~€~€€~€~€~~€}~€~€€|€€~~~€~}€~€€~~€~~€~~€€~€~}€€~}€~€}‚~~~€~€~€€}€€~~~€~€€~~€~~~~€€€~€~}€€~~~~~~€~€}€}€~~}~‚€€~~€€~~€}€~€~€~~~~€~~~}€~~€€~€~~~~€~~~€~€~€€~€~~€€~€~~€~~€€~€~~}~€~€€}€~€}€~}€~~€~}€€~~~‚}~~€~}€€~€~~~€~~€~~€~~~€~€~~~~~~€€~€}~~€~}~€}~€}€}€~~€~~€€~€~€~€~€~€€€€~~€~€€€~€~€~}~~‚€~~~€~€~~€€~€~~€~€}€~€}€€~~~€~€€~~€}}€€~~~~€€~}~~€~~~€~~€~~~€~€}€~~}€}~€}€~~~}~€~€€~~~~~€~€€~}€~~~~€€}€~~€~~~‚~~~€}€€~€€~€€}€~~~€~€}‚€}€}€~€}€~~~€~€€~€~~~~~~€}€~~€~~‚~~€€}€}€~~~~€~€€~€~€~~~€‚~€~€€~€~~~€~€€~~~~€}€~€}€~€~~~~}€~€~}~~€€~€~~~~€~€~€}€~€~}€}~~€~€€€‚}~€~~€}€€}€€~€}€~~€~}~~€€€~€}€~€~€~€~~~~~~~~~~€€}}€~~€‚~€~€€~€~~~~~€~€~~~€~~€}€~€~€~€~€€~~}€~~~€~€~€~€~~€~€~~~€~~€~~~€}€~€~~€€~}€}€~€}€~~€~€~~~~~€~€€‚}€~~€~~~€€€€~}€~}€~€~~~€€}€~€~€~}€~€€}€~~‚~~~€~€€~€€~€}~~€}€~€~€~~€~€€~€~€~}€~€~~€~€€€~€~€~~~‚~~~€~€}~€~€€~~~€~€€€€~€~~}€€~€~€~€~€~~~€~€€€~€~€~~~€€€~~~€~€~€~€~}}€~€€~€}~€}~€€€~~€~~~~€€€~€~~€~€~€€€}€~~€~€}€~€~€€~€~€}}€~€€€}€~€~~‚~~€~€~€€}€~~}€€~€~~~€~€€}~~€~~€~~€~}~€~€~~~€~~€€}€€~€}€~~~€~€~€~€}~~~€~€€}€~~€~€~€€€€~~~}}~€}€€~~€}€~}€~€~~~}€~€€~€}€}~€~~~€}~€‚~€€~€~€~€~~~€~€}~~€~~€€~~€}€~~~€}~€€~}€}}€~€€~~~€~€€}~~€~€~~€~€~~€€~~€~~~~€~~‚€~~€~€~€~€€€€~€~€~€~€€~€}€~~€~~~~~~~€~€~€€€~€~~~}€€~}~€}‚~‚€€~~~~}€}€~€}€~~~}}€~€~}€}~€~€~€~~€~€~~€~€~€~€€~~€€}€€~~€~‚~~€~~€~~€}~~€}~€€~}~~~~€~~~~~€~}~}€~~~€~€~€~~~€~€~€}€~€~~~€~~€€€~€~~~€}€~€~~€~€}€€~€€~€€~€€~€~€~}€~€~‚~~€~€~~€~€~~€}€}~€~€~~~~€~€€~€~€~‚~€~€~€€~€~~~~€~€~€~~~~€€€~€~~‚~}~‚~~~€}€}€~~~€~~~~€~~€~€~~€€‚~€~~~~‚~€~~~€~~€~~€€~€}€}€~~~€~~~~~~€~€~€€~€~~~~~€€}€~€~€}€€~~€~€~~€€~~‚€~~~€€€}~~€€~~€~}€~€€~~~€}€~€€€€}~~€}€€~~}~€}€€~‚€}€~~~~€~€~€}~€}€~€€~€}€~~€~€~~€€€~€~€~€~€~~€€~€~€~~€~€€~~~€~~€€~~€~€~~‚€€~€~~~€€~~~}€~~€~€~€€€~‚}€~~€~€~€}~~~€‚~~~€~~€€~~€~€€~€}€€~~€~~€~€€~€~~~€€~€~€~€€}€~~€‚~€~€~€~~~~€~€€}€~~~€‚~~€€€€~€}~€~€€~€~~~€~€~€~€€~€€€~€~~~€€~€~€~~‚€~~€€~~€~€~~~€~~~~~€~~€€~~~~~€~~~€~~~~€~~~€~~€~€€~€}€~€~€~~~€€~€~€~}}}€~~~}€~€~~~€~‚~~~€€}~€~€~€~~€~€~~€~€~€~}~€~~€~€€~€~€~€~~~€~€}~~€~€€~~~~~‚€€€~€~~€~€€~€€~€~€€}€~~€~~~€~€}€~€€€~€~~€~€€‚~~~~€€€~€~~€~‚‚~~~~€~€~€€~€~€~~~€€~€~€~~€}€~€€~€~~€~~~~€~~€~€€~~~~€€‚~~€~€~~~€~€~€~~~€~€‚~~€‚~€}€}€€}€~€~~~~€}€~~~‚~}€~€~€~€~~€~€€€€~€}€~~€€}€~€~€}€~~~€~€~€}€~€€€€€~€~}€~€€~~}€~€}~€~€~~~~€~~~€~€€~€€}€~€}€~~~~~€}€~€~~~~~~€}€~~€~~~€€~~}€~€~€~~€}€~~~~€~€€}~~~€€€‚~~€~€€€~€~~€~€€~€~€~~}€~€€~€~~~€~}~€}~~€~~€~€€€~€~~€}~~~~€€‚~€~~€~~~~€~~‚}€~€~€~€~~~€}€}€~€~}€‚~~~€€}€~}}~€~€}}€~€~€‚~€~€~€}€~~€}~€~€~€€~~€~~}€~€~~~~€~€}~€€~€~~€‚~~~}€€~€~~~‚€}€~~€~€~~~€~€~~€~€€~~€~€~€~~€~€~€‚~€~~‚~~~~~~€~~€~€€€€€~€~~~€~~€€~~€~€€}€}€~€~}€~}~€}€~~€~€‚~€~€}~~}‚~€~€~~~}€}€€~€~€~~€~}€}€~€}€~~~€~€~€€~}€~~~€~€~~€~~€~€€€}€~~€€€~~€~€}€}€~€~€}€~~‚~€~€€~€}~~€~~€€€}~~~~€€€‚~€~€~}‚~~~€~€~€~€€}€~}~~€~~€€~~~€}~~€}€~}}€}~€~€}€~€~‚€}€~~€€~~€~~~€~€€‚~~}}~€€~~€~~~~}€~€€~€~€~~€~~€~‚~€€~€€€~~€~~~}€}€~€€€‚~~~€~€~€}‚€~€~€~~~~€~€}€~‚€€~~~~~€~~€~~~}€~€~€~~~€‚~~€~~~~€€€}€~~~~~€~€~€~€}€~~~~€~}€~€€€~~€~€}€~~~€~€~~}~~€~~~€~~~~~~€~~~€}€}€~~~€‚~~€~€€}~~}~~€}~~~~}~€~€~}}}€}€~€~€€€€~~€~€~~}~~~€~}€}~€}‚€€~~€~€~~~~‚~~~€~€~~€€~€~~€~€~€~}~~~~€~€~€~€~~€~‚€€€~€~~€~€~€~€~€~€~}€}€€~~€~}‚}~~€~€€~~€~‚~~~~€~€}€~~€~€€€€€~~~€€€~€~~€~€}€~~€~€~€€~€~€~€~~~€~€€~€~€~€~~}~€~€~€€~}~~€}~€€~€~~€~€~}~~€}€~€}€~€~€}~~~€€~€}€~~€~~€€~€~€~€~~‚€~€~~~€€~€~~~€~€€€~~€}€~€€~~€€~€€~€~€~~~€~‚€€~€~€~€~€}€}€€}€~‚€~~~€}~~~~€~~‚€}€~~€~~€~€}€€~€~~€~€€~€~}€~€€€~€~~~~€€~~~~€~€~~€€~€~€~~~€~~€~}€~€}€}€~€€~~€€~€~€~~~€~€~~}~€}~€~€~‚€~~~€}€€}€}~~€}€€~€€~~~€~€€€€€‚~€~‚~~€~€‚}€~€~€€~€~~~€}€~~~€~‚€€~~~~}~€€~~~~€}€}~€}€~~~€}~}€~€~~~€~€}€~€~~~~~€~€€~€~}~~€~€€~~~€~€‚~€~}€€~~}~~~€~~€~~~‚€€~€~~~~€~~€~~~}~}‚~€~€~€€~~€~~~}€~€}€~~€}€~~}~~~}~‚€~€~~~€~~€~~~}€‚~}€€~€~€~~€€€~€~~~€€~€€~€~€€~€~€}~}€~€~€}~~€~€€~~~}€~~~~€~~€€~‚~€~~~€~~€~€€~~~€~~~}~~€}€~~}‚~~€}~€€~~~~~€~€‚~~~~~~}~€}€€~€~€~~‚}~€}€€}€~~‚~€~~€€}~~~€€~€~~€€€~€}€~~~~~€‚~€~€}€}€~~~~~€€~€~~€~€€~~~€~€~€€~~€~€~~€€€~€~€~~~€~€~~€~€~~€~~€‚}€~~€~€€€~~€~~€€~€~}€~~~~~€~~€~~~~€€~€~}€~€€€€~€~€~€~€~‚~~~~~€~€€~}€~}€€‚}~€~€~€~~€€~€}~~~€~€€€~€}~€~€€€~~~€~€~€~~}€~€€€~~~€~~€€}~}€~€~~€€~€}€~~~€~€~~~€~€~€}~~€}~€~€}€€~€~€~~€~~€€~~€~~~€~€~€~~~€~€}}€~€€~~~~€~~€€~}~~€}~€~€~€}€~€}€~~€~€€€}€~€~€~€‚~€~€~€€€~€~€~~€‚}€}€€~€€~€~~~~~€€}€}€~}€€~~€~~€€~€~~~~€~~~€~~€~€~€~}€€~~€€~~€}€~‚~€€~~€~}~€€€€~€~~€~~€~~€~~~~~~€~~€}~~€}€~~~‚}~€~€~€€~€~~~€~€€‚~€~~}€~€~€~}€~‚€~~~€€€€€~€~~~~~~~€}}~€‚~€~}~~~~€~€€~€~€}€~€~~€~€€€~~€~~~‚~~~€}€€}€~~}}~€~€€~€~}‚~€}~€~‚€}~~€~€~€€~€~~€~~~€~~~€~€~€}}€~~€€~~~~€~~€~€~€~€~~€~€€€~}~}€~€€~~€€}€~€~€~~€€~€~€~~€~€~€}~~€~~~€~€€€€~~~€~€}€~€}€}€€~~~~€~€}€}€~~~€~€~€~}~~€~€~€€}€~€~€~€~~€}€~€~€€€€‚~~~~€~€~€~~~}~~€~€~€~~~€~€~~€€~€€}€€~~~€~€€~€~€~€~€~~~€‚€}~€}€€~€~~€~€~~~~~€~€~€€~~~~€~€€~€~€~€~~~‚~€~€€~~~€~~€~€~~~~~‚€~~‚~}~}€}~~~€‚~€~€~~~~€~€€}€~~€~~€~€~€~~€~€~~~€~‚€€~~€}€€€~€~~‚~€~€€~~€~~~~~~~~€~€~~‚}~€}€}€~€~~~~€~~€~€€~€~€~€~‚~€‚€€~~~}~€~€~€~€}€~}}€~€}€~€}€~‚~€€~€€€~~~~~~€~}~‚~~€~~€~€~€}€~~~~€~€‚~€}€~~~€~~€€~~€~~~€~€€€~€~~~€~€€€~€~~~€€~€~~~€€~€~~€~€~‚~}~€~~~€€~€€~~€~~~~€}~€~~~€~€€~€~€~~€~€€€~€~~~~€~€~~€~€~~}~€~€~€~~~~~€~€}€~~}~~€~€~€€~~€~}€~€}€~€~~~}€~€€~~~~‚~€€~‚€~~~€~€€~€}€~~~}~~€€}€~~€~~~}€€}€€~€~‚~~€~€~€~€~~~}~€~€}€~€€€~}~~~€~~€‚~€~~}€~~~€~€€}€€~€€~€~€~~~}€~€€~~~~~~~~~~€}~€€~€~~~~€~€~~€~}€~~€~€~~€}~~~~~€~€}€}€~~€~‚€~}~€~~€€~€~~}~€~€~~}€~~€€~€}~€~~€€~€~~~~€~~~€~€}€~€~}€~€~€€~€~~€~€~~€~~€~€€€~‚~~~~€€€~~~€~€€€}~~~€~~~€~€}~€~~~~€€~€}~€€}€~€€‚~€€~€~€~€€‚~€}~~€~}~~~~~~€~€~€~~~~~€‚}€~€~~~€~‚~€€~~~€~~€€~€~‚~€~€}}€}€~€€~~~~€~~€~€}€~€€~~~~~€}€~}€}}~€~€~€~}~~~€€}€}~~~€~~€~€}€~€~€~~€€~~€~~€}€~€~}~~€‚}€~€~€~~~€}‚€~€}~~~~€€~~}€}~€~€~}€~€~€€~~€~€€}€~~~€~~~€~~€€~€~€~~~~€~€~~~€~~€€~~~~€~~~€~~~€€€‚~€~~}€~~~~}€€~€~€€~}~~€~~€~€~€}€~~~~€€€‚~€~€~€~€}€€~€~€}‚~~~€~€}~€}€~€€~~€~}€~~~€~€}€~€€€~€~€~~~~~}}€~~€€~~~€~~€€€~~€~€}~}€€~€~~‚€}€}€€}€€~€~}€~€~}€~~€~€}€~}~€~€€~€}€~€~~€}~€€}€~€}€}€€€~€}€~}€~~€~~€~~~~‚€~~~~€}€~€~~~}~€€~~~~~€€~€€~€}€~}~€~~€€€€~~}€~€~€~~€~€~~~€~€~~€~€~}€€~€~€~€~€~~~~€}€~~}~~€~€~€}€~~~€‚}€~€~~}€~~‚}}~}}~€€€€€€~€~~~€~€~€}~€~€€€~€~~€~€€€~€~}€~€€}€}€€~€~€~~€}€€~‚€~~~€}€‚€~€}~€}€~‚~€~€~~€}~€~~‚€‚}~€~€~~€€€~€}~~€~~€€€~~€~~€€€€~€€~~€€~€~~~€€}€€~~€}€~~~~~€€~€}~€}~€€€€~}€~~€~~}~‚~€}€€~€~~~}~€~€~€€~€~~~~~€€‚~€~~€~€€}€€}€~~€~~~}€€~€~€~€€€€~€~~€~€€~~~~€~€~€~€~~~€}€~~€€~€€~€~€~~€~~~~€€~~~~~€€~€}€~€~€~~€}€€€~€~~‚€~~~€}€~€~€}€~~~~€~~€€~~€€~}€~~~€~€~€~}€~€~€~‚~}€~€€~€~~~‚~~~€€~~~~~}€~€€~€~~~€€~~€€~~~~€~€}~€~€~€~~~~~€}~€~€}~~~€~€€}€~~‚}~~€~€~}€~~~€}€~~€~~‚~€~~€€}~}~~~€~€~€~~€~€€~€€~~€}~€~€~~€~~€~~€}~€~€~€€~€}~€€€€~€~€~~€~~€}€~~€}€~~}}~€€~~~€~€~€€~€}~€~€~~~€~€€~~~}~€€~~~~~€~~}€~€}€~~€}€€~€~~€}€€~}~€~€€~€}~~€~€~€~€}~€€~~~€~€~‚~~~€€~€~~€}€€€~~~€~~€~}~~~~€€€~€~€€~~}‚€~~~~€~~€~~}€~€€~}€~~€€~~€~~€€~~~~~€€~~~~}€€}€}~~~~~€~€~~~~€~€€~€}~~€}€€€~~~~€€~€~~~~€€~~€~~€}€€}‚~~€~~~}~€}€}€~€~‚~€~~~€€€~~€}~€€}€~€~~~€~€}~~~€}€~€€~~}€~~~~~€~€€}~~~€}€~~€€}€~~~€~€}€€‚~€~€~~~}€€~€€}€~€€}€}€~€~}‚~~€~€€}€~~€‚~~€~~~~~€~€~€~~€~€~~€~~€~€€~~€~~€~€€}€~~€~~‚~~~€~€~~€}~~~}€}€€~€}€}~~€~€~€€~~~€~€~~~‚~~}}€~€€~~€~~€€}€€~~€~~~~€}~€}€~€~~€€€}~~‚~~€~~€~~~€}€~~~€~€~~€~~~€}€~€~}€~~~€~€€}~€}~€€~€~~~€~€~}€~€€~€~~€~~€€}€~~~€~€€~€~€~€~€€€~€~}€~€€~€~}€~~€}€~€~€}€€~€~~~~€~€~~~€~€~~€~€€€~~€~€~}~~~~€~~€~~}~€€€~€~~~€~€~€~€€}€}~~~~€~~~€~~€€€~~~~€~€€}~~€}~€€~~€€~€€~€~~~€~€}€~~~~€~~€~€~~~€}€~€~€~}€~€~€~~~€~~€€~~€~~~€~€}~€~‚€~~~€}€~~~€~~~€€~~~€}€~€~€}€€~~€~~€~~€€~€~~€~€€~€~~€~€€~~~€~~€}€~€~‚€~€~~}}~€€~€~~€~€~~~~€€~€~~€}€~}~~~~~€€~€}€~€~€€€€~€~~~~~€~~~€}~~€~~~€‚~€€~€}~~~€~€~~~€}~€~€~~~€~€~€}€~€~€~~€~~€~~~€€~€~~€~€~€~~}~~~€~~€~€~~~~€~€~~€~~~‚~~~€€~~~~~‚€~~~€~~€~‚€‚~~~}}€~€~~€}€~~~~~€~~~€€~€€~€~}}€}€€€~€~€€€~€€~€~€~€€~~~~€~~~~~~€~}€~€€€~€~~€~€€€€~~~~€~€€~~€~€~~€€~~€~~~~€€€~€~~~€€~~~‚}~€~}€~€€€€~€}~~€€}€}€~~€~~€~~~€~~€€~€~€}€~€~€~}€~}~€}~}€€}€€~€~~~~€~€€€~€~~}€~€€€~~~€~€~€€~€€~€€}€~€~~~€€~€~€~}€~€~~~€€~~~~~€~€~€~~€~€€€~~€~~~€€~€}~~}‚~€~€~€~~€€~€~€}~~~~}€‚~€€}€€~€~€}€~€~€€€€~~~}}~€~€}€~~€~~~€~‚€€~‚~€~~€~€~~€}€~€~€€}~€~€~~~€~€€€~€~€~~€~€}€€~€}€€~€}~~~€}€€~€~€}~‚~€€~~~~€~€€€~€~~~~€~~~€~€€€~€}‚~~~~~€}€€~~€}~~€}€€€}€~~~€~~~~~€~~}€}€~€~€~~€}€€~€~€~~€~~~€~‚€~€~~€~€~€~~~~~~~€~€~~€}€~€~~€~€~€€~€}~€~€~€~€€}~€€~€}€~~€~€€~}~~€~~€~~}€€€€€~€~€~€~€~€~€}€€~€~~~€}~€~€~€~~€~€~€~€~€€~~‚~€~~~€€€~‚€~~€~€~€~€~~~~€~€€~~€~}€~~€~€~€}~€}€~€~€~‚€~~€~€}}€}~~~}€}€€€‚}€~~~€~€€€~~~~€~~}}€~€€€~~}~‚~~€~€~€€~€}~€~‚€}€~€€}€€~€~€~}€€}€€}€€~~}~€}}€}}€~~~~€}~€~€~€~~~}€~€€‚}€~~~€€€€}€~~€~€€~~~~~}€€~€~~~~}€‚~€}~€}€~~€~€€}€}~~€€€~€~~~~€~~€~€~~~~~~€~~€~~€~}€~€~€~€~~~€}~€€€€~~€~~€€~€~~€~‚~€~~~~}€~€~€€~~€~‚€€~~€€~~€~~€}€}€~~€~€~€€}€€~€~€~~€~~~€~}€~€€~€~€€}€€}~~€~~~€~~€~}‚€~€}€€~€}~}~~€~~~~€~~€€~}~€~€€~€~}€€}€~€~€~~‚~€~~}€~~~€~€~‚~~~~€€€~~€~€~~€€€~~~€~€~€€~€~€}€~~~~€~€€}€~~~~€}~€}€~€€‚}~~~€~‚€€~€€}€~~€}~~~€}~€~€~~~€~€€~€~~~~€~~€~€€~€~~€~€}€}~~€~€~~~€~~~€~€~~€~€~~~€~€€~€~~~}€~€~€~~~~~~}~€~€~‚€~~~~~€~€~~~€~€~~€~~€€€~€~~~~€€€~~~€~€~€}€~‚€~€~~~€~‚€~€€}€~~€~~~€}€~€€~€}~~€~€}€~€}~~€~€~€€~€~~~}~€€~€~~€~€~€€~€~~€~~€~~€€€€~~~~~~€~~€~~~~~~€~€~€~~~~€}~~€~€€~~€~~€€€~~~€~‚~~~~€€~€~€~}€~€~€~€~€~~€~~~‚~~~€}~~€€~€~}~~~€~~€~~€€~€€}€~}~~€~~€}~~~~~€~€~€~€~€€~€}~‚~€~€~~€~~~~~€~€~€€}€~~‚~}~~€€~€€}‚€~€~~€€~€~€€~~}€~~€€}}~€€€~€~€~~€~€~€~~~€~€~}€~}~~~€~€~~~~€~€~€~~~~~~€€~€~~~}}~€€€€‚~€~€~€~€€€~€}~}~€~€~€‚€€~~~€~€€€~~~€~€~€~€~~}€~€~~€~€€~~~~€~~€‚~€~€~€~€~~€~~€~€~}~~€~€~€~€~~}€~~€~}€~€~~~€‚~~€~€~~€€~€~~~~€~~€€~€~€€~€~€€~}~€~€~~~~€~~~€}}€~~€~€~‚€~€~~~~€~€~~€~‚~~€~~}€~€~~~‚‚~~€~~€~~€~~€~~€}€~~~~€~~~€~~€€€~€~~~~~~‚~€~€‚€~~~~€€€~€~€€~}~}~€€~€~€~~€~€€~~~€~€€}~~€~€}€}€}€€~€€~~€€€~€}~€€~~~€~€~€€~~€}}€€~~€~~~~€€~€~}€€~€~~€€~€€~~~~€~€€€€€~€}€~€~~~~~€~€€~€~€~~~~€}€€}€€~~~€~€}€~€~~~~~~€}€~~~€~€~€€}}~~€~€€~}~€~~~€}~€~€~~~~~}€€~€~€€~}~€~€~~~€~€€~~~€~€~€€~€~~€€‚~€~~€~€~€€~€~}€€~~~€~}€€~€~€~€€~€~~~€}€€€~~~€~~€~~~€€€€~€~€~~€~~€€~€}€€€~~~~€~€~~~~~€~~€~€~~~~€~€~€~€~€~~€}€}€~}~€~€€~‚€€€~~~~€~~€~€~€~€~€}~~€~€€€~€~}€€~€~‚~~~~~€~€}€}€~~€~~€~€~€€~€~~}€~€~€~€~~€~~€€~}€~€€~€~~€}€~~~€~‚€€~€€~€€~€}€€~€~€~€€€~~€~}‚~~~~€~€~€€~€~~€‚~€~€~€~~€~€€€~~~~€~€€~€}~~~€~~€~~€€}~€}€~€~~~}€~€~€€~€~}~~~~€~€€~€~€~~~‚€€~€~~~€~€}€~~€~€€~€~~~€~€€€‚~}~~€€~€~~~~~€~€~€€}€~~~€~€~~€~€~~~~€€€~€~~€}€€€~€}€€}€~~€~~}€~€€~~~€~€~€€~€~~€~€€~€~~€~~~~~~€}€}~~}€€}€~}€€}€~€~~~€~€~~~~~€~~~€~~€~~~~€~€€€~~~€~€~~~€~€~€€~~~~€€~~~€~€€~}€~€€}€€~€~€~€€~€~€~~~€~€€€~€~~€~€~€€~~€~~~‚~~€~€~€~€€~~~~~~€~€€€€~€~~€€€€~~€~€~‚€~~~€}€€€€}€~~~‚~€~€~€~€~€~€~~}~€~€~€~~~~€~€~€~~~€~~€€‚~€~~~€~€~~~€~€~€}~~€~~€€~€~~~€~€~€~~€~€}€€€}~~~€€~~€€}€~€~~€}~~€}~€€‚}€~€~€~€~‚€}€~€€~€~~€€~~€~~}~~€~€~€~€~~~~~~‚~€€~~€}€~}~~}€~€~~~~~€~€€€~~~~~€€~€~~€~~€~~~~€}€€}€~~€~~~€~€~€~€~~~~}~€}€~€€~€~€€~}€~~€‚€€~€~~€~€€~~€~~~€~€~€~€~~~€~€€~~€~~~€~€€~~~€~€€~€~‚~~€~€~€}€€~~~€~€~€~€~~~€~€~€~€~~€~€€€€~€~}~€~€~€~€~~€~€€~€~€~€~~€~€€€~€~~~~€~€€€~€}€~‚€~~~€~€~~~~€€~€~€~~~~‚€~~~€~€}~€€~€~~}€~€€~€~€~€}€€~~~~€€€~}€€~€~€€~€~€~~~€~€~€~~€~~€}€~€€}€~€}€~~~~€€~€€~~~~~~€~€~€}€~~~€~~~€~€€}€}€~€}€}€~~‚~~€~€~~€~~~€€~~}€~€~~~€~€~€~€~‚~~~}€~~€€‚~€}~~~€€~~€~~€~€€€~~€~€~€~~~€€€~€~~~~€~€~~€~€~€~€€~€}€~~€~~~€‚~€€~€~€~€~~~€}~€€~€~€}~€~~‚~~€€‚~€~‚~€~~~€~~€€€€~~€~}€~€€~€~€~€}€€~~~~€€€~~€~~~~€€~€}~€~~€~‚€~€~}~~~~€~‚€€€}€~€~~€~€~€~€~}~~~~~€~€~€~€~~~~€‚}€}€~€~~€~€~~~~~€}€~}€~~~~€€~€~}€~€€~€~~€}€€~€}€~€~~€~€}€}€~€~~~€~~€~~€}€~~~€~€~~€~€}~~~~€~}€~~~~€€~€€~€~€~€€~~~€€€€~€~}€}€€~~€~~~~€€~€~~}€~€~€~~}€~€}~~~€~€~€~~~€}€~€‚~~~€~~€~~€‚~~€~€~€~}~~~€~~€~€~€~~~€~€€‚~~€~~€€€~€€~€~~~~~€€~~€}€~€€~€~€~€~€~~~€~~~~€~€€€~€~~~€~€€~€~€~€~€€}~}~}€~~~€~€€~€~~~~}~€€~€~€~~€~~}€€~€~€€}€€~~~€~€€~~€~~€~€~}€~~€}€~~€~~~€}€}€€~€~~~€€€€€~~€~~~~€~€€~~€}€}€~€~~€~~€~}~€~€€~~~~€~€}€€~}€}‚~~€}€~~~~~€€~€~~~€}~~~€~€}}€€~€}‚~~€~}}‚€€€~€~~€~‚€€~€€}€~€€}~€~~€€€€~€~~~€~‚~~~€~~~~~€}€~€€€~€~~€~€€€€~~~~~€}~€€~}~~~€~‚€}~€~€€~~€~€~~€}€~}~~~~€~}~~~~€€€}~~~~€€~~€~}€€~€~€~€~~€~~€~€€~€~€~~~~€~}€}€~~~€~€}€€}€~}€~€~€~€~~€}€~€~~‚~~}€~~~~~€~€}€~~~~€~~€~€~€€}€~€~~~€€~€~€~~~€~€~}€~€~€~~~~€~~~€}~€~~~€~~€€~€~€~€€}~~~€~€~~~€~~€}~€€~€~€~€~€€~€~~€~€€~}~~€~€€~~€~€€€}€~~}€€€~~€~~~~€~€€~€~}€€~~~~€~€€~~~~€‚€~€~€€}‚€~~€~€~€€€~€~~~~€~€€€~~~~€€~€€~~€~€~€€€~€~~~€~~€€€}€~€€~~€€~}€~‚~~€~€~€}~~~~~}€€~€}€~~€}€~~~‚‚~~~€~~~€}€€€}~~€€€€~~~€‚~~€~€}€~€~~~~€~€€~~€~€€~~~~€}€€~}€~€~€€~€}€~~€~€~~€~~~€~€~~€~€~~~€~~~}€~}~€~€~€~~€~€~~~~€~€€}€~‚€~~~€~€}€}~~~~~}€€~~€~€€~€~~~€~€€€~€~~}}€~}~~~€~€~~€~€~~€€~€}€~~€~~€~~€~€~‚~~€€~~€~~~€€€~}€~€€~}€~€~€~~~~‚€~~€€}€~€€~€~€~€€€~~€}€€~€€~‚€~~~‚~~~€~€~€~~~}€€~~~~~€€}~€~~~~~‚~~~€€}€€~€~~€~€~€~€~€€€~~€}€~€}~~~€~~€~€~€€~€~€}~}€~€~~€~‚~€}~€}€}~~~~€€~~~~~€}~€~€€~€~€~~~€~~€~~€€~~~€~€}€~~~€€€~~€~~€~€€~~€~€~~€€~€~€~€}€~€~€~€~}~~‚~€~€~~€~~~~}}~€€€‚}€~~~‚€€‚~€~~~€‚~€~~€~€~€}‚€~~~‚~~€~€€~€~~~~€€}€~€€}€€€}€~}}~€}~€~~~~~~}€€~€~~€~€~~€~~€€}€~~~€€~~€~~~‚~€€~€}€~~~€~~}~€~€~€~~€~€~~~€~€€~€~€~€~€~€~~~~~€€~€~~~€~€€€}€€}€~}~~~€€‚~€~€~}€}€€~€~~}~‚€~€~~~€~€€~€~~~~€}~~€~~€~}€~€€~€}~€~€~€€~€~€~~€}}~}€~~€~€€~€}€}}€~~~€~~~~~€~€€~€}€~~~~~€~€}€~€~€~~‚€~€~~€~~€~€€€}€~‚~~€~€~€~€}€~€~~€~~€~€€€€€€~~~€€~€~~€}‚~€~€}‚€}€~~~~~€€}€~~~~‚~€‚}€~€}€~~€€~€~€}~~€~~€~~~€~€€~~~€~~€€€~~~€~€€~€~€~€€~€~~}~€~‚~€~€~}€~€~€~€}~}~}€~€~~}~€}€~~~~€€€~}~~~€~‚€~~~}~€~€~}€€~~€}~}~€~~€~~}€~€}€~}~}‚}~€‚~€~€€~€~€~~~€~~€~~€~€~~€}€~€~~€~€~€€~€~}~€~~~€~€~€~€~~~€~€~~}€~€€€~}€}€€~~~€~€€}€~~~~~€~}~€~€~€~~€~}€~€€€~~€~€~€~€~~~€~~~~}~€€€}~~€~~}~€~~~~~€}~}‚~€~€~€~~~~€~~€€€~~~€~~€~~~~~~€~}~~~~€~‚€‚~€~€€~€}€~€~€~~~‚~€~€~€~€~€~‚~~~€~€€}€€~€~~~€~€€€~€}~€~~€€€~€~~€€€~~~~~‚~€~~~€€€~€€}€€}€~€~~~€~€€~€~~~~~~€~~€~€~€€€~}~€~~}€€}€€~€~~~€~~€€}€€~~€}‚€~~~€€€~~€~~~€}~€~€€}€€~€~‚‚}~€‚~}~€}~€~€€€~€}~~~€€€~€}~€~€€€~~~€~€~~~~~~€~€~€~~~‚~€~~€}~~}€~€~~€€€}€~€€~~~~€~€€€€~€~€~€~€~~~‚~€€}€€}‚~€~€~~€~‚€€~~€~~~~€~€€~€}€€~€€~€}€~~~€~€~‚€~€~€~€~~€~€~~~~~€}€€~€}~‚~~‚~€}~~~~€~€~€~}~€€~€~€~€€~€~€~~€}€~~€}€~~~~~~~€}~€€}€€~€~€~~‚~€€~€~€~€~~‚~€~€€}€}‚€~~€~€€~}~~€~~€€€~€}~€€~~~€‚~~~€~~€‚€€€~€~€}€€}€~~~€€€~€~€~~}€~€€‚~~~~€}~€~‚€~~}€~€}~€€~~€€~~€~€€~€}}~~~€€~€~€~€~€~€~€~€}~~~€€€~~€~~€~~€€~~€~€~€~€}€€~€€~€~~}~€€~€~~}€~€~€~~€~€~€~~~€~€‚~~~‚}~~€}€~€~~€~~€~€€}€~‚€~€~€~€€~~€~~~€~€~~~~~€€~}€~~€~€~€€~€}€~~~~€€~€~‚€€~€~~~€~€~€}~€~~~~}€~}€}~~‚~€€~€~€~~‚}~€€€~€}~}€~€€~~~€}€€~~~~~~€~€~€~~~~€~€~€~‚€~€~}€€€~~€~~~~€~~~€~€€~€~~~€€}€~€~€}€€~‚€~~~~€}€~€€~~~~}€~‚€€~~~~~~€€~}€~~€~€~€€‚~~€‚~€~€~€}~€~~~~€~~€~}€‚€€~~€~€~}€€€}}~€~€~~~€~€‚~€~~€~€~€}€€~}€~€~€~~~€~€€~€~~€€~~~}€~~€}~~~~~€~€€~~€~€~€~~€~€~~~€~‚€~~~~€~~€~€~€€}€~€~€~~~€€€€}€~~~€€~~€~€€~~€~€€~€~€~~~€€~€~€~‚€€~~~~~~‚€€}€~}€~€€~~~€~~€}~€~~~~~~~€€€~€~€~€~€€~~~~€€€~€~~€~€~~~~€~€~}~~‚~€~€~~‚€€€~~~€~€~€}€~~€~€}~‚~€~€~€~}€}~€}€€}€~€~~€~~~~€~€~€}€€~€}€~~~~€€~€}~€~€€€~€~€~~€€~€~}~~€~€~~€~}~€€€~€}~€~€€~€~€~~€~€}€~~~€}€€}€~~~~€}‚€~~}}~€‚}€~€€~~~~}~€~€€~€~}‚~~~~~~€~€~€€€~€}~~€€€€€~€~}€~€€€~~~€~€~~~~€~‚~€€€€~€~~€}~€~€}€~€€~€~~~~€~€}€~€~~~~~€~~€€~€~€~€~€€}€~~€€~€}€~~~€€€~~~~~~~~€~~~‚€}€~~€~€~€€}€~€€~‚€€~~€‚}€~€~€€}€~~‚~€~€€~~~~€~‚€€~~~~~~~€~€~€€€~}~~€}€~~€~€~~€~~~€~€€}‚€~~~‚€~~~€~‚€€~€~~~}~€€}€~€~€~~~€~€~~~~~€€~~~€~€~~€€~~€€~~€~~~€€~€~~€~~}~~€~€~€~€~~€‚~}€~~~~€€~€}€€}€€~€~€~€~~€}€}~~~~€~€~€~~~€~~~~€€}}€~€~€~€€~€‚~~€~~€~€€‚~€~~~€~€€}€~€~~~~~~€‚}€€~€€€‚~}€~~~€~‚€€~€~~€~~~€€~€~€€}€~~~€~€€~€~~~€€~~€~€€}€~~~~~€~€€~€~~~}€€€~~€~~~~€~€~~€~€€€€~€~~~~~€€~€€}€}~€~~~}€}€~€~~}~~€‚~€}€€~€~€~€~€~€~~~€~€~~€~~~€~~~€~}€~€€}€~~~€}€~~~€~~‚~~€~€€}€~~€~~€~€~€~‚€~~~~€‚~€~€~€~~~}~€€~€~~€}€~€€}€~€}€~~€~~€~~~~~€~€~€€}~€~€~€€~~~€~€€€~~~~€}€~€}€~~}~€€~€~~€}~€~~~€}€~~€~~‚€€~€~€~€}~€€~€~€}€~€~~~€€}€~€~€€~€~~€~~}~~~€}~€€~€~€€}~€}€~~‚~~‚~€~€~~~~~~€~€~€~€~€€€~€~€~~~~€~€}€~€€~€~}€~€‚~€~~€~€€~€}€}€€€~~€~~€~~~~~€~€~€~€€€~~~~€€€€~~~~~~~€~~€~~~€~€€€~~€~}€~€€~€}~~~€€€}€~€~~~€~€€}~€}€~~€‚~€~€~€~€€€~€~~€~€~€~€~€}€~~~~‚~~}€~€~~€~€~~~~€~€}€~~€~€€~€~~€~~€~~}€~€~€~~€~€~€~~~~€~€~€~€€~€~€~€~€~~€~€€€~€~€~~€}€€~€~~~~~‚~€~€~~€~~}~€€€~€~~~€~€€~€~€‚~€€~€~€~~€~€€€€€}€~€~€~~~~€‚~€€~}€~‚~€~~‚~€~€€~~€~~€~€~€}~€~~~~€~~€‚~~~~}~~€€~€~€~€~€€}€~}€~€~~‚€}~€~~~€~€€~€}}€~€~€~~}~€}€~~€}€~€~€~€}€}€€~~~€~€}€~€~~~~€~€€~€~~€~~€~€~~€€€}~}€~€€~€~~€~€€€~€~~~€~€~~€~~~€~~€}~€~€€€~~€~~~~‚€~€~‚€~~~€€€~€~~€~~~€~€}€~€~~~‚~~~€~€~€‚}~}€~€}€~}€~~~€~€}€~~‚~~~€€€~~~€€€~€~~}€~€€€~~€~€€€~€~}}€€~€€~€€~€€}€~~~‚}€~€~~€€~~€€‚~€~~~~€}€‚~~~~}~€€~~€~~€~€~€€~€€~€€}‚€€€~~~~~€~€}~~€}‚€~~~€}}~€€€€~~~~~~‚€€~€~~~~€~€}€€~€~€~~€~€~€€~~€~€~€~€}~}€}‚€~€~~~~~}~~~~~€€~€~€~~~~€~~~~€€€~~~~€~€€~€~€~€€}‚~€~€}€}€~€~€€€~€}~~€€}€~€}€~~€~~~~~€~}€~~€€‚~€}‚~}€~~€~€€€~~~~€~~€}€€}‚€~€~‚~€}€}}€~~€~€}€~€}‚}~€~€~~~~~€}€}‚€~~€}€}€~€~€~€~€~€€€~}€}~}€~~€~€}€~~€}‚€~~~~~€~€~€~€~~€~~€~€€~~€~€~~~€~€€€~~€~€~€~~~€}~€~€~€}€}~~€~~€€€~€~~€~~€€~€~€~~~~}€€}~€~~~~€~€~€~€}~€€~~~€€~~€~€~€~~~€~€€€~€~~€~€~€~€€~~€~}~~€~€~~€~~~~€~‚€€}€€}~~~~€~}}€~‚€~~~~‚~€~~€~~~€‚~€~€}~}~€~€€}~~}€~~€€~€}€~~€€~~~€~€€~~~~~~€}€€}€~€~~~€~~‚€€€~~€~~€‚~€~€~€~€~~€~~~‚~~}}~~€}€€~€€~€€~€~~€€€~€~}~€€€‚~€~€}~~~~€~~~~€~€~€€€~~~~€~€€€‚~€~~~€€}€}‚€~€~‚~}€~~€~€~€~€~~‚€€€~~~‚}€~€~€~€~~€~~€~‚€€€~~~€~€~€€~€~€~€~~~~€~€€}‚~~~~€}€€~€~€~}€~‚~~~€~€€~€~~~~~~~}€€}€‚~~€~~€~~€}~~}€~€~€~~€~€€~}~~€~~€€€}€~~~€~~€~€€~€€}€~~~}€~€~~~€~€~€}~€}~€~~€~€€€~}~~€€€‚~€~~~€~€~€}€~€}~€~~~}~€€}€~~€€‚€~~~~~€€~€~~€~~€}€~~‚~~‚~~€~~€~~€€~€}€~~€}€}€€~€}€~€€~~~~€~~€€~€€~€~~~~€€€€~€~€~~€~~€~~~€~~€~€‚~€~€~€~€€~~~€€€€}€~~~~~€~}€~~~€~€~~€~}€~~~~€~€€~‚€~~€}~€~€€€€~€~~~‚~~€~€‚~€€~€~~€~‚~€€€~~~€}€€~}~€~€€~€~€~~€~~€€€~€~€~€€€€~€~~~€€€~€~}~~~~~~€~€}~~€~‚€~€~~~€~€€~~~~€~€}€~€€€~€}~~€~€~€€~€~~€~}~€~}~€~€~~~€~~}€~~~€~~€~€~€~~€~~€}€€€~€€~~€‚}€~€}~€~€}‚€~~€~€~}€}~€~€~€€€~€~~€~€‚}€~€~€~€€~~€~€~€€~€~~~€€€}€~~}€~€~}€~~}€~€€~€~~~~~}€}~€~€€€~€~~€~~€~~€~~€€~€€~~~€~~~~€~€€~~€~~~~‚~€}‚€~~€~~€€}€}~~€}~€~€~€~~~}~~€~}€~€~€~~€~~~€}€~~~~€€~€~€€~€}~~~€~€~~€€~~~~€~€~€~~~~~~€€~€€~}€€~~}~€€€~~€~~~€}€~}€~€€€~~€~€}€}€}‚€~~~~€~€~€€~€~€~~€~~~€€~€~€~€‚}€€~€€€~~~~€€}€~€~€~€~~€~€€‚~~~~€~‚€€€~€~~}€€‚~~}~€€}€~€~‚~~}}~~€}€}}~~€~~~~~~€~€€€€~€~~€~~€~€~€}~~€}~€€~€~~~€~€}€~~€~~€~~~€€€~~~€}~€€~~~~€~€€~~€~€}~€~~}~~~€~~€~~~~~~~€€~€~€~~€~€~€€~}€~~€‚~~€~€~€€~~€~~~€}}€~€~~€~€~€€}€~~~€~€~}€~€~€}€€~€~~‚‚~~~€~€}€~~~~€€€~~~~€~~€~~€€~€€~}~~~€~~€~}~€~€~€~}€~~}~€€~€~~€~€€€~~}€~€~€~~~€~€€€~€~~€~€€~€~€~€~€~€~€~€~~€~~€~€~~‚~~€~€~€~~€~€€}€~~~}€€~~~~~~€€~€~~~€~€€~€~~~~€€€}€}€~€~€€~€}~~~€~~~~€~~€€~€~~~€}~€€}€~~~€€~}~}€~~~€}~~~€~€~~~~€~€€€~~~€}€€€~€}~}€~€€€~~€~~€~‚€€~~€~~~€~€€}€~~€€~€~€}€~€~~€}~€€}€€~~€~‚€~~€~€€~€~~~€~€~~~~€€~€~}€}~~€~~€~€€~€~€}€~~€~~~€~~~~~€~~€~~~€~€~~€~~€~€~}€~€€~€~}~€€‚~€~~€~‚€}~€~€€~~~€~~€€~}~~€€~~€~~€~€}€~~€~€~~~€~€}€€~€~€}€~~€}€€}€~~~€~€~€~€~~~~~}~~€~€€~€~~~€~€€~~~}€~€€}€~}€~~~~~}€€}~~~€}€~€~}€~~~€~€~€~€~€~~€~€}€€~€}}~€}€~}~€~~}~€~~€~€€}€€}€}€~€~€~~€~~~€}€€~‚}€~~~€~€€~~~€}~€€}€}€~€~‚}~€~€€~~~~~€~€~€€~€~~~€‚~}€~~€~€}~€~€€~€€~~~~€~~~€€€~€~~~€}€~~}€~€€~€~~€~€~~~€~}€~€}€~€€€€~}~€~~€~€~~€€€~}~~€~~}€~€~€}~}~~~€~€~€~€~€€}}~~~€}€~~€~€~€}€~~€~~€€~~€~~€}~€€~€~~}~~€~~€~€~€€~€€~€€}€~}‚~~~€~€~€~€~~~~€~€}€}€~~~~€~~~~€}€~€€€~€~~€~€€~€~€~€~€~€~€~~~~€‚}€€~€~€~‚~~}}€}~‚€€~}€~~€~€€~~~~~€~€~~~~~~€~€€~~€€~€~~~~€€~€~~~€~~~}€~€~~€~€~~}€~€€~€€}€~€~~~~~€}€~€~~~‚€~}€~~~}€}€~€€~~~€}€€~~~~~€€€~€~~~~€}€~‚~€~~}€€~€~€~}€€~~€}~€~€}€€~~€~€}~€~~~~€~€~~€~~~~}€~~~~}€~~€~~€~~€~€~}€~~~€~~~€€~}€~~€~€€~~~~€~€€€€~~~€~€€~~~€~~€€€~~~€~€~~€}~~€~€}€€}€~€~‚~~~€€}€~~~€~~€€~€~~~€~~~~~€~€}€~‚~€€€~}€~€€}€€}€~~€€~€~~~€~~~~~€~~€}€~~~€‚~€}€~~~€€€€}€}€}€~€~€~}~~€~~‚~€}€~€€}€~~~~~~~€~€~~€}~~~€~€€€~€}~}€~€€~€~€~~~~€~€€€~€~~~€€‚~€~~~€~€~~~€~~~~~€~~€~~€~€~~~~~€‚~€~€~€~}~€~€€}€~~€~€~€€€~€~€~~~~€~~€~~~€~€€~€~€}€€}€~~€~~~€}€~‚€~€~~~~€~€}€}~~€~~€~‚€€‚~€~~€~€€€~€~~€~€~€€€~~~€~~}€€~€~€~€~~~~€~€€€€~€}~€~~€~€~€~€~€~‚~€~€}€~~~~€~€€~~€~€~~~€~€~€~€~~~~€~€~~€~~}~~€~€~€}~~~€~€€€€~~~€}€~€~€‚~€€~~€}€€~~€~€~€€~~€~€}~~€~€~€~~€€}~€~€~€€€~€~~€}~€}€~€~~}~€~€€~€~~~~€}€~~~~€€~~€}€~€~€€}‚~~}~}~~~€~€€~€}~€~€€~~€}€~€€~€~€~€~~€~€€~~~~~~€~~~€~€€~~~~€}€~€~€~€€~~~~€~~~~€~~€~€~€~€~}~~~€€~€}~€~€}~€}€€~€~€~~~~~€~€~€}€}~~~‚~€€~€~€~~€~~~€~~€€~€~€€~€~€~~€~€€€~~~~~€~€€~€~~€~€~~€~~€~~}€~€}€}}~}€~‚€€€~~}€}€~€~~~~€€€~€}~~€}~~€~~}~~~~€~€€€~€~~~}~~}~€€~}€~~€~~€~€}}‚~€~~~€~€€€}€}~€~€‚~€~€}€~€€€~~€}€~~€~€~€€~~~€€~~€~~~€€~~~‚~€€}€~€}€~~€~€~€€~€~€~~€~~€~€€~‚~~€~€~~€~~~€€~€~~~‚~€~€}€}~~}~€€€~€~€~~€€~~€~~~€~€€~€~~€~~~}~€~€}~~~}€€€€~€~~~€~€€~€~~€~€}~~}€~~€~~~€~~~€}€~€~~~~€~€}€~‚€~€~~~~~~€€€~}€~€~€€~€~€~~€€~~€~€~~€}~€€€~€~€~~€}€}~~~~€~~~€~~€~~€~}€~€~~~~~~~~€}€€}€~€~~~~€}€€}‚€~~€~~€~~€€~€~~€}€€~€~~~~€~~€€€~€}€~~€~~~~~€}~€‚}€~€~~~€}~€€€~€}~~€€€~€}~~~€~~~€~€€€~~€~€~€€~€~~~€~~€~~€~~~~~€~€€€~~€~€~~}€~€€~~€~~€~€€€}€~~~€~€~€~€€€~€~~€~€~€€~€~€€~€€~€~€~~~€€~€~~€~~€€~~€~~}€~‚€€€~~€€~~€~€~€€~€€~€€~€‚~€~~~€~~€~~~€€~~€~€~}€€~€€~~~~~€~€}€~~€~€~~€€~€~~~€}€~€~€~€€~€~~€€€€€~€~€€}~€~€~€~~‚‚}~€~}€~~~€~€~~€}~~}~~€~€}€€€}~~~€~€~~~~~€~~}~€€}€~~~€~‚~~€~€~€~~~~~~€~€~~€}€~}~€}€~€€~€~~}€~€~~€~~€~€€€~~€~~€~~~~~~€~~€~€~~€€}~~€~~€€€~€~€€~~€€~~€~€}€€~€€€}~~€~€~~€~~€~€~€€€~€}~~€~€~~}€~~€€~~€~€~~€~~€~~}€€}€~~€~€€€€€~}€~€}~€~‚€€~~~‚€€~€~~€~~€}€€~€}€~€~~€€€~€~~~€}~€€‚~€~‚~~‚}~€~€€~€}€~~~€€~€€~€~€}€~~€~€€€~€~€~~~€€€€~€~~€}~}€~~€~€€€€~€~~}~~~~~~€~~€~€~€}~€~€€€€~€~~€~€}€~€~~~€~€€~€€}€~€~~€}€~€~€€}€~€~€~€}€~€~€~€}€~~€€}€~~€~~~€€~€~~~€~€~€€}€€}€~€~€~~‚€~~~€~€~€€€~~€~~~€~~~~~~€~~~~€~€€~~~€}€~~€~‚€~~}~€}€}€~€~~~€~€€~}€~~~€~€€€€~€~~}€~€€€~€~}€~€€€€~~~€~~€€€€~€~~€~~€€~€~~~€€€~}€~~€}~€€€€}€~~~~~~~~€€~€~}~€}€~~€~€~~~€~€}€€~€~~~€~€€~~€~€}~~€}€~€~~€~€~€~~€~€}€~}€€~~€~€~~~~€~€€€~~~€~~€~€€~~€~€~~~€€~~~€~€~€~€€€€€~~~~~€€€~~~~~€€}€€~€€}€€~€~€~~~€~~€€}€€~€}€~€€€€~~~~~~€€}€€}€€}€~~~‚€}€~~€€~€}~~€~€~~~}~~€~~~€~~€€€~}~~€€~€~~€~€€}€~€~€~‚~~~€~€~~~€~€~€~~~€€~€~€~~€~~€€~~~~~€~€~~}~€€~€~€}€€}~~€~€~~€~€~€~€~~€€€~}€~~~~€~~~€~~€~€~€€~~€~€~€~‚~€~~~~~~€~€~~€~~€~€€~~€~~}€~€~€~€~€€~€€~€~~€~€~€~~€€~€~~~~€~€~€~€~€€~€~~}~~~€~€€}€€€~~€~€~~€~€€~~€~~~~€~€~€~€~~}~€}}}€}‚€~‚~~€~€}€~~~‚~}€~€}~~}€‚~~€~€~~€~€~€€~€~~€~€€€€~€}~€~€~~€~~€~€~~~€€~~~‚~€~€~€~€}~€~€~€€~~~€}€€~€€}€~~€}~~~€€~~€~~~€~~€~€€~€~~€}~€}€~€~€~~~~€~€€~€~~€~~€~€~€}€~~€€~€~€~~€~‚€€€~€}~€~~€~€~}€~€€~€~~€~€~€~€‚}€~~€~€€€€€~€}~€~‚€~~}‚~€€~€~~~€€~~€~€€~€}~~€~€~}€€~€}~~~€}~€~€~€~~€~~~€€~€~€~€}€€~€}€}€~~~€~€~~~€~€€~~€~€€~‚~~~~~~€~€€~€~€~}€~€€€~~€~€‚~~€}€~€€}~~€}€€~~€~~~~~~€~€€}~€~~€€~€~~‚~~~~€~€€€}€}~~€~€~€~~€€~€~~~~€~€€€~~€}~€~€€~€~~~€~€€€~€~€~€~~€~~}~€~€~~~€~~€€~€}~€}€~€€~€~€~~~€}}€€~~~~€~€€€€~~€~€~}€~€~€€}€~~~‚~~~€~€}~}~~~€€}€}€€€~~~~€}~€€€}~~€€~€~~~€~~€€~€}€~€~~~~~~€€~~~~€~~€€}€~€~~~€~€~~~‚€~~€~€€~~€}€~€~~~~~~€~€~~~~€~€~~~~}€~€€‚~€~€}€~~€~€~~€~€~€~~~~~€~‚€~~~~€~€€~€~€€~€~}~€€~~€}€~~€~~€~€~~~~€~€}€~€~~€~~€€}€~~~~€~~~~~~€€}~€~€€€‚~€~~~€~€€~~~~}~€‚}€~}€~€~~~€~€~€~~€~~~€}€}~€~~€~~€}€€~~~~€~€€€~€~€~~}€}€~~}~~}~€~€~~~€~€€€€~~~€~~€€€~€~€}€~€€}€~~€~~~€~€€}}~~~~~€€~~~~€~€€~€~‚€~~~‚€~~€}~~€~€}€€~~€~~€~~~€~€€€~€}~~~€~€€}~}~~~€~€~€~~~€~€€€~€}~~~€~€€}}}‚~~€~~€~€}€~~~€€~€~~~~~€}~€~€€}~€~‚~€€€‚~~~€}~€~€}€}~€~~€~~€€~€~~€}€‚~€~€~€~€~~}€€~€~~€~€~€~~€~‚€~~~€~‚~~~~€~~€~~}~~~~~€€€~~€}~~€~€€€~~~~€~~€~~€~~€~~~€€~€~€}€~~€~€€~€~~~€~€€€~~~€}€~€~~€~~€~€~€~€€}~~~~~€~€~€}€~€}€€}}€}€}~€~€~~~‚~€}€~€~€‚~~~~~€~€~~~~€~€~~€~~~€‚~~€~~~€}~€€€‚~€~€~€~~~~~€€~€~€~~€~‚~€~}€~}€~€€~€~€~~€}~€~~~~‚~€‚}€}~}}~€€~~}~~€€~€~€~€~€€~€~~€~~€~}€~€~~~€€‚}~€}€~~€~€€~€~~~~€~€€~~€}€€}€€~€}€}€~€}~~€‚~}~~€~€~~‚€€~€~€~€~€€~€~€}~~~~€€~€~€~€}~€~€~~~~~~€~€€~€~}€~~€~€€}~€}€€~}€~}~€}€}€€~~€~~~€~~€~~‚€~~€~€~~~€~€~€~}€~€}~}~€~€~~~€}€~~~‚~~~€~€~€€}€}€€~~~€‚~€~€~~~}€}€~}~~~€~~€~€~~~~€~~€€~€}~€€~€€}€~€~€~~~€~~~~~~€~~~€~~€~€~~€~€~€€‚~~€}~€~~€~€€€€~€~~€~€~€~~~~~€~€€€€~€~~~~~€~€~~~~€~€~~~~€~€€}~€~‚€~~~€~‚€~€~€~€~€~~~~€~~€~}€}€€€~~€~~€~€€~~~~~€~€~~~€~€~~€~€~€}€€~€€~€~€~€~~~€~€€€~€~€~}€~€}€}€~€~~~}€€€~~~€}€~}€~€}€}€~~€€~€~€~~}~€€€~€~~~~€€~}€~~~~€~€€€~~€~~}~€€€~€}€~€~€~~~~€~€~}~~~€~€€~~~€~~€€~}€~€~€~~€~~~€~~~}€~‚~}~€~€~€€~€€}€~~‚€~~~€€~€~~~~€~~€~~€~~}~~~~€€~€~~~~€~€€~€~~~~~€~€~€~~~€}~€~€€~€€~€}€~}€~€€~€}~~€~€€€~}~€~€€~€~€~~€€~~~~~€~€€~~~€~~€~€~€~~€}‚€~~€‚~€~€}~€}€~~~€~€€€€~€~~€€€~€~~~~€~€€~~~€~€~€}€}€}~€~~~~~€~€}€~~~‚}€~}~~€~~€€~€~~€}€~€€~~€~~€}€€€~~€~€~~€}€~~€~€~€~~€~€}€€}€~€~€~~~~€~€~€€€~~~~€~€€~€}€~€€~~€~~~€‚~€~€~€~~}~€€~~~€~‚€}€~€€~€€~~€}€~~‚~€~€~~~€~€€~‚€~€~~‚~€~€~~€€€~~€~~~~€~€~~~€~€~€}€}€~€~‚~~~~€}}~}€~€~€}€~€~~~}€~€~~~€~€€€€~~€~~€€€~€€~€~~€~€~~€~}€~~~~~‚€~~~€~€~€~€~~€€€~€~€~~~~€~~€~€‚~€€~€~€}€~€~~~}€€€~~€~€~~€~~~€€€~~€~~€~~€€~€~€€~~‚€~~~‚€€~~~~~~€€~}€~~€~~€€€~~~€~‚€€~~€€€}€€~~€~}€€~€~€~€~~€~~€~€~}€}€~~}€€€}€~~€~€€~€~~~‚‚~~~€~}~~€~€€}~~€~~€~~~}~~€}~}€~€~~~~~€€€~~~~€~€}€~€~~~€~~€€€~€~~~€~€€~~~~€}€~~~~~~~€€~~~~~€€€~€~~€~€~~~~~~€}€€~€~€~~~~€~€€€~~~~~~~€€~€~~~€~‚~~~€~€~€~}~€€~}€~~}€~~~~~€~€}€€~€~}~€~~€€~~~~~€€~€~€~€~~~~~€~€~~€‚~€€~€}€€}€}~~€‚~~€€€~€}~~~~~€€~~€€~€€€€}€~~~€~~~€~~€~~~€€~€~~€}~€}€~}€~~€}~~€}~€~~~}~€~€}}~€€~€~~~~€€}€~€}€~€~€~‚~~€~€€~~~~‚‚~~~}€~~~}€~}€€€‚~~€~~€~€}}‚~~~€~€€~€~~}€~€€€€‚~€~€‚~~}€}‚~}~~€~€~€~~€~€€~~€~€‚}~}~~€€~€~€€~~‚€~~~€~€}~~}€~€€~€~}~~€~~}€~~€~€}€~€~€~~~€‚~€~€~~~}€€€~~€}€~€‚~€~~€€~€~~€€}€€~}€~~€~~~€~€~~€~€~€€€~€€~‚€~~‚~~€€€~€~}€}€€~}€~€~€~€~~€~‚~€~~€}€~~~~€}€~€~€~~~~}€~‚€€~}~~€~€€~€}€~~‚~~€}‚~~€~~~€}€}€~~~}~€€~€~€~}€~€~~~€~}}€~€€~€~€€€€€~}~~€}~€€~€~~~€€~€}~€~€€€~€~~~€~~~€~~}‚}}€€€~~~~€}€~€~~€~~‚‚~~€}€}€~€€~~~~€€~€~}€~}€~€~€~}€~~€€~~€~€~~€~€}€€~€~~~~€~€~€€~‚€~€~~}€~~}€~€€€~~€~~€~}€€~€}€~~€~€~€~~~~~€~€~€~~€~~€~€}€~€~}€€~€~~~€~~€~€~~€}€~€~~~€€€~~~€}€~€~€}€€€~€}~}€~€~~‚~}€~€~~~~}€~€}€€~~€€~‚€~~~~€€€~~€~~~€}~€€€~~~~~}}€€~€~~€~€~~€}~}€~‚~~€~}~~€~~€€€‚~~€~~~€€~€~}€€€€~€~~~~€~€€€}€~}€~€€~~~€~€€€~€~~~€}€~~~~~~€}€~€€€~€~€~€~~€€~‚€~€€}‚€~~~‚~~€~€~~€}~‚€€~~~~~‚~~€~€~~€~~€~€}~~~€€}€~€~€~€~€€~€}~‚~‚~~€~€~€}~€}€}€€~€~€€}€}~€~€~~‚}~€~~€€€~€~~€}~€~€€~}€~€~~€~€€€~€~~~~€~€}€~€~~}~€}€~€}~~~€~~~€~€~€~€~€~€}}~}~~€€~€~~€€~~~€~€}€€€~~€~‚~€€}€~€€‚~€}€~~€~~€}‚€~~~}~~€~€~~€€€~~€~€~€~€€~€~€~~}~€~€~€~~€‚€~~~€~€€€}~€~€~~€~€~€€€€€~~€~€~€~€~€~~€~€}~€~€€~}~€}€~~€~~€€~€~~€}€~~~~€~~€~‚€~~€~~€}€~€~€€€}€~~~~~€~~‚~~~€~€~~~€~€~€~€~}€€~€~€~~~€€‚~~€~~€~~~}~€~~~~€}€~€€~€€}€~€€~~~~€~~€}€~€~~~~€~€€~~~}€~€€~€€~€~€€}€~~~€€€~€~}~~~€~~~€~~~€~~€~€~~€~€~~€~€€€€~~€~~~‚€~€}€~~~~~~€€€}€~€~}€~~~€}€~}€~~~€~€}€~€~€~~~€~~€~€~€~€~~~~€€€€~€~€}‚€€~~€}}€~~~~~€€~€~€~~€~~€~~€€€~€~€~~~€~€~€~~€~~~~}€€~~€€~~‚~€}€}€€€~€~~€~€~€~~€}~€~~~€~~~€€~~€~~€~~€€€~~€~~€~€~}€}€}~€~€~~€~€~~~~~~}~€€€~~€~€~€€~€}€}€€~€~€~~~~€~€~~~€~‚~~~~€€‚~~~€~€}€€~}€€‚~}€~}~~€~€~~~~~~}€~€€~€}~€~€~€€~€~~~€€~~€}~~€~€~€€‚}~€}~€~€}~~€~€€~~€~€~€€~€}€~€~€€~€~~€~€~€€~~€}~€~~~€~€€€~~€}€~€€}€~~~€}€~~~€~€~~~€‚~€}€~~€~€€~~}~€}€~~~€€~€}~~€~~~~€~€~€~€~€€€}€~}€~~~‚~~€€~€~~~~€}€~~~€~€€~€~~~€~€€€€~€~}€~~~€~€‚~€~~~~€}€~€}~€€~€~€~~}€~€€~~€~~~~~~€~~~~€~~€~~€}€~~~~€~€€€~€~~€~~~€~€‚~~€~~~~~€~€}€~€~€~}~~~~€€€~€~~~~€€~~€~~~~‚~~€€}€~€}}~~~~€€€~€~‚€}€~€€~€~~€}€~€~€~€}}€}€~~~~‚~~€~€~€~~~~~€~€}€~~~€~~~€€€~~€~€€~€~€~€~€}€~~€~€~~~~€~~~€~€€~~~~~€~€€~~€€€}€~~~€}€}~~~‚~€~~~€€~}~€}€}€€~~~€~~€}~~€~€~€~~€~€~~~€~€€~~€€~€~€€}€}~€€~~€~~€~€~‚~~€€}€~}€~€€€‚~€~€~€~~~~€€€~€~~~€~€~~‚€~~~€~€~}€~€€}€€~~€€~€€~€~~€~€€€€~~~€~‚~~}~~€~€~~~~€~~€€}€~€~€}€~€~~€~€}€~~€}}~€~~€€~€~~~}€€€~~€€~}€€~~~~~~€~~~€~~~~€~}€}€~~€€~~~€€~€~~}€€~€~€~€~‚€€~€}~~€~€~~~~€~€~€€~€~€~€€~€€~~€~€~~~€}€~~€~~~€~€€‚~€}~~~€‚~€~€€‚~€}~~~€~€}€~€~€~~~‚€}~€~€€~€€€€~~~~~€€~€~~€~€~€~€}€}€~~‚~~~€}€€}€~‚~~~~€~~}~€~€}€~~~€‚~~€~€€~€~~~~€~€~€€~‚€~~}€‚~~~~€€~€}~~‚~~‚~~€~€€~~~}~~€}€}€~~€‚~~€~€€~}€~€~~€~}~€€~€~€}~€€€~€~~~~€€~~€~~~~€€€~€~~€~€~€~~€~€‚€~~€}€€~~~~€~€~~~€}€€~~€}€~}€~€~~‚€~€~~~~€~~~‚}~~€}€~~€~€‚~€~€~~€}€~~~€~~€~~}~|~€~€}€~~€€~}€}€}€~~€~~€€~€}€~}~~~~€}~€€~€~~~€€€~~€~€~€}€~~~~€~€~€~‚€~~~~€~€~~€~}~€~~€~~~€~€~~~€~€€~~€~~€~~}€}€~~€~€€~}€~~€‚~~~€}€€}~~€~€~€~€~}€~~€~€€€‚~}€}~‚~~~}€€~€~€~~€~€~€~€~~~€~€€}~€~~€~€~~~€~€€~~~~€~€€~~~}€~~€~€~€~€~}€~€~€~€~€~€}~~}€~€€}€~€~€~~~~€~€€€~€~~€~~€€~€~€~~~€€€~€~~€~€€€~~~€~€~€~~€€~€~~~€~€€~~€~€€~€}~~€~‚€~~~}€€~€€~~€€~€}€~€€€~€}€~~€}~~~€~~€}~~€}€~€€~€€}~~~~~~€~~~~€‚}}€~€}‚~~€~€€~€€~~}~€~€~€€~€~~‚~}€€~~€~€€€}€~€~}€€}€~€~~~€~€~~€~~€~~~~~€}€}€~~~€}~€€~~~~~€~~€~€~~€~~~~}}€~€~€~~‚€~€}€}‚€~}~‚~}~€€~€~~€~€€€~~~~~~€~€~€€~€~€~~€~€€~€~~~€~€€~€}~~€~€€€~~~~~~€€~€~€}€~€~~~~€€€‚~€~~~€~€~~~€‚~€~€}€~~€~€}~€~€}€~~€~€~~~~}€€~€~}€~€€~}~~€~~€€}€~~€}~€€~~€~}€~€€~€€}€~~‚€~}€€€~~~€}~€~~~€~~~~~€~€€€~€€~~€~~~~‚}€~€~€~€€~€~~~~€~~€€~~~}€~‚}€~~‚€€~€~~€~€€~€~€~~~~~€~€€~~€}~€}~~€}~~€~€~€~~~€~€€~€~€~€~€~}€€~€~~~~~~~€~€}~~~€‚~~‚~€~~~~~€‚}€€~€~€~~~~€~~~‚€~~}}~‚€€~~~}~€€€~~}~~€~€~~~}~~~‚‚~~€~€~~}~€€‚‚~€~~~€~€~€}~€~€~€~€}€}€€~€~}€€~€}~~}€~€€~~~€~€~~€~€€~~€~~€~€€~}€~~€}~€€~~€~~~€~€~~€~~~€~€€~€~}€~~~}€~€~€~€€‚~€~€~~~€€~€~~~~€~~€~~~~€€‚~€~€~~€~~‚€~~€~€~€}~€~€}€~€~€}€~~€~€€‚}~~}€€~€~€~€€~€~~€~€€€~€~€~~~€€~€~€~€€~€~~~€~€~~~€}~~€~~~~€€€€€~~€~~€~€~€~~€~~€€~€~€}€~}‚€~~€~€~~€~€}€}€~~~~~~€€~€~~€~€€~~€~~~€€€~€~€~~€}€}€~}~~€}€€~€~~€~~~€}€€~€~€~~€~}€~€€€}€~~~€~€~~~€€}~~€~~€~}€~€€~€}€~~€~~€~€€€~€~~~€}€~€}€~€~€~~~~~€~€~~~€~€€€~€~~€€~€€~~~€€‚~€}~€~~€€€~€}~€~€~€€}€}€}‚}~€~€‚€€€~~~~~€€~€€~€~€~€~}€~~~~€€~€~~€}€~~€~~~€}€~€€‚}€€}€}€~‚}€}€€}€~€~~~‚~€~€~€}‚€~€~~€~~~€~€~~~}~€~€~€}€~€€€~€~~€~€€€~~~€~€}€€~}~€~}€~~}€~€~~~~‚~€~~€~€}€~€~~€€~€~€~~~€~€~‚€€€~€~~~€€~€~}€~~€}‚€€}€~~€~€~€~‚€~~~€}€€€~~~~~~€~€~~€~~~~€€~€~~}€€~~~€~~‚~~~~}€~€~€~€~€~~~€~~€}€~€€€~€~~~~€~€€~~~€~€~€~~~~€~~~€€~€~€~€€~€~~~~~€~~~~€}€~~€~€~~~€~€~€€€~€~~~~€~€~~€~€~€}€}€~€~~€~‚€€~}€}€~~~~~€~€~€€~€~€~~~~€~€~~€~€€~€}~€~€}€~€~€~€~~~€€}}€~€~~~€~‚~€}€€~€~~€~~€~€~€€€€~€~~€~€~€€€~~~~€}~€€~~€~~€}~~~~€~€}€€~~~€€~€~~~~€€}€€~~€€}€~~~€~~€~€~€~€~~€€~€~€~}~~€}€€}€€~€~€}€~€€€}€~~€~€€}€~~~~€€~~~€€~€}€€€‚€}€~~€~€€€~~~€€€~€~€~€~€€€~~€€~€}~~€~€~~€~€~€~~~€~~~€~€~~~~~€€~€€}€~}~‚€~€~€~}€€~€}€~~€}€€~~€~~~€€€€~€~~€~€€~~~€}€~}€~€€~~~~€€~€~€~€€€~~~~~}~~~€~€~~~€~€€~€€}€}€€}€~€}€~€~~~~€~€€}€~~€€~€€~~€€~~€~~~€~€€}€€€€~€~~~~€~€€~}€~~~€~~€}€~~~~~~~€~€~€€~~€~€‚~€~~}€~~€€~€~~€~€~€~€~€~€€~€~€~‚~€}€~€€~€~~~€~~€~~€~~~~€€~€}‚~~~‚€~~€~€~}€~~}€~~€€€~}~€~}€~€€~€~~~€€~~€~~~€~€€~€~~~€€~~€‚~€€}€€~€~€~€~~}~~~~~€~€€€~€~€~~~~€€€€~€~€~~~€~€~~~~€€~€~}~€€~€}€~}~~~€€€€~€~~€‚~~€‚~€~€€~€~~~~~€€}‚€~~€~~~~~€}€}‚€~~~~€}€}€~€~~€~€~~€~~~‚~€~€~€}€~}}~€~~€}€€~~~~€~~€~~~€~€~€~}€~€€€}€~~€}€~€€~~€~~~‚~€~€~€€}€~~}~€€}€}~€~€~€~~€~€~€€~€~€}~~~~€‚~€~€~€~€~~€~€~€€~€~€~~€}€~~€~€€€~€~~€~€€€€~€~~€}€€€~~~€~€~€~~~€~€€~~~~~€€}€~€€~~€~€~€~~‚€‚~€~~€~€€~~€~€~~~€~€€€~~~}€~‚~~~‚~€~€}}‚€€~~~€~€€~}€~~~€‚~}€~€~~~~€~€~~~€€~}€~~~€€€}~€~~€~€}~}‚€~~€~}~~}€~€€~€~€~~€€€~€}~~€€~€€~}€‚~~€~€~€}~~€~‚€€~€~€~€~€€}€}~€~€€€~€}~~€~€~€‚~€€}€~~~~€}€~€~€~}€~€€~€~~~~€~€~€~€~€}}~€~€~~€€€€€~€~€~€~€€~€}€~€€~€~~~€~€~€~~~~€€€€~€~~~~€€~€~€€~€~€}~~~€~€~€}~~~€~€~€~~‚~~}€~~€~€€~€~~~~€~€€€€~€~~€~€€€~}~~€€€~€}~~€~€€€~~€~~€€~€~~€~~€€‚€~~~~€}€€€~€~~~~~€}‚€~~~~~€~€~}€~~€~€€€~€~}€~€€~~€~€~€}~~~~~€~~€~€~€}€}€~~‚~~~€}€€}€~~~~}€~~€~~~~}€~€€€~€~~~~~€€€~€~~~€~€~€€~€€~€~€~~~~€~}€€€~~€~~~€~~~€~~~€€~€€~€}~€~€€€}€~~~}€}€~€~€~€~~€~€~~~~€~~~€~~€}€~€€€~~€~~€~€}€€€€~~€~€~€~~€~€€~}€~~~~~~~~~~€‚}€~~~€€~€}~~~€~€~~~€~€~€}€~~~€€€€~€~~}€}€€~€}~€~~€~€}€~€~~€‚~~€~€~‚€~~€~€}€~~€~~€~€€~}}~~€~€~€€~€}€€~€}~}€~€€~€~€~~€€~€~€€~€~€~~€}€~~€€~}€}€~~€€~~~€~€€~€~€~~€~€~~€~€~€€~€}~~~€~€€~€~‚~€€~~~~~~€~€~€€~~€~€}€~~€~€~€‚}€~€}~€€€€~€}€~€€~€~~~€~€~€~~}€~€€€~~~€~€~~~~€}~~~€~€~€~~~€~€€~€~€~~~€€~~€~€}€€~€~€~~€}€~~~€~€~~~~}€~€}€~‚€~~~€~€}~~~}€~~€€~~€~~€~~~~~~€~~€~‚€€€€~€~~€~€~€~€~€~€~~€~~~~€~~~~€~€~€~€€~€~€~~€€~€~}~‚~€‚~€€~€€~~}€~€€~€~~‚~~€}€~€~€€~€~€~€€~€~~~€~€~€~~~€}€€€~~~~€€‚~~€€~~€€~~~~€€~€~~~€}€€~}€~€€~}~~€~€€€}}€~€€~€~~~€~~€~€~~€~~€~~~}}€€~~~€~€€~~€~~~~€~€€€~~~€~€~€~€€}€~€€~~~}~€€€€~€~~€~€€~~€~~€€€‚~~€~~~€~~€~}€€~~~~€€€~~€€}€}€~~~~€~~~€~~€~€~~€~~~€~€~€~€~€~€€~~€€~~€~~}€~~€€€~€~~€€~~€€~€~€€~€~~€€~}€~~€€€€}€~~}€~€~~€}€~€~~€~€}~€}€~~~€~€}€~€~~~~€~~~~€€€~~~}€~€}€~~€~€€€~€~~€~€€~~~€~€~~~€}€€~€~~€~~€€~€~~€~€€~€~~€~€€€~~€~€~~~~€€}€~~~€~~~€~‚~€€€€~~€~€~€~€€}€~~~€~~€~€}€~~€~€}€~€~~€~€}€~~€~~~€~€}€~€~€~~€~€€~€~~~~€€€~€~€~~~~€}~~~€€€€~€}}~€€€~~‚~~~€~€~€~~~€~€~~~€~€~€~~€~€~}~€~€€€€~}€~€~~‚~€~€~~~€~~€~~€~€~€~€€~~~~€€~~€}€€~}€€~€}€~€€}~~~€~€~€€€~€~~€}€~~~~~€~€~€~€~€~~}~€~~€~€~€€€~€~€~€~€€€~~€~~‚€}~€€~~€~€~~€~~€~€~~~€€€~~€}€~€~€~€~€~~€~€~€}~~}€~€~€€~€~€~~€~€~~~€~€€‚}€~~‚~~€}€€~~€}~~~€}€~€~~~€~€€~€~}~€~~€}€€~}€€~€€~}~€~€}~}€~€~€~~€~~€€~€}€}€~}}~~€€~€~~~€~~€€~€~~€~€€€€~€~~€~}€~~€~€~€~~~~€~€€~~€€~€€~€~~€~€€€~~}€~€~€~€~€}€~€~€~€~€~~}€~~€€~€~~€~€~€~€}‚}~€}~€~€~€€~~€~~~€~‚€€€€~~€~€€}€~€~€~~~~€~~~~~‚~€}€€~€~€}~€~}€€~€~~~€~€~~€€~€~~€~€~€€‚}€~~~~€}€~~€€~€~€~€~€~€€~€~€~€~€~€~~~~~€}~€~}}€~€€}~€~~€~~€~€~~€~€~€~~€€~€~~}€~~~~€~~~€~€€~€€~~€}€~€~~~€~€~€}}~€€‚~€€}€~€}~~}€~€€~~~€}€}€€~€~€~€~€~~€~€~~~~€}€~€~€€}€~}~€}€~€}}€~}~€~€}€~€~~~€}€~~~~~€~€~€€~€~~~€~}€~~~€~‚€}~€}€~€€~€~€€~€~~~}~€~~€~€~€€}€€~€}€€~€~~€~€}~}~~~€}€}€€~~~€~~€~€€~€}~€~~~~~€~€}€}€~€~~~€~€€~~~~€~€€€€~€~~€~€~€~}~~€~~€~~~€€‚~€~€~€€}~€~€~~~€}€}€~}~~~€~€€~~€~~€~~€€‚~€}€~€€~€~€}~~~€}€~€~€~€€~€~€~€~€~}~}€~€~€~~~€}€€€}}€~}€~€~~€~€~€~€~~€~~€€~€~€~~~€~€€€~€~~~‚€€~€}~€}€€€~€~~~€~€~~€~€€€~€~€}€~~€~€€~~~~~~€€~€~~~}€~€€~€}}€€~~€~~~€~~~~€}€~€€~~}~€~€~€~~}~~~€}€~€~~~€~~~€~~€€€€~~€~€€€€€~~€‚‚~€~€~€~€~~€~}€~}}€~€~~€~€~€~€~~~~~~€~€€~~~~~€‚~€~€~€€}€~~€~~€~~€~€€~€~€}~~~€‚~}~€~~~~~~€~€~€~~€~€~€}~€~~€}~€~€~~€}€~€€}€~‚~~~~€}€€~€}€}€~~~~~~€€~€~~€~€‚~~~€~€€~}€}€~€€}€~€~€~~~~~€}€}~~}€~€~~€~€~‚~~~€~€}~}€~€€€€~€~~€~‚}~€~}€€~~~€~~€€~~~€€~€~€~~~~~€}€~€€~‚~~~}€~€~~~}€~~€~~~~~€~€€~€~€}‚~~€}€€~}€~~}€~€€~€}~~~~€€€~€~~~€~€~~€~~€~~~€~€€€~€~~€}€€€‚~}~~€~€~~~~€~€~€€€}€}~€~€~~~~€}~€€~‚~~€~~~€}~€€~€~€~€~€~~~€~€~€~~€~~€~~€~€€€~€~~~€~~€~~~~€€~€~~€€~€~~~~~~~~~€~€~~~~~€}€~€~€€€}€~~}€~~~€€~€~~~€~~€~~€}~€~€}€~€~}~~~~€€~~~}€~~€}~€}€~€€~€~€~}~~~€~‚~€~€}€~€~~€~€~€€~}~€€~~€~~~€€~€~~}€~~~~€~€~€~‚€~~€~€~€~€~}~~€}€~~€~~~€€~€~€}€~~€~€€~€~}€~€~€~~€~~€~~}€~‚~€~€€}€~}€~~~€~~€~€€~}~~~€}~€€€‚~~~~€~€€~€~~€~€€~€~~€}€€€€~}€~~€}€€€€}€~€}€€~€~€~~€}~€€~€~~~~€~€~€~~€~€€€~~~€~€€€~~€~~~€€€~~~€€€‚~€~~€€~€~€~€~€‚~€~}~€}€~€~~‚~~€~€~€€}€}~~€~~€€~€~~~€}~€€~€~~}~€€~€~€~~~~‚~€~~€~~~~€~€€€€~€~~~€~€~~~~}~€~€€~€~~€€~€€}€~€~€~€~~€~~€~}~~€}€~~€~€€~~€}~€}~€~€~€~~~~~€€€~€~~€~€~~~~€€‚~~€~€€€~€~~~€€~~~€~€€€€~~~€€}€}€€~€€}€}€}€~~~€~~~‚€€€€~€~~~}€€€~€~~€~€€€€~€~€}‚~}€~€~€}€€~}€~~~~€~€~€}~€~‚€~€~~}~~€~~€~}€~€€~~~€€~‚~~~€}€~€~€€~~~~~€~€‚~€~€~€~€~€~€~€€‚€}€~~€~€€€~~~€~€€~~€~~~~~~~€}€€}€~~‚~~€~}~€~~~~€~~€~~€~~€~€€~€~€~€~~€~€€~~€~€~€~~~€~€€€~~~€€~~~€~€~~~~~€}€~~€~‚€€~€~~€~€€~€~€~~~~~€€~€~~~€~€~€~~€~~~€~€~€~~~€€€~€~€~~~€‚~~€}€~~€~€~~~~€€~€€~€~€~€}~€~€~€‚~~~€~~€€~~~~~~‚€ƒ~}€~~€~~}}~€~€€~€‚}~~~~€€‚~€~~}~‚~€€~€~~€~}€}€€~~~~~€~€~~€€~~€~~~€€€~€~~€~~~~~~€~€~€~~~~€€‚~€~~~€€~~~~~€~€~€~€€~~€~€~€~€~€~~€€~~€~€~€€~€~~€~€~~~}€~~~€~€€~~~~}~€~€~~€~€€}€~€~~€€~€~}~€~~~€~€~~~€}€~}€~€~€~‚€}€~€~~€€~~€~€€‚~€~~€~~‚€€‚~€~~~}€€‚~€~~€~€~~€~~}€€€€}~~~€€€€€~~~€~€€€~~€}~~‚€‚~~€~€~~~~~€~€~~€}€~€€~~~~~€~}€~~€€~~€~€}€}€~€~~€~€~}€~~~€~€~‚€~~~€~€~€}€€~}~€~€}~~~~~~~~}€~€€~~€~~~~~€~€}€~~€~€~~~‚~€}~~~~~€€~€}~€}€€€~~€~~€~~€‚}€~~~€~}€}€~€~€}~~€~€~€}€}€~~~~~€€}€~~€~~€€€~}€~€~€~~€~~€€}€~~€~~~€~~€~€~€~~~€~€~€~€~€~€~~€~€€€€‚~€~~~€€€~€~~€~€~€€~~€~~}€~~€~€~~€~~~}€~}€€~€~€~~~€~€€}€~~~€€~€~~~€~€€~‚€~~€‚~~}€~‚€€€~~~€~€~€~€}€~€~‚~~~€~€~€~~~€€€~€€€€~€~~€~€€~}€~~€~~€€~€~€}€~~‚~~€~€}€~€}€~~~~€€~€~~~~~€€~~€~~~~€€~€~~~€~€}€€}€}€~~€~~~}€~€~~€~~~€~€~~~~‚€€€€~€~~€~€€‚}~€‚~€~}~~€~€€€~~€}€~}~~~€}~€~€€~€}‚€€~~‚€}~}€}€~~~€~€€~€~~‚}~€~€}}€€€}€}~€~€~~~€~€}€~~~€~~€~~€~‚€~€~‚€~~~‚€~€~€}€€~‚€~~~~€~}€€€~~~~~€€~~€~~~~€€~€~€~€~€~~€~€€€€~~~€~€€€~~~}€€~€~€}€}€€}€€~€}€~~~€~~€~~~€~€~~€€~~€~€~~~€~€~€~€~€}~~~~~‚€~‚}~~€€€~~~~€~~€}€~~~‚‚~€~€}€~~~}~€~€~€~€~~~€~~€~~€~€~~~€}€~€~€~~€}€~€~€~‚€~~~€}~€€~~~€~€~€~€~~~~€~€€€~~€~~~~€€~€€~~€}€~€~~€~€€€€~€}~€~~~€‚~€~€}€€~€~€~~€~~~}}€~~~€~~€~~~~€~~€€~€~~}€€~~~~€~~~€‚}€~€~‚€€€~}€~~€~€~~€€~~~€€}€~€~}€~€€€~€~~~€€€~}€~~~€€~€~}€~‚€€~€~~}€~€€€€~}~€}€€€~~€~}€~€€~€~}€~€~~€~‚~€€~~€~~~€~€€€~€~~~€~~~€€~€€~€~~~}€~~~~‚}~~€~€€~€~~‚~~~€~€€~€~~~~€~€~€~€~~€}~~}~€€~€~~~~€€€}€~~~€~‚€~}€}€€€‚€~~}~€}~~€}€€}€~~}€}~€€€€~€~~~~~€€€~~~€~€€€~€~~€~~€€~€~€~~~€}€€~}€€}€~~~~~€‚~~~~~~~€~~~~€~~~~}€€€~~~~€}€~€~~€}~€~€~~€~€~~~€€~~~€~€~€~~~€‚}}€~~}~~€}€}€~~~€~~€~~~€~~€~€~~€€€~€~€~}€~€€~€}~€}€~~~€~~€€~~€~‚~€€~€~~~€~€~€~~~~€}€~€}€~€~~~€~€~€€~€~~~€}~€€€~€}~€~€‚~€€~~€~€€~€~~~~~‚€~€~~~€~€€~€€~€~€~€€~~€~€€‚~€~~€~€€~€~€~~~€€~‚€~€~~‚~~~€‚}€€}€~}~~~€}€€~~€~~€}~€€~€~~€~€~}€~~~‚€}~~~~€}€~‚~~€~€~€~€~~~€~€~}~€~~~€~€~€~}€~~€~€~~~~€~€€~€€~~€}€~€~~~€€~~€~~€~€~€~~~€~€€€~~~€}~‚}€}€~~€~~‚€~}~‚€~~}~~€~€~€~~~€€~~€~~€~~€~~~€~€~€€}€€}€~~€~€}€~~€~€~€~~€~~~}€~€~€~}~}~~€‚}€~‚~€€~~‚€~€~€€~~€~€~~}~€~~€~€€}€€}~€€~~~}€€~€€~€}~~€~€€~}€}~~€~~€~}~~€~€~~~€~€€~€~~€}~€€~~~~~~€€~~~~€€~€}~~€~€}€~€€}~€€~€~€~~‚~~€}€€~€~~}~~€~€~‚~€~€~~~€~€€~~~~€~~€}€~€~€~€~€~~~€~€~~€~~~~€€~€~~€~€~€~~€~€€~€~~€~€€€~€~€}€~€~€}€}€~~‚€~€}€€€€}€~~~€~€~~€~~€~}€~€€~€~~~€~€‚~€~€~‚~~~~~€€~€}~€~€~€€}€~~~€‚~~~€~~€~€~€€€~~€~€~€}€~€~€€~~€~~~€}~€~€~€‚€‚~~€~€€€~€}€~€~€~~~€€€~€~~~€€€€~~~~~€€}€~}€‚‚~€~}€~€€~€~~~~}~€~€~€~€~~€}€€€~~~€~~€€€~€~€~~€€~€}~~~~~€~€~}~~€~€€~€}€~€}€~€~~~~€€~€}~€~~€€~~~‚~€€~€~~~€~€€~€~€~~€~~~~€~€~€€~€€~€~€€~~~~~~~€~}€€~€~~~~€‚}€~€~€~~€~~€~€€~€€€~€~}~€€~~~~~~~~€}€€}~~~~~€‚}€~€~€~€~€~~~~‚~€€~€~~~‚€}€~€~€~€~}~~~~€~€€~€~}~€~€~€~~~~€}€~€~~~~€~~€€~~€~~}~€}€€}~~€~~€~~~€}€€~~~€~~‚€~~~€~€~€}€}€€~€~~€~€}€€}€~~~€~€~~~~‚€€€~€~~~~€~€~~~~~~€~~€~€}€}~€~€~}‚€}~€~€~€}€~}€~~€~€€€~€~~€}€~}€~€~~~~~€}€€~€~€~‚~~€~~~~~€~~€€~€}€~€~€~~~€€~€~~~~€€~€~~€}‚€~~~~€~€~€~~~~~€€€~~~~~~€}~€~€€~€~€~~€~€~}€~~€~€~€~€~€~~~~~~~}€~~€~~~~€€€~~€€~€€€~€}‚}€~€}€~}€~~€~~~€~€€€~~€}€}€~€~~€}€~~~€~~€~€~€~~€€~€€}€~€€~€~€~€€~€~~€~€€~~~~€€~~}~€~~€‚~€~~€~€€~~}€~€€~~~~~€€~}~€~~‚€€‚~~€}~~€}€€~~}€~}~‚€€~€}€~~~~€~€€€}€~~~}~€~€~}€€‚~€~~€}‚€~~~€~‚~~€~€€~€~€~}€~€}€~€~€~€~€~~€~~~€}€~~‚‚~~€~~~€~€~~€~€}€~€~€~€~~~~€~€€~€~€~~€~~€~€~€~~~€€~€€}‚€€~~€~~~€~€€~~~~€~€~€~}€~€~€~~€~~€€~€}€€~~}€~~€€}€~~~€}€~€€€~€~€~~~}~~€€~€~~€}€~€~~€~~‚~~~€€~€€€€~~€~~~€~€~€€}€~}€~€~€€~€}€~€~~€~€€€€€~€~~€~€€~~€~}~~~~€~~~~~~€}€~€~€~‚~€~€~~€~€€~€~€~~€~€~~€~~€€€~€~~}~€~~€}~~€~€}€€~€€}~~~~€~€~€~€~~€~~€€€~}€~~€~€€~€~}€~€~~}~~€€~€€‚~€}€~}}~€€~~€~~€}€€‚~~~~~€€~€~~~~~€~€}€~~€~~~}€}}€€}€€~~}€~~~~~€}~€€€~€}~~€‚~€~€€~~€~~~~~€~€|}€}€~~~€~~€€€€~€~~~~€€~~€~~€}€~~€~~€~€~€~€€}€~€~€~~}€~€€€€€~~~}~€~€~~~~€€~€}~~~~~€~~€~€~€~€~~~€€~}~~~€‚~€}~~€€€~€~€~~~€€~€~€~€~‚~€~~€~€~€~€}€~~~€~€~€~€}~~~€~€~€~€}~~~~€€‚~€~€~€~€~}~~€~€~€€~~~~~€~€~‚~~€‚~€}~€~~€~~}€~~€~}}~€€~€~~€~€~€€€€~~~~€€€}€~€~€~~~~~~~€~€~~~~€~€‚}€~~€}€€~}€~~€~~€~~~€‚~~€‚}€}€~€}€~~~~€~€~€~~~€~€}~€~~€€€~~~~€~€€~}~€~~‚€€~€~€~€~€}}~€~€}€€~€€~~‚~~~~~€~~~€~~~~€~€~~~~€~~€}}~€~€~€€~€~~€~€~~€€~‚€~~~‚€~~~€~}€~€~~~€~~€€€~~€~€~~€~€~€~}~~}~€€€~}€~~€}€€€~~~~~€€€~€~}€~€~€~€~€~€~~€~€€€~€~~€~€€~€}~~€~€€~~~~~€€}~€~€€€~~~~~€‚~€~€€}€~€~}}€~€€~€}~~€~~€€~€~€~€~€}‚~~}€~€~€~~~€~€€~~~~€~€~~€}€~€~€~~€~€€~~~€}€€~€~~~~€~€~€€€‚~~€~}€~~€~€~€~€~~‚~€~€~}~€€~€~~~€~€~~~€~~€~€~€~€~€~€~€€~~€~~~€€~~~~€€~€~~~€~}€~~€~€~~}€~~€€~~~€€}€~€~€€~€€‚~€~~€}€€~€~~~~€~~~€~~€€€~€~€~‚€€€~€~~~~~€‚~€~€€~~€~~€~~€}€~~~}~€}}€~€~€~€~~~€~~€~€~~€~€€€~€~~~~€~€~€}€~~€~€€~€~~~~€€}€~~}‚€€~€~~~~~€€€~~~~€~€€~~€~€~€€~€}~€~€~€~~€€€~~~~€~€~€€~€~~€~€€€‚~€~~~~~€~€~€€~€}€€~€~~}~€€}€€}€~~€}~~}€~~€€}€~~~~€~€~~~€€~€€~€~}€€~~€~~~~~€~€~~€~€}€~€~€~€~~~‚}}€€~~~}€~€€€€~~~~€~€‚}~~€}€~~~~€€€€~€~}~~‚~~€}€}~€~~~€}€€~~€~~~‚€}€}~~€~€€~~~}€~€~~~€‚~€~~}~€~}~€~~€~}€~€€€~}€~~€~€~€€~~€~~~~~~€~€~€~~~€~€€}€~~€~~~~€~€~~€~~}‚~€}€~€}€~€~~}~~€~€~€~€€~€€~€€}€~€~€~€€~€~€~~~€~€€~€~~~~€}€€}€~~~~€~€~€~‚€€~~€~€~€~€~~~}€~€€~~€~~~€~€€€~€~~}€€}~€~€~~€~~€}~~~€€~~~}€~€~€€}€~~~€~€€€€~~~€€€€~€~~€}‚€~€~€~€€~€~€~€~~€~~€~~€~~~€~€~~€}~~€~€€~€~}~‚~€~~€~~}€}‚€‚~~~€€~€~€~€}€€‚~~€~~€~€€~~~~}~€€~€~~~~~€~€€~€~}€~€€€~~~€~~€€~~€~~}~€€~€~~€~€~€~~~€~€~~€€}€~€}~~~€}€€~€~€~~€~€€~€~~€~~~€~}€~€~~€~~~}}€€~€}€€€~~€~~€}~€~~€~€~~}~€€~~~~~€~€€€~~~~~€~€€~€~€~€}~~~€~€€~~€}€~~~€~€€~€€~€~~€~€~€~€~~}€~~€~~}€~€€‚}€~~‚~~‚~~€~€€~€~~€}~€~€}}€}~€}€}~€€€€€~€~~~€€~€~~~~€}~~€}}€}€€}~}‚~~€‚~€~€~€~}‚~€~€€~€}}€~€~€~€€~€~€~~~}€~€€~€~€~~~€~€€€~€}€~~€~~‚~€~€~€}~~~€}€€~~€~~€€~~€~~~€~€‚~~~€~€~€~~~~€~~~~€~€€€~~~€~‚€€~€~~~~€~€~~~~~€€~}~~€~€€~}€~€~~~~~€‚}~€~€€~~~~~}~€~€€~€~~~~€~€€~~~~€~€~€~€€~}~€~€~~~~}~€}€€~~€~~€~~€~€~~€~~€~€~€}€~€~~~€}€}€~€~~~€}€~~€~€€€€~}€~€~€~€~~~€~~~~€~~}€~€€~~‚~~}~€~€€}~~~€~~~~~‚‚€~~~~~€€€~€~€~~€~€€~~~~€~~€€~€~~€}€€~€}€~~~~€€€~€~€~~€~€~€~€~€€~€~€~€~~}€€~~€~}~~€~€~~~~~€~~€€~~€~}€~€€~€~~€~€€~€}€~~}}~€€~€}~~€~€~€€}~€~€~~€~~‚€€~€~~~~€‚~~~€~}€~~~~~}€€}€~~~‚‚~~€~~~~~~€}~€~}€€~€~€~€~€~}}€€~€~~€~~€~€~~€~‚~€~~€~€}~~€~€€~€€~€}~€~€~~€~€~~~~~~€~€~~~}€~€€~}~€~~~~€~€~€~~~€~€€}€€~€~€~€~~~‚~~€€~€€~€~~~€~~‚€~~~‚}‚~€€~€~€~€~€}~€~€€€~~€~~€~€}~€}€~€~€~}€~~€~€}€~€~~€~€€~€~~~€~€~}~~~~~~~€~€}~€~~€~€}~~€}€~}~~€~€~€~€~€~€}€€~~~}~~€~~€~}‚~€€}€~€~€~€~~~}‚~~~€~€~~~€~~€}€€}€~€€}~~}~€€~€~€~~~€~€€}~~€~‚~€€~~€~}€€~~€~€€~€~€}€€~~~€€~€~€~€~}~~~€~~€~€~€€~~€~~~~€€~€~~}~€€~€~€€~~€~~€€~€~~€~~€€€~€}€~€~~~~~€‚~€~~€~~~~€~€~€~~~}€~~~€~€€~~€}€€~€~€~€€~~~~€}€~€~~~€~€~€~€€~€~~~€}€€€~€~~€~€€~€~~~€€€~€~~~~€€~€}~~~‚‚~~€~€‚~~~~€}€€‚~~~~~€€€~~~~€}€€€}€~~~~~€~~€~€~€‚}~€~€€~~~}€~€~~€~€~~~€~€~€~€~~~}€€€€~}€~~€~}€€~€~€~€~~~€~€~€~€~~}}€€~€}~~€}€}€€~}€~~€~€€~€~~€}€~€~€~€~~~€~~~€}~‚€€€€}~€~~€}€~~‚~~~‚€}~€~€}‚€~~€}~€~€~~€~€€~}~~€€€~€~~‚€~}~€~€}~}~€€~€~€~~€~€~€~~€~€~€€~€}€€~€~~€~€€€€}~~~~€€~~~~€}€€~€}€~~~}}~€€€~~~€}€~~€~€~~~€~~€~€~€~€~€~€~€~~~~~€‚}€€~€~€~€~~~€~€€}€~€~~~}€~€~€~€~~~~€~~€~€~€~~€~~€}~~€~€~€~~€~~€~€~~~‚~€~€~€~}€~€~€}€~~€~~~}€~€~€~~€~€€}~~~~€~€~~~~€~€~€€~€~~~~~€~€€~€}€~€}~~~~€~€~€~~~‚~~€~~€~~~€~~‚€}€~€~}~~~€~€€}€~€~‚€~}€~~~~€~€€~€~~€~€€~€~~~~€€~~~€€€~~€~~€~€~€€}€~~€~~€~~€~€}€~€~}€}€}€€~€}~€~€€~€}€~~~€€~~~€~€~€€~~~€}€~€~}€~~€~~€~~~€~~~~~€~€~€€~~€~€€€€~€~~~~~€~€~~€}€~€~~€}~€~€€€~€~~~€~‚€€~~€}€~€€~~€~~~€~€~}€}€€~€}~€€}€~~~~€~€~€~~~}~€~}€~€~~~~~€€~}€~€€}‚€~€€~€}~}€~~~€~€~€}€~€~}‚~~€~€~€~‚€~~€€~€~~€~~€€€€€~€~€~€}~€€}~~}~€€€}€~€€~}~~~€~€~~~€~~€~~€~~~€€€€€~~€~~€~€~~€~€~€€‚€~€€}~€€~~~~~€€~€~~~€~€~~~€~~€}~€~€~€~€~‚~€€~€€~~~~}~€~€~€€}~~€€€~€~~~€€€€~€~~}€~€~€~~€~~€~€€€~€~~€€~€~~€~€~€~€€}~~~€~€€}€~~~~~€~€~~}~€€~~~‚}~€~€€~~€~~~€~€€}‚€~€~€~}~~€~~€€~~€€~~€€€€~€~~}~€~€~~€€~€€~~€€€~€~~~~€~~~‚€~~~€}€~~~€~€~€~€~€~~~~€~~€~~~~€~~~€}€€}€~€€~~~~€~€}€}€}€€}€~€~~~~€~€~~€~€‚~~€~€~€~~~€~€€~€~€~~~~~~€~€}€~€€~~~~~€~€€~€~~€~€€~€}~€~}~~}€~€€~€~~€~~}€~~~~€~~~€~€€}€~}~€~€‚~€~~€~~~€~~~~~€~€}€€~~~~€~~~}€~~~}~~€~€}~~~~~€}€€~€~€~~~€~€~~~€}~€~€~€€}€~~€~~~€}€~€~€~€~~}€~~~€~€€~€~€€~€}€~€~€€€}€~~~~~€‚~}€€~€~~~€}~~~€}}€‚~~~€€~€~€~~~€~€~€~~~€~€~€}€~€~~€€€~~‚€€~€~‚~€~€~€€~€~€}~€~‚€}€~~€~€~€€~€~€~€~€~}€~€~€~€~€€~€~€}~~~~€€~~~~~€~€€€~€~€~€~€~~€~~€~€€~€~€}}€}~€~€€€€~~€~~€~€~€€~}€}€~~‚~~}€~€~€~~~‚~€}€~€}€~~~€€~~~€~€}€~€}€}€~~€~€€‚€~}~~~~~~€€~€}~‚~~~~€~€€€~~~€~€€€€~€~€€~}€€}€~€€~~€€€~~~€~~€}~€}€~€~~~€~~€€€€€~€~€~€~€~~~‚~~€~€~€~~~~~~€~€~€€€~€}~}~€€€~€~~~~~€€}€}€~€~~€~€~€}€~~€~€~€€~€~~~~€~~~€~~‚€€€~~~€~€€€~~~€€~~}€~}€}~~€~€~~€~€~€~€~}€}€~~~€~€€~€~~~€€€}€}~~€}~€~€~€~€~€~€~€~€~~€~~~~€~€€~‚€~~€~~~€€~€~~~€~}€~~€~~€}~€€~€~~~€}~€}€€~€~€€~€~€~~€~€~€~€~€~€~€€~~€~€€€‚~~€~€€~€}~€~~€}~€~€~€€~€}€~~‚€‚~~~€}€~€~€~~}€~€~€~~€~€~€€€~~~~~~~~€~€€}‚€~~€€}€}~~~~€~~€~€€~~~€‚~~~€~€~€}€}€~~€~€}~~~}~€€€€~~~~€~~~€~~~~€€}€~~€~€€€~€~~~~~€}~~~~~€}€€€~€€~€€~~€~~~~~€~€~€~~€}€€}~~€~€€~€}€~€~~€~~~€~~€~~€~~€~~~}€~€€~~~~~€~~€~€€~~~€}€~~}€}€}~~€}~€€~€}~~€~€~€~€~€~~~~~€€€~€~~€~€€~~€~~~€~~€~~~€~€~€~€~€}~~€}~~‚~€~~€€~~~~€€}€~~~~‚~€~~€}€€~€€~€~}~~€~€€~€~€~}€~€€€~~~~~~~~~~}€~€€}€}€~€~~~~}~~€€~€€~€~€~~~€~~~~~€~€~~€€~~€~~€~€€~€~~~€€~~~€~~€€€~€}~~~~€~€€€}~~€}€~€€€~~~}€}€€~€~~€~€~€}~€~€~€~€~~~€~‚€~€~~~~€}~~€}€~€~~~€~€~€~~~€~€€€~€}~~~€~€€~€~€€~€~€~~~€~€~€~€}~~~~~~€€€€~~~€‚}€€~~€}€~~‚‚~€~~~€}€€€~€}€~~~~€~€€€}€~~~~~€€€€~~~~~~€~~~€~~~€~}~€€€€€~~~~€~~€€~~~€€€€}€~~€~~€€~~€~€~€€~~€~~}€}€€€~€~~€}€~€~€~~€~€~€~€€}€~€}~€€€}~~€~€~}€~~‚€~€~~~€~~‚€~€~}€~€€~~~€~€€~~~~€~€~€~~~}~~€€~‚}€~}€~€€€€~~~€}~~~~€€~€€€€}€~~€~€~€~€~€~€€~~€~~~~~€~€~€~€}€~€~~€~€€‚~~~}~€}€~~}€~€~~~~€~€€€€~€~~~€~€€~€}~~€~‚~€~€~~€~~~~€~€~}€~€~€~}~~€€€~€~~€~€~~~~~€€€~~€~~~~€~€€‚~€€~€~€}~€~~~€~€~€~€~€€~~€€~~€€~€~~~~~€}€~€~€~€~~~€}€~€~€~~€€€€‚~€~~€~€~€‚~~~~~€~}~~€~~€~€~€€~~€~€€€~}~~€~€~€€~€~~€~€€~€~~~€€‚~~~€~€€~€}~€~€~€~~~~~~€~€€€€~~~€~}€€~€~€€~€~€}~~~€~~~€€€~}~€~€~€~€€}€€}€~€~€€~~~~€~€~~€~~~~~€~€€~€~€~}€~€~~€‚~~€‚~€~~€~€~€~~€~~~€€€~€~‚€~~€~~€~~€}~€~~}~€~€~~~€~€€~€~€~~~€~€€~€}~€~‚€}}€~~~‚€~€}€~€€~~~€~~~€~~€€~~~~~€~€~~~~€~€~~€~€~~€~~~‚~€~€~€€}€~~‚~€~€~€~€~~€}€€~€~~~€~€}€~~€~~~~~~~€~€~€~~€€€~}€~~€~~}€~~€~€~~~€~~‚€€~}~~€~~‚~~~~~€€~€~€€~~~}€~€~€~€‚~~~€}€}~~~‚‚~€€}€~~}€~€€€~€~€~~}~~€~€~€}€€}€~€€€~~€~~~€~€~~~€€~€~€€€~€~~€~€~€}€~~}€~€~€~€€~€~€}€€€~€}€~~~‚€~~€}€€~€~€~€~~~€~€€~€~}€~€€€€~~~€}~~~€~€€~~€~~~~€€~€~~€~€€}~‚~€€~~}€~€}€~€~~~~€~€~€~€~~€~€€€~~€~€~€€~€€~€~€~€~€~~€~€~€~~~‚~€~€~€~€~‚€~~€€~€~~€~~€~€~~~€}€~~€~€}€~€~}~~~€~€€~~€}‚~~€€~€~€~‚~~~~€}~€€€€~€~~€}€€~€~~‚}~€~€~}€~€~‚‚~~}~€~€~~~~€~~€~€€~€}€~€~~€~‚€€€~€}€~€~€~~€€~~€}~€~~€€€~~~€~€~~€}~~~~~€~€}€}~€}~€~€~€€~€€~~~€~€~€~~}€~€€~~~€€~€~~€~€€€~€~~}~~€~~€~€~€}}~}€~€€€~€~}~€~€~~~~€}€€~€~€~~€‚~~~~€~€~€}~€€}€~~€~€€~€~~~~€}€~€~€~€€}€~€~€~~~‚~€~~€~~}€~€€~€~~€~~€}€~€~€~~~~€~€€€~~€~~€~€~~~~€~€~€~€€~€~}~~€~‚~€€}€€~~~~~~€~~~~~~€~€€~€€~€}~~~€}€~~~~€~€~~~€€~~~€~€€~}€~€€€~€}~~~€€€~€~~€~€€€€~€~~~~€€~€~~€~€~€~~€~~€~€~~€}€€}€~~}€~~€~€€~€~~~~~~€}€~€~€~~~~}€}€€~~}~~€~~€~€€€~~€~~}€~€~~~~€~€€€~~~~€}~€€~€~€}€~€~~€~~€}€€~€~€~~€~€~}~~€€‚~€€~€€~€~~~~~~€~€~€~‚~}€}€~€}~€~~~€‚~€~€€~€~~~€€~~~€~~~€€~€~€~€}~~~€~€~~€€~€‚~€~~€~~~~€~~€€~€~€~~~~~~~€~‚€~~€€~~~€}~€€~€}~€‚~€~~~€~~€€~~~€~~€€€~€€~~~€}€~€~~€~~~~€~~€~~‚}€~€~€€}€~~~€}~}€~€€~€}€~~~~€~€~~~€}€~€~~~~~~€~€~~~€~€€~€~~~€~€€~}~€~€}€}€~~~‚~€~€~}€~~~~€€~~€~~€€€~~€~~€~€€€€~€~~~~€€~€~€}€~€€~~€~€~‚~~€€~~€~~}€~€~€~€}~~€€~€~~€~€~€}~€~}€~}~€~€~}~~€~€~‚€€~~~~~~€€~~~~€~€~€~~€~~€~€€~€~}€~€€€~€}~€~€~€~~€}€€~€}~~€~€€€~~€~~€~~‚€~€~~}~€~~‚€€€~~~€}€~€~~~€~€~~~}}€~€~~}€€‚~~}€~€}€~~~€}~~~€€~~€~€€~~~~~€~€}€‚~}€~~~€€~€€}€~~~~€~~~€~€€€€~~~€~}~}€€~€~}~€~€~~€~€~‚~€€€~€~€}‚~~~€~€~€€~€~}€~~~€}€€€~€~~~€}~€}~€~}~~~€~‚~€~€€€~~€~~~~€~€€‚~€~~~€}€~~€~€~~€‚~~~€~€€~~€~€~~~€~‚€~~€~~~€~~€~€~€~€~~€~€€€}€~€~~€~€~€~€€}€~~€~€~€~~€~~€€€~€~€~€~€}€~~~~€~~~~~~€~~~~~~‚}~€€~}€~~~€}€}~€€~€~~€~~€€€}~~€~€€~€~€~}~~€€€~€~€~~~~€}€€~~~~~€€~~}~~~€€€~€~~€~€€~~~€~€€~~~~€~€€€}~€~€€~~~€~€€~~€~}€~€~€~~~~€€}€€~€}~~~€€€~€~~€}€€~~~~€~€€~~€~~€}€~€~€€~€~}~€}~€€€€~~€€€~€}€€}€~€~~€~~€~~~€€€~~~~€}~€~}€€}€~~€~~€~€€~€}~~~€~€~}~€~€€~~~~~€~€}€~~‚~~~€~€}~~~€~~€~€}€€~~~~€~€€€€€~}€}~€~€€~}€}€~€~~€}€~€~~€~€€€€}~~~€~‚€€~‚~€}€~~~€~~€€~€~~€~€€€}€~~€~€~€~~‚~~~~€~€~€€€~€~~€~€€€~~~~€€~€~~€~€~}~~~~}€~€~€~€~€}€€~€~~‚€‚}€~€~€~€~~€€}€}~}€€~~~€~~€~~€~€€~~}€}€€~€~~~€~€€~€~€~€~€€~~€}€€~~~~€€~€~~~€~€€~€~~€~€~€€}~~€~‚~€~€~€€}~~}~€~~€€€~€~~€~€€~€~~€}}~}€}~€~€}€~~}€}€~€~€~€~~€€€~~}€~~€}€€~~}€~~~}~~€‚~€€}€€~€}€~~€~€~€~~€~~€~€~€~€~~}€}€€}€~€~€~~€}€€~€~‚€€~~~~€}~~€~~€}€~~€~€€€€~€~~€}€€~}€~€€}€€~€€~€~}€~~~€}~€}€}~~€~€~}~~€~€€~~€~€~~€~€}€~€€~€~~€~€€‚~€~~€~€~‚€€~~€}~}€~€‚}~~€~‚€€~~€~~€}€~€~€~~€~€€€€~€~~€}€€€~€~~~~€€€}€~€~~€~~€~€~~€~€~€~‚€€~~~~€~€~€~€€~€€~~€~~€}€~}€~~}€}€~€€~€€~€}~€~}€}€~~€}€~~~€}€~~€}€€~€~~€~€~~€~}~€~€~€~~~€~€~~~~~~€~~~€}~€~€~~€~€€€~~~~€}~€~€}€~€~€~~~€~€€~~~~€~€€~}~~~€~€~€~~€~~~~€€~€~~€~€~€~€€‚~€~€~~~€~€€~~€~~€}€~}~~~€€€~~~€~~€~~~~~}~€~}~~€~€€€~€}~~€~~€~}~€~€€€~~~~€~~~€}~€~~€~~€€€}~€~~~~~~€}€€~}€}‚€}~~€~€€~~~~~~~~~€~€€~€~€~~€}€~~€~€~€~~€~~€€€~~~~}€~€€€~€€~€~€~€~~€~€€~€~~~€~€€}€~€~€€€~~€~~~€€~€~~€~‚€~‚~~€}€€~~€~~~€~€~~~€~€~€~€}€~~~~€~}€~}‚~€}€€~€~~~€~‚€€~}€~}€€€~}~€~~~~‚~~€~€}€€}€~~~€~€€€~€~~~~€€~~€}€~~~~~~€~€~€~€~~~€}~€€}€~~~~€}€€~€~€~~~~€~€~€€~~~~€~€}€€~~€~~~~~€~€~~~€}~€€~~€~~€~€~~~€~€~€~€€~€~€~€~~€€€~~~~€€~~€€}€€~}€€~€}~}€~~€€~€~€}€€}€}~}}~€€}€~}~}€~~€€~~~~~~€€€€~~~~€€~€~~~€}~}€~€~€~€~~~€€~€}~~€}€€€€~€~}€~€~€~~~€€€~€~~~€~€€€€~~€~€~€}€~€~~~~‚€~€~~€~}~€€€~~}~~~€~~}€~~~~}~€€~~€}~~~~~~€~€€~€~}~~~€~€~~€~~~€€€~€~€~~€~€€€€~~}€~€~~~~~‚~~€€€~€~~€~€~‚€~~€}€}€~€€€€~€~~}€~€€€~€~~~€~€€~€~~€~}€~~~€‚~€~€€~€~~~€~~~€}€€~€~€~€~~€~~€~€~€€€~~€~~~€}€~€~~~~~€}€€}}€~~}€~‚€€}~€~€€}€€}€€~}€~~~~}~~€}€~€~~~€~€€€‚~€}€~~€~~€€~€~~‚€~~}€~‚}€€~‚€~€~~€~~€~‚€~€}~~}~€~~€~~~€~€~~~~~€~€~€€}}€~‚€~~‚~~€~€~€€~€€~€~~~~€~€~~~~~€~€~€€€}€}~~€~€€}€€}€~€}€~~~€€€~€~~~€€€~€}€~€~€~~~~~€~~€~~€€€~}€~}}€~€~€}€~~~~€€€€~€~~~€~€€~}}€~€~~~€~~€€}€~~~~‚}~~~€~}‚~~€}€~€€~~€€~€}~€~€€~€}~€}€~~€~€~€~~~€~~€~~€}€€~~~€‚~~~€}€~}€}€~~~}~€}€~‚€€}~€~€~€~~‚~~~~~~~~€€€}~~~€€~~~~€~~~€€~}~~€~~€~~~~€~€€~}€~€~€€~€~~~~€€~€~~€~‚€€~~~~€~€~€€~€~}€~~~€}€€~}€~~}€}€~~€€~€€~~}€€€€}€~€~‚€~€~€€‚~€~~~€}~€€€~€~}€~€~}~€~€~€€~€€}€~~~€}€~€~~}~~~€~€€€~~~~€~€€~‚~~~€}~€}€€~€~~~€~€~€~€~€}~~€}€€~€~€~~~}€~€}€€}€~€}~~~~‚€€~~€~~~€€~€~€}€~‚€}€~~~~€€€}}~}~~~€~}€~~€€€€~€~~€~€€€}€~~~€}€€~€}€~€~~~~~~~~~~}~€~€~€~€~}€~~€~~€~€~€~€~€~€€€}€~~€~~‚}€€}€~€~€€~~~~~€~€~€~€~~~}€~~€~~~~€~€~€€‚€~€~~~~~€€€~~~€€~€~~~‚€}~~~~€~€~€~~€€~~€~~€~€~€~€~€~€~}~~€~‚€€~~~€~€~€€~~€~~€~€€~€€~}€€~~€}€€~~~~}€~€~}~€~€€~€~~€~€}€}€}€€~€~€~~‚~€~€~€€~€~~~€~€€}~€~}‚~~~~~€~€€~€~}~~~€}~€~~~~€~}~€~€~€€~€€~~€}~€~‚}~€}€€}€~~~}~€~~€~€~~~~~~~~‚~€~€~€~~~€}~€€~€~~€~€€€}€‚~~€~€~€‚}€~~€~€~€€~€}~~~€~€~~~~€~‚~€~€~~€~~€€~}}€€€~€€~~€~€~~~~€~~~€‚}€~}€€}€€~~~€~~€~€~€€~€~~~€~~€€~€~~€€€~~~~~€€}€~~~~~}€}€~~~~~~}€~€~~€€€~~~~~€~‚€~€€~€~€~€}€~~~‚~}~€~€~~€}€~}€~‚~~‚~€~}€~€€~~€~€€~€~€~€€}‚€€~€}~€~€~€~€~~~€€€~€~€~~€€~€~€€~€~~€~~~€~~~~~€}€€€~€}€€~}€~~€€~€~~€}~€~€~~~€~€~~~€}~~~~€~€€€€~€~~~~~€~~€~€~€~~€~~€€~€~~€}‚‚}~€~€~}€€}}€}~€}€€~€~}~~}€~€€€~€~€~€€~€~€~‚~€€~~€€}~~}~€~€~€~€}‚€}~€}€~€~}~~~€€~€~€~~~~~‚€~~~~~~€€}~€~~~€~~~~~~€}€~~€‚~€~€~€€~€~~~‚~~€€€~~€~€~€€€~~~~€~€~€~€~€€~€~€~}€~~~~~€}€~~€}~€~~€€€‚}€~}€~~€€~~€~€€}~€~‚€€~~~€~€€€€~}~~€}€€~~€~~~€}€~€}€€}€~€~‚€~~~€~~€~‚€€€€~~~~€~€€€~}~~€€~~~~}~~}~~€~€~~€€~€~~~€~€€~€~€}~~€€€~€}~€~~~~~~€~~€~~€}€~€~€€}€~€€~~€~€~€~€~~€~€~~~€}€~€€€~~€~~~~€€€~€~~€~€~~~~}€~€€~€~€~~~~€~€~€}€~~~~€~~~€~€€~€~~~~€€€~€~~‚~~~~~~€}€}~€}~~€~€~€€~‚~~€€€€€~€~€~~~€€~€~~€~€~€~~‚~~€~€~~€~€~€~€~~~~€~€€~~~€~€~~€}€~€}€~}€~€~~~~~€~€~~€~~~€}~~~}€}€~€~~~€}€€~€~~~~€€}~€€~~~€~~}~~~~~~€€~~€}€~~€}€€~~€~~~€~‚~€~~~~€€€~~~€~€€€~~~~€~€€~}€~~€}~~~~~~~~€~€~€~€€~}€~~€}~~~€~€~~€}€~€€~€}‚€~~~~€‚}€~€~€~€~~~€~~~~€~€€€}€}~€€€~~~€~}€~€~‚}~~€~}€~}~~~~€€~~€~€~€€€€€~~~€~~~~~€}€~€}~~€~€~€~€~€}~~€~€€€~}€~~€}€}€}€~€€~€~~~€‚~€~€}€€€~€~€~€~€€}‚~~~‚€~~€~€~€~€~}€~~€€€~~~€~€€~€€~}€~~~€~€~€€~~€}€~€~€}~~€~~}€~€€}€}€~~€~~~€~€~€~~}€~‚€€~€}€~€~~~~€‚}~~€€€~~€}€~€€}€€}~€~‚~€~€~~€~€€~~~~~€~~€~€‚€€€~€~€~~€€}~~~€~~~€}€~€~€~~€~€~€~~€~~}€~€~~€~€~€€}~€~€~€~€~€~~€~€~~~~}€~€~~~€~€}}€~€€~~€}€~€~€~€~~€~€}€~€€~€}€~~€~~€~€~~€~€~€~}€€~€~€~~~€€~€~~~~€~}~€~€~~}€€}~}~€~~€~€~~~€~~€~€~€€~~~}€~€~€~~€~€€~€}~€~€~~€~€~€€~}~~€~~€}~€~€~~€~~€€~€~~€~~~€~€~€~~~€~€€~~~~€}~~~~~€~€~€}€~€~~~~€~€€€~€}€~€~€€~€~~~~€~€~€~€}}€€€~€~€~€~€~€~~€~~€€€~€~~~€‚~~€~€€~~~~}€~€~€~€~~~~~}~€~€~€~~~€~€~~~~~€~}€~~€}~~€}~~€~~€€~~~~}~€}€~€~€}€~~€~€~~~€~€~€~}€~~~~€€~~€€}€~~}~€}€}~€~€~€~€~~~~€~€~€}€~~€~~€~€€~~€~~~~€~€~}~~€‚~€~€}€}€~~~~~€~€~€}}~~€~~€€~~€~€}~€€}€€~~~€€}€}~}€~~€€~€~~€~€€€}€~}€€~€~€~€€~~~€~€~~€~~€~~~~€~‚€€~€~€}€€~€€~€~€~€}€~~~€~€~~~~~€€~€~~~€~€~~~~€~~€~~~~~~~€}€}€~€~€~€~€~~}~€€~€~€~~~~~€}~€€}~~€~€~~~€~€€}~€}€}~€~€~}€~€€~‚}~~€~€~~~€}~~~€~€~~~~€~€€~~~~€}€~€€€~€~~€~€~€~€~€~€}€~€~‚€~~~€~€~€€~~~‚~~€€}~€}€}~~€~~}~€€~~~€~€€~€~~~~~}€€~€~€~~~~€~~€~~~~€}~€~€}€~‚€€€‚~~~~‚€~~€€~~€~~~€~~€€‚~€€~€€}€€}€~€~~€€€~€~€~~€~€~€}~€}€~~€€~€~~€~€~€€~~‚~€~€~€€~€€€~€~~€}€~€~~~€~~€}€}€~€~€~}~~~€~€€€}~~€~~€€‚~~~~‚€€€~~€~~~~€~€‚~~€~€~€~€€~~€~€~€€~~€€}‚€~~~~€~€€~~€}€~~€€~€€}€€€~€~~~~~~~~~€~€~€~€~~~~€~€}€~‚~~~€~~€~€€~~~~€~}€~€€€~€~~€}€~~~~€~~€~~~€~€€€~€}€~€~~€~~€‚~}€~}€~~€€}€~€€€€~~€~~~~€€€~€~~~‚€€€~~~~€€~~~~€~€~}€~‚€~€~€~}~€~~€~€€€€€~~~€~€€€~€~€~€}€€€~€~~~~~€}~€}€€~~€~~€~~€€~€~€~‚~€~€€~€~~€~€€‚~€~€€}€~~~~€~€€€€~€~~~~€€~}€~€}~€~€~€~~€~~€~~€‚~~€‚~€~€~€}€~€~~€~€€€~€~€~~}~}€€}‚€~€~€~€~~€~~€€€€‚~~~‚~~€~~€€~~~€~€}€€€~~}~~~€}€€~~€~€€~€~~~€}€€~€~~€~€~~€~€~~~€~€~€~€~€~~~€€€}€}}~€~€~~~~~~~~€€~~~€}€}~€}€€~~~~~€~€€~~~~€€~€€}~}€~€~€~€~}~€~€}~€~~€€€€~~€~~~€~€~€}€~€}€‚~~‚~€~€~€€~~€~€~€~€~~~€}€}€€}~}€~~€€~}~~~~€€~€~€~~€€~~€~€~€€€~€~~~€~‚~~~~€~€€}}€}€€~~~€}~€€~€}€~€~~~~€~€€€~~~~~€€~~€~€}~€}€€~€~€~€~~~~€€€€€~€~~~€~~~€~€€}~€~}~~€~€~€€}€~€~~~~€}€~~€~€~~€~}€~€~~~~€€€~}~~}€~€€€~~€}€~€~€~}~~€~€}€~}€~~~€}€~€€~€~~~€~€€€~€}~~€~€~€}€~€}€€~~~~€~€~€~~~~€}€~€€~€~~}~€€~~~€~€€~€~~€}€~€~~~€€‚~€~€~~}~€~~€~€€€~€~~}~€€€~€~€}€~€~€~~}€~€€~€~~~€€~€~€~~€}~€€~‚€€~}~~~€~€€~~€€}~~€~~~€€€~€~~€~€}€~~~‚€~~‚}€~~~~€~€~€€~€~€~~~}~€€~€~~~‚€~~€}€~€~€~€~€~~€~~~~~€~€~~~€€~~€~€~~€~~€~~€‚~€€}€€~€}€€~~~€}€~€~~~€~}€}€€~~€}€€}€~€~~~€~€~~€€€~~€~~~€~~~~~~€~€€~€~~~€~€~€€~€~~~€€€~~€~~€}€~€~~~~~€~€~~~€~~€€~€~€~~€~€€~~~~~€}€~€€€€‚~€~~}~€€~~€~~€}€~€~€~€~~}€~€€‚~€~€~~~~~~}€~€~€~€~~€€~€~€~~‚~€}€€~€€~€~}~~€~€‚~~}€€~~€€~}€~€}€}€~~}~~~€~€~€€~~}€~€€€}€~}~~~}€~€~~~~~€€€}€€~€~~~~€~~€€~€~~~€}€~~}€~€~€~~~€~~€€~~€€~€€~€~€~€€~~€}€}€€~€~~€~~€€~}~€~€~€€~~€~~~~€€€~~~~€~€€~€~~~€~€~€~~€€~€~€~€€~~~€€~€~~€~€€€€€}€~€~~~~~€~€~€~€~~~€~€€€~€‚~€~€~~€~€~‚€~~~€~€€~€€~~~€~}~€€€€~€~~~~€€~~€€~~~€~}€€~€}~€~€€€~~}€~€€~~€~€}~€~~€€€€~~€~~€}€~€~~‚~€~€~€€~€€~~~€~~~~~~€~~€~~€~€€~€}~€}€€~€~~~€~€€€~€~~€~€~}€~~€~€€~€~€~€~€€~~€~‚€€€~~€~~~‚~~€~€~€~~€~~}€~€€~~~~€~€~€€~€~€~€€~}€~~~~€€€~~~~~€~€€}~€}€~€~~€~~~~~€‚~~~€~€~~€~~€~~€€}~~€}~~€~€€~€~€~~}~€~€~€~€~€€~€€~~~€~€~~€€~€~~€~~~€€~€€~~~}~~~~~€}~€~€~€~~€}€~€~~€}~€~~€~€€~~€~~~~€~€€~€~~~~€}€€~€~~€~€~~€~~€€~~}€~€€~€~€~€~~€~~€~~~~~~€~€~~€~~€~€€€~~€~~€~€}~€~€~~}~~€~€~€€~€~€~€€~€}~~~€~€€~€~~~€~€€€€}€~€~~€~~€~€€}~€}~~€}€€~€~€€~~~~‚}~~€€~€~~€~€~€€}€~~‚€€~€~€~~€~~€~~€~€~€~~€~~~~€~~€€~~~~~~€~€~~~€~€~€~~€~~€~€€~~‚€~~‚~€~€~€~€~}€~~~€~€~€~~€~€€€€€~~€~€~~~~€}€€€~~~~~€‚€€~~~~~~€€~~~~~€}€~~€}~~€€~€}~~~€~€€~€€~€}€~€~€~€~€~~€~~~~~~~~}€~€~~‚~~€}€~€~~~€€~€~}€~€€~€~~~}€~€~~~€€~}€~€€~€~~€~~€~€~~€~€€~€}€~€~~}€~€€€~€~~€~€~€~€~€~€€€~€~€~~€~€~€~€}€~€~€~}€~€~€~~€€€‚~~~~€€~~€~~~€~€~€€€~€~€~€}~~€}~€~~~€€~€~~~~€~‚€€€€~€~~}€~~‚~~€~€~€€~~‚~~€}€€€€€~€~~~~€€~€~~~€~€€~~~€~€~€~‚~€}~€~~~€~€~~~€}€~~€~~~~‚‚€€~€~~€€€~}€~~~€€€~€~~~€~~~€~€~~€~€~€€€€~~~€~€~~~€~~€€~~~~~€€€€~~~~~€~~~~~~€}€~€~€€€€€~€}€}€€}€~~~€~~~~€}€~~€~~€€~~€~~€~€~€€~€}~~€€}€~~€~~€€€~€~€~€~~~€~~€€~€~~€~€€~~€}€~€~€~~€€€~€}~~€~€€~~~}~}€~€~~~~€€~€~€€~€~~~}~€€€~~~~€~€}~~€~‚€€}~}~€~~€~€€€~~€~€~~~~~~~~}€}€~~~€~€€€~€~€~~€~~€€€}€~€~€~€€~}}€€€~€~~~€~€~~~€€€€~€~~€~€€~€~€~€€€~~~€~€‚}€~€€}€€~€~~€~€~~€~~~€€€€‚~€~~}€}~~~~~~€~}€€~€}€~~€~€~€~€~~~‚~€~~€}€}€~~~€~~‚€~€~€~€€~~€~€~~}}€~~~~~~€€€~€~~€~€€}~€~€~€~€~€~~€€€~€~€~~~‚€€~€‚~~€~€~~~~€~}€~€€~€~€~€~€}€~~~€~}€~~€~€~€€~€~€~€~~~€~~€€~~~~~~~€~€€~€€€€~€}~~~~€~€€~~€~€~~~~€~€~€~~~€€~~~~€~€~€~€~€~€~}~~~~~‚€~€€~~~€~~€€~€€~~€~€~~~€~€~€~~~€€}~€~‚€€~~~€€}€}€~€~~~}~€~~~€}€~‚~}~~€~€€~€}~€~€€~€~~~~€~~~€~~~€~€~~€~€€€‚€~€~~€~~€€€€~€~~~€~€~€~€}€~€~€~~~~€€€~€~€~}€~€~~~~€~€}~~~~~~~~€€€~€~~}€~~~}~~€~€~~€~~€~}€~~€~~€€~€~~€~‚€~~€~}€~~€~~~~~€~€~€~~€~~€}~}}}~€}€~~€~€~~€~~~€}€~€€~~~€~€~~~~€}€€}€~~€~€€~€~€~~€}€}€~€}€~~€}€€~€~~~€~€~€€~€~€~~~€€~€~~~€~€~~~€}~~€~~€}€€}€€}}€~~€~€~~~~€~€~€~€~~€~€~€~€~~~€~€~€~€}€€~~€~€€~€~~~€~€~~~~€~€~€~~€~~€€~€~~~~~~€€~~~~~}}€€}~~€~~€€~€~~}~€~€~~~€~€€€~~~€~€}~€~~€~~~€~€~~~~€~~€€€}€~~€~€~€~~~€~~~~€}€~€~}~€~€~€~€~€}~~€~~€€€~~€~~~€~€~€€~€~~~~~}€}€~~~€~€~~€~‚€~~€€‚~€€}~}€~~~€}€}€~~}€~€~€}€}€~~~~€~€€~€~€~}€~~~€~€~~€~~€€~~~~€~€€€~€}€~€~‚€~}~€€}€~€~€~}~€€~~~~€~~€€€~~€~~~€~€€‚~€~€~€~~~€€~€~€~~€~~~€~€~~~~€€~€~€~€~€€€~€~€~€~~~~~~€€€~~~~}€~~€€~€}€~~~~~~€€}€~~}€~€€€~~~~~~€€~~~~€€€~€€}€}~€~~€~€€~~~~}€}€}€~€~€€}€~~~‚}}€~~€€‚~€~~€}}€€~~~~€€~€}~~€~~€~~€~~~~€~€~€~~€€€~€}€~~€~~~~~€~€~€~€€~~€~~~~~€~~€€€~~€~€~~€~~~~~€~~~€~~€~€~€~€}€~€~‚~€~€€‚~€}~~~~€€€~€~~€~€€€~~~~€~€~€~€~~~€~€€~€}~~~€€~€}€€~€~~~€~~€}€~~€~~€€~€~~~}‚~~€~€~€~~€~€~€€}~~~~~‚}~€~€‚~€~€~~}€~€~€€~~€~~€~€€~€~~~€~€~€~}~~€~~~€~~€€~€~~~€}€~€€~~~‚~~}€~€~€~}€~~~€~~€~€~€~€~€€€~~€~~~€~~~€~€~~~€}€€€~~~€~~€€~~€~~~€€€~}~~}~~~‚~}~}€~€~~~€~}€~€~~~}€~~€~~~~€~€€~~~~€~€~€€~‚~€}€~~€~€€€~€~€~~~€~€€€~~~€~‚€€€~€~~~€€€~~~€~€€~~‚~~}€}€~€€‚€~€~~€}€~€€}€~€€~€}€~~~~€~‚~~~~€}€€}~€€}€~~~€~~~~€~~€€~€€}€}€€}€~~~€~~€€~€~~~~~€}€€~€~~~€}~€€~€~~~€~€~€~~€}~€~€~~}~~~€~€€~~€~€~~~~€~€€}€~~€~€€€€}~~~€€€~€~~~€€€~€~€~€~€€€~€~~~€~€~~~€~€€€€~€}~€~€~€}~€~€~~‚~~‚}~~€€€}€~~~€}€€~~€€~€€€~€~~~€~€~€~€~€€~~€~~‚€~~€~€~~€}€}€~}€~~€~€~€~~€~€~€€€~~€~}€~€€€€}€€~~€~€}€€~~€€~€~~€~€~€}€~~€~€~~€~€€€€}~~€}~}€}€€~€}~}€~€€€~€~~€~‚€€~€€~~€~€~~~~~€~€}€€€~€~~}€~€€~~~~€€~€~~~~€~€€~}~}~€~€~~€}€€€~€~€~€~€~~~~~~~€~€}€~€~‚~~~~€~€€€~~€~~~€~€~€~~~€€}€€~~€~€~‚~~€~€~€~~}€€€~€~€}~~€~}}~€~€~~~~~~€€€~€}~€~€~~~€~‚€€€€~€~~}~~~€‚}~€}€~€~~~~}€€€€€€~€}}€~€€~€}€~~~€~~~€~€€~‚€~~}~€~€~€}~~~€}~~€~€€~€~}€~€€}€~~~€~€~€~€~}~~~€}€€~€~}~}€~€€~€€~€~€}~€~~€€~€}~~~‚€~~€~€€‚~€}€€~~€~€~~€~€~}€€€€~€~~~~€€€}€~€}~~~~€~€€~€~€~€~€~~~€€~€~€~€}€€~~~€~€€€~€~€~~~€}~€~~~~~~€~€~€~€~~~~€€€€~~~~€~€€~€~~~~€€€~€~€~€~€€~€}~€~~}€~€~€€~~€~€~~‚€‚}~~}€~€~~€€~}~~€~€~‚~€€€~€~~€~€~€~~~€}€€~€~~€~€~€€€~}~~€~€€~~~€~€€~€~~€~€~~€~~€~~€~~€~€~€~~~}~~€}€€~€~€~~~€~~€€}€~€~‚~~~~€~€~€}}€~€~~~~€~€€~~~‚}~€~€~€~€~~€~€~€€~~~}~€~~~~~€~~~~~€~~~‚}~€~€~~€~€‚€~€~€~€~€~~~€~€~€}€~€€~€~€~~€€~~€~€€~~€‚~€~~~~~€~€~€€~~~~~€€~~~€€~€~€~~~~€}€~€€}‚~€~€~}€~€€~~€~~}€€}€~€}€~€~~~~€~‚€~~~€~€€€~~~€}€€~~€}€‚~~€~€~€€~€~~€~€€~~€~€€‚~~€}€~€}~€~~€‚~~~€}€€}€~~~€~€~€}~~~€€}€}~€~~~€~€~€~€~~}€€~€€~€~~~€~~€~€€}€~~~€~}~€}~€~€~€~€~~~~€~€}€~~~}~€}€~~~~€~~€~€‚~€~}}€~€~€~~€}~€}€€~€}€€~€~~~~~~€‚~€~€~}~~~€~~~€~~~‚€~~€~}~€~€~~~~~~€~€~}€~€€~€~~~~€}€€€~€~~~~~€€~€~}€~€~~€~~€~~~€~€€~€~~~€~€~~~€~€€€~~~€~€€€~~~€~€€~€~~€~~€~€~~€~€€~~€~~}€~€€€€}~€~€~€~€~~~~€}~~€~~‚~~~~€‚~€}€~€~~€~~~€}€€~€~€€~€~~~€€~~~~~~~€~€€€~~~€~€~~€~~€€~~€~~‚~~~~€~~~~€~€€~€~€~€€}€€~~€~€€€€€~€~€€}~‚~€~~€~~€~€~~€}€€~~€~€~€~€€€€€}€~~~}€~~€~€€€~€~~€~~}€}€€~€€~~€~€}€~~~~~€~€€~~€}~~~€~€~€~~€€~€€~~~€~€€~€~~~€~€~€€~€~~~~€€~€€}€€~€€~€~‚}~€~€‚‚~~~‚}~€~€}€€~€~~~€~€€}€~~€~~~€~~€€€~~~€‚~~€~€‚}€~€}~~~~~€€}€~€}~~€~~€€€~~~‚€~~€~€~€~~~~€€~€}€~€~€~~~€~€}€€€~€~~€}~~€}€€}€~~}€~€~€~€~}‚€~€~~€~€€‚~~€~€~€~€€~€€~€€€~~€~~€~€~€~€~~~~€~~~€~€€€~~€}€~€~€€~€€€~€}~~€~€~~~~~€‚~~€~‚€‚~~~€~~~€~€€€~~€}~~~‚€~€~~~~~€~~~~€~~€~€~€~€€~€€€~€€€~€~€~~‚~~~€~€~~€}€€€‚}€~€~€€~€~€~~€€€€€~€~~€}~~~‚~~~€~€}€€}€€€~€}€}€|€~€}~€€~~}~~~~~~€~~~€€€‚~€}€~€~€~€~}€~€€}~€~~€~~~~~€€~€}~~~€€€~€~€~€}€~~€~€€~€~~~~€~€~~~}€~~€€~€~€~€}~~€~€€~~€~~€~~~~€~€€~~~~€€€~€€~€~€~€~~€}‚€€~€~~~}~€}€~€€~~~€~~€~€~€~~~€~€€€~~€~}€~~€€}€}€~€}~~~€~€~~€~~~~€~€€~~~~€‚~€~€€}€~€€}~~€€~~~~~€}~~€€~~€~~€€~€€~~€€~€~~~~~€~€€€~~}~}~~€€€€~€~~~€}€€}€~€€~€‚~€~€~~~€~€~~~~€~€~~€~~~~€~€}€~€~€}€~}~~~~€~~~€€~~€€‚~€~€~€€‚€~~€~€~€}€€~~~~€~~€~€~€~~~~~~€~€~€~€€€~€~€}€~€€~‚~~€~€}~~~€~€~~~~~€~€~~€~€€~~€~~€}€~~~€€~€~~~~~€‚~~€~€~€~€€}€€€€~~€~€}‚~~€€€~€~~~}€~€€~~€~€~€~~€~~€~€~€~}€~~€~€~€~~~€~€€~€~€~€}~€~~€~€~€€~~~~}~~~€€€~€~~~~€~€‚}€~€€}€}€~€~~~€~‚€€€}~€~~~~~€€€~€~€~~~€}€~€€}€€~€€~€~€~€€~€~‚€€~~‚~}€~€~~€~~~€}€€~€}€~€€~~~€~€‚~~~~~€~€~‚€€~~€~€~€~€€~~€€}€€~~~~€~€~~~~~~}€}€€~€}~~~~€~€€}~€€}€~~~~~€}~‚€€€~€~~~~~€~€~€€€~€~€~~~~€~€~€}€~~~€~€~€~~€}~~€€~€~}€}~€~€€~~~~~€~~~€~€~~~€~€~~€~€}€~~€~€€~€~~€~~€~€€€€~~}€}~~€~€€}€}~~€~~€~~~€€‚}~€~€~~€€~~~€~€€~€~}€~~€~€}€~€~~€~€€~€}€~€~~€~€~~€€€~~€~€~€~€}€~€}~~€~€}€~~€}€€€€~~€~~€}€~~~€€€~~~~€~€~€~€~€€~€~~~€~~~€€~€}~~}€~€~~~~€~~€~€~€€~~€~€~~~€~€~€}}€~~}~€~~~~€~€€}€€~€}€~€~€~~~~}€€€~€~~‚}~€€~€€}€~~€~€}€€~}€~~€~€€~~~~‚~~€~€}€€~€~€~€~~€~€}~€€}€~€~~~€~€€~€~€~~€}€~~€~€~~€~€~€€€~~€}~€~€~~~€~‚~~€~€~~€€~€‚~~€~€~~€~~~~€€~€~~€~}€~€~€€~€~~~}€~~~~~~~}‚€€~€~€~€~~€~€~€€~€€~~€~~~~€~~~~}~€}€~€~€~€~~€~€}€~~€€~~‚}~~~€~€~‚~~€~€~~€€€~€~~€~€€~€~€~€}~~~~}~€}€€~€~~~€~€‚~€~~}~~~€~~€€€€~~~~‚€€}€~€~€€~€~€}~~‚~€~€~€~}~~€~€~~‚€~€~€~~~€}~}€~€~€~~€~~€€~€~~€~€~~€~~~~€~€€~~~€~~~€~€~€€€€~€~~€€~€~€~~€€€}}€~~~~~€~~~€~~€€~€~€}€€~~~€‚~~~€€~€~€~~~€~€~€€€~~~€~~‚€~€~~€}~€€~€~~~€€€€~€~~~€~€~~€~€€~~~}‚€~~~~~€~€~~€}€~€€€€~€~~€~€~~~€~€~€~€~€}€€~}~~~€~€~€~€~~€~€~€‚~€~‚€~€}‚~‚~€~€~~~~}€~€~€~€~~~€~€~€~€~~€~€~~~~~€~€‚€€~€€~€~~~~€~€€~~~~€€}€€€}€~€~€~~~€}~€€}€~€~~~‚~~~€}€€~‚€}€~}€~~€~~~€}~€€€~}~~€~€~~‚~~€‚~~~‚€€€~~€}€~~€~‚€€~~€~€~€~€~€~€€€€~}~~~~~~~€€~€~~~~~€€€~~€}~€€€~€~~}€€~€~}~€€‚~€~€~€€~€~€€~‚~€~~~€~~€~€~~~~€~€}€~~€~€}~€~€€~€~‚€}€}~~€€~€~€~€}€€~€~~~€~€€~€~~~€€€}~€€~€~€~€~~€€€~€}~~€~€~€~~€~€€~€€}€}€€~~€~}~~€~€€~€~€~‚~~~~~~~~€~€}€}€~~‚€}~~‚€€€€}€~~}~€€~€~~€~‚~~€~€‚~€}~€}~€€€€~~~~€~€€~~€~€~~€€~€~~€~€~€€~€~€€~€}~~‚}~~€~€€}€~~‚}€~€€~€~€~~~~€~€~~~~€€}€}€~€}€€~~€~€€€~~€}€€~~~€~€€~}~€}‚~€~€~€}€}€~€~~~€~€€€~€~~~€~€~€~~€~€€~~~€~€~~€~€~~~~€~€€€€~€€~€~€~~~€~€€€~€~~~€€~€~~~€~€€~€~~~€~€~~~~€~~€~~~€~€~}‚€~}~~€€~}~~~€€~~€~~€~€€~€~}~€€}€~€~€~€€~~~€~~€€€~~~~~€~€€}€€~€~€~~~€~€€€~€~~~€~€~~~€}€~€€~€~~~€€€€~~~~~€~~€~~~€~€~~~€~€~€~€~~~~€~€~~€}€~€~€~€€€€~€~~}~€€~€~€~~}~~€€~}€€~~}~~~~€€~~€~€~€€~€}€~€~~}€~~€€€~€~~€}€~€~€~~~~~~€~~€~€}€~€}€€€~€~€}€}€}€€~~€~€}~€~~~€€}~€~~€~~€}€€~€~€~€~}~~€~€€~~€~€}€~€~~~€€€~~~~€~€€~~~~~€~~~€~~€€}~€~€~~€€~~~~€~~€~~~~‚€‚~€~~~€~€€~~~~€~‚~€€~€~~~€}€~~~€€€~€€~€}}€~€~‚~}€}€€~€~}~~€~€~~€~~‚‚~€~~€~€€~€}€~€~€€~~~€}~€}€}€}€~~~~€‚~}€€~~€~~~€€~~€€~~}~~€~€€~€€~~~~~~€~}€€~~~‚~€~€~€~~€~€€~€~~€~~€€~€~~~~~€€~€}€~~€€~€~~~€€~€~~~€€~€}~€~€}€~€€~€~~~~€~‚~~}~€~€~€~~€}€~€}€€~€€~~~~~€~€}€~~~~~~€€~€€~€~€~}~~€~€}€~€€~}~€~€€€~~€~~~~€€€~€€~‚€~}~~~€€~€~€€}€~~‚~€}~€}€~~~€~€~‚€€~~~~~~‚}~‚}€~€~€€}€€~~~~€~~€}€€~~~~€~€€~€~~€}€€€€~€~~~~€~€~~~€}€€€~}~€~€€~€~€~€~€}€}€~~~~}€~~€~~}€~}€~~€~~~€}€~~€€}€~~‚~~~€~~€€~€~~}~€~€}€~~~~€~~~~€~€~~~€~~‚~€}€€}€~~‚€€~~~€~~€~~€~€~~~~‚€€€~~€~~€~~€€€~}€~€€~~~€~~€~~€~€€~€~€~€€~~~€~€€€‚€~€~~~€~€}‚€~€€}€€~~~~~~}~€€~€~~~~€~€}€€~€~}€~~~~€€~€~€€~}€~~‚~€~€~€~€€~~}€~}€~~~~€~€€~~~~‚}€~}€~€~~~~€~~€}~~~€~€€~€€~€€~€~~~}€~€€~€€}€~~~~€~~€€~€~~~€}€}€€~€~€~}€~€€~€}€~~~~~€€~~~~€€€~€~~~~€~~~}~€~~€~~€~~€}€}€}~€~~~~}€~€}~€€~€~~€€~€~€~€~€}}€~€~~~~€}€€~~~€~~€}~~€~€}€€~€~€~€~~€€~€~~~€~€~€€€~}~~€~~€€~~~€}€~€€~~€~}€~€~~~~‚€~~~~€~~~€}€€~}~~€~€€€~€~~}~€€~~€~€}~~€€~€~~~€~~€‚~€€~€~€€}~€~€~€~}€~~€~€~€~~~€~~‚€~€~‚€~~~‚~~€}€€~~~€~~€}€€~~~€~€~~~€~~€~€€~€~~‚€~}~~~€~€€~~~~~€~€€~€~€~~~~‚€~~€~~~€€~€}~€~~€}~€~€}€~€~€~€~€~€€}~}~€}€~~€~€~~~€~€~€~€~~€€~~~~€~~€€€~€€~‚€~€~‚€€~~€~€~€€~€€}€~}€~~~~~€€~€~~}€~‚€}€~‚€~€~~‚~~€‚}~~~€~~~€~~~€~€~€~€~}~€}~~~~€~}€~~~~€€~~~€~~‚~€}€~€~~}€~~~€~€~€€~€~€~~€~€}~€~~€‚~~~€~€~€~}}~~€~~€~~~€~€~€~~}€~~€}~~~€~~€€€}~€~€~€~€~€~€~€€~‚‚~~€~€€}~~€~€€€}€}~€~€~€€~€€}€}€€~€~~‚~~€~€€~€}€€€~€}€~~€€~~€~€~€~}€~~~‚~€~~€~~~~€~~~€~~€~€~€}~€€€~~€~€€~€}~~€~€~€~€€}€~}~€€€€~€~~~~€~€~~}€~~~~~€~~~€~€~~€}~~~~€}~€€~}€~€~~~€}€}€}€}€~~€~€€€~~€~~€~€~~€~€~€~€}€}€}€~€~€~‚€~~~~~€~€€}€~~€~€~€€~€~€~€}~€~~€~€~~~€€~€~~€~€~}€~€~€~€~€~~‚€€~~€~~~€€~~€~~~€~€~€‚~~€}€~~€~€€~}€~‚~€}~~~‚~€~€~€~~€~€~€~€}€~~~€~€~~€~€}~€€€}€~~}~}€€~€€~~~}~€~€€~~~€~€€€}€~~~~€€}€~€~€~€€~€~~~€~€~€~€}€~~€€}€€~€}~~~€~~€~}~~€~€~€€~€~€~~€}~~~~€€~€~~~€~€€~~€~~~€~€€}€~~~€}~~€‚~~~€~€€}~€€~~~€~€~€~€~~~~€~~~~€~~~€~~~~~~€‚~~~€}€}~€~~€~€€€€~€~~~€~~€€~€}€~€~€€€~€}~}€€~~~€~€~€~~€}€~€€~€}€~~~€~~~~~€~€€€~€~~€€~~~€~€}€€€€}~~€~€€~€€}€~€~€~~~~€~~€~~€€~€~€~~€~€~~~~~€~}€~~‚~~~~€}€~€~€~~€€~€}~~}~€€~€~€~€}~€€~€~~~€~€}~€€~€~~~€~€~€}}€~}~~~€~€~~€~}~€€~€}€~~~~€€~~~~}~€}€}€~€~€€~~~~~€~€~€€~~~~€~€~€~€~~€~}€}~€~€}~€~€€~€~~€~~~€~€~€~€€~€~~€€~€~~€~€~€€~€~€~}€~~€~~€}€~~€~~~~~~€€~€€}€~~~~~€€~€~€€~~€}€~}~€}~€€€~~~~~~€}~€€€€}~~~€~€€~€}€~~€~€~~~€‚~~~~~€€~~~€~€~€€~€~€~€~~~‚~€~~€}€~€~€€~€~~~€~€€€~€~~€~~€€~€~€~~~€€~€~~~~~€~~€€~€~~~€~€~€~~€~€}€€~€~~~€}€~€~‚~~~~~}€~€€~€~€~€€~€~~~~~~€~€~€€€~€~}€~€€~€~€~€~~€~€€€€~€~~€~€~~}~€}~~~~~~~€~~~~€~€~€~€~€~€€€€~~€~~€~€~~~~~€~€~~}€}€~€~€~~~€~€~€€~~€~~~€~€€€€~€€~€€~}€~€~€~€~~€}‚€€~~€~~€~~€~€}€~~€€~€~€~‚~~}€€~€~€~€€~~~~~€~€~€}€~€~~~}~€~€~€~€~~~€~€~~~€~~~~~€~€~~~~€~€~€€~€€~€€}€}€~€~~€‚~€}~~~€~€~~€~€~€~~€}€€~€€€€~€}~~€~€}€}‚€~~€~~~€~}€~€~€~~~~~€€~~€~~~€~€~€€}€~€~~~€€€€~€~~}€~€€~€~~~€€~€€~‚€~€~~~€~~~€€}€€~€~~€}~€€€~€~~~~€€~€~~~~~‚€~€~€€~€~€‚~~€~~‚€€€~€~~€~~€~~€€€€~€~~~€~€~~€~~~~€€~~~€€€~~€~~~€~€~€~~€~‚€€~~~€~€€}€~€~€€€~€}€€~€}€~~€€~€~~~€~€~€€~~€~~}€~€~‚€~€}~~~€€}~€~€€}€~€€€~~}€~€~€~~~€~~€€~€~~€~€~€~€}€~€~€~€€~€~~~€~€~€~~€~~~}€€€~€~€~~~€~€~€~€}€€€€~€~~€~€€~€~~~€~€€~€~€}€~~€~€~€€~€~~€~€€€}€}~~~€€€~€~~€€~~~€~~~}~€~€~€~€~}~€~~€€€~~€~~€~€~€~~~}€~}€~€€€~~~~~€€~€~}€~€~}€~€~€€~€}‚~~~€~€}€~€~‚~}€~€€~~~~€€}€~€~€}€~~€€~€~~~€~€€}€€~€~€}€~~~}€~€}€~€~~~€€}€~€~~~~€~€~€~€~~€€€~€~€~~}~€€~€~~~€~~€~€~€~€~~€~~€‚~€}€~€~~~€€€~~~~~~€€~€~~€~~€~~€~€~}~~€~~‚€~€~€€}€€}€~€}~~€€‚~€~~€~€~€~€€~€~€~€~€€€~€~€~~~~~~~€~~~€~~€€‚‚~~~€~~€€€€~~~~€~€€~~~~€€€~€~}~€}€~~~€~€€~€}~}€~€€€~€~€}€~}}€~€€~€~~~€~€~€~}~€~~€~€€}€}€~€€~€~€€€~~€~~~€~€~}€~~~~€~€}€~€~€}‚~€~~€€~€~€~€€~~€~€~~~€}€~€€~~~~€~€~€~~~~~~}€~~€€€~€~€}€~~€~~~~~€}€~~~}~€~€€~€€~€‚~~€~€~€~~~~€}~~€~~€~€}~}€~~~~€~‚€€}€~~€~~€€~~~€~€~~~~€~€€€~~€~€~€€~~€~~~€€~€~~~~€€~€~~‚€~~€~€~~€~€~}€~~€~€~~€~€~~~~€€€~~~~€~€€}€€~~€~~~~€€~€}~€~€}~€~~€~€~€~}€~~~€~€~€~€~€~€~~~€€}€€~€€~€~~~€€€~}€~~€€~€~€}€~€€‚~€~~€~€€~€}€~~~~~€~€€~~€~~~€~€~~€€~€}€~‚~~€~€€}€€~€~€~~€~€€~€~€~~~~€~€~~~€}~€€~€}}€~}€~~€~€~€~~€~€€~‚~~~~€}€}€€€~~€~~~~~€~€€~‚€~€~~€~€}€~€€~~~~‚}~€~€~~€}~~~€~}~~~€~€~€}€€}€~€~‚€~~€‚~€~~~}€€€€€~~~€~€~€}€~~€~€~~€~€€~€~~€~€~~~~€}€€~~~~~€~€}~€~€~‚~€}€~~€}}€‚~€~~~€}€~~~~~~~€~~€}€~~~€~€~~€~€€~~~~~€~€~€~~€~€~}€~~‚€€~~€}€}€~€}‚~~€~€€~€~€~€~€~€~€}‚€~€~€€€~€~€~~~€}€~~~~€}€}€~~~~€~€€~~€}~~€~€~~€~€€}€€~€~~€}€~€€€}€~~€~€€€~~~€~€~€€~€€~€~€€~€~€~~~~€~~~€~~~€~~€}€~~~€€~€~€~~~}€€~€~~€}€~~~€~~€€~€~~€~€€~~€~~€~~€€~€~~~~~~~~€~€~€}~€~€~€~~€~€~€~~‚~€~~€~€€€~€~~€~€€~€~~~~~€~€€~€~€~‚€}~€~~€€€~~~~€}~€}‚€~€~€~~~€~€~~€~~€~€~€€~€€~~~€~€~€€~€~~~€€€€}€~~€}€~€~€~€€~€}€~~€~€~€~~~~~~~~€~€€€~€~~~€~€€~€~~€~€€~€}~€~€~€~~€}‚~~€‚~€€}€~}€~~}€€~€~€~~~}€}€€~~~~€}€~€~€€€€~€~~€~€€~€~~€~€~~~~€~~~~~~~€~€~€€~€€€~}€~~€€€€~~€~‚~~~~~~~}€}€~€~‚€}~€~€€~~}~~€}€}€~~~}€}€€~€~}€~~}€~€~~€}~€}€~€€~~€~€~€€€~}€~~€~€}€~‚€~€~~~~€~~€~€~~€€~€~}~~~~€~~~~€}~€~€‚~~~€}€}‚~~€~€~€~€~€~€~~~~‚€~€~~~~€~~€~€€~€}~€~€~€€}‚€}€~€€~~€~~~€~€€~€~~€~€€}€}~€~€~~€~€~€~}€€~~}~€~~€~~€~~€€€~€}~~}}€€}€€~€~€~€€€~€~€~~€~€~~~~€~€}~~€~~€€~~}€}€~€€}~€~~~~~~~€~~~~€€~€~€~~~~~~~€~~~€~€}~€€~‚€€~€~€~~~€~~~‚~~}€~€€€~€~€~}~}€€~€}€}€~~~~€~€}€~~€}€€~}€}~~€~}€~€~€~~€~~€€~~€~~~€~€€‚}€~~~€~}€}€~€~€~€~~~€€~€~€€€€€~~~€€€~€~~‚~€~€}€~~€€~~~~}~~‚€€~~€~€~€~€~€~€~€~~~}€}€~€~~~~~€~€}€~~}}~~€‚}€€~}€~~€~~~€~€‚~~~€~~€~~€~~~€~~€€~€~~€~~~~}€€}~€~~~~€}€~~€~€€€€~‚€~~~~}€~}€~€~~~€~‚€~~€~€~€~€}€€~~€~€~~€~~~~~~€€€~~~~~€€}~~€~€~€~~~~~€~€€~€~~~~~€}€~}€€~‚€~~~}€~~€~~€~~€~€~~€€}€€~€~~~}€€~~€}~~~~€~~€~€~~~}~~€~}€~€€~~~‚€~~}€~~€~€~~~€~€€€~€~~~€€‚~€~€}€}€~€€~€~}~}~€€~€}~~€~~€‚~€~~€~€€~€~€€€€~~€~~€~€€€€‚~€~~~€~~€~€~~~~€~~€~~€~~~~~~~€}€~€~€~~~€}~€€~€}~~€~~€€~€~~}~~~~~~~€~}€~€€€~€~~~}€€~~€~€€}€~~~€~~€~~~~€~€}€~€~€€~€~€~}€}€~€~€~~~€‚~€~€~€~~~€~€€€€‚~€~~~€~~€~€~€~~~€€~~~€~€~€‚~€~~}€€€~€~~}~€~€~€}€}€~~€~~€~€~€~€~€~~€~~€~~}€~€€~€~~~‚~€~~~€~€~€~~€~€€~~€~~€~~€€~~€}€~€€€~~~~~~€€~€~~~€}€~€~€~€~~}~€~€}~€~€€€~‚~€~~€~€~€€~€~~€~€~€~~~€~€~~~}€~€€}~~€~€€~€~€~~€~€€~~€~~~€€~}€~}€~€~€~~€‚}€}€~€~~~~€€€~~~€~€~€~€~€€~€~€~}€~~~~€}€~}}‚~~~~€}€~~€~€~~€~€€€~€~}€~~€€€~}€~~€~€€~€~}€}‚~€~~~~}€~€~~€~€~€~~~~€€€~€~~~}‚€€~~€}€~~€€}‚€~€~€~~€~€€~~€~€‚~€}~€€}€~~€~~~~~€~€€€~~~~€~€~~~€~€~€~€}‚}~~€~€€~~}~€€~~~€~€~~~€€~€~€~~~~~€€}}€}€~€€€~~€~€~€}~~~‚€~€~~}~€~€~€}€€}€~}~‚~€~€}€~€~€~€}€€‚~~€‚~€~€‚~€€~€~~‚~~~€~€~~}‚~€~€~€€~€~~€~~}€~‚€€}~~€~€~‚€~~€}€}€~€}€~€~€~~€~}€~€~€}€€~~~~€~~€€~~~~~€~~€€€~€~~~€}€€€~€~~~€€€~€~~€€‚~~~€~€€~~~€~}€~€~€~€‚~~€~€~~€~€~~€}~€€}€€~€~~~~€€~€}€€~€~~~€~€€}~~€~€€~€~~~€}~€€~€~€~~~~€~€€€~€~~~€€~€}€~€}€~~€~€}~~€~€~€~~~~€~~€~€€~€~~€€€€~~~€~~€€~~€~~€~€€~€~}€~€~€~€~€~€~~‚}€€~}~~~€}€~€€~€~~}~€€~€~~€}€~€€~}~‚~~}€~~€}€€~~~~€~€€€€~~~~€~€~}~~€~€~€€~~€~~~€‚€~€~~€~€~€~~}}€~€}€}~~}~€€~~~€}€~€€€~€~~}~€€~€~~~€}~€~€}~€€~€~€}€~~~}€‚~€}~€~~€~€~~€~€€~€~~~€~~€~~€€~€~€}~~}€~~~€~€€€~€~~€~~€€~~€~~€}~€~~~~€€~~€~~€€~€~~€}€€~~€}‚€~€~~}€€~€}‚€~~~‚~€€~€~~€~~~}~€€‚~€~~€}~€}€~€}~€€~€~}~€}}~€~€}€€~€}€~€~€€€~~€~~€~~€~€~}~€~€€~‚~€€~€€~~€~~‚€€~€}‚~}€‚~~€~€}~~~~~€~€€€~€~€~€€~€~€~€~~~€}€~}€~‚~~€€~€~}€~€€€€~€}€~}€~}~~~€~~~~€}€€~~€~~€€~~}‚€~~~}€~€€}~~~~‚€€}~~€~€€~~~}~~€}~€~~~~€~~~€~€~€~€~€€~€}€~€~~}€€~€~~€~~€€~~}~€~€~~~€~€}~~€~€€~~€€‚~€}€~€€€€~€~~}€}€~~~€~€}€~€~€}~€~~€~€~~~€~€~~€~€€}~€~~€€€~€~~~}€€~€~}~€~€}€}€~‚€~€‚~€~€~€€}‚€~~}€~€}€~~~~€~€}~~~‚~€~€€€‚~~€~~~€~€~€~€€}€~€~~€~€€€~€~€~~€€€}€~‚€~€~~€~~~€€~~€~}~€~€€~€~~~€€€~}~~€€€~€~~~€}€~€~€~€~€~€~~€~~~€~€€~€~€~~‚~~~~€€~€~€~~€‚~~€~€}}€}~~€}€~}€}€~~~~€€~€€}€~~}€~€}€}‚€~€~~~€€€€~€~}~~€~}~€~€}~~€~~}~}~€€~€~€~€€€~‚~€}€~~€~~€€€~~~€~~€‚~€€~€€}€~~‚}€~~~€~€~}€€}€~€}€~}€€~~~€~€}~€~€€~€~~~€~‚€€‚}€~~~€~€€~~~~~~~€€~€~~}€~~~€}~€~}€~€€€~€~}€~€~~~~€~€~~~€€€~~~€‚~€~€}€€}€~€}~~€€~~~}€}€€}€~~€}~~~}€}€~~€~~€~~‚€€€~€~~€~€€~€~€€~~€}~€~€€~~~}€~~€}€~€~~~€~€~€~€~~~~€€€~€}~~€~€~~€~€~€~~€€~~€~}‚~~€€~~~~€~€~~~€~€~€~}€}~~€€~}~€~€€€€€~€~~~€~~~~‚~~€~€~€€~€~€~~~€€~€}€~€~~€€}€}~~€~€~€~~~~€~€~~~€~€€~~€~~€€~~~€~~~~€~~~~~~€~€€€~€~~€~€~€~€~€~€€€~€}~€~€~€}€~~~~€~€~€~€~€~}~€~€€}~~~‚}}€~€~€€~~€~€€~~€€€~€~€~~€~€~~~~~~€~}€~€€~€~~€~~€}~€~~€€~~€~~~~€~€€~€}~€}~€~€~€}€€~}~~~€~€~~€~€€~€~€~}~€~€}~€}€}€}€}€€~€~}~~€~€~€~~~~~€~€}€~€}€~~€~€€€}~}~~€~€~~€}€~€~€~~~€€€‚~€~€~€~€€~€}€~~~‚~€}€}€~€€~~}~€~‚~€}~~~~}€~~~~~€~€~€~~~~€~~€€€~~€~~~€~€€~~€~~€}€~~~€~~~€~€~~~}‚€~€~~~~€€€~~~~€‚~~~€€~€€~}~€~€€~~€}€€}~~€~~€€~~~‚~~€€~€~€€~~~€~€~€€€~€}~€}~~~€~€~€€~~€~~€€€€~~€~~}~€€~~€~~€~€€~~~€~€~~~~€~€~€~€~}~~€~€~~€~€~~~€~~€}€€~€~€~}€~€€~€}€~}}~€}€~~€~€~~~€~~€~~€€}€~~€~}~~~€~‚€€~€~€~~~€~€€€}~€}€~€€€€~~~~~~€~€~€~€~~€~€~~}€~€€}€~~€~€~€~~~~€~€~€}€~~€}€~€}€~€€}€~~‚~~€€}€€~€~}‚€~~€}€~€~€~~€~€~~~€€}€~€~€~€~€~€~~~€€~€~~~~€~}~~‚}€~€~€€}€~}~€~€€€€~€~~~}€€‚~€~~~€}€€~~€~€~€~€}€~€~~~~~€~€}€~€~~€~€~~~}€~~€~€~€€~€~~}~€€€€~€€€~€~€~~€~€€~~~~~~€~€€€€~€~~}~‚€~~~‚~~~~€~}€}€~}€~~€~~~€~~€~€~~€~~~~~~~~€~~€}€~~€€€~~~~€}€~€~€€}~~~}€~~€~~~‚~~€}€€~~€~~~€~~~€~€‚~~~€}€~€€€~€~~~~}~€~€€~~~‚€€~~€}€~‚€~‚~~€~€€€~~€~~~€~€€€~€~€}~~~~~€~~~~}€~€€€~}€~~~€~€€~€~~}~€€~€~~~~€€~€~€}€~€}€~~€~€€€~}~~€~~€€~‚~€~€~€~~~€~€€€€~~~~€€€~~}~€€~€~}€~‚€€€~€~~~€~€€€~~€~€€}€}~€~~~€~~~€~€~€~~}~€€~~€~€~}~~~€~~€~€~~~~~€~‚€~~~~~~}€~€€€~€~€~~€€~€~€~€~‚~~~€~€~€€~€~~~~€~€~~€~~€€~€}€~~~~€€€~€~~€}~€€~€~~€~‚~~€~~€€~€~~~€~€~€~€~~€~€€~~€~~}€€€~~€~€~~€~‚~}~€~~~€~€€€}~}€~~~€~~~€~}~€~€~€~~~€‚~€~€~€~€~€~~€€}~~€~~€~‚€€€~€~~€~~€~~~~}~~~€€€~}€~~€~~€€}€~~€~€~~~~€}~€€~€}~~~~}€~~€~€~~€~}~€~€}€~€~~~~€~€~€~}€~€€€~~~€~€€~~~}~€~~€~€}~~€~€}€€~€€~~€}~€~~€~€~€€}€}~€~€€€€~€~€~~~€€}€~~~€~€~€~€~~€~~€~€}€~}€}~€~€€~€~~}€~€~€€~€}€~‚€~~~€~~~€€}~~~€~€€~€~~}~~€€~€~~€~€}€~}€}‚~~~€€€~€~€~€~}€€~‚€€~€}~~€}~~€~~~}~€~€€~€~~‚~~€}€~~~‚}€}€~~~~€€~€}~~€~~€~~€~€~€~€~€~~}€~~~~€€~~~€‚~€~€~~~€€~~€~~€~€€€~~€~€}~€~€~€}€}€~}~€€€~€~~}€‚~~€€~~€~~~~€~}€€~€€}€~~~~~€}~‚€€~€~~~€€€‚~€~~~~€}€€~€~€~€€~~~€~€€€~~~€€€~~€~€~~‚~€~€~€~€€~~~~€~€‚~€~€€~€~€~~€~€€~~~~~€}~}€~€€~}~€~~€€~~€~€~€€~€€~€~~~€~€~€}€~~~~~€~€€~~€~~~€€~~€€~}€€~~€€€€~€}€~~~€~€~€~€~€€~€~€~}~€€~~~~€~‚€~~€~}€€~€~€~€~~}~~€}€}€~€~~~‚~€}€€~~€~~~€~€€€~€~~~~}€~~€~€~€~~~~€€}€€~}€~€~~~~€€~€~~}~‚€€~€}~~€~€€~€~}€~~~€~€~€€~~€~~€~€€€~~~~~€~€~~~€~€~€~~~~€~}€€~€~€~~~€€~€~€~~€~€€~~~€~}}€}€~€}~€~~~}~€€}€~€~~~‚}~~~€€~‚€}~}€}€~€€€}€~€~€~€€~€~~~€~€~€~~€€}€€~‚~€~€~~~€~~€‚~€~€~~~~€~€~€€€€€~~~}€}€€~~€~~~€~€}€~€~€}€}~~~}€~~~~~€~€~€}€}~~€}€}€~~~~~~~€~~€}€€}€~€~€~~~€~€~€~~€€~~€~~€}€~~€€~€~~€~~€€~€}~€~~€€~}~€~~€~€~€€€~}~€~~€€~€~~€~~‚~~€~€~}€~€€€~€~~€~€~~~~€€~€~~~~€~~€~€~~€~€€~~€~~€~~€€~€~€~€€}€€~~€~€€~‚~€~~~~‚~€~~}€~€~~~~€}€€~€~€~€~€~~~~~~~~}€~€~€~~€€~€}~~€€~€€~€~€~~€€}€~~}€~€€~‚€~€~€~~~~€~€€}€~€~}€~~€~€~~€~~€€~€}~€~€~€}~€}~€€~€~~~~€~€~‚~€~~~€~~€€~€~~€~€€~€~~€~€€~€~~~~~~~~~€€€~€~€~‚~~€‚}€}€~~~~€~~€€€€~€~~~€}€~€€}€€~€~€~€~‚~~€~€~€~~~~~€€~~€~~~‚€€~€}€~~~~€€€€~~~€~}€}€~}}~€~€€~€~€~~~€~€~€~~‚€€‚~~~~€~€~~~~€~€~€~€~~~‚~~€~€~€€€~~€€€~~€~€}€~€€}€~€~€€~€~~~~€~~€€~€~~~€~€€€~€~~~~€€‚~€~}~~}~~~€€~€~~~€~€€}€~~~€~€~~~~€€~€~€~€€€~~€~€~€€}€€}~~~‚~€}~€}€~~~€}€}~€€€€~~€~€~€€€€~€~~~€€}€€~}€~€~€~€~~~€~~€€}~€€}€~€~€~€~~~~~~€~€‚~~}~€~€~~€~€~€€€~~€~€~}€~~~~€}€~€}€~€~~€~€~€~€~~€}€~~€~~~€}€€€~€~~~~~€}€€}€~€~€~~~€€€€~€~~~€~€}~~€~€€~€~€~}€€~€~€}~€~~~~~}~~€€€~~~€~€~€€}€~€~€~€}€~~~~€~€€€~€€~€€~€~~€~€~~~€€~€}~~~~€~~~€~€~€}}€€~}€}€~~€}~€~~€€~~~€}€€~€~~~€~€€}€~}€~€~€~~€~€€~€~~€~€~€}€}€€~}€€€€‚~~~€~€~‚€€€~~~€~€€~€~~€~€~€~~~~€~€~~€~~€~€~~€~~€~~€€~€~~‚~~~€~€~~~~€~€€€€~€~~~€}€~‚€~~€~}€~€€€~€}~~€~~€~~~~~€€~~~~~~€~€€€€~€~~€€}€€}€~€}‚€€}€~€~€~€€}€~~~~€€~€~~}€€~€}€€~}~€€~€~~€~~€~~~€}~€~€€}€€~~€~~~~€}€€€~€~~~€}€~€}~€~€€~€~€}~~~€~~€~€€~€€~~€~~€~€~~~€~€~~€~~‚€‚}€~€~~~€~~~€€~€~~~~~~~~€~~€€~€}€~~‚€}~€~~€}‚~~€}€}€}~€}€€€~~~€~‚€€€~}€€~€€~~~}€~~€~€}€€}€}~€}€~~~€~~~~€}‚~~~~~€~~€}€€~€~€}~~~~€~~~€~}€~€~€~~‚€€~~~~€‚~€~€~~€~€€€‚~}€~~~€€}~~€~€~~~~~€~}~€~€~~~‚~~€}€€€~~€~~€~€€~€~€~}€~€€~€~}~€}€€}€}€~€~~€~~~}€~€~€~€~~€~~€~~~~€}~~€}~~€~‚€€~}~~~€€~~€~~~€~€~~~€~‚€€~€~~~~€~}€~~€€~~}~}~~~€~€€€~}€~~~€~€~~~~~~€~€}€€~€~€~€}~€€€~~~~~€€~~€~€~~}~~~€}~€~€€€~~€~€}€€~€}€~€~~~~}€€€~~€~~‚€~~~€~€€€~~€}€~€}~~€€~€~~~€~€~€~~~~~€€}~~~~‚€€‚~€}~~~€€€~€~~}€~~~‚~~~€}~€~€€€€~€~~~€~€€€~€~~~€~~~€}€~€~}€~~€}~€€€€~€~~€~€€~€~~~€~~~€€~~~€~€~€}~~‚~~~~~€€}~~€€€~€~~}€€€€~~~~~€~}€~€€}€~‚€~~~€~€~~~€~‚~€~}€€~‚€~€~‚€~€€~~€~‚€}~€~€~€~~~€€€~€~€~~€~€€~€~~~€}€€~~~€~~€€€}€~€~~€€€~~~~€}€~€€~€~~~€~€~€}€~~~‚~~~€€€~€~€~~€€~€~~~~~€€~€~~~~€~€~~€~€~€~~€~€~€}€~‚€~~~~€~€~€~~€~€€€~€~‚~~~€~~€€€~€~~~~€€~€€~€~€~€€~~~~~€}~€~€~~‚~€~€€~€~~~~~~€~}~~€~€€~~~~€~€€~€~€~€~€}€~‚~€}€~€}~~€~€~€}~€~~€€~€~~~~€~~€€~‚~€~~~}€~€€~€~~~‚~~€}€}~€~~~€~€~€}€~~€~~€€~€~~€€€€~~€~~€~€€€~€~~€~€~€~€€~}€~~€}€~€€~~~€~~€€}€~€~€€€~€~€~~~~€€~€~~~~€~€€~€€}€~€€~~€~€€‚~€~‚~~~~}€~€€€~€~~~€~€€~€~~~€~€~€€~€~€}€~~~€€~€~€~}€~~~~€~€€~€~€~~~€~~€€~~~~~€~€~€€~€~}~€~€~~~€€€~€~€€}€€}€~€~~~€€€~~€}€~~~€‚~~€~€~~€~~€}~€}€~~€€}€€~~~~€~€}€~~€~~~€€~€€~~~~~‚€€}€~~€~€~~~€€~€~~~€~€€~~~~€~€~~€~~~~€~€€~€~~~~€€~€~€~}~€€~€~~€~€~~~~~€~€}€~~€}€~~~€~~€€~~€~~‚€~€~€€€~€~€~~~€~€~€€~€~€~€~~~~€~€}}€~~~€~~€~~€~~€€€~~€~~€}~€‚€~~~€€~€€~}€~€}~€~€~~€€~€~~~€~€~€}~€~€€~~~~~~€€€~~~€~€~€~~~€}€~€~€~~~}~€€€~~€~~€~~~~~€€~€~€}€~~€}€~~€€~€€}€~€~€~€~~~~€~€~~€€~~~~€~€~~€}€€~€~~€~€€~€}~€}€~€€~€~€~‚€~€}~~~€}€~€~~~‚~~~€~€~€~€~€~€~~~~~~~€~€€~€~€~€€~~~~~€~€~€€}€}‚~~~€€}€€~€~~€~€}€~~€~~€‚~€€}€~€~~~€~€~€}€€~~~~~€€~€~}}€~€~€~€}~~€~€€~~€~€~€€}€~€~€~~~€~‚€~€€~~~~€~~~€€~€€~€€}€~~~‚~~€€~€€~~€€€~~~~~~~€}€}~}~~€€€€€~€~~~~€~€~~~~€€€~~€~€~~€~€~~‚~~€€}€~€~€~€€€€€~~€}~~~~€~€~€~~~~€€~€}€€~€~~~‚€€€~~€~€~€€}€~€}~~~}€~€~~~~€€€€~~€~€}€~€~€~~~~~€~~~€~~€~~€~~€€~€~€~€€€}~~~~€~€€~€~~€}~~~~€€€€}€€~~€}€~€€~€€~~}~~~€~~€~€}~~€~€~€}€~~€~€~€~‚€~€€~€€~€~~‚~~€€€~~~€~€~€}€€~~~~€~€~€~€~€~€~€€€€~€~~~€€~~€€~€€}€€~€~€~€~~~~€€~~~€€€€~€~€~€~~‚~€~}~€~€€}€~€~€€~€}€~€~€€~€€~€€~€~€~~€~~€~~~€~€‚}~~€~€€~€~€}€€~~€~€€~~€~~€~€€~~~€‚~€€~~€}~~~~€€~€~€€~€~~~~€~~~€~€~€~~~}€€€€~~~€€€€~€~€€~€}€}€~~~~~€€~}€~€~~€}€€~~~~~€~~€€~€~~‚€~€~€~€€}~~~~€€€~~€~~~~€~~€~€}~~€~€}€~€~~~‚€€€~€~~}}~}€~€}€~€~€~~~~~€~€€~‚€~€}€~€~~~~~€~~€~~€~€~~€~€~€~~€}€€~€~€~€~€~€~€~~€~‚~~~€~€€€~~~}€~€~€}~€~~€~~~€~~€~~€~~~€~€~}€}€~}€€~~€~~€~€~€}~~€~~‚€€€~~€~€€€~€~€}€}€~€~~€~‚€€~€~~€~€€~~~~€~~~~~~~}€~€€~~€~€~~~€}€€€~€~~€~€~€~‚€~€~~€}€~~~€~~€~€~~€~€€~~~~~€}~€~€‚~€~~~€~€~€€}€~~€~€~~€}€~€~€}€~€}€~€~€€~~€~~~€~€€€~€~~~€€~~€~€~~€~~~€€€~~~€~€~€~€~~€}€}~~~~€}€~€€~~~~~~€€}€€~€}€~€~€~~}€~€€~€~}~€~€~€~‚~€€€€~}€}€~~~€€€€~€~~€~~€€}~~€~€€~~~~~~}}€€~€~}~~€~~~~~€~€€~€€}€~€~~~~€~€~~~~€~~€~€~~‚}~€~}€~~}€~~€~€€~~~‚€~~~~€~€€}€}€~~€~~~€~~€~}€~€~~€€€€~€~€~~€€€~€~~~€~€€~€~~€€}~}€~€€~~~~~~€~€~~€~~~~~€€~~~€€~~~~€}€~€~~‚€‚~€~~€~€~€~~€}~~€~€~€‚€~€~}~€~~~€~€~~~€~}~€€}€}~€~€~~~€~€€~€~~€~€€€€~~~~}~€€~€~€~€€~€€~~~€€€‚~€}€~~‚~~~€€€~€~€~~€~‚~€~€~€}€~~€~~~€~€€~€€€~€~~~~€}€€~~€~~~€€~€~~}€~€~€€~~€~€}€}€}€€~€€~~~~€~€}€~€~~~~€€~€~€~~€}€~€~€~~~€~€}€~€~~€~‚€~~€~~€€€€~~‚€~~‚~‚~~€~€~}~~€~€‚€€~~€~€~€~€~€~€~€~€~€~€~~€~€~€~€€€~€~~€~€€€~~}€€~€~~~~~‚}~€~€€€€~€~~~€~€~~€}€~}€}€~~~€~€€€~~~€~~€‚~}€}€}€~‚€~~~€~~€~€~€~€€~€€~€~~~~}€~€€~€~~~~€~€€~~}€~~€~€~~~~}€~€}€}~~€~€~}€~~~}~€~}€‚~}€~€~€}~€€~€~€~~€€~€}~~€~€}€~€~€}€~~€€€~€~~}~}€€~€~€~€€~~~~€€€€~~}~~€~~€~~~~€€~~~~€~€~~€}~~€~€~€€~€}€€~~€€€~~~~€~~~~€~€€}€~}~€€~€~€~€}€}€~€}€~€~}}~~€~€€}€}€~~~~€~€€€€~€~~~~€~€~€~~€~~~~€}€€~~€~~~€~~€}}~~~~€~~~€~~€~~€~}}~~~~~~€~€€~€~€~~~~€~€~€}~~€~€€€~€~~~~€€~€~}€~€~€~~€~‚€~}€~€}€~€~~€~~€‚~€€~€~~~€~€~~€~€€€€~~~~€~€€~€~€~~€}€}€€}€€}€~~~€~~€~€~€~€€~€~€€~€~~~€~€~}~~~~~}~€€‚~€}€~~~€~‚€€}€€~€€~€€}~~‚~~€~€~€€~€~~~~~€}€~€~~€~~€}€~~~‚~€€~€}~~~~€~€€~‚€~€}~~~‚~€~€~€€~€€~€~~~€~€~€~~~~€~€~~€~€€~€~€~~€€}}~~€‚~~~€}€~€~€~€~~~€€}€~€~€~~}€~€€~€~~€~€~€€~€~~~‚‚}~~€~€~~€~€~~€~€€€€~~~‚~~€~€~€~~€€€~€~€~~~€~€€~€~~€~€€~~~€‚~~~~€~€€~~~~€‚~€~‚€~~€~~~€~€~€~€~~~~~€}}€~€~~€€€~~€~~~€}€€~~€~€€€~}€~~€}€}~€}€€~~~~€~€€~€~}€~€€€€}~€~€~€}€~€~€~~€~~~€~€€€~€~~€‚~€~€~€€~€~~~€~€}~}~‚}~€~€€~~€€}~~~~€~€€~€~~~}~~~~€~~~~~€€€€}€~~€~~~~€~€~€~~~€€€~€}€~€}~€€‚~€~~€~€~€~~€€€~€~~€~€~~~€~€€~€~€~€}~€}€~~‚€}~~€€€~€~€~~~€~€~€~€‚~~~~€~€}~~€~€~€~~}~~€€€~~~~~~€~€}€€~}€~~~€~€€~€~~€}~~€~}€~€€}‚~~~~~€~€€~€~€~~~‚€€}~€~~~~€~€~}€~~~‚~€‚~}~~~€~€}€~€~€€~€~~~€~€~€~€~~~~~€~€€~€€~~‚~~€~€€}€€~~~€‚~€~€~~€€€~€}~~~€}~€~€~~€~€~€}€€~~~€~€~€~€€€~€~~~€~~~€|€~€~~€~~~€~€~~€~~€~€€~€~€}€}€~€}€€~€~~~€~€~~€~~~€~~~}~€€€‚}€~€€}€~~}€~~€~€}€~€~€~~~~€€~~~€€}~~}‚€€~€~~€~~~€~~‚~~~€}}€~€€}€}~€~~~€~}€€~€}‚~€~€~~€}}€~}~€€~}€~~~~€}€€~~~€}€€~}€}€~~€€~€~~~~€€~~~~~€~€}~€~‚~€€€€~€~€~~€€€~}~~}~€~~~€~€~€€€€~~~~~€€~€~~€~~~€‚}~~€~€~}€~€€€~~~~€~~€~€}~~~~~€~€€~€~€~~~~€~€~€~~~€~~€€~~€~~€~€€~~~~~€€~~€~~€€}€~~~€‚~€~€~€€~~€~~€€~~€~€~€~€€~~€~€~€~~~‚~€€~€~~~€~€€€~€~€€~~~~€}~~‚€€‚~€~~€~~~€~~€~‚€~€}~~~€€€~€~~}}€~€€~€}€€}€~~~€€€~€~~~€€~€~~€~€}€~~€~€~~~€~€~€€~}~€~~}€}€~€€~€~~~€~€€€~~€~~~~€€}€~€~€~€~~}~€}€~€~€~€~~~€~~€€}}€€~€~€~~€}~€€€~€~}€}~€€~~€~€~€€€~~~€~~~€~~€}~~~€}€~€~€~€~~€~€€~€~‚}€~€~€~‚~~€€}€~~€~€}}€}€}€~~~~~€~~€~~‚~€~€~€€}€~~€~~~€~€€}~~€~€€~€~€~~‚~~}~‚~~€}€}~€~€~~€~€€~€€~€}€~}€~€€~~~~~~~}€~}€~~~€~€~~€~€}€€~~€~€~~€~€~€~€~~~~~‚~~€‚~€€~~~~€€~€~€~~~€€~€~€~~€€€~€~~}~~~€}€~€~€~~~€€~~€~€€~~~~~}€~€~~~€~€€€~~~~~€~€~~~~€~~€~€€€~€~~~€}€€~€}€€~‚€~€~~}€~€€~€}}~€€€}€~€€~~~~~€€~€~~}~€~€~€}€€}€€~}~~~~€€~€~€~€€~~~‚}€~€}€~€€€~€~~€~}‚~~‚€~€~}€~€~~~€~€~€~€~~~€}~€~€~~~€~€€~€~~~€€€€~}~€€€€~€}~~€~€€~€~~€}€€~}~}€~€€€}€~€~€~€€~€~€~~‚~€~€‚~€€}~€}€€~€‚~€~~‚€~~€~€~€~€~~~€~€~€€€~€}~~€~~€€~~€~€~€~€~~}~~€~€~~€€}€~€}€~~~~~€~€}€€~€~~~€‚~€~€€‚~€~€~~~€€~€~€~~€~~~}€~€€~~~€€~€~€~€~~€~~~~~€€~€~€~}€~€~€}€~€~~€~~~}~~€~~‚€~~~}€~~~€~~~~€~€~€€€~~€}€€~~~€}€}~€~~~€‚}€€~€}€~‚€~~~‚~€~€~€~~~~€~€~€~€€~€~€~~€€€€~€~~€€‚~~€}}€€}€~~~€~~~€~€€~€~~‚€~~~€~€}‚€~~€~€~~~€~€€~€~~€‚~€~~~}€~€~€~~€~€€~~~€~€€~€~~}~~~€~€~~€~~~€~€€~€~€€}€~€~~~‚~~~€~€€~~€~~~€~€~€~~~€~€€~€~~~~~‚~€~€€~~€~~~€~~€€€~€~~€~€~€~~€~€€~€~€~~~~€~€€€€~~~€~€~€}€~€~€~~€~}€€~€€}~~~€~€~€€€€€€~~~~€}€~€‚~€}€€~€~~~€~€€€~~~~€}€~€€~~~~€~€€~~~~‚~~€~€~€~€~€~€~~~€~~~€~~€~€€€€~~€~}€€}€~€~€‚~~€~~€~€€€}~~~€€~€~€~€~€~~€~€€€€€€~€~~~~~€~~€~~~~~€~€€€~~~~~€~~~€~€€~}~€~€‚€~~€~~€~~€~€~}€~~~~€~~€~€~~}€~~€~€~~}~€~}€~~€~~€€€~€~~€~~~~}€~€~€~~€~€~~€€~~~~€~~€€€‚~€}~~€~€~~€~€~€~~€~~€~€€~€~€~~€€~€~~€~€~€}€~€€~€~€~€€~~€~€~€}~~~~€~€~€~€~}~€~€~~~€~~€~€~~~€€~~~}~~€}€}~€}~~~€~€~~€~€~€€~€€~}€~€}€}~~€€€€~~€~~€~€€€~€~~€~€~€~€~~~~~€~€~}~€~~~€‚}€€~€€€~€}~~~~€~€~€~~~€~~~‚~€~€}€}€~~€}~€~~~~€~€}}~€€~~€~€~~€~€~~€€~€~€~~~~~€~€~~~€~~€}~~~‚€€~‚€€~~~€€~€~€~€~}€~~€€~€~~}€~€~€€€}€}~~€€€~€~~}~~‚~€~€~~€~~~€~~€~€~~~~~€€}~~~~€€~€~€~€}~~~€€€~€~~~€~}~}~~~~~~‚~€~€€~~€~~~~€~€~€~€~~}€}€~€~€~€€~~~€~~€~~€~€~€~€€~€}€~€~~‚€~~€~€~€~€€~~€~~€~€~€~€€}€~~€}~}€}€}€€€~~}€~€€~€~}€~€~€~~~€~€~~~€~}€~}~‚~€€~€}€}‚€~€~€~€~~~~~€€~~€€}€€€~€}€}€~}€~‚~€~~€~€~€~€~€~~€~€~€€}‚€~€}~~€}€}€~~€~€~~~€~~€~~~€~€€€~~~~~€~€~~€~~~€~€~~~€~€~€€~€~~€~€~€~€~€€€~€}~€~€~}~~€~€€€~~~~~€}~€~€€~€€~‚}~~~‚~€€~€~}€~~€~~~~€}~€€€~~~~}~€€~~~~€~~€€}€~~€~€~~€~€}~~€€€‚~}~~~~~€}€€~€~~~€}€€~€~~~€~€€€~~€~~€~~€}€~€~€€~€}~~~€~€~~€€‚~}€~€~}~~}‚~~€~€€~€~~€}€€€~€~€~~€~€~€€€~~~€~~€~}~~€~~€}}€~~€€~€~€~}€~€€~~~€~€€~€~~~~€~€€~€~€~~€~€€~€~~~€~€}~~~€€€~~~~€~€~€~~~€~~~~~€~€€€~€}~€~‚€~€~~€~‚€~~€~€€€€~€~~€~€}~€~€~€~~~~}€~€~€~~~€~€~€~€~‚€‚~€~~}€~~€~~~€~€}€~}€~€€€~€}~€}~€~€~€~~€~~~€~~}~~~~€~€~€~€€~€€~€~€~}~~€‚}€€}€~€~€~~€€}€~€~~~€€~€~~€}€~~€~~€}€~~€~€€€~}~~€~€~~€~€~€~€~€~~€~€~~~€€~€~~€~€€~€~~~~~~~€~€~~~€€€~€€~~€€~€~~~€€€~~€~~~€~€€~€~~~€~~€~€~~~~€}~~€~€~€~€~€~~€~€~}€}€~€€~€~~€~~€~€~~€~~~€~~~€~€}€~~~€~~€~€€€~€~~~~~}~~€‚~€}€€~€€€~€}~€~€~€€~~~~~€~€~€~~~~~€}€€~€}€€~‚€~~~~€~€€~€€~€~~€~€~€}€~~~~€~€€~€~~}€~~€€€}€~~~€}€}€~~~~~~€~€€~€}‚€~~€}~€~€}~€~€€€~€~~€~€€~€~~€~€~€~~~€}€€~€~~~€~~€~€~~~€~~~€€~€~~~€}€~~€€~~~}~‚~~€~€}‚~~~€~~€~~€~€€~€}~~€~~€€€€~€~~~~€€€}€~€~~‚€~~€~~~€~€~‚~~~€~~}€~€€€~~~~€~~€~~€~~~€}€€~€~€~~€~€~€€€~~~~€€‚~€}€~€€~€€}€}~~~€~€~€~€~€~~~~~~~€~€€€€}~€~~~~~€~~~~~€~~~€~€~€~€~~~‚€€~}~}~~~€~~€~€~~€~~~€~€€~€~~~~~€€~€}€~~~~~€€~€}€~~€~~~~€~€€~~~€€€~€~~€~€€~~€~}~€~€}€~~~€‚}€€~€~~~~€€‚}}~€~€~~€~~€~‚€~€€~€~~~€€~€~~~~€}‚€€~~€~~€~}€~€‚€}€~~~~€€}€~}€€~~‚~~€~~~~€~~€€€€~€~€~€€~€}‚~~~}~€}€}€}€€~€~€~€~€€~~~€~€~}~~‚~~€~€~~~€~~~~€~}~€~€€}€~~€~€€€€~€~~€~€~‚}€€~€}€~€~~~~~€~€~€‚~€~€~~€}~~~‚€~~}€~€~€€}€~~~~€}€}€~~€‚}€~~~€~‚€€‚~€~}€~€~€~€~~~‚~~~€~€~€}‚€}~~~€~€~~~€~€~€€}€~€~}€~~€~€~‚€~~~€~€~~€~€~€~€}€~€}€~~€~€~~~€~€€~€~~€~€€~~~~~€€~€}~~~€€€~}~€~€€~€~~~~€€€~€~~}€~€}€}~~~~~~€~€~~€~€‚}~}€~€~~~€€~}€~~~€~€€~~~~~~€€€€~~€~}€~€}€€~€~€€}€~~~~€~€~€}€~~~€~~~~~~€€€€~~€~€€~€~~~€€}€~~€~‚€~~€€€~€~~}€~~€~~~€~€€~€~~~€~€~~~€~€~€~€~~€~€€~€~€~~~~~€~€~~~~€~~~€~€€}~~€~€~~€€~€~}€}~~~€}~~€~€~‚€€€~~~€~€€€~€~~~€~‚€~~~~~€~€~€€~~~~€~€€~€}€€~€~€}€~€~~€~~€~€~}€~~}~€€€~€~€~€~~€€~€~~~~€€~€~~€~€~€€~~€~~€~~€€‚}€~~€~€~€~€}€€€~~~€~€€€~€~~€~€~€~~~~~€}€€~~~~~~€}~€}€€~~~€~€~~€~~~€}€~€€€€~€~~~~€€~€€}€~€~€~€~~}~€~€€~€~€~~~€~~~~~€}€€~€~€€~€~~€}~€~~€}€€~~~€~~‚€}~€}€}€~€~~€~~~~€~€~}‚~~~~~€€~€}€~~~~€~~€~~~~€~€}€€~~~}€~~€€~€~€~~€€€}€~~~€~€€}€~~}~€€~€~~~~}~~€~€~~~~~€~}€€€~~~€~~€~€€}~~~~€~€€€~€~€~€~€~~€~€~€~~€~€~€€~€~‚€€~~~~~€€€€~€~~~~€‚~~€~€~~~~}€~€€€€€}€~‚€~~~€~€€~€~~~€~€€~€~~€~€€€~€~~~~€€€€~~~~‚€€~~~€~€~€~}€~‚~€~€~€~€€€~€~~~~€~~€~~~~€~~€~€€}€€~~~~~€~€~€~€~€~~€~~~€~€~~~~~~€~€~~€}€€~€~€}€~~~~}~~€~€~}~~~€}€~~€~~~€€€~€~~~€~€~€€€~~~~~‚€‚~€~€~}€~€~}~~€~€}€}€~~€~€~~€}€€€~~€~~~€€€~~€}~€~€€~€~€~~‚€~~~~~€~€~€€}€~}€€€~~~€~~€~€}€~€~~€~€€~~€~~}~€€€~€~~~€~~~~€~€}€}€€~€~~~‚~~~€~~€~~~€}~}€~~~€~€}€~€}€€}~€~~€~~€~€~~€~~‚~€~€~~€€~€~~‚~€~€~€~€~~~~€~€~€~€~€~€~€~~}}€€}}€~}‚€~€€~€}~~~~}€~€€~€€~€€~€~€~€~€}‚€~~~€€~~}~€~€}~~~€~€~~€~€~€~~€}~€€€~€}~~~€€~€~€€~€~~}~€}€€}~~~~~€}€€~€~€~~€~~€~~€~~€€~€~€~~€~~€~€€~€~€€~€~~~~€~€~€~€~~~~~€~€€~€~~~€}€€}€~~}€~€€€~~€~~~~~~}€~~~€~€~~~€€€~€}~~€~€}€‚~€~~€~‚~€}~~€€~~~}€}~~€~~€~€~~~€€~€~~€~€~}€~€}€~~~€~€€~€~~~€~€~‚~€~~~}~€€~€~~~~€}€~€}€€~€~~~~€€~}~€‚~~~€‚~€~~~€~€€~€~€~~~~~~~€~€}€~~‚‚~~~€~€~€~~~~~€}~~~}€~€€€€‚~~}€~€~€}‚€€~~€~~€~~€€~‚€~~~~~€~€€~‚€~~~~€~€€~€~~~~~€~€€~€~~€~€~~~~~€~€~€~€~~€~~€€€€}~~€}€~~~~€~~~}~€€~}~~€€‚~~~‚~~~€}€~€€€~€~€~~~~€~€~€~€~~~~~~€‚~~~€~€€~€~~~€~€~€~~€~€}€~~~€€€€€~€~€~~€~~€~~~€~€€~€~}~€€~~~~€~~€~€€~€~~~€~€€~€~~~€~~€~~€€€€~~~€}}}€€}~€}€}}~€€~~€~}€~€€~€}€~€~€~~~}€€}€}~€~€~€€~€~€~~€}€~€~€~~€‚~~~}€~~€€€~~~€~€}€~€~€€~€}€~~€~€~€~~€~~~~€~€~€€}€€~€~~€}€€~€}~~~€~€€~€~€~€~~~~~€€~~~}€~€€~€~€€~€~€~~~€}€€~}€}~€~€~€~~~~€~€€}€€~€}€~~~~~€€}€~€~~~‚~~€~~~~€~€~€€€~~€~~}}}€~~€~~~€~€~~€~~€~~~‚}~€~€}€~€~€~~€}€~€€~~€~€~€€}~€}€~‚€~~}€}€}}€~~~€}€€}€~€}~~~€~€}€~~~€€~€~~~€~€€~€~~€}€}€~€~~~~€~~}~€~~€~€~~€~€€€~~~€}€}}€~€€~~~~€~€€~€~€€~€~€}~€}~‚~€}€~€~~€~}€~~€~~€~~€}~€€}~~~€~€€~~~€~€€~~}~~‚~~€~€€~}€~~€~€~€~€~€~€~~€}€€~€~€~~€~€€€‚~~}~~€~~€€€~~~~€‚~~€~}~~~€~€€~~€~~}€~€€~€~}~€~~€~~€€~~~}€~€€~}~~€}€~€}€€~~€~~€~€€€€~€~€~~~~~€~€}€~€}~~€}}€~~~€~€€€€~}}~~~~€}€€~€}€~~~~€~€€}€~~€~€~€~€‚}€€~€~}€~~~‚~~€~€~~~~~€}~€~€}€€~~‚~~}€€~€}~‚~}€~€}~}€~~€~}€€~€~€~~~~€€‚}€}}~}}€€~~~€}€~~€}€~€~€€~€~€~€~€€€~~~~~€€}€~~~€~€}~€€€~~€‚~~€~€~}~~~€}€€~€~~~€‚~}€€€~}€~~€~€~€}~~‚€~~€~~€~~€€~~~~~~}€~~€€€€‚€~~~€~~~€~€~€~~€~~€~€€~~€~~~€€~€~~~~~€~~€~~~€}~€~€€€~~€~~€~‚€~€~~~€}€~€~€~~~~€~~€€€}}~€~~€€~€~~~€€~€~€~€~‚~~~~€€~€~€€~€€~~€~~~~€€~~€~~€~}~}€€}€€~€}~~~€~€~€~~}~~~~€}~€~~~€~€~€~~€~€€~~~€~€€€~~~}€€€~€~~~€€€~~€~~€€~~€~€}€~~~€~€€€~~€~~€~€€~}€~~€~€€~€~€~~€~€~€€}€~€~~~~€€€€~€~~~~~€}€€~€~€~~~~€~€~€~€~~~€}€~€€}€}~~}€~‚€~€}~~€}€€}€~‚~~~~€~‚~€}~~€~~}€~€~€€~€~~~~€€‚}€}€~€~€€~~~~~€~~€~‚€~~~€}€~€~€€~€~€~~‚~~~~€~~~~€~~€}€~€~~~€€~€}‚~~~~€~€€~~}€~€‚~€~€~~~‚~}€~€€~~€}~€~€~~€~€€~~€~~€~€€~~€€~€€€~€~~~€€~€~~€}€€~€~~~~€~€~‚~~~~€~~€~€€€~~€~~~€~€}€~€~~‚€~~€~€}€~€~~~~€~€}€~€~€}~~~€}~~€}€~€~~}~€~€~€~€~~€~~~€~€}~~~}€€}€~€~~€~~€~€~€~€}€€~}€}€~€€~€}€~€~~~~~~}€~€~€~~~~~~€~~~~‚~€}€€}€~~~€~~‚€€~€~}~€€‚}€}€~~€~~~€~€}€~~€}~€~€~~€~~€€~€~~~€€€~€~~~€~€~~€~€}~~~€€€~€~€~}~~}€€~€~€~€~€€}€€~~~‚~€~€}€~€~~€€~€~~~€~€€‚~~~~}~€€‚~~€~~€~~~€~€~~~€€~~~~~~€~}}€€~~€~€~~€~€~€~~~~~€~€€~€~~€~~€~€~€€~€~~~~~€~~€€~€€}~€~~€~~~€~€~~€}€€€~}€~~€~€~~~€~~~~€~€€~~~€~~~€€€~€~€~~}€~€}€~€~€~~€~€€~~~€~~~€~€~€~€€€~~~~~€~€~€}€~~~~~€~€~~€}~€~€€~€€~€~€~‚€~~~‚€~~}~€~~~€~€~€€~€€‚~~€€€~€~~€~~€~€~~~~€~€~~€€~€~}~€~€~}~€€~~€~~~~€~~€~~€~€}€€€~~~~€~~€€}€~~~€€}€~€~€~€~€~~~€}~€~~€€~~~~~€~€€~~~~~~€€~}~~€~€}€~~~~€€€~~€~€€€~€~~}€~€~€}€~€~€€~€~~~€~€~€~€~€}~~~‚~‚~€~~~~€€€~€~~~~€€€~€~€~€}€~‚~~~~€~~€~€~€}€~~~€~€€~~€~€~€~€€~€~~€~~€~€€~€~€~€~~‚}~~€~€}€~‚€~€~€€~~€€€€~€~€~~€~~~€€~€~~~€~€}€~~€€~€€€~~~~€~~‚€€‚~€~~~€}€€}€~€~~€~~~~€~€}€~~~~~}€€}€~€~}‚~€}€‚€€€~€~€~€}~€~€~~€€€€~~~~€~~~}~€€€€~€~~~€~€€~€~€~€€€~€~~~€~€~~€~€~~~~€~~€~~~€~€~€~€~~‚}~~~€€~~~~~€~€€}€~€~€€~~€~€~~~~€€€~~~€~€~~~~€~~~€~€€~€~€~~~~~€~€}€€~~‚~€~~€€‚~~€~€~€}€€~€~€~€~~€~~~€~€~~~~~€~€~€€~}~€~€€~€~~€€~~€~~€~€~€~~€~€€€€~~~€~€€€~€~€~€~~€~€~~~~~€~€~€~€€~€€~‚€~€}~~€~€~~€}€€}€~€~~~€€€~~~€~€€~~‚~€~€~~~€€~~€~~€€€~~~}~€}€~€~~€~~~€€~€~€~~€~}‚~€~€~~~~€€€~}€~}€~~~€~~€~€~~~}€€~€€~€~€~€~~~€~€€€‚~~€~~~€~€€~€~~~}~€€€~}~~€€€~~~~~~~~~~~~€~€~~€~€~€€~€~~€~€}€~~€€}€~~€~€~~~€~~€€~~€~‚€€~~€~~€~€}~€}€}~€}€~~}€€~€~€~€€~€~€~€€~€}€~~€~~€~€~€~~€~‚€€~~~~€~€~€~~€}‚€€~€}~€~€~€€~€}€€~~}~~}€~€~€~‚~~~}~€~€~~‚}€~€€}}~€~~~€€~~~~~€}€€~‚€~~~€~€€~~~~~~~€~€~€€€€~€~€~~~€~€€~~€~~€~€~€€~~~~~€~€~~~~~~~€~€€~~}€~€€}~}€~}~€~~€}€~~}}€~€€~~€}~~€}€€~~~~~€~€~~€~€~~~~€~€€}€~€~~~€~€€~}~~}~~€}~€~€~€~~~~€}€}€€€}€~€~€~€~~€}€~€~€}€~€€€~€}~~€~~}€~}€~€~€~}€~~€~}~~€~€€~€~€~~~€~~€€~~€~~€~~€~€€~€€~~~~€~€€~€~€~€~€€~~€}€€~€~~~€~~~~~€~~~~€~€€~~~~~~~€~€€}€~~€~€~~~€€~€~~€~~~€~€€~~~~€€}~€€}€€}‚~~~~€~}€~€~~~€€€~€}~~€€€~€~~€~€~€~€~~€~€~~€~€€€~~~€~€}€~€~€€~€~~~€~‚€~~‚~~‚~€~€~~~‚€€~€~~~€€~€~~€‚~€~€€~€~~~€~€€~€€~~€€~~€~~€€~~~~~€€}€~€€~}€~~€~€~~~~€~€€}~~~€~€€~~€~~€~€~€}€~}~€}€€~~~€}€~€~‚~€~~}€~€€~€~~~€}€~€€€€~€~~}~€~~€~~€~~€~€~~~~€~€€~€~~~~€€€€}€~€~€~€€€~€~~€~€~€~€€~€~€€~€~~‚}~€}€€~€€~€}~~~~€~}€~~€~€€€~€~~~€~€~€€‚~€~€€}€€~€~€~~~~~€€~}€~~€}~€‚~€}€~~€€~}€}€~€~€€~~~}€~~€~‚~~~~€~~€~€€~€~~}€}€~~~}~€}€€}€~~~€~€~€~~€~€~€€€€~€~€}~€€~€}~~~~€€~€€}€~€}€~~~~€‚~€~€~~€}~~€~€€~€€}€~~€}~‚€€€~~€~~€~~€~~€~€€~€~~€~€€‚}~€~€€‚~‚~~€~€€~€~~€~€€€~}~~€€‚~€}~€}€~~~~~€}€€~€~€~~~~~€~~€~€~€€~€~~~€~€€~~€~€}€€}€€~€~€~~€~~€~~€€~€~~€~‚~€~€~~~€~€~~€~€~€~€~€€~€}~~~€€~€~~€~€}€€}€€~€~~~€~€€€€~€~~€~€~€€~}~~~~€€€~€~~€~~€~~~€~€~~~~€~€}~€}€~‚~~~€~‚~€€€~~~€€€~}~€}€~~~~~€~€~~€€~~~~€€€€€~~~~€€€€~€~~~~€€€~~€~~€~€€~€~~€~€~€~~~~€~€€}~~~~}€~€~€~€~~~}€€~€}€~~€€}€~€~~~‚€~~€~€}}~~€~€~€~€~€~€~~€€€€~~€~~€€~€~€€€~}€~~€~‚€€}~~€~€€€~~~~€~~~‚~~~~€~€~€~€~€~~€~~€}€~€}~€~€€}~€~€€}€‚~€~€~~~€}~~~€}}€~€~€~~~~€}~€~}€~‚€€€~~~~~~~€~€~€~€~€~€}€~~€~€~€€~€~€€€~€~~~~~€}~€~}€~~~€€€}€€}€~~‚~€~€}~}€~€~€~€~~€~€€~‚~€~€€}€~}€€}€€€~~~€~~€}€}€~€~~~€€~€~€~~~€~~€~€€~€~€~€~}€~€€€~~~~€€€~~€€~‚€~€~~}€~~€~€~~~~~€~€€~~€~~~€~€~~~~~€~€~€~€}€~}~~€~~€~€~~~€}€~~~}~€~~€~~€~€~€€~€~~~~€€~€~}~€}€}€}€~€~~‚~~~€~€~€~€~€~~~€~€€€€~~~~€€}€€}€~~€~~~€}€~€€€~€}€€~€€€~~€~€~€€~~€~€~€~~~~~~~~}~€€€~€~~~~‚~€€}€~€~€~€~~€~€~€€~€€~€~~~~€}~~~€~~€~~€~~€~~~€~€€~€}€€~€€~~€~€~€}‚€~~~~€‚}~~€~‚‚~~€€~€€€~~~~~€~€~€€~€~~€~€€~€€}€~~~~~‚~~€€~‚€€€~€}~~€~~€~~~~~€~€~~€‚€€€~€}~}~€~~€~~€~€~€~}€~€~~}~€}~~€€}~~€€~~~~~€}€€~€~~~~~~}€~€~€~~€€€}~~€~~€~€~~~~€~€€~~~€~€€€~~~~€€~€~~~~~~~~}~€~€}~€€~€€}€~}~~€~~‚€€~~~~€}~€~€‚~€€~~€~~~~~€~€~~€€~~€€~€€~€~€€}€~€~€€‚€~€}~‚~€‚}€~€}€~€~~~€~€~~€€~€~~~€€~~~~~€}€€€~€~~€~€~~€~~€~~€~€~~€‚~~~€€~€~~~~‚~~€}~€~€~~}}€~€~€€~€~~~€~~}€~}€~~~‚~~€~€~‚€€€~€~€~~€€~€~~€}€€}€€}€~€~€~~~~~~€~€€}€€~~‚}~€€~€}€~~€~€~€€~€~€~~€~€~€€~~~~}~€~€~€}€~~~~~€‚~€~€~}€~€}~€€€~€~~}€€~€€}~€€}€~~~€~€~~€~‚€~~~€~€€~€‚~€~~~~€~~€€~€~~€~€}~}~€€~€~€~€€~€~€~€~~~~€~€~€~~€€~€~€~~~€~~~~€}€€~€}~‚}~~€~€~~€~~€~~~€~€~~€~€~€‚~~€~€~€~~~€}‚~‚~‚}}}€~€~~~€~‚~€~€~~~€‚}€}~‚~€~~~€~€~€~~~~€~~€€~€~€~€€~€~€~~€~€~€~€~~}€~€€€€~~~~€~}~~~€€~€~€~~€€~~€‚~~€‚~€~~~€€~~~~€€~€~~€~€}€~€~~~~€~~€}€~€}€~€~€€~‚}~€~€~}~~€~~€€~€~~~€~€€~€~}€~€€~}€~~€~€€~~~€}€}€€~€}~~~~~~}~€~€}~€~€~~€€~€~~€}€~€€~€~~}~€~€~€€~€~€}}€}~€€~€~~}€}~€€€~€~~€€~~~~€~€~€}€€~~€~€€€€~€~~~€}~~€~€~~€~€~€~~‚~~€~€~€~~~€‚}€€~€~€~}~~€~€~€}~~~€~€€~~€~~~€~€~€~~€~€~€~~€~€~~‚~~~€‚~~€~€€~€~€~}~~€}€€~€~€~€€~}€~~~€}€~€~€€~€€~€~~~€}~€€~~€~~€~~€€€~€~~}€}€~}€~€€~€~~€~€~~~€~€€~€~~€~~€€€}~~€~~€€~~~~€€~€~€~€~~~~€~~€~€~€~~~€~~€€€~~€~‚€}€}€~~~‚~‚~€€~€~€~€~~~€~€~€€€~€~€~~€}€~€~€~€}€€}€~€~€~~~~€~€~~~€~€~}~€€~~€~€}~~~~~~€€}€€~€~~‚~~~~€}€}€€}~€~~‚€€~~~~€~€~€}€}~€€‚~€~~€~€€~~~~€~€}€~€~€~~}€~€€}€~~~~~€~€€~€€~~~€~€€}€~~€~€~~}€}€€€€~€~~~€~~€}}~€}€~€~~~‚~~€}€~~}€~~€}€€}€€~~}~€€~~€}~€~~€€~€~~€~‚~~~~€~€€~€~€~~~€}€~€}€~€€€~~~€~‚€€€~~~~€€~€~~€~€€~~~~~€~€€~~~€~~~€~€}~~€~€€€~€~~€~€~€~~€}€}€€€~€~~€}€€€~€~€~~~~€€~€~€~€}€~~}€~‚€€~€~}€~€€€~€~€}€€~€€}~~€€}€}€~~€~€~€€€€~€~€~~€~~~€~€€}~~€~€€}€€~€~€€}€}~~€~€~€}€~~~~€~€~~€~€€}€~€~€€~€~€~€}~~€~€}~~~~~€~‚€€~~~~~€~€~~~~~€~€€}€}€~}~~~€~€€}€~~€~€~}~~}~~~€~~~~€~€€~€~~€€}€~€~~~€~€~~€~€~~€€€~€€}€~~~~€}€~€~€~~€€~~~~€~€€€€}€€~€~€}€~~€~€€~€~}~€~~~~€€€~}€~~~€~~€~}€€‚~€~~~€~€~~~~€€~€~~€~‚€€~€~~€~€€~~€~€~€}~€~~~~€‚}€€~€}}~€€€~€~~}~~}€~€€}€}€~~~‚~€€~€€~€~€}€}~~~€€€€~€~‚~~~€~€€~~~~~~€€~€€~€}~€~~}€€€€~~~~~‚€~€€~€€~€}}~~€~€~~€~€~}€€‚}€~~€~€€~~~~~~~€~€~€€~~~~~~~~€€~~‚~~~~€~€€€€~~~~€~€}€~€~€~}€~€~€~€~€~€~}€~€€~~~€€~~€~€~€€~€€€~~€~~~~€~€~~~~€}€~~€~€~}€~€‚~€€~€~€~€€}€}~€}€€~~}€~~€~~~~€~~€€}€~€}~~€~~~€€~€~~~~€~~~}€~~€~€}~~€}€€}~}€}€}~€~~€€~€}€~~}€~‚~~~€~€~~€~€~~~€€}€€~~€~€~~€~€}~€~~~~~~~€~~}€~‚€€~€}€}€}€~€~~~€€€~~€~}~~~~€~}€~~~}~€}€~€}~~€~€€~€~}‚~€}€~~~~€~~€€~€~€~€}€€~~€~€€€~~~~~~€~€~€‚}€~~€~€~€€~~€}~~€~~€€€~~€}€~€}~€~€}€€~€~€~~~}~€~€~€~~€~~€€~€}~~~}€€~€~€~~~~€~‚~~€~~~‚~~€€~€~€~€~~€€~€~€€~€~€~}~€~}~~~€}~€€~€~~€}~€~€~€€€~€~€~~~€~€€~~~€‚~}€~€€€~~€~~~€}€~€~€€~€€~~~~~€~€~~~~~€~€€€~~€~~}€€~€~€~€€~~€~~€~‚€~~~‚}~€}€~€~€€~€~€~€}€€~€~€~€~€~~~€~~€€~~~}€}€~~€~~€}€€~~‚€~€~€~€~~~€~}€~~€}}€~€~~€~‚€€€~}€~€~~~~~€~€~~~~€~€€~€‚}€~€~€~~€~~€€~~€€~€€~€~~€€~€~~~~€~~€~€~€~€€~€~~~€€€~€~~}~~€€~€~€~~~~€~‚€~€~€}€€}€~~~€~€€€~€~€~~~~~€~~€~~~~€~~€~€€~~~~~€~€€€~€~~}~~€~‚€~~€~~~€~~€~~€~‚~€€~€~~~€~‚~€€}€~}‚€~~~~~~~~~~€~~€€~€~€~€}€€~~€~€‚~~€~~~~€~‚€}€}~~~~~€€}}}‚€€~~€~~€€~€~~€}~€}€~€~€~€~~~~€}€€}€~€}‚~~~€}€~€€€‚~~~~~€~€€€~~€~~~}~€€}€~~~€~~~€~€~€~~~€}€~€}~€€€€~€~€~~~~€}€~€~€~~}€~~~~€€~~~€~€~€~€~~€~€~€~~}€~~€‚~€~~~€~~€€€~~~~€‚~€}€}€~€€~€~~}€~€}~~~€€~~€~€€~~€~~€~€}€€~~~~~€~€~}€~€~~~~~€‚}€~€~€~~€~~€€~€~}~~€}€‚~~€~€}€~~~~€~€€~€~€~€€~€~~}~‚€€€~~€~~€~€€~~~~€~€~~€~~~~€€~€€}}~€~€~€‚€€€€~€~~~~€€~‚~~~~€~~€‚~€€~}€€~€~€~~€€~€~~}~}~~€~€€~~€~~~€~~€€~€~€€~}€~~€~‚€€~€~~~~€~€}~~€~€~€€~€€~‚~~€~€}€~€}~€}~€}€~}€~€~~~}€~€~€€~~€~}~€~€~€~€~~}€~€~~}€~€}€~~€~€€~~}€~€}~~‚~~~€}~€~€~€~~€€€~€~}€~€~€~€€~~}~~~}€€~€~€~€~~~~€~~€~€€~€~€}€~€€€~~~€~~€~€~€~~~€}€€~~~~~~~}€~€€~€}~~€~~€~€~~~~}€~€}€€}€~~~€~€~€~€€}€‚~~€}€~€~~~~€€€€~}€~~€}€€}~~€~€~~‚}~€~~€~€~~~€~€}~€~€~€~}€~€~€}~€~€}€€~}€€}~~~~}€€€~~~~€~€€~€~~~€~€€€~~~€}€€~€~~~€~€€€}~€}~€€~€~~~€€€€~€€}€€~}€~~€€~~~~~€~‚~~~€}~€~€~~€~€~€€}€~~~~‚~~~€~€~}~~€~~€~€‚~€~€€~€~~~€€€€~~€}}~~~~€€€~~~~€~€~€~€~€}€€~€~~~}€~€€€€~€~}€~~~~~~~€~€~~€~€~€~~~€}€€~~€~~€~€€‚~~€}~~€~€~€€€~€}~~€~~~~€}~}€}€~~~€~€€€€~€~~~‚}~€}€~€~€~~~€~‚€~}~€~}€~~€~€}~~~€‚~€€~€~€€~€‚~~~~~€~€€~~€~~€~€€~}€~~}€~€€€€~€~~~€€~~€~}€€}€~~€~€‚}~€~€~€~~~€~€~€~}‚~~‚~}€}€~€~€~~~€€~€}€~~€~€€€~~€~~~€€~€~}€~€€~€~~~~€~~€~~~€~~€~€~€€~~~€}€€~}€~€€~~~~€}€€~~~~€~€~€€~€€~€}€~~~€~€€€~€~}~~€~€}€~€‚}€€~€~‚€~€~€}€€}‚€€~€~~€~‚€}~€€‚}€~€~€~~~€~€€~€}€€~~~~~€}}€~~~€~~€~~€}€€€~€~~}€~€~€}€~€~~€~€~~~}€~€~€€}€€~~€€~€~€€~~}}~~€}€~€~~~€~~~€‚}€~~€~~~€€~€~€€~€~}~~€}€~}€€~~~~~€€€€~~~}~€~}€~€€~€~~~~~€€~~€~~~~€€~€~€~€~~€~~€~€~€~~‚€~~€~€€€€€€~€~~}~€‚~€~€~€~~~~~€€€€~€}~~€~~€€~~€~~€}~€~€~~~€~€}€}~}€~~€~~}€~€€~€~~€~‚€~€}€~~~€€~€~~~€€~€~}€€~€€~€~~~€‚~€~€€~€~}~€}€€~€}~~€~~~~‚€€~€€~€}€€~€~~€~~~€~€~~€~~~~€~€~€€~€~€~‚~€~~€~€€€€~~~~€~€€€~€~~~€~€€~€~~~€~€€~€~~~~~~~~~€~€}€~€~}‚~~€}€€~€~~}~€~~€~€~}}€~~€€€~~€€}~~€~€~€~€}~~}~€€~~~€~€~}€~~€~~~‚~€€}~€~€€€€~~}€}€€~~~~~€€€~~€}~€~€~€~~~€€‚~~~€}~€~€~€€~€~~~€€€€~€~~~€~€~€€~€~~~€€~€}~€}€€€~€~~~~~}€~~€~€‚~€}~€€~€~~~€~€~€~~€~€‚~~~~€~€€~€~~~€~}€~€}€~€~€~~€}€~€€~~~~~€~~~~~€€~€~€}€}€~~‚~€~€~€}€~€~~~€~‚€€~€~~~~€~~€€€~}~~€~€€~€~~~~€€€~€~~~€~‚€~€~€€}€~~}€‚~~€~~}€}~~€~€~€~€~~‚}~€~€~~€~~€~€€€~€~~~~€~€€~€€~€~~€~~€€‚~€}~€~€€€€~€~~€~€€~}‚€~€~€~€€~€~~~}€~€~€€~€}€€}~~~}€~€~€€~€€~€~€~€~€€~€~~}€~€~€~~€}‚~~~€}€}€}}~~€~€~€€€}}€~}~}€~}€€~€~}~€~€€€~€~~~€€~€~~~€~€€~}€~}€€~~€€~‚€~~~}~€}€~~€}~€€€}€~~~€~€~}}€€€~€}~~~~~€~~€~€€~€~}~~~€€€~€~~€~€~~~€€~}€~~~€~€~~~~~€~€~€~€€~~~€~€}€€~€~~€~€~~~€~‚€}}}€~‚~~~€~€~~€~€€~~~~€€~~~~€}‚€~~€~~‚~€~~€}€~€€~~~‚~€~~€~€~€~~~~~€~~~€~€~}‚€~€~~€~}~€}€~~~‚~~~€~€}~}}€~‚~€~€€€~€~~~~€~~~~~€~€~~~~~~€~€~€€~~~€~~€~€~€~€~‚€~~‚~€~~~€~€~€€~€~€~}~~€}~€~€}€~€~€~}~~~}€~€€€‚}€}€~~€€~}€€~~€~~~€~€€~€~~~~€€}€~€~€~€~€€~€~€€}~€}~~€~€~€~~€~~~€~~~€~~€€~€~€€~~~~€~~‚€€~~€~€~}€~€~€€~~€~~~~€~~€€~€~€~~~€€€€~€~~~}€~€~€~~}€~~€}€~€~€~€~‚~~~~~}~~€}€€}€~~€~€~~€~~€~€€~€~€}~€}~€~~€~€}}~~€~€~€~~~€}€~}‚~~~~€~}€~‚€~~~€}€~€~€}€~€~~€~€~€€~~€}€~€~€€~€€~~~€~€~~€~~~~~‚~€~~€~€~€}~€~€~€€€~~~€~~€€€~}~~~~€€~€~~~€€}€}~€~€~~~~€~€~~€~~~~€~€€~€}~€~€€~€~~€}€~~~~€€~}€~~~€€~}€~~~€€~€~~€~€€}€~~€~€~€€~€~~€}€€~}~~~~~~€}€}~€~€~~~€}€~€~€~~€~~~~~~‚€}€~€~€}€~€€}€~~~~€}}€~€~~~€~€€~€~~€~€~€€~€~}~€€€~~€~~€~€~‚€€~€~~~€~€€}€~~}€~€~€~€~€~~~~~~€~~~€~€€~~~~€€~~~€~€~€}€~€~€}‚€~~€~€}€~€~€~~~~€€~€~~~~~€~€~~~€~~~~~~€~€}€~€~€~~}~€~€€~~€~€~~€~€€~€~€~€~€‚~‚~€~€~€~€~}~€~€€€€~~~€~€~€~€~~‚~~~~€‚~~}€}€~}~~~€~€~€~~~}~~~~~~€~~~€€}€~~€~€~€}~~}€~€€€~€~~€~€~€~€~~~~€~~~€~€€€~~~€~€~~~~}~€~€€~€~~~~€~€~€~~€€~€~€~~~€~€}€~€€~~€~~~€~€~~~~~~€~~€€~€~€~~‚}~€~€~€~~€~~~€€~}~€~€€€~~€~~~€€€€~~€~€€~€~~~~€€€}~~€€~€~€~€~€}~~}€~~~€~€~€~}€~~~}€~€€~€}€~~~~~€~~~~€}€~}}€~~~~€€~€~~~~€~€€~€~€}}~}€~€~~€~~~~~€}~€~~~~~€€}€~}€~‚€€~~€~~~~~~€~€~€~€~~‚}€~€€~~~€€€€~~~~€€~~~€~€€~€~~~~€}~}€~~€~€€~~~~~€}~}€}‚~€~‚~€~~~~€~~€€~€~~~~~€€~€~~€}~€€}~€€~}~~}~€~~€€~€€~€~~~}~€€€~~€~~€}~€~€€~~€~~€}€~~~~~~€€€€€€~~€€~~€~€}~€€~~€~~~€~€~~~€~~~€~€€~€€€€~~~~€}€€~~€~~€~€~€}€}€€}€}~€~~~~€€~€~}}€~€€~€}€~~~~€~€~€€}~€~‚€~}€€€~€€~€~~~~€}€~~€~€€€~€~~€}€€~~€~€}~€~~€~€~~~€}€~€~~€}~€€}€~€€~€~€~€~~€~‚~€~€~~~€~}‚~~}€~~}€€~~€~~~€€~€~~€~}~€}€~€}€~€~~~~~€~~~‚~‚~~~€~€~€~€~€~€~€}~~€}€€€}~~€}~€~~€~~~€~€€~€~€}€}€~€~~~€}€~€~~~€~~€~€~~€~€€€~€~~€~~€~~~€~€~~€~€~~~€~~€~}€~~€~€€}€€~€~~€~~}}€€~€}€~~€~~~€~€€€~€~~}~€~€~€~€}€€~~~~€€€~~€}€€~€~€}€~€~€~~~€~~~€}‚€~€~€€€~€}~~€~~€€~€}€€~€~~~~~~~€~~‚~€~€€€~~~~~€~€‚~€}~~€~€€~€~~~€~€€‚~€~~~€~€}~€€}€~€~€~~~~€~€€~€~€~~€~€~€~~~€~€~~~~€~~€~€~€~~~€}€€~€~€}~~€~~~~~€~~~€‚}€€~~€€}€~~€~€}€~~€~~~€~€~€~~~‚€~€~€~~€~€€€~~~€€~€~~~~€~~~€‚~€}~€}€~~~€~€~~€~~€€€~€~~~€~€€€€~€~€~€~€€~~€~€€€~€~~~€~€~~€}~€~€~€~~€}‚~€€~€~€~~}~€€~€~€~€€~€}~~€~€€~~~~€~‚€€~€~~€~€~€~€~~€~€~~~~€~~€}€}€~€}€~€}~‚~€~~€~~€~€~~~€~~€~€€€€}~~~‚€~€~~€~€~€€~~€}‚€€~€~~~€~€~€~€~€~~€}‚€€€~€€~€~€€~€~~~€~€€€~€~~~~~~~€~€~€~‚€~~~€€~~~~€€~€€~~~€€~€~€~~}€~€€~€}~~€€€€€~€~€~~€~€~~€~€€€~€~~€~€€}€~~‚€~~~}~€~€€€~€~~~€~€~€}~€~€~€~~€€~€~€~€~~€~~€€€€€~~€€€€~€~€~~~~~€~€}€€}‚~€~~€~€€€}~€~~€}€€~€~}~~~€}}~€€~~~~€~€~‚€~€~~~~€~€€~€~€~€~~~~€~€‚~}€~~€~€€~€~€~~€~~~€~€~€~€}‚€€}€~~€~€~~~~~~€~€~€~~€€}€~‚€}~€~€€~~~€~~~}€~}~~€~~€}€~€}€~~~€}€~~€~~€~~€€€€~€~€~~€~€€€~}~€~€~€~~€~€~~€€~~€~~€~€~€~~~€~€€€~~€}~~~~~€~€~€~€€€~€}€}€€}}€~~~€€~€~~~€€€~€}~~€~~€~€~€~€~}~~~€€~€~~€~€€€}€~~}€€€~€~€~€~€~€€~€~}~~~€€~€~€}€€€€‚~€~~~~€€~€~~}€€€}€~€€~€~~~}€~€~~‚~~~€~€~€~€~~~~€}€€~€~€~€€~~€~~~€€~€~~€~}€~~~€}€~~~~€€€~€~€~€~}~~€}€~€€~€€}~~~~~‚€€~€~}€~€~€}~~~€~€~€~~~€~€~€~€}€~€}~~€~~€~€~‚€~~~€~~€~~~~~€€~€~~~€~~€~~€}€~€~~€~€€~€~€}€~€~€~€€~~~~~€~€€~€~~~€~€~€}~€~€}€€~€€~€€}€~€~~~}€~€~~~~~~€~~€~€€}~€~€~€~€~~€~~~€}€~€~€}€~€}~€~€~€~~€~~€€€€~~€}~}‚~~€~~€~€€~}~€€~~~€~€€}€€~€~~~€~~€~~€~~€~€}‚€~€~€€~€~~~~~}€~€€~~€~€€€~}€}~~~~~€}~~€}~~€~€~€~}€~~€~‚~€~~€~~€€€~€~~€~€€~~~€~~€€~~~€~€€~€~€~}€€~€}~€~€~€~~€€€~~~€~€~~€}€~€€~}~}€~‚€~~~~€‚~~€€}€}€~€~~€~€~€~€€~~~~€~€~€~€~~~€€~~€~€}€~~€~€~€~€}€~~~~~€€}€€~€€~~}€~~~€}€~~€~€}€~~~€~‚€€~€~€€~€~€~~€~€€€€€~€~}€~~€~€~€~€}~€~€€~€}~~€~~€€~€~~~€~€€~~~~~€€‚~€€€~}€~~~~€~€~~€~€€~~~~~€}€~}€}€~~~€€~€~€~~}€~€~€~~€~~€€€~€~~€~€€€}€~~€}€~~€€~~€~€~€€~€~~~}~€€~€~~€~€~€€~€€~€}~€~~€€~~€~~~€~€~‚€€€~€~€}~€}~}~~€~~€~€€~€~€~~€~€~€~€€~€~€‚~~~€~~€€~€~}€}‚€€€~€~~€~€€}€~€~~~‚~€~~~~€€€€~~€‚~€~€}€~€€~€~~€~€€~~~~~€}~~€~€~€€~€~~~€€~€}~~€~€~€€}€~€~€}~€€~€~€~~~~~~~}~~€}€~~~€~€}€}€~€€~€}~~~~€~€~~€~€€€~€}~~}€€~€}~€~}€~€€~€~€~‚€€~€~~~€~€~€€~~~~~‚}€€}~~€~}€~€€~€~~~~€}~€~~€€€~}€~~~~~~€€~€~~€~€€€~}€~~}€€~~€}~~€~€€€~~~€~€€~€}~~~€~~~~€~€€~€~€~€~}€~~}~~€~€}~€~€€~€}~~~~~}€€~~€~~€~€~€€}€~~~€}€}€~~~€~~}€~€~€~~~~€~€€€~~}€}~€€~~€€}~~‚€~~~€€~€€~€€€~~}€~€€~€}€~}€~~€~~~}~€~€€}€}€}~~€~~€€~€~~~€~€€~~~€~€~~~€~}€}€~~~€~€~€~€€~~‚~€~€~€~~~~~€€~€~€~~€~€~€€~€}€€~~~€€€€~€~~€~~€}~~~~}~€€~€~~~€€}€~€~€€~~~~€€~€€~~€~€€~€~€~~~€~~~€}€€~€~€€~€~€~€~€€‚~~€~~~€€~€€~~€€~€~~€~€~~}~€~€€}€€~€}€}€}~~€~€~‚~€~~‚~€}~~€~€~‚€€}€~€}€€~€~€~~€€~€}€~~~~€~€~~~€~€~€~~€~€~€~~~~€~€€€~€~~€}€€~~€~~€~€€€~€~€~~€€€}€}~~€~€~€€~€~~€~€}~~€~~€}€~€~€€~~€~€~€}~‚~~‚~}€~~~€~€~€~€~~€€€€~€~~€}€€~~€~€€€~~€~~€~€~€€€}~~}€€~€~€~€€~€€}}€~~€~~€~€€€~€~~€~€€~}€~€}€~~~~~~~}€~€~~~€~€€~€}€~~€}~€€~€~€~~~~‚~~€~€€~}~~~~€~€€~€~~~~~€€~~~~€~~€€€~€~~~}~€~~€~€~€€~€~~€~€€~€~}€€~~€‚~€~€~~~€~€~~€~€}€€~~€~€~€~€~€~~}€~€€€}~~‚~~~~}€~€€~€~~€~€~€}€~€}€~~€~~€~~~€~~~€‚~€~€~~€}~~€}~‚€~~~~€€~€~~~€€~€~~~€‚~€€~€~€~~~€€~~€~€~~~}~€~€€€€~€~~€~€‚~~~~€~€€€~€}€~€~€}€€€~€~~~€€}€€~~~~€~€€€€~€~~€~~€€~~€~€}€~€~~~~€€~€~~~€~~~€~~€~€~€~~}€~€€€}€~€~~€~}}€€}€~€€~€}~€~~€~€~~}€~€€~~~~€~€~€~~~€~~€~€~€~~~~€~€~€~~€~~€€€~}€~€~~~€€~€~€~~~€~~}€~€~€~€~~~‚~~~€€~~€~~~€}€€~€€~}~}~€€€~€~~€~€~~~€~€€€€~~€~€€~~~}~~~€~€€~~~~€€€€‚~~€~€~~€€~~}€€~€~~~~}€~~€~€~€€~~€€~€}€~€}€€~~€~~~~€€€€~€~€~€~€~~€~€}~~€~€€~~~~€~€}~~€}€€~€€~€}~~~€~}~~}€}~~€}€~€}€~~~€~€}€~~~~~€€~~~~~€}€~€~€~~~~~€~~‚}~‚€~~€€}}~~~~~~€~€~€~~€}€~€€€~€~~~€~€€€€€~€~~~~€~~€~€€~€~€~~~€~~~€~€€}€~€~~~€~€€~€~~~€~€€~}€€}€€~€~€~€‚~€~}}~€~€~~}€~~€~€€€~~~€€~€}‚€€~~~€~€~~~~€~€~~~~€~€~€~€~€€€~~~€~~€~€~}€~€€€~~~~~~€~€}~€~~}€}€€€}€~€€~~€~~~€~~~~~€~€€~€}~‚€~€}‚~‚€~€~€~~~€~€~~~€~€€€~}~~€~€~€~~~€~€~~€~€€‚~€~~}€~€~€~~~€€€~€~~~~€€€~}~~€}€€€€€~€~€}€~€€‚~€}~~€~€€€~~~€€€~}~€~€~~€~~€~€~€~€~~€~~}~€€~€~~€~€€~€~‚€~~~~€~~€~~~~~~€}€€~€€~€~~~~~€}€~€€~€~€~~}~€€~}€~~€~~~€~€~€~€~~}~~€~~€~~€€€€~€~~~~~€~~~€}€€~€~€~~~~~~€~€€~~~€}€~€~€€}€~~~~€~~€~~~~}€€€~~€~~~€~€~~~€~~€~€~€~€~€~~€~~~€~~€~€~~€~€}€~€~}€~€}€€€~}~€~€~€}€~~~€€€~~€}€€}€~€~€~~€}€~~€€~€~~~~}€~€€€~~€~~~‚€€~~~€~€}€~~~€~~‚‚~~~€}€~€€€}€}~€~€~~~€~~€}€€~‚€~~€}€€€€~€~}€~‚€€~€~~€~€~~~~€~€~€~~~~~€~€}€}€}~€}~€€~€~~~~€€~~€~~~€~€~~~€€~€}€~€~~€~€~€€~}€~€~~}~~~~~~~~€~€€€~~~~€~€€€~€~~}€~~€~~~~€~~~€~€‚€}~‚~~~€€~~~~€~‚€}~€~}€~€~~€~€~~€}~~~~€}€}€~€€~~€~}‚€}€}€€~€~€~€~~~€~€~€}€~~~€~€€~€~€~‚~~€~~€~~~€€~€~€~}}€~€‚€€€~€~~~~~€~€}€~}€~€~€~€€~€~~€~~~~€~~€~€~~~€~~~€~~~€~€€€€~~~€€€~~€~~~€~€~~€~~€}€€~~}~~€}~€€€~~~~~€~€}€~~€~~€~€}€€~~€€}€~€}~~~~€~~}€~€€€€~~€~~€~€€~€~~€~~€€~€}~~~~~€~~~€~€~€~}~~~€~€~~€~€€~~~~€~€€€~€~~€}€~~€~~~€‚}€~~€~€~~€~~€~€€€~€~~~~~~€€~€~€~€~€~~~€~€}~€~‚~€~~€}€€~~~~}€}€€€~~€~~€~€€~€~~€~~~€~€}€~€~€~~€€~~€~~~~}~~€~€~€~~€~€~€‚~~~~€~€~~€~~}~€~}€€~€~~~€€€~€~~€~€€~€~~~€~€€~€~~~~~€~€~€€}~€~~~€}~€~€~~‚}€~€~€~~€~~€€€€~€~€~~~~~~€€~€~~~€~€~€}€€}€~~€~€€}~~~~~~€}€~€~€~€~~~~€~€€€~}~~€~~€€~€~‚~~~~~€~€~~€~~€~~€€~€~€€~€~‚€€€€€~€~~€~€}~€~€~€~€~~~€~€€}~}€~€}€~€‚}€€}€~~}~€~€}~€~‚€~~~~€~€~€~‚~~€~€€~~~~}€~~€}€~~~~~€~}€€~€~~~~€~€~€~~€~€~€~€~~~~€~€€~€}}€€~}€~~~€}€~€}€~€~~~~€}€~~€~~~€~~€€~€~~~€}€~~€~€~€~}~~~€~}‚€~€~€~}€~€~‚€~~~~€~€€}€~~€~€€€‚€~€~~~€€~€~€€€~~~~~~€}€}~€}€~~€~€€~~€~~}€~}€~~€~~~~~}}€~~€€€~€~~}€~~€€€~~~€~€€‚~~€~€~€~~~€€}€~~€~€~€€}€~€€}€€}~~~€}€~~~~~~€~€€~€~}~€~€~€€~€~~~€€~€~~}€~~€€}€~€~€~€~‚}€}~}‚~€€€~~€~~~~€~€€~~~~€~€~~€~€~€~€~€~~€€€~€~~}~€€~€~~~€}€~€}€~€~~~€~~€€~~~€~~~€‚~}€~~~~€~~€~€~~€}€‚~~€~~€}€}€~€~~€~€~€~€~}~~~~€~€}€~€}€€€€}}€~‚~€~~~~~~€€€~}~€~~€~}~~~€~~€~~~€~€~€€~€~~}~€€~~~~€~€€~€~}€~€€}€}€€~€}€~}~€€~~~€}€€€~~}€}€~}€~€€€‚~~~}€~€}}€~€€€€}~€~~€€‚~€~~~}~~€~~~€€€}~~}€~€~~~~€~€€}€~~€}€~€~€}€~€~‚~~~€}~}€~€~‚}€~~~€~~~~€‚}€~€~€€}€€~}~~‚~€~~~€€}€€~€~€~€~}~€~€~€~~€~~~€€~€}~}€~~}~~~€}€~€€~~€~€~€~€€‚~€}~€~€€€€~}€~€~~~€~~€€€€€~~~~~€€~~€~~€€~}~~~€~€~~}€~€€€~€~~€~€}€~~~€€}€€~€~€~€~~~€~€~€~~€~€~€€~€~‚€~}‚~~€‚~€€~~€~€‚~~~~€~€~€~€~€~€}~~~~€~~€}~~~‚€€€‚~~~~€~‚€€~~}€~€€~€~€~~~€~~~€€~€~~€~~€~€€}~€€~€~€~‚~~€~€~}€€~~€~€}~€€€~~€~~~€~€€}€~€}€~~~~€~~€€~~€~~~~€€€~€}€~€}€€}~~~€}€~€~~~€~~€€~~€~~~~€~€~~~€~€~€~~€€~€~~€€}€~}‚~~~~€}€€~~}}€}€~~€}€}~}€~€€~€€~€€~€~‚€~~}€~€€}}€~~€€}~}€}~~~€~~~‚~€~~€}€~€~€€~€}~€~€€€~€~€~~€€~€~~~€€}€~~}~€€~€~~€~€~~€}~~€€~~~~~€}€~€~€~~€€€~~€~~~€~€~€~}€~~€~€~~€}~€€‚~€}€~~€}€~€‚~~€~€€~~~€~€~‚~€~~~€~~€‚~~}~€}€~‚€~~‚}€~~€€~‚~~~€~€~€~€€~€~€~€~€~~€~€}€}~€~€~~€~~~€~€€~~~€}~€~~~~}~€~€~€~~€~~}€~€€~~}€€€‚~€}€~~~~~~€€€~~€~~~€~€~€€~~€~~~€~€‚~~~€}~€~€€~€}~~€~€€~~~~‚~~€~€~}€~~~€~€~€€}€}€~€~~~€~€~€~€~€~~~~}€~~~~€~€~€~~}~€€~€~~~€~€~€~€~}€~€~€~~~€~€€~}€~~€~~~€~€€~€~~~€€€€€~€~~~€~€~~€~€}€~€}€~~€€€~€~€~~~€}€€~€~€€~€~~~~~~~}€~~~€~€€€€~~€~~~~€~~€}€€~€€~€~€€~€~~~~€~€€€~~~€~€~€€€€~~€~~~~€~€~~~€~€~€€€~~~€~€‚~~€~€€}€~~~€~€}€}€~€~€€~~€‚€~€~~€~€}€€}€~€~€~}~~€~}€}‚€~~~€}€€~€~€~~~}€~€~€~~~€~€~}€~€€€~~€~€~}€~~~~€€~€€}€~}€~€~€‚~€~€~€~~~€~€€€~€~~€}€€~€~~€~~€€€}~€~€~€~~€~~~~~€~€}€~~€€~€~€~~~€€‚~}~~}~€€~€~~€€€}€€~~€}€~~~~~€~~€~€~~}~~~€~€}~~€€~~€~~}€~~~}}~€€~}€~~~€~€~~€~~~€~€€€~€~~~€~~€~€‚~}~€~€€€~~€~~€~€}}~~}~€}€€~~~~~~~€}€~€~~~€~€}€~}~€~~€€€~€}~~~~€~€~€}~~~€~~~~€~€~€~~€~€€~€}~€~€~€€~~~~€}~€~~~~~€~€~€€€}~~€}€€~€€~€~€~€~~~~€~‚€€€~~~}~€~~€~€~€~€~~~~~€€~~~~€~€€~€}€~~~~€~~€~~}€~}€~€~€~~~€~~~~}€~€€€€~€~~~€€~€}~€~€€~€~~~~€€~~~€~~€~€€~€€€~~€~~~€€~}€~}€‚~~€~€~~~~‚~~~~€}€~~€~~~}}}€~~~~~~€~€~€~~~€~€~€€~~~~€~~€~~~€€~€~€€~€€€~~~€~~€}€€}€~~€‚}~‚}€~~€~~€~~€~~€~‚€€~€~~~€€~~€~~~~€€~€~~€~~€~€}€€~~€~~€~~~€€}~~€~€~~}€~€€€~€}~~~€€~€~~€~€~€~~~~~~€~€~~€€}€~€~~€~€~‚~€}~~€€~~€~~~~~€~~€€~€€~€~‚~~~€~€€}€~~€~€~~~}~€}€~€€~€€}€~€~€~~€~€~€}‚€€~~€~}€~~€€~€~~~€€€~€~~~}€~€~~~~€}€~€~€}€~~~€€€‚~€~~~~€}€~~€€~€€}~€~€€€~~~~‚~~~€~€~€~~~€€‚~~~~€~~€€~}~}~~€~€~~€~~€~€~€~~€‚~~€}€~€€~€~€}€~~~~}€~~€~}€~~~€~€~€€~~€~~€€€~~~€~~€}€~€~~€~~€~€€€~€~€~~€~~€}€}€€~~~}~‚€€‚€€~€~€~~}~~~€~~~€}€~~~~€}€}€~~~~€€€~€~€~~€~~}~€~€€~€~~~~~~}~~€~€€€~€~~~€~~€€€~€~~€~~~~‚~~~€}~€€}~~€€~€~€€~€~~€~~€€~€~~~€~€~€€€~€}€~€}~€~}~~~~€}€€~€~~~~€~~€~~‚}~~€€~€~~€€~€~~€~~€€~~€~€€~~~€~~€}€~‚~€€}€€~~~€~€€~~~€}~€€€~~~}~€€~€~~~}€€}€}€~~~~~€~€~~€€~~€~}~~€€~~€~~€~~~€~€~€€~~}€€}€}€~€~€~~€}€~€~~€}€€€€~€~~€~~€€~€~~~€~€~~~~€~€€~€~€~€€}€~~~~€~€~€~€~€}€~€~€~~~~€~€~€~}€~€€~}€~~€€€}~€~}~€€}}€~€~€€~}~~€~€€~€}~€~€€~€~}~}€~€~€~€~~€~~€€~~€€~~€‚~€}~~€~€~~~€}€~€‚~€~€}€~€~€}€~~€~€~€€€~}€~~~€~€~~~~€~€~€~€~€~€~€~~~€~€~€€€~€~€€€~~€~~~€~€€~}€}€~€~}€€€~~~~€~‚€€~€}~€~‚€~~~~~~€~~~€~~€€}€~~€~‚€~~€~€€~~€€}~€€}€~}~€~€~~~~€~~~~€~€}€~~‚~~€~€€}€~€~~}~~€~€€}€~}~~~€~€}€~€~~‚~€~€€~~€}€€€€€}€~€~~~~~€€~€~~~€~€€€}~~~€~€~~~~~€~€€€€~€~~€}€€~€}€€}€~~~~€~€~€~€~~€€~€}€~~~~~€}}~€~€}~}}€~‚€~~~}€~€}€€~€€~~~€~€€~~~~~€~€~€€~€€}€~€}€~~~€~€~€~€€}~€€~€~€€~‚~}~€€€~~}€€€~~€~~€~~€€~€~€~~€€€€€~€~~~€~€}~~€€~€~€}€~€€~~€~~€€€€~~~}€~~€~€€~}~~€~€~€~~€~€€€€~~€~~€~‚€~€~}‚~~~€~€~€~€~‚€~~€~€€~€~€}~~~€€~€~~€~€€~€}€~~€~~~~}€~‚€€~}€~~~~‚~~€}€~€~€€~€~€~€~€}€€~€}€~‚€~€~~}~~€~€€~~~~€€}€~~~€~~~‚€€~~€~~€‚}€€}€~€~€~€~~~‚€~€€~€€~~}€€~~~€~€}€~‚}~€~€€€~€}~€~€}€~~}~~~€~€€}€~€~~~~€~€~~€€€€~~€~~€~‚€~~‚~~€~€€}€€~€~€~}€€€€~~€~~~€}€~€~€~€~~}~~€~~~€~~€€‚~€~€~~}~€~~~~~~~}€~€}€€~€~€~€~}€€~€~€€~~‚~~~€~€€~€}~€~~~~€€€~€}€~€}€€}€€~€~€€~~€~€}~~€~€€€~€~~€~€}~€~€€}~~~€~€€~€~~€~~€€}€~~€~~€€~~~~€~€~€€}€~~~€€~€~€~€~€}~€~€€~€€~€~~~~€~€€€€~€~~€~~~€~~€~~€~~~€}€~€~€}€~~~€}€€~€~€‚~€~€~€€~€~~€~~€€€~€~€~€~€€~€~~€~€‚~}~~~€€~€}€}~‚~€~~~€~€€~~~€~€}€~€~~€~€€€€~€~€€~€~€~€~~€~€}~~€€~~€~}€~€~‚~€~€}€}€~€~~~€~€€~€}~~~}€~~~€~~€€€~€}~~€~€~€€€~€~~€}€€€~}€}€}€}‚€~}‚~~~~€~€€~€~€~~~€~€}~~€~~~}€~€€‚~€~~~€~€€~€€~€€~€~~~~~€~~€~€~~}~€€~€~~€}~}~~€}‚€~~~€~€~€~~€~~€€€€€~~€~}€~~~}~€}€~~~€~€~~€€€€~€~}€~}~~~€€~€~~€~€~€~€€~~~‚}~~€€~€}~‚€~~~€~~~~€€~€~~~€~~€~~~€~€~‚€€~€~~~€~€€~~~~~}€~€~€€~~~~€€€‚~€~€~~‚~~~€~€€€€~~€~~€~€}€~}€}€~‚~~~~€~€€~€~€~~}~~€€~~€~~‚€€~~~~€~~€~€~€~€€}~€}~~~‚~~~~€~~~€~€~€€€~€~‚~~}~}~~€€~~€~€~€€~€}~~~~~~€~~~~~€~€€~}€~~~~€~€~€}~~€€‚~€~€~~~~€~~€€~€~€~~~€~€~€€€€~~~~€}~€~€~}€~€~~~€~€}€}€~}~€~~}€~€€~€~~€~€}~~€€~€€~~€~~€~~€€~€~~€~~€€~€~~~‚~~~€}€~€~€€~€}€~~~€€€€~€~~~‚~€~€~€~~€~‚€~~~}€~~€~€~~~~€~€€}~~€~€~~}€~~~€}}€~€~€€~€~~~~~€~€~€€~€~~€€€~~€~€~€€~€~€~€~‚€€€€}€€~~~~~~€}€~€~~‚~~€~€~}€~€~€~€~~~~~€~€‚~€€~€~€~~~~€€~~€€~€~~‚}~€€~€}~}€~}€}€€~€€~€€}€~~~~~~€~~~~€~}€~€~~€~~‚~~€}€~~~€~€~€~~~~€~€}€~~~‚€~€~}€}€~~‚€~€~‚€€~~€~€€~}~~~€€~€~~~~€€~€~~€~€}€€~€~€€~€~~~~~€~€~€€~€}~~~~€€€~~~}€~€€}~€~‚€~~€~~€~€~}€~~‚}€€~€€~€~~~€~€~€~€~~€}€~€~€~~€~~~~€}€~€}€~€~€~€~‚€~~€}€~€€€€~€~~~~€~€~€€~€~~~~~~€~€}€~€~€~€~€€~€~~~~€~~€~~~€~~~€~€€~~~~~€€~€~€€~~~~€~€€~~€~~€}~€€€}€~~~€~~€~~€~€~€}‚~€~~€~~€‚~€}~€~~~€~€~€€~€~~€~€~}~~€~€~}~€€~~€~€~~€~€~€~€~~~~€€~€€}€~~~~€~€~€~€~€€~‚~~}~€~~~€~~~~€~€~€€€~€}€~€€€~~~€€‚~€~~€}€~€~€~€~€}~~€~€€~€~€~~~~€~€~€~€~€}~~€~€€€€~~~€~~€}~€~~~€}€~€~~€~~€~€€€~€€~€~€~€}‚~~~€€~~€~~~}€~€€~€~}€€~€}€~}€~~~~€}€€~€€~~~~€}‚~€€~€~~~‚€~€€}€€~‚€€~~€~€€€~€~~}€~~~€‚~€}~€~€~€~~~€~€~€~€~~~~€€~~}~€}~‚€€€€~~€~€€€~€~~~~€~€€~€~€~~}~~€‚~€~~€~‚€~~€}~€~€~~€~€€€€~€~~~~~~€~~€}€~~~‚~€}~~€~€~~~€~€}€€€~~€~~~€~~~€~~~~€~€~€~~€~~~~~€€€€~€~~€~~€~€€}€~€€~€~~€~€~€~€€~~€~~~€~€€€‚~€~~~}€~€~€~€~~~€}~€€~€~~~€~€€€~}€}~~€}€~}~€~}}€€}~}€‚~~€}€~€~~€~~~€~€~€€~€~~~}€~€~~~~~~€~€~€€~~~€~~€~€€~€}€}~€~~€~€}~€€~~€}€~€~~~~€€€~€}€~~}~}~~€}~€}€~€~€~€€~€~~~~€~€~~~€€€~~~€~€€~€~€~€~€€~~€~~€~€~~~~~€€~~~~~€~€~}€€~~€~}~€€~€~€~~€~~€€€~€~~~~€~~€€~~~€~€~€~~€}~}€~€~€~~€}€~€~€~€~~€~€€~€}€~€~~€€~€€~€~€~‚€~€}€~~~€~€€€~€€}~€~€~~€}€€€~€}~~€~‚~~‚~€}€~€}~~~}~€~€€€~~~€}€€~~€~~~~€~~~~~~~~€~~€~}~€~€~~~€~€}€~€}€~€~~~€}€~€~~~~€}€~€€~~~~€€~€~€~€~€~~~€‚}€~}~€~€~~€~€~€~€~€€~~~}€}€~€~€~€~€~€€€~~~€~€€€~€~~€€~~€}€~€~€€~€€~€~~~€~€~~~~~~~~~€~€€~€~~~~}€}€€}€~€~~~~€€}€€~~}~‚~€~~€€€€~~€~€~~€}€}€~~€~€}€~}~€~€~€~€~~€~~}€€~€~~€~€~}€~€~~~€~€€~€~~€~~~‚}€~€€€~€~€~€~€~~€€~€~~€€~€~~€~€~€}€~~€}€~€€}€}~€~~€€}€~€~€€€€~~€~~~‚€€~€~~~€~‚€€~~~~€~~~€~€€~€~€~~}€€~~~~~€~~€~~~€~€~€€~€~€}€~~~€~€€~€~~~~€}€~€€~€~~~~€€€~}€~€€~€}~€~€€€~~~~€~€~}~~€~€€€€~€~~€~€€~}€~~€~€~€€}€~~€}€~€~~~}~~€~€}€~€€~~~€~€}~€~€~~~~‚~~~€~€}€~€~€~€~~~~€€€~~~~€€~€~€~~€~€€€~€~€€~€~€~€~}‚€~€~~€€~€~€~~€~€}€~~~~€~€€€~~€}~~~€€~€~~~~‚€‚~€~€€}~~€~€}€~~~€~€~€}€}€~~}~€~€~}€~~€~€€€~€}€€€~€~~€~‚€}~}~€~~~€~€€~€~~~}€~€€~€~€~}~€€~€~€}€~~~~€~€~~~€~~€€~~€}€~~€€~€~~‚~€~€~€€~€~~~€~€~€€€€~€}€€€~‚€~~~~€~€}€~~}€~€€~€~~€~€€€~€~}€€€~~~€€}~€~~€€‚~~€~~€~~~€~~€€~€~€~€}~~~€~€~€~€~€~€~~~~€~~€}€€}€~~~~€~€€~€~}€~€€€~~~€~€€€~~~€~€€~~€~€~€€€€~~€~€€€€~~~~€~~}€}~~€~€~€€~€}~€~€~€€~€}€~€~~€~€~€€~~~~€~€€€€~€~‚~€~~€~€€~~~~~€~€€~€~~€‚~~‚}~€~€~€~~€~~€€€~€~}€€€~€~~€~€~~~€~€€~€~~€}€~€~€€~€€~€~~~€€€€~~~~~€}€~€}€~~€~€~}€}~€€~~€~~~€€€~~€~~~€€€}~€€~€€~~€~€~~~~‚€€‚€~~~~~€€~~€~~~€~~€~~€~~€~‚€~}~€~€€~€~~~€~~~€~€€~€~~~~€€~~~€~€€~€€~€~€}€~~~~~€~€}€€~~€~€~€}€~~€~€}€€~~~~€~€‚~~€~~~~€~~€~~€~€€€~€~~€~€€€~~~~~€~€~€}€~~€~€€~€~€~~~~€~€€~€~~€~€€~€}}€~~~~~€~€~€~€€€~€~}€~~€€~~~~~€}€~~~~~~€€~€~€~~€~€€}€~~€~€~~€~~~€}€€~€}~~€~€€€~}~~~€€€€‚~}€~}~~~€}~~~€~€€€€~~~€~~~~~~}~~~~€€€~~€~~~€~€€~€~~}€~~~€}€~€}~~}€~€€~~€~~~€€~~€‚~€~€}€€~€}€}€~~}€~~~€~~€€‚€}€~~€~~‚€}~€~~€€}€~~€~~~~€}~€~~~~~~€~€~€~€}€‚~~~€‚~€~€~~~~~}€€~~~}~€€€~€~€~€~€‚}~€~€€~€€€}€}~}~~€€~‚~~~~€~€~€~€~~~‚~€~‚€~~~~€}€€€~€~€~~~~€€€}€~€~€}~~~~€~€~€€~€~~}~€~~€~€~~~~€~€}€€~€}~~~€~€€€~~€~~~~€}~€~~€~~~€~‚€€~}~€€~€~~~~€~€~€€~€~~~~€~~€€€~€~~~€‚}€~€}€€}€~€~}€}~~€}€€~€~~}}~€€~€~~~€~€€‚~~~€}€~€~}€~~€~}€~€~€€~€~€~€~€~€€~€~}€}‚€~~~~~€~€~~€~€€~€~~~~~€~€~€}€}€~~~~~~~€}€€~€~€€~}€~€~~~€}€~€€~‚€~~€‚}€€}€~~}~~€}€}‚€~~€}~~€~€€€~€€~~€€~~€~€}€~€~~}€~€~~€~€~€€~~~€€~€~~€~€~€~~€~€~~€~€~€~€~€~€€€~~€~~~€~~€€€~€}~~€€€~€~~~~€€€~~€}~~‚€~€}~~€~~€~€~€}~~~€‚€€€}}€}~€€~~€~~€~~€~~€~~€~€~€~~€}€~~€~€~€€~€~€~~~€~€~€~~~€~€~~€~€~~~~€~~~~~€~~~~~€~€€~€~~€‚~}€~€€~‚€~€}~~€~€~€~~€~€€€€}€~€~~‚~~~~}€}€~€€}€~€~~~~~€}€€}€~~~€€~€}~€}€}~€~~€}€~~~~~~}€~~€€~€€~~~€~€~€€~~€~~}€~€~~€€€~~€~~~€~€€€€~€~~~€~€€~€~€~€}‚€~€~€~~€~€~~€€}€~~€}~€‚}~€~€~€~~~€€~~~}€€€~€~}€~€€€€~~~€~€€~€~~€~€€~€}~€~€€~~€~€~€€~€~€}€~~}€€~€~}€~~}€~}€~~~~~~~€€~~€~~~~~‚~‚~~€~~~€}€~€€€~€~€~€~~~~€~~€~€~~}€~~~~€~€}€~~~€~~~€}€~~~€~~€‚~€~~€~€€~~~~€~~~}€~€€€~€~~€~~€~~~€~€~~~~€~€~€~~€}€€€~~~~€€€~€}~€~€€€~€~€€~~~~~€~€€~€~€~~~~€~€€~€~€~€~€€~€}€~~~€~~€}€}~€~€~~~€}€€~~~€}€~€~€~€€~€~€~~€~€~€~€}~~€~€~€~€~~~~€€€~€~€~~€~}€~€}€€}€€€~~€~€€~€~€~~}~€~}€~~€}€~€~~~~}€~€€~€~~€~€~€~~~‚€€~€}€~€~€€~€~~€~€~~}~€~€€€~~€~~€~€}}‚€~~~€€‚}€~~~€~~€€~~~~€~€~€~€€}€~}€~~€}€~€~~€~~€~€€€€€~€~~€€€€~~~€‚~~€}€~€~€~~€~€~~~~~€~€€~€~€‚~€~~€~€€~€~€€~€~~~~€~~€~€~€~~~~~€}€€~€~‚~~€€}€~~~~~€~~€}~}€~‚}€~€€€~~~}~€€~€}€~~‚€~~~‚~~€~€~€}€€€~~€~~~~€‚€~~€€€€~~~€}~€~~€~€~€~~~~€~€‚~~~€~€~€~€}‚~~€‚}€€~~}~€~€}‚€~~~}~}€}‚€~~€€~~~~~€~€€~~~~€~€~~€~~€~€€~€}€~€~€~€€~€~€~~€€~~€~€€~€~~€}€~~~~~€~€€~€~~~}€~~~€‚~~~€~€~~~~€~~€~~~~~~~€~€€}€~€~~~€~~~}€~€~~€~€}€€~€~~€}€~€~€€~€~~€~€~~~€~~€~€~}€€}€€~~‚~~€~€~€€~~~~~}€~€~€~~~}€~€~~€~~€€}€~€~€~€€}€}~~~€~€~€‚~~~~}~€€~€~~€~~~}€~€~€~~€}€€€€~~€~€~€~~€~}€~}€~~~~€€€~€~~~€€~~~€~€€€~€~~~€~~€€€}~~~~€~€}~€~~~~~€‚~}€€~€~~~€}~€}~~}€~€}€~€}€~~~€~€}€}€~€~€~}€}~€€€~€~~~€~€€€~€~~~€}€€~}€~€}€€€~~~~€~€€~}€~€}€~€~~€~~€€~€~}}€~‚€€€€~~~€€}€~‚€~~€~~€~€~}}~~€~€€~~€~~€~‚~‚€€}€~~€~‚€€}€~~€€~~~€~€~€}€~~~~~€~€~~€~‚~~~~€~€}~~€~€€€€~€~~‚~~~€~}€~€~~€~€~€~}€}€€~~€~€~}€€}€~~~~€~€~~~€~}€}€€~€~€~~‚~~~€~€}€~}€~~~~€~~€€€}€~€~€~~€€~~€~~~€}~€€~€~~€}~€~€~~~~€‚~~~€}€~€~~~~€~€€~€~~~~~~€€}€~€}‚~~~€~}€€~~~~~€€~~€~~€~€}}€~€~€€}€~~€~€~€~€~~€~~€€~~~€~~€~~~€~€€~€~€~€~~€~~€€~€~~~€}€~~€~~‚~~€‚~€~~€~€}€~€}€~~~~€}€~€~€~‚€~~€€}€~€}€~~~~€€€~€~~~~€€~€€~~~€~~‚}~€~€~€€~€~~~~€}}~~~€~€~~€~~~}~€€~€~€~~~€}€~€}€€}€~€~~€€~~€~~€~€€€}€€}€~€}€~~~~‚~~€}}‚€~~~€~€€€€€~~€~~€~~€~~~~‚~€~€€~~~~€~€€~}~~~~€€~~}‚~€~~€~~€}€~~~‚~€~€~€~€~€~‚}€}~~€€~~€‚~~€~€}€~~€~€€~€}~~€}€‚€~}€~~€~€€~~€~}€€~€~}~€}€€~€€~€}~~~€~‚}~~€}}€~~‚~~~~€~~~€~€€€€~~€~€€~~~€~€~~~~~~€€~€€€~~~~~€€~~~~‚‚}~€}€~€€~€~~€~~€€€~€~‚€~€~~€~~~‚~€~€~~€~€~~~‚€~€~€~~€‚}€~€~~‚€~~~}€~€€~€~~€}€~€€€~~~}€~}€~€~~‚~~~€~€~~~}€~‚~}€€~~€~€~~€}€}€~€~~€€~€~~~€}€~~€}€~€€~€~€~~€~€€~~~~€‚~€~€~~€~€€€~€~~}€~€~€~~€~€}~~~€€€~€}€~~~~€~€~€~~€~€~‚~€~~~€~€~‚€€~~€~€~‚~€~~€~€~~~€}€~€}€€}~€€~€~€~~€~~~~€‚~}€€~~~€~~€€€€~}€~~~€~€€€~€~€~€~~€}~€}~~~€~~~€~~~€~€€€~~~€}}€~~~~€~€~€€~}€~€~~~€‚}€~~€~‚}~€€€~€~}€~€€€~€~~}~~~}€€€~}~~}~~€€}€~€~€~~~€~€€~}~~€~€€~€}€~~~€~€€~}€~~~€€~}€}€~€~~~}€}€€~~€~~~}~€€€~€~~~€€}€}~€~€~€~~€~€€€~€~€€~~~€~€€€~€~€}€~€€€€~€~}~€~€~~€~€~€}€€~€~€€~~~~~€~€€~€~~€~~€€~‚~€€~€}€}‚€~~~€}€~€}~~~~}~}€~~~‚€~€~‚€~~€~~~€~~€€~€~~~€€~€}€~~€~~€€~‚~€}€~~€~€~~~~€~~~}€~€€€~€~€~€}€~~~€}€€~€~~~€~€~€~€~€~€€~~€~€€~~~~~€}€€~~~~€}€}€~€€€~€~~€~€€~~€~~€€~€~~~€~€~~~~~~€~~~€~€€~€~€€~€~€~}~~~€}€~€~€~‚€~~€~€~€‚~€~~~€}€}~~~€~€~}€~~~€}€~~€~‚€~~~}€~€€~€~€~~~€€~~~~€‚}€~~€€~€~€~~~~€~€~~~~~~~€~€~~}€~€€}€€~~€€}~€~€~€€€€~€~}~€€~€€~€€€~}~~€~}~€~€}€}€~~~~‚~€€}€~€}€~~€~€€~~~~~€~~€€~€€}~}€~~~€€€€~€~~}~~~~}€€~€~€~~~~~€}~~€~‚~~€€}€~€€~~~€~}}€~‚€~~€~€~}€€~~~~}€}€~€€~€~~~€~€€}€}€~€~}~~~€~€€€~€~~~~€~€~€}€~€~}~€~€}~}€~~~~~~~€€~€~~€~~~€€€~€~}€~~€€~€~~~~€~‚~€€~€~€}€€}€~~~€~€~€€‚~€~€}~}€~€€}€~~€~€~~€}€~€~€~~€~~€‚}€~€~€}€~~€~€~€~€~~€€€~€~€~~~~€€€€}~~~€~€€~€~~~~~~€~€~~€}€€€~€~€~~~€~€~~~€~€~€~~€~}€~€~€€~}~€~€€~~€~€}€}~€~~‚€€~€~€~~€€}€}~~~€~€~~€~€~~~€~~€}€~~~€€€~€~~€~€~€~~~~~€~~€€€‚~€~~€~€€~€~~~€~~€€~~~~€~~€€~€~€~~~~€€~~~€~€~~€~€€~€~}€~~~€~€~~€~~‚€€~€~~}€~€~€~~~}}€}€}€~€}‚~~~€~€€~~~€€€}~€~~€~~€}€€€}~~~€~€}~~~€~~~‚~~~€‚}€~€}€~€~~~~€~€~~~~€}€~€€~€~~€~€€~~~~€~€~€~€€€€}€}~}€~€€~~€~~}~~€€}~~€~€~~~€~~€}~€€}€~~~€€~~~‚€~~~}€~€~€~~€~€€‚€~€~~~€~~€~€€~~€}~}~€‚~€€~€~€}~~~~€€~~~~~}€~}~€~~€~€~}€~~€€~€~€}~€~~€~~~€~€€~€}€~€~€€~€€}€~€€~~€~€}€~‚€~€~~~€~~€~€}€~€~€~~€~€~~~€‚~€€}€€€~€~~~~€€€~~~~€~€~€~~€~€~~€}€€~€€~~€~~€}~~~~‚~~~€~€~€€}€~€~~€~~~~€€~~€}~~€~€‚~~~€~€€~~}~€~~~~€€}€€~~€€~€~~€‚€€€~€~~€~€~~€~~~€~~~~~€~~€€}€€~€~€€~€~€~~€€~~}€~€~~~€~~€~~~~€~€~~~~€}€}€~}‚‚~€~~}~€€€~€~~}€~~€~€~~‚€~~~€€~€~€~€~€~~~~~€‚~~~€~}€}€}}€~€~~~}€~~€~‚~~~€~€}€~}~€~€‚}€~€}}€~€€~~~€~€€€‚~€}~~‚~€~€~€~~~~~€}~~€}€}~~€}€~~€~}~€~€~€~€~~~~}€€}}€~‚€~~€~€€~€~€~~€~€~~}€~}€}€}€~€}€~~€~€€~€~~~€~~~~~~€‚~~~€€}€€~€~€}~~~~€~€~€~€~~€€€~~~~€~€€€€~€~€~~€~€€€}~~~€~€€~}~€~~~~~€~€€~~~~~€}~€€~€~~€~~‚€€~€}~~~~€~€}€}€€~€~}~~€~€}~~€~€}€~€€}€~€~~€€€€€~€~~~~~€~€€~€€}€~€~~~~€€€~€~€~€€€~€~~~}€~~~‚~~€~€~~}€~€€~~~€}~€€€~~~~€€~~~€~~€~~€~~~~€~~€€€~~~~~€€~€~~~€~€~~€}~}~€~~€~€€~~~~€~€€~~~~€~€~€}€~}}€~~€}€~€€~‚~€~€~€~€€~€}~€~€~€~~~€~€€~~~€~~~€€€~€~€~~€~~€~}€~~}~€~€~~~}€~~€€€~}€~~~~€€€€€~~~€~€~€~€~~‚€~~€~~€~€~~€~~€€~€~€~€~~‚‚~~€~}€}€€~€~~}€~€€~€€}‚€~~~~~}}€~~€€€~~€~~~€€€}€~€~€€€~€}~€€€~€}~€~€€~~~€€~€~€~€~~~€}~€~€~€~€~€~‚}€~€~~~~€‚~€€~~€~€€‚~€~€€~€}~~~~€~€~€~~~€~€~€~~€~€}€~~~~€~€€~€~~~€~€~€~~~€~~€~€~€~€~~€~€€~~~~€}€€~€~~€~€~~€~€~}~€€~€}~~€~~€€~€~~~€~€~€€~~‚~€~€~€~~~~~€€~€~~~€€~~~~€‚~€}€€€~€~€}~€~€~~~}~~~~€}€€}€~€~}€~€~~€~€~~€~~~~€~~~€~€~~€}€€~‚€~€}~€€~~~~~€~}€~}€€}~~~~~~€~€€}€~~~€~€~€~~~}~€~€~€~€}€~~€~€‚}~~€}€€~€}~€€‚~~€~~~€~€€~~€~‚~~€~€€~€~€~}~€~€~€~€}~~€~€~€~~€~€~~€}€~€~~€~~€€~€~€~€~€€~€€~€~€€~€}~~~€€€€~~~~€~€€€~€~~~€~€€~~~~~~~€~€~~~~€~€~€€~€~‚€~€~}~~}€€€~€~~~€~€€}€~~€~€€~€}~€~€~€~‚~€~‚€~€~~~~~€}~€}€}~~€~‚€~~€~€€€~€~}€~€€~€~~€~€€€€~~€~€~~€~€~€~€~€~~~€~€}}€~~€€~~~~€~~€~€~~~€~~€€€~€}€~€~€~~€}€~~}€~€€~~~}€~€~€~~€}€€~~€~€€~€~~~€~€€€~€~€~~~~€€~~€~~~€~~~~~€‚€~~€~€~~€€€~€~€~~€€~€~€~€~}~~}€}€~~€~~€€~~€~~~~~€€~€~~~€€€~~€~~€}~€€€~€~~}€~‚€}~~~€~€~~€~~~€~~~€~€~€~~€€~€}€~€}€~€~~~€~~€}~~€~€€~~~€~~}~~€~€~€~€}€~€~~€~~€€€~~~}€~€~€~€~~~€~€€}€€}}€€~~€}~€~€~~€€€~€}~~~~~}~€~~€}€~‚~€~~€€~€~€~~~~~€~}€~€}€}€}~~€~~~€~€}€~~~€~€~€~€~~€}€~€~~€€€~€~~~€~~€~€~}€~€€~~€~~~€€~€}~~€~~€~~~€}€€~€~€}~~~€~€~€}~~~‚€~€~€}€~€€€~~~€~€€~~~€}€~€€€€~€~€~~€~€~€€€~~€~~~€~€€~€~€~€~€€€~€~~~€€~~~}~€‚~€~~€~€~€~~~€~€~~}€}€~~€}€~~€€}€~~€~~€~€~€~}~}€~€€}€€~€~~~€~~€~€€}€~€}€~~~€}€~€~€~~~~€~€€€€~€~~~€€€~€~}~€~~}~~€€}€€~~~~~€~€~~€€~~€~€~€~‚€€~~~€}€~}€~~~~~~~~~€~~‚~€~€~€}€~~~€~~~€~~~~~€~€~~~~~~€~€~~€€~€~~}€€}~~€}€~~€€€~~€~€~€~~~~~€~€}€~€~€}~~}~€~€€~‚~€~€~~~}~‚€~~~~~€}~€~€€~€~~~€~€~~}~€€~~}€€}€~~€~€€~~€}~}€~~€~~€}€€~€~~~~~€~€~}€€~€€}€~€~€~~€~~~~€~€~€}~}€€€~~€~€~€~€€~~~}€~€~€€}€~€~‚~~~€~€~~€~€€~~€~~~€~€€}~€}}}€}€~~~€~~€~€€~€~}€~€€€€~€~~€~€~~~~€~€~€}€‚~~}€~€€~€~~~~€~€€~€~€~€€~~~€~~€€€€~€}~~€~~€€~~~€~€~€~€~€~~€~€‚}€}€~~€~~€~€}€~€€‚~~~~€~~}~‚~~~€~}~~}~€~€}€€~€~~€}~~~€~€}‚€~~~~~~€€€~~€~€~~€€~€€~€}€€}~~€~€€€€~€~€~~~€~€€~€~~~€~€€€~~~€~€‚~~~€~€~€}‚€~~}€~€~}€~~}~~€}~~~}~~~~€~€€~~~~~~€~~€~~~€~€~€~~}~€~€~~€}€€~~€~~€€~€~~€€€~~~~€~€€€~~€~~€}~~€‚}€€~~€~€~€~~~~€~€€~€~~~€€‚}€~~~~€€}€~~€}~~€}~€~€€€€~~~€}‚€~€~~€~}~€€~~€~€€~~~~~~€}€~€~€~~€~~~~~~~€~€~€~€~€~~}€~€€~€}€~~~~~€~}~~€~~€~€~€}€€~€}~€}€}€€€€~~€~~€~~€€~}€~}€~€€}~€~€€~~~€~€€~~€~~~~~€~~~€~€€€~€}€~~~€}€€~€~€€~€~~~€~€~€~‚~~~€€~€~€~~}~€~~~~~~~€‚~~€~€}€~€~€}~€€~€~~~€~€€~€~~€~~~~}~€~~~€~€€€~€~€~}~€~~‚~~~€~€€}€~~}€~€€~~~~~~€~€~€~€~~~~~~€}€~~~€~~~€€€€~€~~€€€€~€~€~~~~€~~€~~€~€~~€}~€~€~}~}€~€€‚~~€~€~€~}~€€€~€}~~€~€€€~~€~~~€€~~}~~~€‚~€}€~€~€}~~~~€€€~~~~€€€~}€~~€~€~~}€~}~€€}€~}€~€~~~~€~€~~€€€€€~~€~€€~€€~‚€~~€~€~~~~€~€€~~}~~€~€~€~‚€€~€~~€~€~~}~~~~€~€€~€~~~~€€~}€~~~~~~€€€~~€~~€€€€~€~~~€~~~~€€~~~~€}€€}€€~~€~~}~€€~~~€~~~€~€~€}~€~€~€€€‚~€~}~‚€€€€~€~~~€~€~€~~~~€~€~€€~~€}‚€~~‚€€~~€€~€~~€€€~€}€~~~€~€€~€}€}~~€~€}€~€~€€~~}~~~€~€~~€}~~€}€~€}~~~~~€~~€}€~€~~‚~~~~€€~€€}€~~€~~€}~~~~€}~€~€~}€~~€~~~€~€€€~~€~€~~€}€~~€~€€~€~€€~€~€~~~€~~‚~}€~€}€}~~~~€}€}€~~~~~~€~€€}€€~~~€}~€€~€~~‚~‚}~€}€~€€€~€~~~~€~€€~~€~€~€~~€}€~€€~~€}~~~€~~~~€~~€€~~€~€€~€~~}€~€}~€€~}€~~~€€}€~€}~~~€~~€~~~~~~~€~€}€€~~~~€~~€€‚~~~~€‚~~€~€€~€€}€~€~€~€~€}€}€~~~€~~‚€€€~~€~€~~€~€~~€}€~~~~~€€~~~€}~€€€~€~€~~}€~€€€~€~~~€}€~€~€~€~~~~€}~~€~~~~€€€~€~}~€~€~~~€€€€~~}€~€€~€}€~~‚~~€}€}€€~~€~€€€~€~~~~~€~€~~€~€~~~€~~€‚~~~~€}€€~~~€‚~~~€~€~~~~€~€~~}~€€€~€~~~€~‚€€€~€~€}€~€~‚€~}€~€~€~~~~€~€~€€~}€~~~€~€€~€~~~€}€€~€€}€€}€~~~}~€~€€~~}~~€~€~}~~€~€€€€}~~€~€}€~€}~€€~€}€~~~}€~€€~€~€~~~€}~€~~€~€~~~€~€}€~}‚€~€}~}~}€~€~}€~~€~€€~~€~~~~€~~€~~€~€~€~€~€‚~€~€~~‚€~~~€~€‚~€}~€€~€€‚~€}~~~€~€€~€~~~~~‚€‚~€~~€€~€~~~€~€€€~}€~}€€~}~~€~}~~~€~€€}€~€~€€}€~~~~€}€€~€~}}€~}€€~‚€~~~~€}€~€€€~€€~}€~~€~~~€~~~~€~€€~€~€}~€}~~€€~€}~€~€~‚€~~~~}€~€€~~~€~€€~€~€~€~~€€~€~€~€~€~}‚~~€}€~~~€€~€~€~~~€€~‚€~~€~€~€€~~€~€~€~€}€~~€~€€~€~~€}~€~‚~€€~€~~€~€~~~€~~~~€€~€~€€€~~€~~~€~€~€~~€~€€~€}€~~€€‚~€}‚€~~‚~~~}€~€}€€~€~~€}€~€€~€}€€~~~€~~€€~}~~~€~€~~~~€~€~€€~€}€~~€€~€~€~~~~~€~~€€~~}~~€~€}€€~~€~~~€~~€€~~~€~~€~€~€~~~€~€~€~€~~}~€~~€€~~€~€~€€‚€~~€}€~€~€~€€~~€~~~~~€€~€~~€~~~~€}€~}€~~~€€~€}€~€~~~~€€~~€~€€~~€}€~€~€~~~€€~€~~~€~€€€€~~~€~€~€~€~}~~‚€‚}~€~€€€€€~€~~€~€€~€~€~€~€€~~€~}~€€~~€~}€~€}~€~€€€~€~~~~€~€€~€~~~€~€€‚~€~~~€~€€‚}€~~€~~~~€}€~~€~~~€~~€~€€~€€}€~€€~~€~€‚~€€~~}€~~}~~€€~€~~~~~€~€~€~€€~€~€~~€€~€~~}~~~€}€€~}€€~‚~~~~€~€~~€~€~€}€~€~€~€~€~€}~~€~~~~‚€€€€~€~€~~€~~€~~€~~~€}~€~€€~€€~~~~€~€€€€~€}€~€~}~€~€€€~€~~€~€~€~}€€~€€~€~}€}~€€~€~€~~}~€~€€~€~~~€}€‚~€~~€~€~~~€~€~€€€~~€~~€€€~€~~€~€€€€~~~~€~€€€~€~€~~~~~}€~€}€~€€~€~€~€~€€~~}~€~€€~€~€~€€~€~~~€~€~€€~€~€}‚€~}€‚}€~€~€~€€~~€~~€~€~~~~~€}€~€~€€~~€~€€~}€~€€~€~€~€€~€€~€}€~~~~€€}~~€~~€€€~~~~€~€€€€~€~€~~€€}€~€~€~~~€~€~~€~€~~~€~€€~~~€~€~€~~€~€€‚~€~€~€~€€}€~€~€€~~~~€€€~~~~€~~€~€€~‚~~~€~€~€}€~~~}€~€€~€~~€~€~}€€€~~€~~~€~€€~~€~~~~€}€~~~}‚}€~€~€~‚€€~~~~€€~~~€~€€€}€~€}€‚€~€~~~€€€~~~}~€€~€~~€~€~€}~~€~€€~€~€}€€~~€}~€}€~~~‚~€~~€~‚€~~~€~€~~€~~}€~~€~~€~‚€€€~€~€~~}~€~€}€~€€~€~~€€€~€}€}€~‚€€~~~€€€~€~~€}€€€~€~~€€~~~€~~€€}~€~€€~€~}~€~‚€€€~€~€~~‚~~€~€~~€}~€~~~~~€~€~~}€~~€€€€€~€~€~~€~€~€~~€~~€~~~~€~€€~€~~€~~~€~€€~€€~}€~~~€~€~~~~}€~€~}~€~~~€~€€~~€~~~~~€~€}€€}€~€~~~€~~€~~€€~€~€€~€~€~€~~~~€}~€~~€}€~€~€~~€~~€~€~~~‚~~€~€}~~}€~€€~€€~€}€}~~€€€~€~~€}€~€~~~€~€€~€~€~€~~~€~€~€~~€~€~~€~€~€€~€~€~~~~~~€€~€~~~€~€~€€€~€}~}~€€~~~}~€€€~€~€~~~€€~€~~€~€~€~€~~~~€€~€}~€~€~€~€€~€~~~}~~€}€~~€~~~~€~€~~‚~€~~€~€~~€}~€~€~€~}~~~~€~€~€~~~€~~€€€~~~~}~‚~€~€€€~€}~€~~€€}~}~~}€~€~€}€€€€~~~€}€€~~~€~€~€~€~€}€~€~~~‚€€€~€~~€~~€€~€~~€~€~~€~€~}~~€~€~€~€~~€~~~€~€}€~€€~~~~~~€€~€~~~€~~€~}~€~€€}€}€~‚~€~€€~€~€~}~€~~€~€€~€}~€~~}€~~€~€~€~~€~€~€€~~€~~€€~€~~€~€€€~€~€~~~~€€~~€~~€~‚€€€~€~~~€~€}€~€~~€~~~~€~€}€~‚€€€~‚~€}~~€~~~~~€~~€~€~€€~€~}€~~~~~€~€~€€€~€~€~~~€~€~~~~~~~€~€~€~~€~~€~~~~€~€€€~€~~€~€€€€~~~€~€~€€~€~€}€~€~~€~€~€}~~~€€‚~€~€~€€~~€~€}~~€€€~‚~€~~€~€€~~€}€~€~€€~€~~~~~€~€~~~€~€}€}‚€~~}€~€€~~~€}€€~~€~~€~€~~€~~~€~€~~~~~€~€~~€~€~€}€~€~~€~€~€~~€}€}~~€~€~€~€€}€~~~~€~€~€€}€€~~€~€~€~€€}€~~€~€}~~€~~~€~€~~~€}€~€~~~€~€€~€~~~€~€‚~~€~~€~‚~€€€~€~~~€~€~€€~€~€~~€}~€€~~€~€€~€~~~~€~‚‚~~‚~~€~€~~€~‚~€€~€~€~~€}~~€‚~€€~€~~~~€~€€€}€€~‚€~~€~€€‚~€~€~}~€€€~€~}€~€~~‚~€~€~~~€€~€~€~€~€€}}€~€~€~~~}€~€~€~~~€€}€~€~}~~€}€€~~~~~€~€~~€~~€€~~€~}~€~~~€}~€~€€}€~~~€€€€~}€~~}~~}€€~€~~~~€~~€€}~}€~€~€~€€~~~€~€~~~~~~€€‚~~€€€}€~~~€~€~~€€~~~€}€~~€}~~€~€~~~€~€~€€}€€}~€€~€~~~}~~€~€}€~€~~~~€~€€~~‚~€~~€~€~~€~~~€~€€€}€~~€~€€€~€~€~~€}€~€€~€~~~~€€€~€~~€~€~~€}~€}€~€€~€€~€~€~€~€€~}‚€}~€}€}€€}~~~€~€€~€~~~~€~€‚~~~€~€~€}€~~€}€€~€~€~€~€~€~}€~€~€~€~€~~‚~~~€~€~}€€}‚~~~~€}~~€~‚€~}~€~~~€~~~€}€~€‚~€~~~~€€}~€~~€~~}€€~~€~€}~~€~€~€€€~€~}€~~€~€~~~~~~€€~€~€~€}~~~~}~€~€~~~€}€~€~~~‚~~€€~€~~€~~€€}€~€€~€~€€}~€~~€}€~~€~~~~~€~~€~~€~~~€~€~€~€~€€}€~€~~~‚}€~~€€~€~€~€}€~€~~‚~€€€€€~€~}~~€~~~~~~€~€€~€~~€}€€~~€~~€~~€}€€~~€€}€~€~€~~~~€~€~€~}‚~~}€~~€~€~€€~€~€~€~~~~}€~€}€}€€~€~~~€€~~€~~€~€~€~€}~}‚€~€~€€€~€}}‚~~€~€~‚}€~~€~€€~€~~€~€€~~€~€~~€~~€~€€~€~€}€~€~~€}~~~€~~€~~€~€~€}€~€~€€€~~~~€~~€€~€~€€~€~€€~€~~~€~~~~~~€~€~~~~~~€€€~~~~€~€~€~‚~~~€~}€}€€}€~~}€~~~~~€€€~€~€~~~€€~~‚€‚~€~€~€~€~€~~‚~€~€~€~€~~€~~€€€~€~~~€~€~€~€~€€~€}€~}€~~€~€~}‚€‚~~€~€~€}€~~}€~~€~~~€€}€~~€~€~~‚~~~€‚~~€}€~€~~€~€~~€~~~€~€€~€~~€~~}€}€~€~€~€~}€~~€~~€~€€€~€€~~€€~€~}~€~€€€€~€~€€~~~~€€€~€~~€}~€~€~~~€~€€~~~}€~€~€}€~~~}~€€€‚~~€~~~€}€~€~€~~~~€~~€~~~€€~€~}€~€~€~~€}~}€€}€‚~€}~€~€€€€~~€~~€~€€}€€~€~€~€~~~~€€€€~~}~~~~~€~€~€~€~~~€~€€~~€~€~€~~~~~~€€~€~€€€‚~}€~~~~€~€€~~~€~€}€~€}€~€~‚~~~€~~€~€€~€~~}€~~€€~€€~€~~€}‚€€€€~~~~€~~}}}€~‚~~€~€~€~‚€€~~€~~~€~€~~~~‚}€~}€€~~~€€~~€~~€}~€}}€}€~€~€~~€~~~€~~~€~~~~~~€~~€~~~€~€}~€~€~‚~€~~€}€~~€€~€}~~~~~€~€~€€~~~~}~€~€€~~€~~€~€}€~~€€~€~~€~€€~~~€}~~€~~€€~€~}€~‚}~€~€‚}€€~€~~€~~~~~€~€‚}€~€}€~€~~~}€~€~€~€€~‚‚~~~~€~€~€~}~~€~€€~€~~}}~€~~€€~€€‚}~~€}~€~~€‚~~€~€~€~~€~~€}~€~€€~€~~~€~€~~€€~}€~€~€~~~€~~€€~€~€~~~€~€~~~~€~€~€~€€€~~€~~~€€€~~~~~€~€€~€~€~~}~~€€€~~~~~}€€}€~~€~€~~~€~~~€~~~€}~€~€~~}€~€€~}~}€}€}€~~€~€€}~~~~~~€~€~€€}€~€~€}~~€~}€~~~€~€€}~€~€€~~~~€~~€~~}‚}~~}~}€}€~€~€~€€~~€~~~}€~€}~€~€}€~€~}€~~}€}€~€}€~€}€}€}~€~}~€~~~€}€~}€~}~€~€~€~~€€~~€~€}€~~~~€€}~€~€}€~‚€~‚~€}€~~€~€€~~€~€€~€~~~~€~€€~€~€}€~~~~~~€}€€€~~€~~€~~~~€}~}€~€€}€~€€~€~€~~‚~‚~~~€}€€~€~€~€~€~€~€~}~€€€~€~~€~€~~€€~€€~~€~€~€~~€~~€~~}~‚€~€~‚€~~~~€€€~€~~€~~€~€~~~~€~}~~€€~€~€~€€€~€~~~€~€€~~~€~€~~€~~€€~€}€~~~€‚~~€~€}€~€~€~~~~€~€€~€~€~~€~~€}€~€~€~~~~€~€~~€~~€}~€~€€~€~~~€€~~~~€~€€}~~€~€€‚~€~}€~€~~~~€~€~€€€~€~~~€€~€}€~~‚~€~~€~€€€~~}~€}€~€€~~€~~€~~~€~~‚€~€~€~€€~~~€~€}€~€€~€~~€~€€~€~€~€}~€~~€~€€~~~~€~~€~€~~€€€}€~~~€~€~€}€~~€~~~~€~~€~~}€€~€}€~€~~€€~~~~€~€~}€~}~€~~€~~€~€}€~€~~€€~€~€~€~€~~~~€‚~~~~~~€‚~€~€}€€~€~€~€€~~€~~€~~~~€~€~€~~€€€}€~€€~€~€~€~~€~€€€~€~~~~~~€~~€}€}~~~€~€}€€~€~~€~~€~€€€€~€~~~~~~€~~~}€~€}€€}€~~€~€~€€€~€~~~~€~~€~€~~~~€~€€‚}€~€~€~~~€~€€€~€~€~~~€€~~€}€~~€}~€€~}~€~~~~€€~€~€~~~€‚}€~€‚~€}~€~}€€}€~€€~€~~~~€~€~€}‚}~€}€€~€~€}~€~~€€€~~~~~~€~~€€~€~~~€~€~€€}€~‚~~~€~~€~~~~~~~€~€~€€€€€~€~~~€}€€~~€€~€~}~~€~€~~~~}€~€€€~€~~~€~€~€~€~€€~~~~~€~‚€~€‚~~~€}~€~€€€~€~€~€~€€}€~~€€€~€~~~~€€~€~~~€~~~€~€€~~€~€~|€€~}€~€~~~~‚~~~€}€~~€}~€~}~~€}€~€~€~€}~~€~~~~~~€}~€~~€~~€€€~~€~~€~€~€~~€€~€~~~€~~~~€‚~~€€~~}~€€€}~€~€~~€~€~~~€€‚~€~€~~~€~~~~€~€~€~€~~€€€€}€~€}}€~~~€€€~~€~~€~€‚~}€}€~~€~~~~€~~~€~€~~~~€‚~~€~~~€~}€~€~€}€~€~~€~€€}~€~~‚~~€€}€}~~€~~€~~€}€€~€~}€~€€€€~€~~€~~~~~€€‚~~€}~~~€}€~}€~€~~€~€€€€~€~~~~~€~€~~~~~€}€€}€}€}€€}~€~€~~€~€~~€~€~~}~€~€€}€~€~~€~€~~~~€€€~~€~~~€~€}€~~€~~~~€€~€~€~~€~~~~€~€€~~~~€~€~}€~€~€~~~€€~}€~~‚~~~~€}~€€€~~€~€~~€€~}€~~~€~€~€}€~~€‚~€~~~€~~€€~~~€~~€~€~€~~€~~€~€~€~}€~~~€~€~~~€~€‚~~€~}€~€~€€~€~~~€~€~€~~~€~~~~€~~€€€~€}€€~€€~~€€~~€€~€~~~}~~~‚~~€~}~~~€}€~€}€}€~€~€~€€€€}~~€}‚~~~~€~~~~~~€~€€‚~~€~€€~€€~€~~€~€€€€~~~~~~‚~~€€~€~€~~€~€~€€~€~€~€~€€~~}€€~€~}~~€‚~~€~€~~€~~~~€€~€}€~€}€~€}~€~€€~~~~~~‚~~€~€}€~~~~€€~€~€~€}€~~~€~€€€~€~~~~€~€~~€~~€}~~€~€~€}~~€}‚€€~€~~~~€‚}~€}€~€~€~~~~€~€~€}€~~‚€~~€~~€€€€‚~}~~~€€}€~€~€~~~~~€~€~~€~€~‚€~~}~€~€€€€}€~~~€~}€}€~€~~~~~€~€~~€€€~€~€~€~~~€~€~~~~~~€~}€~€}€~~~}€€€€}€€~~~‚~~~€}€~€}€‚~€~~}~€€}~€~€~~}~€€~~~€~~€€~€~~€€~€€~~~~€‚~~~~€}~€€€€~€~€~‚€~~‚€~~‚}€~€}€~€~~~€~€}€~~€~€~~~€}€~€~~€~~}~€€}€€€}~€~€€~€~~‚}~€~€}€~~€~€€~€~~€~€~€~€~€}~€~~€~€~€€~€~~~€~€~~€~€€~~}€~€~€€~€~€~€~~~€~€€}€}€~~~~€€~€}~~€~€~€€~~€~~~€~€~~~~‚€€€~€~~~~€~€~€~€€€~~€~€€‚}€~€~~~~€€€€}€}~~~€‚}€}}€€~€~~~€}~€€€€~€}€~~~€~€€€~€~€~}€}€}€~€}€~~€~€€€€~€~~~~€~€€~€~~~€~}€~~~~~~~€~~€‚~€~~~~~€}€~~€€~‚€~€~~~~€~~~€~~€~€€€€~€~~~€~€}~‚€~~€~€~€}€€}€€~~‚€~~€~€€€€~~~€~€~~€}€~€‚~~~~€~€~~~~~}}€~€€€€~~€}€~€€}€~€~€€~€~~~€€~}€~~~~~€€€~€~~€~~€~€}}€~€~€€€~~~€}€~€~€€}€€}€~~€€~~€~~~~~€~~}~~€~€~€~€~‚€~~€€~€~~€~€€~€~~€~€€~€~~€~€€~~~~€€~}~~€~~€€€~~~~~€€€}€}€~€}€~~~€~€€~€}€~~€~€}~€~~€~€}€~€~~~‚~~€~€€~€~€~€~~‚}€~€~~~}~~€~~~~€€}€~~~€~~€€~€~€~}€€}€~~€~€~€}~}€}€}€€}€€~€~~~~~€€~€}}~~~€€€~~~~€~€~€~€‚~€€~€~€}~~~~€~~~~€~~~€~~€€~~~~~€€}€~~€€~€~~~~~€€€~€}~~~€~€}€€~€~€~€}~~~€~~€€}€~€€}€€~}€~~€€€~€~~~}~€}€~~€~€~€~~~€~~€€~€~~~€~~€~€}€~~}€}€~€€€~€~€~~€~€~€€}€€~€~€~~~€~~~€~€€€~€~~€~€€€~€~~~€~€€~~~~€~€€~~€~~€€~€~~~}~€~€~~~€~€~~~~~~~~~€€~€}~€~€‚~~~~€~€€€~~~~~€€~€~~~~€€~~~€}~€~€~~~~€}~~€€}€~€~~€~}~~~€~~€€€~~~€~€~€~~~€~~~€~€€~€~~~~~€€}€~~~€€~€~~€~~~€~~~~€~~€~€~‚€~~~€~€~}~€~€‚~€~}€}€~€~~~}€~€€~€~€~€~€~€~~~€~~€~~€€€~~~€}€€~€~€~€€~€}€}€~~€~~~€}€~~~€~€~€~~€~~~€~~€}~€}€~€‚~€~~~€€€~}€€}€€~~€~€€~€~~~€~€€~~€~~~~€€~€~~€€~€~~€}€~€€~€~~}~€€~€~€€~}‚~~~€€~~~~~~€€€}€~~€€~€~~~~€~€~~€}‚€~~}€€~€~~€~~~€~€~€~€~€}~‚~~€~€€}€~€~€~€~€~~~~~€~€€€~€~~€~€€€~€}€~~~€€€~€~~€}~€€~~€~~~~~~€}~€~€~~€~€~€€‚~€~}}€~}~€~€}€€~€~€}~~}~~€~€€}€~~}}~€€~€~~~€}€€€€~€~~}€~€€€€~€}~~€~€~€~~~~€€~€€}€~~€€~~~~€~‚€€‚€~€~~~~€€}~€~€~€~~~€~€}~~}€~€}~€}}~~~~€€€~~~€~€}€~~~}~~~~€€~~€~€€€~~~€~€~€~}€€~€~€~€~€~€~€€€~~~~€~€}€€~€~€€}€€~}~~€~€€€~~€~~€~‚€~€~€}€}~~‚€~~~}~~€€~€~~~€~€€€‚~€€~‚~~‚~~€}€€~€~€~‚~€~~~~€~~€~€~~€~€~~~‚~€~€~€~~~€~€€€~~~€~€}€~€‚~€€}€~€~€~~€€‚~~€~~€}~~€~€€~€}€~~}~€~€~€}€}~~€‚~€}~€~€~~~€~€}~~€~€€€€~€€~€}~~~~€~€~~€~~~€~~€~€€}€€~€~~~€~€€€~€}~€~€€~€~€~€~~€~‚€~~~‚€~~€€~€~~€~€~€€€~€~~€~€~€~~~€~~~€~~~~‚~€€~€€~~~€~~€€€€~~~~€€~€~€~~€~€€~}~~€~€€‚}~€~€~‚€€~€~€~~€~~€‚~~€~€~~~~~€€~€€~€~€~~~}€~€~€~€~€~€~~~~€€€~€~€~~€~€~€}~‚~~~€~€~€~~}€~€€~~€~~}~~~€~~€~~€~€~~€~€€‚€~€}~€€~~€~€}€~€~~~}€}€~€~~~~‚~€~€€~€}~~~€~€~€~~~~~€€€€~€~~~€€‚~€~~€~~~€‚}€~€~€~‚€~~~~~€~€}~~€€€€~€~€}€~€€~~€~}€}~~€~~€~€~€~€~~€~€€€€~€~~~€~}€~€~€}€~}‚~~€~€~€~€}~~~€~€~€€~~~~~~€~€~€~}~€€~€~~€~€€~~~€}~€~€~~}~€}€€~€~€~~€~€~€}€€}€~~‚}~~€€~~€€~€~€~~}€€~~~~€~€~~~}€~€~~}€€}€€~~~€~€€€~€~~~€~€~~~€~~€~~~€~€€~~~€~€€~~~~€~€}~€€}€~~‚~‚~~~€~€~~€€~€~~~€€~€~~€~~€€~€~~€}€~~€~€~~€€~~€~~€}~€€~~€~€~€~€}€~~~€€}~~~€~~€‚}€~}€}€~€}~€~€~€}€~~‚~~€~€~€~~~~€~€~~~€~~€}€€~}€~‚€}€€~€~€€~~~‚~~}~€~€}€~~~€~€~€~‚~~~€~€~€~€}€€~~~~~€€€€~€~€~€}~€~~~~~€~€€~€~~€~€€~€~~~~}~€~~€~~~~€€~€~~€~~~~€~€€€€~}~~~€~~~~~~€~€~€€~€~€~€~~~~~€~€~€~€~~~~~€}~€€~€~~~€~€‚~€~€}€~€€~~€~‚€€€~~}~~€~~~}€}€€~€~€€~~€‚~~€~~€€~€~€~€~€~€~~~~€‚~€}~€~‚€~~~€~~€~~~~}€}~~~€‚~€~€€~€}€~€~€~€~€~~€€~€~~€~€€‚~~~~€~€€~€~€}~~~€~€€€~€~~~€~}€~‚€~€~~~€~€~~~~~~~}~}€}€~€~€~~~€€€~~~}}€~~~~€~‚€~~€~€~~~€~€~~€~~}~€~~~€~€€‚}~€‚~€~~€~‚~€~‚~~~€~~~€}€~€€€~€}~€~€€~~~€~€~€~€}~€€€~~€~~~~€€}€}~~€€‚}€~~~~~€€~€}~~€€~€}€€~~€~~€~~€~€~€}€~~~}~€~€~}}€€€‚~~~}~€€~}€~~}‚€~~~~~~€‚~€€~‚~~~€€~€~€~~~~€€€}€~€€~€~~~~€~~~€}€€~~~~}€~~€€€~~~~~}€~€€€~€~~~€~€}~~€€~~~~~€€~~}~~€~€~€~€~€}€}€~}~€~~~~~~€~}~~€~~~~€€}~€~€~€€~~€}€~}€~~~€~€€~€~~~~€€~€}€~€€~~~€~€€€~~~}€~€~€~~€~€€€~€~€~€~€~~~€~€~~€‚}~€~€~€~€~€}‚€~~~€€~€~~€~~€~~€~€~~€€‚~~~€}€€~€}€~~~}€€}€~€~~~€~€}€~€€~€~~~~€‚}€€}€~~~€~~€~€~€}€~~€€€~€}~~}€~€€~€~~~~~~~~€€~~€~~}€‚€€€~~€~~€€€~€~~~~~€€~}~€~€~€€~€~€~€~€~~€~~€~€~~€~~€}€}€~~}~€~€}€}‚~~~~€~~~€~€~}€€~€~€~€~~~€~€€~€~~~€‚}€~~€€~€~€~~~~~€€€}~~~€€~~~~~€~€~€€~€€}€~~~~€~€~€}€~~€~€~€}~~€€~€€}€€~€~€€~~}~€€~~~}€~€‚~€}€~€€~€~~‚‚}€}~€~€~~‚€~€~€~€~€€~~~~~€~}€€‚~€€~~€}€€~€~~€~€~€~}€€~~~~€}~€~€~~~€€€~~€~~€~€€~~~~€€€~}~~€~€~€}€~~~~€~€}~~€~€~€€€~€}~~€~€€~€~~~€~~€€~~}€}€€}~€~€~€~~}€~€~~~~~€~~~‚€€‚~~€~~€}€~€~}€~~€~€~€}€}}~~~€‚~€~€€€~€}~~~€€~€~~~€~€~~}€~‚€~}€~~€~~€€~~~~~~~€~€~€}€€~€~€~}€‚~~~€~€‚€~~~~€~~€~~~‚~~€~}€~~€}~~€~€€€~€~€}}€~€~€~€~€€}€~~~~~€~€~€~€~~~€~€~€~€~~~€}€~€~~~€€~€~~~~€~€€~~~}€€€€~€~~€~€~€}~~€~€€€~€}~~€€€€~~~€~€~~€}~€~~€~€€~€~€~€~€~€~}€~€€~€}€}€~~~~€~€}~}~~€~€~€~~€~~€~€~€}€}€~€~~~~~€‚~€}€~€€}€~~~~€‚}€~€~€~~~~€~€~‚€~~~}€~}€~€~~~€~€~€~~€~€~€€~€~€~~~~€~€€€~~~€~~~~€~€~€~~€~€~}~€€~€~€~~~€~€~~€€}€€~~~€~~€~~~~~€~~~€~€}€~€~‚~€~~€~‚€~~~}€~€€~~€€‚~€~€~€~€~€~~€}€~~€~~‚€}€~~~€~€€~~~€~€€~}€~~€~€€}€~€€~€€}€}€}~€~€~~~~~€~~~~€~€‚}€~€~€~€€€€~€~~€~€€€~~~~€~~}€~€~€~~~€~~~~}€€‚~~~~~€‚€€~~~~€~€€~€~~~€~€~~~~}€}€~€~~€~~~~€~~€~€€~€~€}~}€~€€~€~~€}€~€~~€~~~~~€€~€~€€~€~‚~~€~€~€}€~€~€~~~€€~‚€~~~~€~€€}€~€~~~€~€€~~‚~~€~€}~~€~€€€€~€~€~~~€€€~€~~€~~€‚}€~€}€€~€~}~~€~€€€~~€~€€€~~~€~~€}€~~}~€}€~€~€~€~~~~€€}€~}~€€€~~€~~~€€}€~~€~€€€~€~~€~~€€€€~~€}€~~€€~}~€~€~€€€~~~~~€‚€€~~}€~€~~~~€~~~~€~€~€}€~€}€~~~€}€~~}€~€~€~~€~€~~~~~€€~~€~~€~}€€~‚€~€~~~~€~€~€~€€~€~~~‚€€}~€€}€}€~~€~~~~€~€~~~€~€~€~€~~~€~€€‚€~~~~€~€~€€}€~~~~~€}€}€~~~}~€~~~€~€~€~€~~~}€€~~~€~~~€~€~€~~~€}€~€~€€€€~€~€€~~€~€~~€€~~~}€~€€~~~~€~€~€~}€‚~€‚~€~~€~‚€}~€~€~€~€~~~€~€}€}€~}~€~€€~€€~€~~~}€~€~~€~~~~€‚~~~€}€~~~€~€€€~~}€~~€~~~~€~~~}~€~€€~€}~€~~€~€€€~€}}~~€~~~€~~~~€~€€€‚}€~~}€~€€~~~€~~€~€~€€~~‚~€~€€}€}€~€€€~€~~€~€~€~~~€~€~€~}~€~~€€€€€~€}€€~€}€€~~~~~~~~€~~~~€~€€~€€}€~€‚~~€€~€~€~‚~~~€€~€~€~~~€~€€~€~~~~€€€~€~~€~~~~~€~€~€~~~~~€~€~~€~~€~€€~€€~€~€~€€~~~~~€~€€€~€€~~€€}~€~€~€€~€~€~~~~€~~€~€}~~~€~€~€~~~€~€€~~~}€~~~€~€€~€~~~€~~€~€~€€~€}€~~~‚€€€~~‚~~€€}€€~}€~€€~€}~€~€}€~€~€€~~~~~~€~€~€}€~€~~€}€~€~~‚€~~€€~~~~€~~€~~€~€~€~€}€€€~~€~~~~€€}€~~~~€€}€€}€}€}€~€~~€~€~€~€~~~}€~~}~€~~~~€~€}€€€~~~€€~€~~€€€~€~‚€~€}~~~‚~€~€~€}€€~~~€~€}€~~€€~~~€~€€~~€}€~€~~€~~~~~€}€}€~€~€~€€€€~€~€~€~€~€~~€}€€~~~€~~€~€~~€€~€~€~‚~~€~€}€€€~~~~€~~€~~‚€‚~~€~~€€€~~€~~€€~€}€~~€‚~€~}~~~€~~€€€~€}~€~~€~€~€~€€~€€}€}€~€~~}~~~~€~€€€~€~~~€~€€€€~~~€}€€€€~€~~~€~€€~~€}€~~€~}~~~€~€~€€~~~€~€€€€~~~~~~~€}€~€~€~€€~~€~€~~~€~€~€~€€~€€}€~€€~~€~€€~€€~~~€~€~~€}~€€~€~~€~€~€~~€~}€€~€~€}‚€~€~~€~~€€€~€~~€€~€~~~~€~€~€~€€€~€}€€~~€€}~~€~€~‚~€~‚~~~€~€€}€~~~~~€}€}€~~~~~€~~~€~~‚~‚~€~€~€}€‚€}~~~€€€~€~€~~€~~€~€€~€~€~~}~€~€€‚~~~€~€~€~€~€~~€€}~~~‚~~€€~€~~~€~‚~‚€~~~~~€}€~~€~€€~€~~~€~€~€}~€~€}€~~€€~€~~€€€~~~€€}€~€~€~€€~€~€€~€‚~€~~€}€~~~€~~€€~€~€~}€~€~€~~~~€~€~}€€~€~€~~~€€~~~€~€~€~~~€€€~~€~~€~~€€~~~€~€~€}€~~€~€~~}€~€€€€~~€~€~€~€~~€~}€€}~€~~~}€€}€€}€~~~€~€€€~€~€~}~€~~€~€€~€~€~~~~€~‚~~~€~€€}€~~€}€~€~~}}€~€~€~~~~€€~€~€~€~€~~€~~€€€~~~~‚~~€~€~€€€~~€~~~€~€~€~~~€€€~~€~~€~€€~~€~€€€~€}€~€}€~€}€~€€€~€~€~~~~€€~~~~€~~€€~€~€~€~€}€}~€~€€~~~~€€}€€~€~~}~€€€~€~~~€~€€‚~€}~€~€~~€~~€~€~€}€€€€~€~~€~~~~~~~~~€}€€~€~~~€~~~€€}~€~~€~~~€€}~~~~€~~€€}€~~~€~€~~‚~~€~~}€€~€~~€~€€~~~}~}~€~€~€}€~€}~~~€~€€~€~€~~}~€€~~€}~€~€~€€~€~€~€~~~€~€~}€~~€€€€~€~€}€~~‚€~}€~€}€€~€~~‚}€~€~€~~€€€~~€~~~€}€~€€€}~~~€~€~~€~~‚~~~€~€~~€}€~€~~~€~€€}€~~~}€~~€~~€~€~€€€€~~~€~€€€€~€}€€}€€~~€}€€~~~~~€€€‚}€~~€~€€~~}€~€€~~€~€~€€~€~~~~~~~~€}€~€~}~~€€€}€€~€~€€~€~~~~~€€~€~€~€~€~~€~€~~~~€~€}€~€~€~€}€}~~~~}€~€~€~‚~€~€}€~~€€~€~€~€~~‚€~~‚~~~€€~€~~~€~‚€~€}}€~€€€~€~€~~€~€~€~€}€~€~~€~€~€~€~€~}~€‚~}€€~€~~~~~~~~~€~€‚~€€}€~‚€€€~~~~€}€€~‚€}€€~~~€~~€~~~~~~~€~€~€€}}€~€}€€~€€~€~~€~~€~€~€€}€}€~€~~€}€~~~}~€€€~~~~€€~~€~€~€~€~€€~‚€~€~~~€}€~‚€€€~~~~€~€~}€€€~~€~~€€€}~~€}~€~~€~~~‚~~}€~~‚~~€~~€€}~~~€~€~~€~€~€€}}~~~~€€~~€~€€~€~€~~~€~€~€€~€€}€€~~~‚~~€}€~€€~€~~~~~€~~~€€~~€€}€~€~€€€€~€~€€~€€}}€~€~~~~€€€~€~~€‚€~€~€~}€~€}€€~€}€~~€~~~€}€€~~€}€€~~€~€€~€}€~~‚~€}€€~€~~~~~€~~€~}€~~€}~€~~~€~~}€€€~~~~~€€}€€}}€~€€~~~€~~€€€~~~€~~~€~~€~€~€€~~~~€~~€€}€~€}€~~~€~€~~~}~€€€~€~~€~‚€€~€~~~~€€€~€}~€~€€€~€~~€}€~~€~€€~~€~~~€~€~€~~€~~~~€}~€~€€}€~€~~~~€€€~€}~~€}~€€€~~€~~~~€~~‚~€~~€~‚€€~}€~€}€€}~€~€~€~~~~€}~€€~~~€}€~~€~€€}€~€}~~€~~‚€€€€~~~~~}€~~}~€~€}~€€~€€~~~€~€~~~~€€€~~€~}~€‚~€~~€~~€~€~~€~‚€}€}~~~~€~}€~~€~~€€€~}}€~~€€~~€}~€~€~‚€€~€~~~~~€~€~~€~€€~~~~€~‚€~€~~~€~€€}€~~€€}€€~~€~~€€~€~€~€~~}~€~€}€~~€€~€}~~~€~€~€~€‚~€€~~€€~€~€~~~€€€~~~‚~€~~€~€~~€€~€}~€~€€~€~€~~€}~€~~~~~~€}~}€}€~~€~€~€~~~€~€~€~€~~~€~~~}~~€}€}€}€~‚€~‚~€€€€~€~~~~€~~€~€~~€}€€‚~€~~}€~€€~€~€}~~~€€~€}~~~€~€~€~€~€~€~~~€~€‚}€}€~}~~~~€‚~~~€}~~~~€~€}€€~~~€~€~~~€~~€~~‚€~~€~~€€~~~}€}€~€}€~€€~€~€~€~€~€~‚~~€~~~€€}€~~€~€}€~€~}€~€~‚~~€~€}€~~€}€€~€~€~~~~€~}€~~}~~€€~~€~~}€‚€€~€~€}€~~€~~€~€€~~€}€}€~~€€€~€~~~€~€~~€~€~~~~~~}~~~€~~}€~€~~€~~€€€~€~€~€~€}~€~€~€~~}€~€~€~~~€~~€~€~€}~~~€~€~~€€}€~}€~~~€€~~€~~€~€~€~~€~~€€~€}€~~~~€€~}~~~€}€~€~€~€~€~€~~€€€~~~~~~~€}€€~~~€~€~€€}€€~~€~}€€~~~€}~€€€~€~€}~€~€€~~~~€~~€~€}~€~€~}€€€~€}~€~‚€€}€~€~€~~€~€€}€~}€~€}~€}€~€~€~~~~~~€}€~~€~}~~~€~~€€€€~€}}€~~~€~€}€}€€}€~‚~€~~~~~~~~~€~€~~€}‚€~~~~~~}€}€€~€}~~~€~€‚~~~€~€~€~~~~€€€~€}~~}~€~€}€~€}€}~€~~€~€~~~€~}~€€~€~~~~~€~€€~€~~~~€~€~€~~‚€~~‚~}~€€~€~~€~€‚~€}€~€€}€~~~~~~~}‚~~~‚~~€~€€€~€~~€~€~€}~‚}~€~~~€~€€~€~~~~€~€~€€}€€~~~€€€~~~~~~€‚€€~~€~~}€~€~~~€~€€}€~€~€€‚~~€~~€€~€€~~~€~}€~€~~€~€~€~€€€~€~~~~~~~€}€~~~‚€~~~~€~€~‚€€~}~~€~€€~€~~€~~~~€}}‚€~~~€~~€€~€}~~€€€~€~€~€}‚~€‚}€~€~€}€~€~~~€~€}€€~~€~~‚}€~€~€~€€~~~}€~€~€~€~€~~€~~~}~€€~€€~~€~€~~~€~€€€€€}~~~€€~~~€}€€~€~€~€~~€~€}€~~~~€~~~€€}€€‚~€~€~€~~}~~€}}€~~~€~€~~~€~~€~~€~€}~~~~€~~~~€~€~€~~~€~€~~€~€}~}€~€€}~~€~€~~~‚~~€€~€~~~~€~€€€‚~~~~~€€€~~~~~€~€}~~~~}€€~€~€~€~€~~}€~€€€~€~~€~€~€~€~~}€~€€€}~~€~€}€~~€€}€€~~}~~€~~~~~~€~€}€~~~€~€~~~€~€€~~€€}€}€€~€}~~~€~€€~~~~~~~€~€~}~~€‚}€}€~}~~€}€€}€~~~‚~€~€~€~€~‚~~~€~€€~€~€~}€‚~€€}€~~€€‚}€}€~€~‚€~~~€}}€~}€€~€~€~~~‚€~€~~€~€€~€~€~}~~~€}€~€}€~€‚~€~~}~~€~‚~~€~€‚~€~~~€~€~~€~€~~~~€}€}€€~~}€~}€~~€~€€~€~~~~~~~€~€~€~}~~€~€€€€€~~€~~€~€}~€~~~~~€}€}€}€~€€}~€}€~~~~€~€~€€}‚€€~~€~€~€~€}~~~€~}€~~}€~~€€€~€~~€~€€~}~}€~€€€~~~€~~€}~~~~€€}€~€}~€~€~€~}€~~~€~€€€~€~~~€~€€~~€}~€}~€}€~~~€~~€~~~~~~€~~€}‚€~~~~~~€‚~€~€~~€~‚~€~~~}~€~}€~€€~€}€~€~~€~~€€€€~€~~€}€~~€~€~~~~€}~€~~~~€€€~€}€~~~~€}€~€~€~~~€€~€~~€~~€€~~~€~€}€~€~€~€}€~‚€€~~€~€~€~~~€~~€€~€~~~~€~~~~€}€€}€~€~€~~~€}€}€€~~~€~€~€€~€}~€~€~€~€~~~€~~~€~€~€}~~‚~€~€~€€€~€~~~€~€~€}~~€~‚~~€}~~€~€~€~€€~~€~~€~€~€}€~€~~~€~€~€~~~~€~€}~~€~~€€~~€~€~~~‚}€~€€~€~€~‚€€€}€~~€~~~~~~€€€~€~~€~€~€€~€~~~€€~€~~€‚~€~€~€€~~€~€‚~~~€~€}~~€~€~€~€€~€}€€~~€~~€~€}€}€~~~€~~€~€~€~~~€~€€}€~€~€~€€€~~~€}€€~~~€~€€~€~€~~€}€~~~~€‚~€}~€~~~€€~€~~~€}~€€€~€~~€~€~}~~€~~€}€~€€€~~~€€€~€~~‚~~€‚~€~€€~~~~~~€~€~~€~€~€~~~€~€~~€€~€}~€~~€~€~~€~€~€€}€~€~~~~€~€~~~€~}~~~~~€}€~~€}€€€}~~~€~~~~€‚~€~~€€~~~€~~€~€€~~€~~~~€~€€}€~€~€€~€~~€}€€‚~€~~~~€€~~~~~}€€€‚~}~~€~€€‚~~~€~~€~€~€~~€}€~~€~~~~€~€€~€~€}}~€}€€~€€~€~€~€~€~~~~}€~€€€~€~~}€}€€}€~€~‚€~~€~~~}~~€~~~~€~}€~€~€€~€}~~€€€}}}€€~€~~€~€~~~~~~€€~€~~‚~‚€~~€€}€}€€~~€}~~€~}~€~~}€€~€~€}‚~~~€€~€~~~~~€~~€~~~€~~€€~}€~}€}€€~€~~€~€€~€~€~€~€~€~€~~€~}€€~~€~€~~~~€€‚~€~~€~€€}}~€€€~€~€~€~~~~~~€}€}€~}~~‚~€~€}€~€~~€€€€~€}€~~~€~€~€~€‚}€~}€~~~€€~€~€~‚~~‚€~€~~€~~~€~€}€~€}~~~€~~€€~~~~~~€€‚~~~~€~~€€~~€~€}}€‚~€}€}}€~~~}€~€€~€}‚~~~}€€~€~~~€€~€€}€€}~~}€~~}€€€~~€~~€~~€€}~€€~€}€~€~€~€~~}~€~~~€}€~€}~~~€~€€~€~~~~~€~~}~~~}€~€€~~~€~€~€~€€~~€~~€}€€€~~~€~€€~€~~~~€}€~~~~€~~~€~€~~~}~€~€}€~~€~~€~€~€€~€~~~€}~€~~€}€~€~€~€~~~€~~€‚~€~~}€~~~€~~€~~€~~€~€€€~~~€~~€}€~}€~€€~€~~~€‚~~~€€~‚€‚~€}€~€~€~~~~€}€~~~~}€~~€~€€}€~~~~€~~~}€~~~~‚}}€€€~€~~~€~~€}~~~~€}€~~€}~~€€~~€~~~€€‚~€~~€~~~~€~~~€~€€}~}€~‚€~~€}€~~€}€€}€~~~€~€€~~~~€~€}€~€~€}€~€}€€~€~~€‚}€€}~€}‚~~~~€~~~€}€}~~€‚~€~€~~~€€~€~~~~€~~€}€€~€€~€€}€~€}‚~~~€}~€€~~€~~~€~€€~~€~~€~€€~€~€~€~€~~~€~~}~~~~€~~€~~~€}€~}€~€€€~~~}€~~€~€~}}~€~€}€€€~€~~~~€~~~~€~€~~€~€~~~‚~}€€}€}~€~€~~€~€~~€}€}€~€~€~~~€}€~€~€}€}€~€€~~~€}~}~~€}~€~}€}~€~€~~€€~€~€~~~~}‚}~}€~€~~}€}~€~€€~€}€~~€}€}€~€~€~~~€~~€}€€~~~}~€~€€€}~~€~€€~~~€~€€€~€~~}€~€€€€~€~~~}€~€}}~~€~€~€~€~€~~~~€€€~€~~}~€€€~€~~~€‚~€~~}€~~~~€~€~~‚€€~~€€}€~~}€~~~€~€€€~€~€~~~~€€~€~~~~€~~€~€~~~€€~€~~}€€€~~~~~€€€~€~€}~€€~}€~}€€~€~€}€~€~€~~~~€€€€}~€~~~~€€~€~‚~€}€~~~~€}€}€~€~~€~€~€~€~€~~€€€€}€~€~€~~~~€}€~€~€€~€€~~~~~~~€}€}€~~€~€€~€~~€~€€€~~~€~~€~~~€€~€~€~~€~~€}~}€~}€€}€~€~€~~€~€€}€~€}~~€~~€~}~~~€}~€~€~€€~€€~}€~€€€~~€~~€~~€~€~~}~~~}€~€~€~}€~€€~€~€}~‚~~€€~€~~€~~~€~~~€~€€~€~~}~€€}~~€€€€~~€~€~€€~€}€~€~~€~~€~~€~~~~~€}€~€~‚€€€€~€~€}€~€€~€~€}€~~€}~€~‚€~€~~€~€€~€~~~€~€~€}€€}€}~€~~~€~~~~€~~~~}}€~€€~~€~€}€~~~~~}€~€}}}€€~~€~€~€~}~~~~}€€}~~€‚~€}€~€~~€€~~€~~~€}€~€~€€~€}€€~~~€€~€}~~€‚~€~~€~€~~~~€~€~€€€~}€~€~~€€~€~~~€}~€~€€~~€}€}~~€~‚~€~~€~~€~€~~}~€}€}€}€€~€~‚~~€}€€~€~~~~‚~€~€~€€€~~€~~~€‚€€~€~€~~€~€~€~~€~~~~€~€}~~€€~€~€‚~€~~€€~€~~~~~€~€€~~€~~}€~~€~€~€~~~~€}€~}~€~~€~€~~~~~‚~€~€~~€~€~€€€~~}€~€~~€~€~€~~~€€~€~~~~~€~€}€€~€~~€~€}€}€€}€€~~~€~~€€~€~~€€~€~€~~~~€€~€}€~~}€~€~€~€}€€~€}€~~~~€~€}€}€~€~€~~}€}€€}€~€~€~€~~}~~~€~~€~~~~€~~€€~€~~€~€€~~€~}€€~~€~~€€€~~€}~€}€~€~€}€~~‚~}€€~€€~€~~~€€‚€~~€~~~€€~€~~€~‚~€}€~€€~€~€€€€~~€~€}€~€€~~€~~€~€€~€~}~}‚~€~€~~~~€~€€~~€~~~‚€€~~~~~€‚~~~€~€‚~€}~€~~€~€€}€€~€~€~}‚~~€~€~~€~~€~€~~€~€~}€~~~€€~€}~~€€~€~€~€~€~~~€€}€~~~€~‚‚~~}€}€~€}€~~~€~€~~~~~€~€~€€}€}~~€~€}~~€~~€~€~€€}€€~€~€~}€~~€~€~~€}~€€}€~}~€€~}~~~€~€~~~€~€€}€}~€~€~€~~~€~€~‚}~€~~€}€}€}~~~~~€€€~€~€~}€~€~€€~€}€}€~~~€~€~€~€}~€€‚~€~~~€~€~€~~}~~€~€~€~‚~~~~}}~~€€€‚€~€~€}~~€~~€~~~€€~~€~~~€~€~€€~~~}~~€~€~€}}~~~€€~€~€~€~~~~~€~€‚€€~~~~€€€~€~~€}€~~~‚}€€€}~~€€}}~~~€€~~€~€~~€~~€}~€€€€~~€~€~€€}€€€~~~~€~€€~€~}€~€~~€}€~€}~~~€~€~€~~}~€~€€~€~€~~~~€€€~€~€~~~€~€~€}€€~€€~€~€€€~~~~€}€}€€~€}~€~€~€~~~€€~€}€~€~~€‚~€~€~~€€~~€~~€~€~~€~~€~~€€€~~~€~€~€}~€~€}~€}~€~€~~}€‚€€€}€~~}€~€~€~~~€~€€~€}~€~€€~~~~€~€~~€~€}~€€~€~~€~~€€~~~€~~€€~~€~~}€€€~€~~€~€€€}€~~€~‚~~~€€~}€~~}€}~€~€€~€~€}€~~~€€~€~~€}~~€~€€}€~~€}€~€€‚~€€}€~~}€~~~€~€~€€€~€~~~€~€~€‚}€~~~€}€}}€€}€~~€~~€€}~‚~€~€~€~~~~~~~€}€€~€~~~~}~€~€€~€~~~€~‚€€‚~~~€~~€~€€~€~~~‚~‚~€}€~}~~€‚~€~~€~€‚~~€}€€~~€~~~}€€~€€~€‚~~~~~€~€€~~~~}~~€€€~€~~€}~€€~€~~~€~€€~~€~}€~‚~~~~€‚~€~€}€~~}€~€€~€€~}€~}~~~~€~~€~€~€~€€~~~€~€€~~€~~~~€~€~€~€~€~€~~€~€~€~€~€~~€€€~~~~~~€€€~}~€~~~~~€~€~~€~~€~€~€~€}€~€~}~€}€€~€}€}~€€~€~€€~€~}~~€€~~‚€~~€~€}~€~~€~€~~~€~€€~~€€~~€~€~€€~€~€~~~€~~€~}~€€€~€~}€~€€}~€€~~€}€}€€€€~€~~€~€~€€~~~€}€~~~€~~€~~}~€}€~€€~€}~€~~€€~~€~~€}€}€~~€}€~~~€~‚€~~€€~~‚}€}€€€~€~~€~€€~€~€~€€~€~~€~€€€~~€~€~€€~€~~}€€€€€}~}‚€~~€€}€}~€~€~~~€~€~€€}€~€~€€€}€~~~€€}€€~}€~€€~€~~~€€€€~~~~~~€~€~€~€€~~€‚~~€}€~~}€~~€€}€~€~€~€~€~~~€~€€}€~€~}‚}~~€~€~~~€~‚€€~€~~~~~€‚~~~€~~~€~€~€€€~€}€~€€€~€~~€}€€€~€~€~~~~~}€~€~€}€~~~€‚~~~€~€~~~€~€}‚€€~~€~~€~~€~~}€€}€~€~€‚~~€~~~~€~~}€~€€~€}~€~€~€€~€~~~~‚~€~‚€~€~~~~~~€~€€~€~€~~€~}€~€~€~€~€€€~€~~~€~}~~~€}€€~€~€~€~~~€~~€€~€}€~~~€~€~€~€~€€€~€~~}€~~~~}€~}€~€€€~€~~~€~€€~€~~€~€‚~~~~€~}€~~~€€}~€~~€~~~€~€~€~~€}~€€~~~~€~€~€~€~~€€~~~€~€€€€~~~~€~€€~~~~€€€~~~~~~€‚€}~~~~~€‚~€~€€~~~}€€~€~€~€~€€~}€~€}€€}~~€~~~~€~€~€~}€€~€~~€~~~‚}}~}€€~€~~~~~€€~~~~€}€~~€}€~~€~€~€~~~~‚~€€}€€~~€}€~~~€}€~€~€}€€~~€~€~‚~}~~~~}€~€€~€~~~€€~~~~~~€}€~€}~€~~€~€~€€~~€~~~~€€€~€~€~€€~€~~~€‚~~~}€~€~~}~€}~~€€~~~€~€}€€~€~}€~~~}€~~~~~~€~€€€~€~~}€~€€€~€~€~€~€~€~‚€~€}~~~€~€~€}~€~€€}~€}€~€~€}~~~~~€}€}€~€~~€}€~€€~€}€~~€~€~€~~~€}~~~~€~}€€}~€~~}€~€}}}€~~}€~€€}~~€~~€€~~€~~€~€~€~~€~~€~~~~€€~~~€€~~€~~}€~€€~~~€~€~€€€~~~€~€€~~~€~€~€}~}}€€~~~€€~€}~~€}€€‚€}~€‚~€}~€~€€~€}~~~€}~€€~‚~~~€~~€€~~~€~€}€€~€~€~~€~€~€‚~~~€}€~€€~~€~€€~€~‚~~€~€~~~~€~~€~~€}€~~}€€€€}~~€~€€~€~~~€~~~}~€}}€~€€~€~~€}~‚€~~~€~~€~€~€€€‚~€}~}~€~€€}}}~~€~€~€‚~€~‚~~~}€~€}~~~~€~~~€~€€~€~€€}€€}€~€}€~~€}€~€~~‚~~€~~~~€~€€~€~~€~€~€~~~€~€~€~€~~~~€~€~~~~€~~~€€€}~~€~€}~€€~€~€~‚~~€~~}€~€€€~€€~€~~€~€~€€~€~~~~€~€€~~€€~€~€~~€€}~€€€~~~~€~€~~~~€~}}€~€~€~€}€~~€}€~~€~€}€~€~~~~~~€~~€~€€~€~~~€~€€€~~€~€~€~€€}€~~~€€‚~€~~~~€~€~~~~~€~~€~€~~~~€€}€€~€~~~€~~~‚‚}~€~€~€~}~€~~€€€€€~~~€~€~€€~~€~‚€~~€}€~~€~~~~€~€}~~~€~}~~~€~€~€~€~€€~€~~}€~€€€‚~€~€~~~~~€~€€€~€~~€~€€~€~~€~€~€}~€~~€~€€~€~€~€~€€€~€~~‚€~~~€}~€~€~~~~€~€~€~€~~€~€€€~€~€~€€~~€}~€€}€~€~€€}€~~~€~€}~€~€~€~~€~€€€~~€~~}€~€€€~€~€}~€€~~~~}~~~~€~€€~~~~~€€€}~~€}‚~~~€~€€~€~€~€€€~~€~€~~~~€}~~€}€€€~€~€~~€}€€~‚€€~~~~€}€€}€~~~€}€}€€~~~}~€€~~€~~€€~€€}€}€~~€~~~€~€€~€€~~~~~€~€€}€~~€€€~€~~}€}€~€~€€~€€~€~€~~~~€~€€~€~€~€€~~~€}~€~~€}€~€~€€€€~~€~€~€~€€€~€~€}€~€€€~€~}€~€€€~~~€}€€~€~€}€€~~~~~€€€~€~~€}€~~~~~€€}€~~~€}€~€~€}€~€~~~€€~€~€~€~~€~€~~€~€~€~~~€~€€~~}}}}€~€€€€€}€~~€~€~~~€~€~€~€~€~€€‚~€~€~~€‚~~€~€~~€~€~€€~€~~€~€€€‚~€}€~€~~€}€€}€~€€~€~€~~~€~€€~€~€~~‚~€~€}€€~~~~~~~€~~€~€€€‚~~€€~~€~~€~€€~~€~€~~}€~~€~~€~~~~€~€€€}€}€~}~~€}€~€~€}~~€~€~€€}€€~€~€}€~€~~~~~~~~€~€€~~~€~€~€~~~€~€€€~~~~€~€€~~€€~€~€~}€~€€~~~€}€~}€€~€€‚~~€~~~~~~€~€~~‚€~~€‚~€~€~€~~€€€~~~~~€~€}€~€~€~~~~€~~€€}€~€~}€~~~}€~~€~€~~~~€~~€€€~€~~€~€~€€~~~€~€}€€~~~~€€€€€€~~}€~~~~€~€~~€€}€~~}€~€€~€~€€~€~~~~}~€~~€}€~€€~€~~€~€~€€~€€~€}~~~~~€~€}€}‚€~€~~~€~€~~€~~€€€~€€~~}}~€}€€~€~~~‚~~~€}€~€~~~~€~~€~~~€~€~€~~€~€~~~€~€~€~€€~~€~~€€~€~€~€~€~~~~~€}€}€~~€€}€~€~€~€~~€~€~€~€~~€€}€€~€}~~~€~€~€}€~€~~~€~€~€~€~€€}€~~€~€€€~~€€~€€~€€}~~€€~}~~~~€~~€}€€~€}~~}‚~€~€€~€~~~~€~‚€~€~~€~€€~~~~€€}€~€~€~~}€~~€€~€~~€~€~~€~€~€€~~~~~€}€€€~~€~€€€~~~€€€~~~€~~€~€}€€}€}~~€~€}€~€~~~€~~€}}€~~~€~€~€~€~€€~~~€~€~€€€~€}~€~€€‚€~~€€~€}€~~€~€~~~~€€~~€~€~~€€~~€~~~~€€~€~~~~€~~€~€~€~}€~€€}€~€~€€}€}‚€~€~~€€~€~~~~€~~‚~€}€~€€~€}€}~€€‚~€~~~~€~€€~€~~€~~€€€~€~€~€~€~€~€~€~~~€~~€~€~~€‚~€}€~~~~~€~€~~€€~€~€~~}€~€~~}~€€~€~€~€~~~€~€~€€€‚~€~€~~€~€}€~€€}€~~‚}~~€~€~~~€~~€~}~~€~€~€}}~~€}€€€~€€~€€~}~€~~€~€‚€€~€~~~~}€€~}€~€~}€~€€€~€~~€~€€‚~~€~€‚~€~€~€€}€~€€~€~~~}€€€€€~€~~~‚€~€€~~~€~~€~~€~~€€€~€~‚~~€~€}€€~~€~~~€~€€€€~€~~€~€~~€~€~~€~~€€~€}€~~~~~€~€€~€~€~~€~~‚~€~€~~~€~~€€€~~~€~€~€~~€~€~€~€~~€~~~€}€~€~~€~~€}~€€~€~~~~€~€~€~~€~~}~€~€~€~~~~€~~€€€€~€~~€~€€~~€~~€}€~€€}}}~~€~€~€€~€~}~€~~€~€~€~€€~~€~~€~€~€~~~~€~~€~€}€~€~€€~€~€~€~~€~€€‚~€}€~€~~€€€}€~~€~‚€~~~~~€~€~|€€~€~}€}~€~}€€~€~~€~~~~€~€}~€~}€}€~~~€€€~€~~~€~€~~€~€~€}~€€~~~~~€~€}€€~€~€~~~~€~~~~€~€~~~~€~€‚~€~€~€}~€}~~€€€}€}~~€~~~€~€~€~~~€~€€~~~~~€€~~~~~‚}€~~€€~€~~~€~~€~‚~~€~€}~~~~~€~}€~~‚€}~~€€~~}€~€~€~‚~~€~~€}~€~€}~~~€~€€~€€~~~~€€€~~~~€~~}€~~€}~~~€~€€~}€~‚}~‚€}€~~€~~‚~~€~€~€}€€~~~~€~€~~€}~€~€€~€~}€~€€€€~~€€~€}~€~€€~~€~~€~~€~~~~~~~€~€}€€}€~€~~~€~€~~€~€}€~€~€}~€}€~~~‚~€~‚€€~~€}~€~€€~€~€~~€~€~~€€~€~}~~~€€€~~~~~|€}€~}~~~€~~€€€~€~€€}~‚€~}~€€~€~€~~}€~€‚~~~~~€~€~~€~€€€~}~€~€~€~~}€€€~€}~}€~~~~~~€‚~€~€~€~~~~~€}€~~€~€€€~~~~~€€€~~~~€~‚~€€}€}~€€~€€~€}€€}€~€~~~€€~}}€~~€~€€~~€~€~€€€~€~~~~€~€}~€€~€}€~~}~}€~€~~€‚}€~€~€~€€~~~~€}}€~€~‚~~€~~~~~~€~€€~~~~€~€~~€~€~€}€€}€~€€~€~€~~}~€€~€}€~}~€€}}€€}€~~~€~€~€~‚~~~‚~}€~€~€~€~€}~€}€~~€~~€€~}€~~€~€~€~€~}~€~€}~€~€~€~€~€~~~~~€‚~~€€}€~‚~€~€€~€‚~€~~~~~€€~~€~~€}€~€€}~~‚}~€~€~€~~€~€~€~~€~€€~~~€~€€€€~€~~}~€~€~€€~€~~~€~~€~~~€€~~~~€~~€}€~~}~€~~€~}‚~~€€~€€~€~€~~~~~~€~€€~€}~€}€€}€€~€~€~~~~€~}€~€€}€~~~€~€~~~~€~€€€~~€~~€€€}€~~€~€~€€~€~~€}~€€€~€~€~€~€€~~€~€}~~€~~€€~€~~~€~€€~~‚~~~}€€€~€~~~~~€~€€~€~€~€~~~}~€~€€~~€€~~€}~€~~~€~~~~€~}€~€€€}}€}€~€~‚€~~~€~€€~€~~~€~~€€~€~~€~~€~~~‚~~~~~€~€~€~~€~~~~~€~‚~~€~€~€€~€~€~€~€€€}€~~€~~}~~‚}€}€€~~~~€~€}€~~€~€~€~}€}€~€~€~~€€€~€~~~€~€€~€}€~€}€‚~~€~~€~€~€~~~~~~~€~}€~€~€}€~~~~€€€€€~€}~}~}~€}€}€}€~~~~~€€€}~~~€~€€~~~~€€‚}~€~€€€€~€}€~~‚€~~}€€€~~~~€~€€~~~~€~€~~~~~~€€}€~€~€~‚~~€}€~€‚~~€~€~€€€~~‚}€}€~€~€~€~~~~€~~~~~€~‚€}€€~€}€~€~€~~~~€~€€}~~~€~~€~€~€~~~~€€€~~€~}~~~~€}~€~€~~~~€~€€€~~~~‚~€~€~€~~~€~}‚€~~~~~€~€€~~~€}€€~€~€}€~~~~€€~~~~~~€~€€€€~€~‚}~~€~€}€~€‚€~~€~~~~€~€~}~€~€€€€~}~~~~€€~€}€~€}~€}~~~€~€~€~€~~}~€~€€~~~~~€€~~~~€€~~€~~€€}€~€~€}€~~~~~€~~~~€€~~~~~€€~~‚~€~€~€~}€€€€~€~~~€~€€€~~~€~€€€~~€~~}€~€~‚~€~~}~€€~€~~~~€€~€~~€~€}€}€€~}~~€€~~~~~}~€€€~€~~~€~~~~~€€‚~€~~~€€€~€~~€~€~€€~€~}€~~‚~}~€~€}~~~~~~€€€~~}~~€€~€~~~~€}€€}€~€~~€}}€}~€€~€~€}~€€~}€~€~~~~€~~€~~€~€~€~~€~€€~€~~}€€~€~}€~€}€~~~~~€~€€€~€~~~€}€~€~}€~}€~€~~€€~€~~~€€~€€~€€~€€}€€~€~~~~€~€~~€~~~€~€€~€}€€}€~~~€~€‚€~€~~~~~~~€~€~~~€~€}€€~€~€€~€~€~~~€‚~€€}€€€~€~€~~€~€~€€~~~}~€~~€~~€€~‚€~~€€~€}€~€~€€~€}€€~€~€~~€~}€}~~~€~€€€€~€~~~~~~€€~€}€€}‚€~€~~€~~~€}~€€~€~€~~€}€~~~€~€~€~€~€~~~~~~€€~~~~€~€~€~€~~~€~€~~}€~€€€~€~~€~~€~€~€~~‚}~€}€€~~€€}€~€~~~}€~€€~€~€€~€~~~€~€€€~€~~€~€€€~€~€}€~€}€~€~€~~~€~~€€~€~~}€~€€~€~€~€€~€~~€~€€€~€}~}~~€~€‚~~€~€}~~€~€~€€~€~~‚~~€}€~€€~€~‚€‚~}~~}~~€~€~}€~€~€}~~€~‚~~}}€}€~€€€‚~}~€~€~}€~~~}€~€€}€}€~€~~}€€~~~€~€€€~€~€~~~~~~~}~~~€~~€€€€~~~~€~€€€~~~~€~€€€}~~~~~€~~€~€~€~~€€~~€~~~~~€~€~€}€~~~~€~€~~~€}€€~€~~~~€~€~€}€€~‚}€~~€~€}€€~~€€~€~~€~€~€€}€}€~€~~€~~~~€~~€~~~~€~€€€~€~~€~€~~~~€~~€€€€~€~~€~€€~}~~€€}€~~€~~~€~~€}€~€€~€~‚~~~€}€~€~~~~€~€~~€~~€~€}€€~€~~€~~~~€€~~€~~~€~~€~~€~€~~€}‚~~~~€~~€~€~~~~}€~€~~~~~~~€€~€~~~~~€~€~~€~€~€€€~~~~~€~€~~€~~‚~€€~~~~‚€€~~~€~€€~~~~~€}€~~€}€~~~‚}€}~€~~~~€€€~€~€~€~€~€€~~‚€~€~€~~~~~€~~~~~€~€~€~€~€~€€€€€~€~€}~~€~€~€€~~€}~~€€‚}€~€€€€~~~€~€€~~~€~~€~}€~€€€€~€~€€~~€~€~~€€~€~~~~€~~€~~~~€~€~~€€~€~~~€‚~~€~~~~€~€€}~€€~€~~~~~€€~~€~~€~€€~€€~€€~€~~€~€~€~€~~€~‚}~~€}~}€}€€~~~€~~€~€}~~}€}€}~~€~}~€~€}€~~‚~~€~€}€~~€~~€~~€~‚€~}~€~~€€€€~€}~~€~€}€~€~~~~~€~~€~€}€‚}~~~~€~~~‚}€~~€~€€~€~~~€~€~€~€~~~€}€~€~€€}~~~€~~€~€}€€}€}~€~€€~~€‚~~}€}~€~‚~~€~€€~~€~~€~~€~€~~€€}~€~~~~~€~~€€€~€}~€}€~€~€~~~€€~€€}€}€}~~~€~€~€~~~~€~€~}€}‚€~~~€~€~€~~€~~~€~‚€€€€~€~€~€~€~}€~€~~}€€~~}€~€~€~~€~€}€~}€~~€~€€~~€~~~~€}€~~€~€~€€~€}~~~€€€~€€~€~~‚‚~~~€~€€€~€~~~~€~€€~€~€~€€€€‚~€~€~~€}€~‚}~~~‚~€€~€}~~€}€€~~~~€~€~~~~~~€‚}~~€}€~€~€}~~~€}€}€~}~€~€€~€}€~~€€€€~€~~~€~€€‚~€~€~€~€€}€~€~€}~€~~€€€}~~~€€€~~€}€~€}€~~~~€~~~~€€€~€~~~}~~€~‚€~~~~~€€~€~~~~€€€€~€~~‚~~‚~~~€}€~~}‚~~€€€~€~€~€€~€€~€~~€}}€~~€~€€~€~~€~€~€~~€€~~~~€~~€€€~€}~~€}€€€~~~€}€~€€}€~~~‚€~€~~~€€~~~€€}€~€}€€€~~~~€~€‚€€~~€~~€~~€~€~}~€€~~~€~€~€~}€~€~€}~€~€€~€€}~~~~~~~€~€~}€~~~~€~€~~€~~~€~€~~€~€‚€€~}~~€~~€‚~~€~€€~€~~~~€~€}€€~€~~}€~€}€}‚~~€~€}€€~~€~€~€~€~€~€~€}~~€}€~€€€}€~}€}€€€~~€~€€€}€~~€~€€~€}€~€}€~€}€~~€}~~}€~€€€~}~€}~€€~€€}~€€€~~~€~~~€~€~~€~~~€~€€~€~€~~€}€€~€~~~~~~~~~€€~~€~€~€€€~€~}€~€~~~~~~€}€€~€€~€€}€~~€~€€~~€~~~€~€~~~~~‚~~~€}€€~~~€}~~€}€}€~€~~~€~€€~€~~~€~€~€~€~€~~~€€~€~~€~~~~~€~€€~€~€~~~~€}€€~€~~€~~~~€~}~€}~€}€€~€~}€~€~€~}€~~€~~€~€~€~‚~~~€~€€~~~~€‚~€~€€~~€~€~~~€~€}€~~€~~~~}€€}€~€~~€~€€~€}~~€~~}€~€~€~~~~€~€€~€~€~€€~~~~€}~€~}€}~~}~€€~~~€€~€~~~€~~€€}€~€€~€~€~€~~~€€}€}~}~€~€~~€~€~}€~€~€}~~€~€€‚~~~~~€}~~€}€~}‚~~~~€~€~€~€~~€~~€€€~€~~€€}~€~€~~~}€~€~€}€~~~€}~~~€~~€€€~~~~€~~}€~~~~}~€€}€~~€€~€~€~~€~€€€€~€~~~}~~€~€}~€}€~~~~€~€~€~}€~€~€€}€€~~€~€~~~~~€~€€~~‚~€~€~~€€~€~~€~€}€~€~€~€€~€€}€~~~~€~€€~~€}€}€€}€~€~€}€~}~€}€~€~}}€~€€€€}~~€~€~€~€~~}€~€€}€~~~€~€‚~€~~‚€~~€~€~€~€~€~~€~€€€€~€~~€~€~~€~€€}€~~~~~€~€~€€~~~~~€~€~€}€~~€~€~~~~€~€€€€~~€~~~~‚~~€~€~~€€~~€~~‚~~€€~€~~~}€‚~~~€€~~~€~€€€~€~~~~€€~€~€~€~}~~~~~€~€}~€~~}~~€~€~‚€~~€~~~€}€€~‚~~€€~€~~€~€€€€~€~€€}€~€~‚€~~~€€~~~}~€€}€}~~€~~€~€~~~~~€~€~€~€~‚€€~~~~}€€}€~€~€~€~~~~~€€€€~€~~~}~€€~€}~~€}€~€}€~~~~~€~€€~€}€~€~~~~~€€~~~~~€~€€~‚}€~~~€€‚~€~~~~€€€~€~}~€€~€~€~~€€~€}€~~~~€€€~€~€~~~€~€~€~€‚}€€}~€~~€~€}€~}~~~~~€~€~€~~€~€~~€}€}€€~~~~€~~~€€~}€~~~~~€€~~~~~€~€~€~~€€€}€}€€~}€€~~~~€}€~~~}€€€‚~~~~€~€‚~~€~€€~€~~}‚~~}}€}‚€~~€}€~€~~€~€~€~~€~~}~€~~~}€~}€€}€~€€}‚€}~€~~€‚~€~€~€~~~€~~~€~~}~~}€~€€~~~~€~€~€~~€}€€~€~~~€}€~‚~~~€~€~€~€€€~~€~€~~€€~~€}€~~~~€~€~€~€~~~~€~~€€~€}€~€~€€}€~}~}~~€~€€~~}€~€€€~€~~~~~€}€~~~€~~~€~~€€€~~€~€€~}€~~€~€~~€~€~‚€€~~€€~€}~€~}€€~~€~~€~€€~~~~~~€}€€~€}~~~~€~€~€}€~€~€€~~~~~€€€€~€~~~~€~}€~~€~~~~~~}€~€~~~€‚~€}€~~€€€€€~€~~€}€~~€~€~€~€€€~€~€~~~€~~€}€€~~~~€€€~€~~€~~~~€~€~€€~~€~‚€€~~~~€}~€~€~~€~‚€~€€}€€}~€~~€~€€€~€~€~~€€€€}~~€}€~€}‚€~~‚€~€~~€~€€‚~~~€~€€~~~~~€€€}€~~€€€€~€~~}€€}€~~~€~€}~~€~~€~}€€~‚}}€~€€~€}~~€~~~€}€~€}~~~€}~~€~~~€~~€~€~€~€~~€~€~€~€~€~€~~€~~€~€€€€~€~€~€€€~}~€~~€~€~€€€~€~~~~~€€~€€~~}‚~~~€~€€}€~€~~€~€~€~€€~}‚€€}€~‚~~~€~~€€€~~~~}€~~€}€~}~~€‚~€~€}€~~~~€€}€€}€~€~€~~~~€~€~~€~~~€€~€~~~€~€€~~~€~€~€€€~}€~~‚}~~€}~€~}€~~~€~€~€€~€~~€€~€~~€~~€~~}~~€}€~~€€~€~€~~~€~~~~€}€~€~€~~€~€~~€}€~‚€~€~~€€~€~~~~€~€€~~€~€~€~€€~~~~~€€€~€~€~~~€~~€€~~€~~€~}€}€}~€€~~~€~€€}€~}~~€~€~}€€}€~~~~}€~€€€~€~~~€€€~€~~~~~~~€~€}~€}‚~~‚€~€~€€~~~€€}€€}€~~~~}€~~~~€€€~€~€~€~€~~€€~~€~~~€~~€~€~~€~~}€~‚€€€~~€~~€€€~~€~~€€}€~€~}~~}€~~€}~~€}€€~€~~~€~~€€€~€}~~~€~€}€€~€€}~~~€~€~‚~€€~~€~~~€}€~€~€€~€~€}€}~~€~€}€~€~~€~€~~€}€~~~€~€~~~~€€~€€~€~€€~€€~€~~€~~~€€~€~€~~~~€}~€~~~~~€~€~~€~€€~~~~€~€~}~~}~€€€}€€~‚~€€€€~€~~~€}€~~€€}~~‚~€€~~€€~€~~~€~€~~€~€~€~~}€~€‚~€}~~€~€€}€~~~€~}€~€~~€€~€~~€€~~€~€~~€~€~€~€~€~€€~‚~~~~€€~€}€~€~‚€~~~~~~}~€}€~€€~€~~~€~~€~€€~}€€}}~~~‚~€}~€~‚~~€}€€~€}€~~€~€~€€~€}€~~~~€}€~€~€}€~~~~€€~~~~~~€}€}~~€€~~~~€~~~~~€~€€~€~~~~€€€~€~~€}€~€~~~~€~€~€~~€~€€~~~~~€€~}€}}€€€~~‚€~€~€€€€€~~€~€~‚€€~~}~€}€~€€~‚~€~~€}~€€~€~~€~€€‚~~€€~€€~}€€~€~~€~~€~€€~€€~~~€€~€~~€~€€~~€~€~€~€~~€~€}€~~€~~€€~}~~€~~€~€~~~~‚~}~€€€€~€~~€€~~~~~~~~~~€~€~€~€~€~~€~€€~~€~~~€~€€€€~~~~‚}~€~€€~€€~~€~~~€~~€}~€~€~~€€}~~~€~€€~~€~€~€‚~€~~€€‚~~€~~~€}€€~€~~~~€~~€}€~€}~~~€~€€~~€~€‚~~€€~~~~€~~€~~€~€~‚€~~~€€~}€~€}€}~~€~~€~}~€~€~~~€~~€~€~€~€€}~€~~€€€~€~~~€‚~€~~}€€~€~~€~€~€~€~€}€~€~€~~‚~~~€}~~€~~~€}~~~}€~€€}€~€}€€~‚€~~~€~€~€~}~~~‚}~€~€~~~}~~~€~~~~€~~~~€~€€€~€~~€~~~€~€~€}€~€~~‚€‚~~~~€~€}~€€}€€~€€~}~€€€~~~~€~€€€~€~~€}‚€~}€~~~€€~€}€~€~€~€€~€~~~~€}€~€€~€~~}€~€€}€€}€€~‚€}~~€~€~€€€~~~~€~€€~}€~€~~€€~€~~€‚~€~}€€~€~~~~€€€~~~€~€€€~~~~€€~€~}~€}€~~~~€~€~€~€~€~€~€€~€€‚~~€~~€~~€~€~~~~€~€~€~~}€}€~}}€€~~€~€~€~€~~~€~€€€€~~€~~‚€~~~€€~~€~~~€~~€}€€}€~€~€~€}€~€€€€€~€~~~€~€~€~€€~~€~~~€~€€~€~~~€~€€‚~€~~~~~€~~€~€€~€}~€~€}~€~€~~~~€~~€‚~€~~~€~€~€€~€~~~€‚}€~~~~€€~€~€~~€~‚€€~~~‚‚~~€~€~€~~€~~~~€‚~~~~€~~~€‚~~~€~€~}€~~€~€~€~~~~~€€~€~€~€~~~€~€}€}€}€~€€€~€}€~~~€}€€~€}~€~€€}€~~€~€€~€~€~€~€€~€}€~}€~€~~€~~~€~€~€~€~~€~€~~~€~~€€~€}~€~€€~€~}€~~~~€~~€}~~~~~€€~€}~~€~€~~~‚~~€~€~~€}€~~~€~€€~~~~€€~€€~~€€~€~~~€~€}}~€€€~€}}~€}~~‚~~~~}€€~€~~€}~€~}€~~€€€~€€~€~~€~€~‚~~}€}€~}€~~~€€~€~€~~~€~€€}€€~€€~€~€~~~~€~€}‚€~~~€~€~€~€~~~~~€~‚€~€~~‚€~~€}€}€~~~~~€~€€~}~~~€~€}€~~~~~€}€€}€~~~€~€~€~€~~~~~~€€€~~€~~~€}~€€€~€}~~~€~~€}~€}€€~€~}~~€}}€€~€~~~€~~~€~€~~~~€~~€~~~~‚~~~€}€~€~~~~}~€€}€€~~~~€}~~€€€€€~}€~~€~€~~~~~€~€~‚€~~~}~~€~€€}€€€~~€~~~€~}~~€~€~€€~€~€~€€~~€}€€€€~€~~€~€~€€~}~~€~~€~~€~€~€€~€~~~€~€€~~€}~~€}€€~€}€~~~€~}~~~€~~€~€~€€~€~€~~~~~€~~€~€~€~~~€€~~~€€€~€~~€~~€€€}€~~€~~€}€~~€}€~~}€~~€€~~~~€}€~~~~€}€~€~~~€}€€€€~~€~€~€~€‚}€€}€~€~€~~~€~€}€}€}€~~~~€}€€~~€~~€~€~€~€}€€}€€}~~~€~€€~€€~~~~~~€€}€€~~~€~€~€~€~€~~~€€€€}€~~€~€~€~€~€€~€€~€~~}€~€€~€~~~~~~~}€~~€~€€€}€~~€~€€~~}~€€~~€~~€~~€€}€~~€~€~€~~~~~~€~€€€~}€~~}€~€}~€~€~€~€}‚€~~~€‚~€€~€€€~€~€~€~~~€€~€~~€}~~€~€€€~€€~€€~~€~}€€€~~€~~€~€~~€~~€€~}~~€~€~€€}€~~~~€€€€~€~€~~~€~~~‚~~€}€~€~~~€€~€€~€~€~~~€~€~€€}€€~€~~€~€€~€}€€~~~€~~€~~~‚~~€~€~~~€~€~€€€€}€~~~€~€}€~€}€€~€}€€~‚€~~€~€~€~€€}~€~€~€~€~‚€~~€~€~~€~€~€€€€~~€}€~€~€~€~€€~€~€~~~}~€~€€€~~~~€~€~€~€}€€}€~~€~~€~~~~~}€€€~}~€~‚~€€~}€~€~€}~€~€€~€~~€~€€€~~~€~~~~~€~€~€~~~€€~€}~}}~€€~€}€~€}~~~~€~~€~€~€~}~€~€}€€~€~~~€~€~€~€~~€€}€~€~~€~~~~~€~€~€€~€~~€€~‚€~€~~€~€}‚~~~~€~~€€~€~~}€~€€~~€~~~€~€€~€~~€€€~~€~€€~}€~~}€}€€~€~~}€~}€€}~~~€€€€~~~~€~~~~~€‚~€~~€}~~~~~€€~€~€~€~~€~~€€~€}~€~€€~€~~€~~€‚~€~~~€~~~~~€€~~€~€~€~~€}€~€€~€~~~~~€~€}€~€~€~€~€€}€~€~~€€€~€~~~~~~~~€~€~~€~€~~€~€~€~€~~€~~~~€}~€‚~€~€~€€~€€~€~~~~€~~€~€~~€€~~€~~~€~€€~€€}~€~€~~€~€€~‚~€~~~€~~€~}€~~}€~€~€~~€~€~€~€~€~~€}€~€~~€~€€€~~~€€}~€€~€~~€~~€~~€€~~}€~€}}€~€~~~~€€€~€~~}€~€~€}~€~~€~~~~€~€~€~~~}€€€~}€~~~€~€}€€~€€}€~€}‚~~}€~€€~€~€€~~€~€~~~}~€~~€~€~~~‚~€~}€~~€€~€~~~~€~€}€~€~€~~~€}}€€~€~~~€~€~€€€€€}~~€~‚€~~~€€€~~~~€~€€€~€~~}€‚~€€~€~€€~€€~}€~~€~€~€}€€~~€~~~€~€}€~~~€~€~~€~€€€~€~~~€~€€€~~~~€}~€€€}€~€€~€€~€€~~~€}€~~}€~~~~~‚~€~€~€€€~€}€~}€~‚€~€~‚€€~€~€~~~~€~€~€~~~€~€~€~€~€€~€€~€~€€}€~€~‚€~~}€~~€~~~~€€~€€€~~~€~€~€€~~~€~‚€~~~~€€~~~€}~€~€}€~~€~€}€~~~€€‚~€}€}€}~€~~~€€€€~€~}~€€€€~€~€~~€~€}€~‚€€~~‚~~~€~€}‚~€~~€~€~€~€~~~~~~€€}€€~~€}€~€€~}~~€~€~~~~~€}~‚€€~}~€~€€~~~€}€€€~~~~~~€~€€€~€~€~~~€~€€~~€~€~~~€~€€~}~~€~€€~~€}€~€€}€~~~~~€‚~€€~~~~€~€~€€~€~~}~~}€€}€~€~€~~~€~€~}~€~~~€}€~€~€~~~€€€~~€~€~€~€~~~€€~€~~~€~€}€~€‚~€~€}€~€~~~€~€€€~~€~~}€}€€€~€~~~~~€€€~€~~~~€~~~~~€‚~~~~€~€~~€~€}€~€~€~€~~€‚~€~€€~~~€~€€€~€~~~~€€€~€~€€~}€~~€~€~}€~€~€€€€~}€~€~€~~€~€~€~€~€~€~€}€€€~~€~~~€~€~€}€~~~€~€~~~€~€€€€~~~€~~€€€~}~~€~€€€~€~€~€~€~~~}€~~~}€~€€€~€~~~~€~€~€~~~}€‚€€~€~~~~€‚€€~~~€€~~~~~€}€€~~~‚€~€~€~€~€€€~~‚~~€}~€€~€~€~~€~~~~~€~~€€€€€~€~~~~€~~~}~€~€~~€~~~~~€}€~€~~€~€€€~€~€€}€}€}€}€~~}‚}€~~€}€~}~€~€~€~€~~€~€~~~~€~€€€~€~~€~€~€~~~€~‚€€€~~~‚€€}€~~~€~€€~€~€~€€}€~~€~~€~~€~~€~€€~€€}€~€€~€}€~}€~~~€€~~~~~}€€€€~€}€~€}€€~€€~~~}€~~~€}€€~€~€€~~~~}~~€~~€~€~€~~€~‚€~~~€~€}~€€~~}}~~€}€~€~~€~€~}€~~~€~~€€€~~€~~€~€~€~€~€€}€~€~~~~€~€~~~€~~€€~~€~}€~~}€~€}~€}€~€~€~€€~€~~~€}€€~~~~€~€~€~~€~~€~‚~~~€~€€€}€~~€~€€~€€}€~~‚€~~~€‚~€~~€€~€}€~~€~~€~€~~~€~€~~€~€€~~€~€}€~€€}~€~~€~~€€~€€}€~~€~}}€€€~~~~€~€€€€~‚}€~~€~€~~€~€~€~~~€~€~€~€~~~€€~~~€€~€€€€~~€}~~}~~‚~~€~~€~~~‚€~€~€~€}~€~~€€~€~}€~‚€~€~€~~€~€}€}€~€}€~~‚€~€~€~€~}€}€~~~~~~~€~€€~€~~€~~€€~~€~€}€~~~}€€~€}€~~‚~~~€~€~}€~~€~€€€€~€~~€~~€}€~~~€€€~~~~€~~€€~€~€€}€€}€€~€}€~~~‚~€~~~€~€~~€€~€~€~€}€€~€~€~€~€~~€~~€~€~€}€}}}€€€}€}~}~€}€~€€~€}‚€~€~€~~€~€~~~~€€~€€}~€€~~~~€~€€~~~€}~~€~~~~~~€€~~}€~€~~€}~‚€~€~€€€~€}~~~~€~€}€~~€~~€~€~€€~}~~~€~~~~~~~€~€€}€~~~‚~€~}€€~€~~€~€€~~~~€}€~~~}‚~}~€~~€~€}€~~€~€~€€€~€}€~~€€~€~~~~€~€~€}€€~}€~~~~}€~~€€}~~€~‚€€~~~~€~€€€}€~~€}€~€~~~€~~€~€~€~€~~~~€~€~€~€€€~€~€~~~€~€€~~~}}€€~€}€~€~~~€~€~€~€€~€€~€~€~~~€~~€€~~€~€}€~~~€~€~~~‚€~~~}~~€€}€~€~}€~~~~€}€~€€}€~€~€€~€~~~€€€€~€~€~~~~~€~€~€~€}€~~}~~€~~~~~€~€~€~€}~~~~}‚~€~~‚~~~~~~€~€€~~~€€~~~~~}€€~€~~€~€~~‚~~~€}€~€}€~€~~~~~~€~€~€~€}€~~€~€~€~€~~~~€€€€~~~‚~~~‚~~€~€€€~}~~~€~€~€~€}~€~€~€€€€~€~~~~~€€~€~}€~~‚~€~€€}€~~~~~~€~€~~€~€€€}~€~}€}€€~~€~€€~€~€~~€~~€~~~~€~€~~‚~€~~€€€~~~€~€~€}~~€~€€~€~~€~~~€~~€~€~~}€}~‚€}€}~~€~€€€~€~~~€}€€~}€~€€€~~€~~€~€€~€~€~~€~€~~‚}€‚~€~~}€~~€~~~€}€~€€~€€~€~€~~~~~~€~~~€~€~~€~~€~€‚~€~€~€}€~€}~~~~€~€~~€~~€~~€~}~~€~~€~~~€€~€}€~~€€€~€~~€~€‚~~€‚~~€~~€~€€~€}€~~€~€€~€}~~€~~€~~~~€~€€~€}~~€~€€~€~€~}~~~€}~€~~€~~€~€}€~~~~€}~€~‚~~~}€€}€~€}€}~€~~€~€€€~€}~~~~€~€~€~~~€~€€~€~~€~€~€~~€}€€~€~€~‚€~~~€~~~}€}€€~€€}€~~~€~€€€€~€}~~€~~€~~~~~€€~€~~}~~€€}€€}€€~€~~~€~~€€~€~~~~€~€€~€~~~€~€€€~~€~€}~~~€~€€~€~€€}€~€€€€~~€~€~~}€~€~€€}€€~€€€~~€~€€}~~€€€~€~~~€~‚€~~~€~€~~~~€€~€€~€~}€€}€~€~~~€~~€~~€~€€~€~~}€~~€}€€~€~~~€~€€€~€~~~€€€€~€~~~€~€€€~}€~€‚~€~~}€~~€}~~~€~€~}€~~~€~€~~€}€~~€~~€~€}}~~~~€~~€~~}~~€~€}€}€‚€€€~~}}€~€~€~€~~~}~€€€~€~~~~€~€~€~~€~€~~~€~~€€~€~~~~~~€~€~€‚~€€}€~~‚}€~~~€~€~€~€~€}€€~€€~}~€€~€~€~~~~€€~€~~~€~€€~€~~~€‚€€€~~€~€€~~€~~~€~€€€}~€}€~~~~€}€}€‚}€~€~}€~€~~~~€€~€~€}€€~€~~~~€€~~€}~~€~€~€~~€~€~€€~~~~€~€€~€~~~€~€€~}‚€€~~€~~€}€€~€€~€}~‚~~€~€}€}€~~€~€€~€~~€~€€~€~}€~~~€~€~€€~~}~~€~€‚~€~€}~€~~}€~}~€€~€~€~€~€‚~€~€~€}€€~~}€}€~€~€€~€~}€~€~€~€~€~~}~€~€~~€}€~€~€~~}~€~~€€€~€}~~~€€~€~~~~~}~€~~~~€~€~€€~€}€~€~~}€~€~€}}~~‚~~€~€}€~€~€~~‚€~€~~~€€}€~}‚~~~€€}€~€}~~€~€~€€‚~€}~€~€~€€~~~~~~~~€~€~€€~€~~~€~€€€~€~~~~~€€}‚€€€~~~~~€~€~€~~€~€~€}€~~€~~~€~~~€~€€~€‚~~€~~~€~€~€~€~~~€‚~€~~€~€€}€~~€~€€€€}~~~€~€€~}~~}€~€€~€~~€~~€~€}€€~€~~~~€~€€~€~€~~€~€}€~€~€€~~€~€€€~€~€~~€~€~~€~~€~~€~~~€}~€~€}~€~€€‚~~€~€~~~~~~~~€~€}€}}€}€}€~€}€~€~€~~€€~~€~~€~~~~~€~€}€€~€€}€~€~~€€€~~€~~€~~‚~~€€~~~~€~~€~€~€}€}€~€~€~€€~~€~~~~€~€~€~~~€~~€}}€~€}€}~€~~€~€}~~}~€~€~€~~~}€~€~~~€~€~€‚€€€~~~€~€}~€€~€~€~~~€~€€~~€€~}‚‚~€~€~€€‚~~€~~€~~€~€€~€€~€~€~~~€~~~~€~}€~€€€~€~~€~€}€~€~€}€~€}~~~€€€~€~}€~~}~€~€€}€~~€~€~€~€€~€~‚€€€}€~~€~€€~~‚~~~‚~€~€~€€}~~~€~€€}~}€~€~}€~~€~~€~~€~€~}€€€~€~~€}‚~€~€€~~~~~€€~~~~€€}~€€€€~€~~€~€~€~€~€~~€~€~~~~~€~~€~€~€}€~~€~~€€~}€~~€}€~€~}~~€}€~~~€~‚€~~€€~~€~€~~€~€~€~~€~€~€}€~~~€~€}€~~~€~~~‚~€€~€~~€~~€€€~€}~~‚~~€€~€~€~~~€~€}~~€}~€~~€~€€~~€}€~~}€~~€~€€~~€~~~€~€~~€~€}€~€~~~€~~€€}€}‚€~€~€~~~€€~€~~~~~~}€~}€€}€~€}€~~€€~€~‚~~‚}€~€€~€~~~~}€~€€~€~~~~€~€€€~€~~‚~~€~€€}€}€~~~~€€~~€€~}~~€~€€~€}‚~‚~~~~€€€~}€~~~~€€~~€}€~~}€~€€€~‚~~~€~}€€€‚~€}~~€~€~€€}~€~}€~~~~€€~€~~}~€}~€€~~€~}€~€~€~€~~}€}~~~~€~€€~~~~~€~€€~~€€~€~~~€€~€~€~~~~€~~~€~€~~€~~~€}~€~€~~~€~€€~€~€~~~€€~~€~€~~€~€~€~€}€€€~€}€~€€~}~~~€~~€~~€€}€~~€€}€€~€}~€~€~~€}€~~~‚€~~~~€~~~~~~€€~€~€~€€~€~~~€‚~~€}~€~~~‚~~~€€~€~~}€~€~~~€~~~~€~‚}}}€~~‚€~€~€~~~€}€~€~~€}€€~~~~€€~€~~€~~~}€€~~~~€~~€~~€}€}€}€~~~€~~€~~‚€}~}€~~}€~€€}€~€~€~~€~‚€€‚~€~~}~€~€~~€~~~~~~€€}€~€~€~€~~~~€€~€}€~~~~€~~€~€}~€~~~€~~€~€~€~~€}€~~€€~€~~~~€~€~€~€~€~~~~€~~€}€~€}‚~~€~€€€€€~€~~~€~€~€~€~€~~€~~~€~~€~€~~‚}~€~‚€€}€}€~€~€€~€~€~€€~€~~~~€~€~~~€}~€~~€€€~€~~~}€€}~€€}€~€~~~}~~}~€}€~€~€~€~~€~~€€~~€~€~€}~~€~€~€~~‚~~€‚~€~€~€€€€~~€~~€€~€~~€€~€~~~~€‚~~~~€~€~€~~€}~~€~€~~~€€~~€~~~~€‚~~~€~€~€~~€~€~€€~€}~~~€~€€~€~}€~~}~€€~€~~~~‚~€~€~€€~€~€~~~~€~€}€~€}€~~~}€}€~€~~~€€€‚~€~~‚€~~~~€~~~~~€~€€€}€~€~€€~€}~~‚~~~~€€~€~€}~~€}~€€~€~€~~}€~€€}€}~€~€~~~~~}€~€€~‚€~~~~€~~~~€~€€~€}~~~~~~€~€€~€~}~~€~€~}€~~~‚~~~€}€€€~~~~~€}~‚~~€~~€~€}€~~~~~€}€~}~~€}€~€€}€~~~€~€~€~~€~€~~€}€~}€~~~~~€~€€€~~€~~~€~€€~~~€~€~€~~~€~€}~}€~€€€~~€~€}~€~~~€~~€~€}€}€~€~~€~€~}€~€€€~€~~~~~}~~~€~~~€~€~€€~€}€~~~~€~€‚€€~~€~€~€~€}€€€~€~€~€}€€~€~€~€~~€~€~~~~~€€€~~~€~~€€~€}~€€~~€~€}€~~‚~~~‚~~€~€~€}€~~~~€~€€~€€~‚€€}~~€~~€€~~~~€}€~€}€~~~~~€~€~~€~~€~~~€~€~~~€~€~~€~~€~€~€€€~}€€}€€}€}€~~~‚€€}€~~~€~~~~€‚~~€~€~€~~~€~€€€€~~€~~~€}€~~~€~€~~~€~€€~€~~€}€~€}~~}€}~€‚~~€~€~~~€~‚€€‚}€~€~~~~~}€~~~€€}€~~}€~€€~€~~~€~€~€}~~€~€~~~~~~~€~€}€€~€~~~~€}€~~~€}€~€~~€~~~€~~€€€~€}€~~€}€~~€}€€~€€~€}~€€~€~~~~€~‚~~~€}}~~~€~‚€}€}€€~€~~€~~~~€~€€}€~~~~~€~€~€}~~~~€~€}€€~~~€~€~€}~€~~€~‚€€~~~€~€€}€~€~€~€~€~~€~~€€~~~~~~€~€‚~€~€~€}~~€~€}~~€~‚€€}€}€~€€~~€‚~~€€~€€€~€}~€~€~€~€~€~€‚~~€}€~~~€~€€€~€~~‚~~~}€~€~€~~€~~€€~€}~€~€€‚~€~}€~€€~€~~€~€€€€~€~€€~€€}€€~~‚€€~‚~€~~€}~€~€~~€~~~€~€~€}€€~€~~~€€€~€~~€~~€~€~~}€~‚€€‚~€~~~€~€}~€~€€~~~}~€€~~€~~€~€€~€~€€}€€}€}€€~~‚‚~€~~~~~~~€}€~€~~€~€€~~~€~€~€€~€~~€~€~€~}~~~‚~~€}~€~€~€~~}€~€€€€~€~~~~€~€‚~~~~~€~~~~~~€~€€~~~€~€‚~€~€~€~€~€~~€€€€‚~~€~€~€}€~€€~€~~€~~€~€~€€}~~~~‚}€~€~€}~~~~€~€~€~~€~~€€~€~€~€~€~€~€~~~~€~~€~}€~€}€~€€~€~~~}~€€}€€~€€‚~~€~~€€~€~~~~€€€~~€~~€€€~€~~~€}~€}€~€~€€€~€}~~~€~€}€~~~~‚~}‚€€€~€~~€~€~€~€~~~€~~~€~~€~€~~€}~€€€~€~€~~€~‚€~~~~€~€€~}}~~€~€€€€~€~~~€~€~€~€€~€~~~~€~€€~€~~~~~€€€~€}€~~}€~~€€€~€~~€~~€€~~€~~~~€~~~~~€~~€~€€€~€~~€~€€}}~~€~~€~~€~}€}‚€~~~}€~~€€€~~~€~~€€‚}€~‚~~~~~~€‚~€€~~€}€}€~~€~~~€~€~~€~~€€~€}~~€~~€€~~~€€~€~~€~€~~}€~€~€€}€€€~~~~~‚€€~€~~€~~€~€€~€}€}€~~€~€}~€}~~~}€~}~~€~~€~€€}€€}€~~~€~€~€~€~~€€€€€~~€~~~‚€€~~~€~€€~€~~€~€€€~€~~}~€€~~~€‚~~€€~€~~€~~€~€€€}~}~€€~~~~€~~€~~€~~~€€€~}~€~€€€€~~~}~~~€~€~€~~~€~~€€~~€~€~€€~~€~€€}€~~‚~}~€€‚~~~€~€€€}€}€~}€~~~~~€}€€~€~~~~€~€‚~€~}~€~€~€~~~~~€~€€~~€~~}€}€‚}€€}€€~€~~~}€~€~€~€~}~~~€}€€~€~€‚~€~}~~~~‚}~€~€~€~€~~€~€~€€~€~€~~~~~~~€~}€~€}~~€~€~€~~~€~~€}€~~€}~~€€~~~€~€€~€€~€€}€~~~~~€~€€}€~€~€~~€~~~€~€~~‚~€~‚€€~€~~~~€€~~€€~~~€~€~~~€~€~€~~~€~€~€~€~€~€~€~€~~€~~€}€~}€~€‚~€~~~~~€~€}€~€~€~€~~€~~€~€€€~}€~~~€€~€~€}€~~~~€~€}~~~€€€€~€~~~~€~€~~~~~€~€~~~€}~€~~}~}€~~~€~€~~~~}~~€~€~€€~€~€~~€€~€}€~~~‚~~€~€~€~~€~€~€~€~~€~~~~}€~~€~€~~~~~~€~~€€~€~~~}~€~€~~~~€}~€€€~€€~€~€~€~~~~€€~€}~~€~€~~€€‚~}~~€}€€~}€~€~~€~€€~~~~€}€~}€~~~‚€~~~}€~€€€€~€~~}€€€~~~~€€~€~€~€€~€€}}€~~~~€}€~€~€}~~~€€~}~~~~€~€~~~~€~€€€~~~~€~~€~~~€~~~~~€~€}€~~~‚€~~€~~~€~€~~~€}€~€€}€}€~~~‚~€~€~~€~}}€~€~~€€~€~~~€~~€€€€~~~~~~~€~~€€}~~~~€}€~€~€}~€~€}€}€~~~~~~€~€~€~~}~~~€~~€~~~~€~€~€~~‚~~~€~~~€}€€}€~€~€~€~~€}€€~~€~€~€~~€~~€~€~€~€~€~€~€~~€~‚~~€~€}~~€~€~€€~€~~€€€~~~~~‚€€}€~€~€~€~~~€~€€~€~~€‚~€~~€~€~€~€~}€~‚~~~€}~€~~~€}~‚€€€~€~~€~€~~~€~€~€~€~€~€~~}~€€~€~~~€€€€€~€~€~~~~€~€~€~~~€~~~€‚}€~€~~~€~€€€€~€~~~€~€€~€}~€~€€}€~€~€~‚‚€~~€€}€}~~~€~€~€€€~}€~€~~€~~€~~}~€~€€~€~€€~~~~€€€~~~~~€~€€~€~~~}€~€€}€}~€}‚€~~}~~€€~€~€}‚~€~€€~~~~€~~€~€€~€~€}€~~}€~~€~€~€€~€€€~~€~~~~€€~€~~~€~€~€}~€~~€~€}€~€€€~€~~€€~~~€~€~€€~}€}}~}€€~€~}€~€}~~€~€€‚~€~~€~‚€€~€~~€~€~~€~}€~~€~€}€~~~€~~~~‚~€~~€~€€~~€€~€~~€~~~~€€~~}€~~~‚~~€~€€~€~€€~~€€€~~~~‚€€~€~€~€~‚€€~~~€~€~~€€}€~€~~}€~~€~€€€~€~~~~€~~~€}€~€}€~€~}~}~€~€~€~~€~~€}€~€}€~€€~€~€€~~€~~}~€€€~~€~~~€~€~~~~~€€€~~~€~€~€€~€~€€~€~~~€~~€€€€}€}}~~€~~€}}~€~}~~~€~€€~€€~~€~€~€~~€~€€~~€~~~€~€~~~‚~€‚}€~€}}~~~~€€~~€~}~~}€~€€~€~€~~~€~€€~€~~~}‚€€~€~}~€€~€~~}~€~€~€~€~€}€~~€~~~€€~€~€}€~~}}€}€~€}~~€~}~~€‚~€~€}~~‚€€}~€~€~~~~~~~€~€~~~€~~‚~}~~€~€}€~€~€~~~~~€}€€~}~~€}~‚€~~~~~~€}€~€}~~~€‚~€~~~~€~~~€€~~€~€~~~‚~€~€€‚}~~€~€€~~~~€~~€~€~~~€~€~~~~~€~€~€~€€€~€~~€~€}~~€~~€~€~€~€~€~€~}~€‚~~~~‚~€~€€}}€~€}~~~~€~~€€€€}€~}€~€€~€~~~€~€~}~~€~€€€~€}€~€~€€~~€}€‚~€}€€~}~~~€~€~€~~€~€~€~€~~~~~~~€~€~€~€~€~}€~€€~€}€~€~€~~€€~~~€~€~~€~~~~€~~~~~€~€~€~~}~€~}€~€~~€~~€~~€}~~€~€~‚€~€~~‚~~~~€~~€~‚€€~€~~€~~€€~~€~€€}€}€~~‚€€~€~€~~~~~€~}~~~~€~€~€~€}~€~~~€~€~€~~~€}€~~~€}€€~€~~~€~€€€~€~€~~‚~€~‚€€~€~€~€~~~€~€~}~~~~~}€~~€}‚€~~~~~~~~~~€~€~€~~~€~€~‚€~~~€}~€~€~€~~€€~€~€~}€~~~~~~€}€€~€~~€~€€€~~€€~~~€€~€~€€~€~€~~€~€~€€€~€}~~}~€€~~~€~€€€€€}€~€}€€€~€~~}€~€€€€~~~€~€€€}€~€~}~~~€~€}€€~€~~~}€~€€~~€~~~~€~€~€~€~~~~€€€€~€}€~~~€~€~~€~€~€€~€€~€}€~‚~€‚~€~€~€}€‚}~€}€€~€~€}~}~~€€‚~~€~~€€~€~€~€~€~~~€}€~~~€~€~€~€~~~€~~€€~€~€}€}€}€~~€€€~~€~€~€~€~}~~€~€~€€~€~~€~€}~€}‚€€~~}€~}€}€~€€~€~~€~~€€€~€~~€~€€€~~€~€€}€~~€~€€~€~~€~€~€}€€~€€~~~€~€~€€~~~~~€€€}€€~}€€~€~~}~€~€~€~€~€}€~~}€~~€~~~€€~€€~€~‚~~~~€~~€}~€}€~~}€€~€~€~€~~~~€€~€~~~~€~~€€~~~‚~~€~€~€}~€~~~€~€}€~€}‚~~~~€€}€~€~~~~€€€€~€~~}€~€€}€}~}~€€~€~~€~~€€~~~~€~€~€}€€~€~€~~~€~€€~~€}~€}€€~€~€~€~€~~~€€€~~~~€~€‚~€}€~}~~€~€€~~~}~€}~~€~€~~€}€€~}€~€~€€~~€~~€~€€~€~~~€~~€~€€}€~€~€€€~€~‚€~~~€~€}€€~~€~€~~~€~€€€~~~~~€~€~€~€€~€}~€~~€€€~€€}€€~€~~€~‚~}~€}~€~~~€€~€~€~€~~€~~€~€€~€~~€}€€~€}€~}‚€~€}€~~€~~~~~€~€~~€€~€~~~~€€}€~~€~€~€~€~~€~‚~~~~€}€~~€~~€€~€~~€~€~€~~~~€~€€€~€~~~~‚}~~€‚~~~~~€~€€~€€~€~€€~€€~€~€€€‚~€}~€~~~€}~€~~€~~~~€~~€~}€~~~€~‚€€~~€€~~~€}€~~~€~~~€~€€~€~€~€~€~~~€~€€€~€~~€~~~€~€~€~~~~€~€€€~~€~€€~€~€€~€~~~€~~€~~~€~€~~€~~}€€~~~€€€€~€~~€€~}€~~€~~}€~~~€€~~€~~~~€€€~‚~~~~€€~€~~€~€€~€}~~€€~€€~€~€~€~~~€~€‚~€~~€~€€~~€~~€€~~~~€~€~€~~€}~€€€€~€~~€~€€€~€~~~~€€€~}~~~€€~~~~€€€~~}€~€€€~~~€~€€€~€~}€~€~~~~€~~~€~€~€~~~€~€~€~€~‚~‚~€~~~~€}€€}€}~~€~€€€~~~€~€~€€~}€~~~€~~€~~€~€~€}€~€€}€~~€~€}€}}€~~~€~€~€}€~€}€~€‚€€}€~~€~€~€~€~€~~~~~€€~~~€~€€}€€~€~€}€€~€~€€€~€~~€~€€~€€~~€~€~€~€}~~~€~~€‚~€€~€€~~~~‚€€€~}€~€~€~~€~~€~€€~~~~€€~}~~€€~~~~€}~€~€€~~€~~€~€€}~‚}~~€~€~€€~€€~€€~~~~~~€~}~€~~€€~€~}~~~€~€~€~€~~~~€~€€€~€~€~~‚~~~€}~€}~}‚}~€~€‚}€€}€~~~€~€‚€~~€~~€€~€~~~€~€€€~~€~€~€€€~€~~€~€€€~€~~~}€€~€}~~~€}€€€~€~~€€€~~€~}€}€~~€~€€€€~~~}€}~€€€~~~€~€€~~}~~€~~€~~€~~~€‚~€}€€~€}€~€~~€~~€~€}€~~~€}€€~~€~~~€~€~€~}~~~€}~€~€~~~€}€~€€~~€~~~€~€€€~~~‚€~~}€~€€€~€~~€~~€~~€~€~€~~€~~~€~€~€~~~€~€€~€~€~€~€€~€€}~€~€€~€~€~€~~€~€€€€~~~~€€~~€~€~€€~€~€~~~~~€€~€}€~€~€}~~€~€~~€}~€€~€~€~€}€~€~~€€€€€~~~~€~€€~~~~€~€€~€~€~}€~€~~~€~€€€}~~~€~€€~€~~€~‚~€~~~€~€}€€~€€~€~€~~~~€~€‚~€~€~~~€~}€}€~~~€~~~~~€~~€~€€}€~€~€~€~€~‚€€~€~€~~~~€~~€€~}~~~}~€€~€€~‚}€~€~~~€~€€€~~~~€}€~€€~€~€~~€~€~~~‚€~~~~€€~€~€~€~~€}‚€€~~~€}€~~€~€~}€~€}€~€~~€~€~€~~~€~€}€~€~~~~~€~€€~€~€€~}~€~€~€€€~~€~€~€~~~€~~~}~~‚€€€~€~€~€~€~€~€€}€€~~}€~~~€~€€€}€~~}~€~€€~€€~€}€~€~€~€€~€}~~~€~~~~€~€€~~€~~€~~€€€€~€~~~€~€€~€~~€€€~}~~€~~€€}€~~€~€~€€}€~€~€~€~~€}€€~~~~€~~€€~~~€€}€~€~~~‚~~€~€~€~€~€~€€€~~~€€~}€~~~€~€~~~~~~€~€~~€~€€€~€~~~~€€€€~€~~~€€€~~€~€€~€€~€}€~€~€~€}€~€~‚~~~}€€}~€~~€~€~~}€~€€€‚~€~~~~€~€}~€~€~~~~€}€}€€€€~€~}~~~~€~€}€~€~€€~€~€~€€}€~€~~~€€€~€~~€}€€~~€~€}€}€~€~~~~€}€~€€~€~~€€€€~~~€~~~~€~}}~~€~€~}€~€~€~~€~€€~€~~~~}€~€~€~€€~€~€~~~€~€~€~€~€~~€~}€~~~€~€~‚€€~€~€~€~€~‚~~~€~€}€~~~}€€€~€~~~}€~€€}€~€}€~~~€~€~€~€}‚~~€€~€}€~}~€€~€€~€~€}€~~~~€~€€~€€~€€~‚€‚~}~€€~€~~€‚~€~€~~~€~€~€€~~€~~~€~‚€~~~~}€€~~€~€~€~€~€~€~~~~€~~€€}~~~~€~€~€€€~€€~~€~€~~€~€€~€~~~~~}€~€}}€~€~~}~~€€€~~~~€€€}~~€~~€€€~€~~~€€~~€~~~€~€~€~~€€~€~~~~€~~€€~~}€€~‚~~~~~€~€€~€~€~€~€~}€~€€~€~€~€€~€~€~€~€€~~€~€~€€€~€~~€~€~€}~€~€€~~€~€~€}€€~€~€~€€~€~€€~~~~~~€~€~€~~~~€€€~~~€€~€~€~~~‚~}€€~€€~€}€~~€~~~€€~~€~€€~€€~€~~€~€~€€‚‚~€~~€~~€~~€}~~~}~~~€}~~€~€~€~€~€~~~€€€~€~~}€~€€€~~~€‚~€~~~€~~~€~€~€~~€~€€€~€~~~€~€€~}~~€}€€~€~€€€~~€~~~€~~~~€€€~€~€~€~€~}€}€~}~~€}€~€~€~~~€~}€~~€~~~€€~‚€~€~~€~~}~€}€}~~~€}€~€~~€}€~€€~€}~~~€€~~€~€~~€€€~€~~~€~€~€~€€~€~}€‚~~~€~€~€~€~~€~‚€€~€}€~}€~€€€~€~~~€~~€~€~€~€~€~€~}~€~€€~~~~~€~€}€~~€~€}€~~~‚€€€~~~~}~€}€€~€~€~€~~~~€~~€€~€~€~~~€€€€~€~~€~~€€‚~€~~€}~~€}~€~€~~~~€~~~€€~€~~~€~~€~€~€~~€€~€~€}€~€~~~~~€€€~€~€~}€~€~€~~€}€~€~~~~~€€€~€~~~€}~€~}‚€€}~~~€€~€~~~€~~€}€€}€}€€~~~~~€~~~~~€€€~€~€~€~€~~~€€~~}€~‚~€~~€€~€~€~~€~€~€€}€}~€}€~€‚€~€~€~€}€}~€~€~~~}€~€€}~~}€~€€~€~€~€~€€€~~€~€€~€~~}€~€~~~~€~€~€}~~~€‚~€~€~~~~~€~~€€€€~€~~~~~~~€}~€~€~‚€€~€~~~~€~€~‚€~€~}~~~}€}€€~~~~~€}€}€~}~€}€~€~~€~€€~~~~€~€~€€€~€~~~}~€}€€}€€~€€~€~~~~~€~€}€~€~~~~~€}€€~~~~€}€~~€~€€€€€~€~~~~€€€~~~€~€~€~~€~€€€~~~€~€}€~~~€~€~€€€~~€‚~~€~€€~€€€~€}€~~€~€€~~~~}}€~€}€~€€~~~€~€€€€~€~~€~€€~€}~€€}~~€€~€~~~}~€~€~~€~€~~~~€}€€~~€}~~€~~€€~€~~€~€€~€~~€~€~~‚~~€}€~~}~~€‚~€~}~}}€€~€~~~€€~€~~€~€€~~}€}€~~€}€~€~}~‚€€~€~~€~€~€}~~~€}€}€}€}€~~~‚€}~~€}€~~~~}€~}€~~~~~€€~€~€}€€€€}~~€€}€€~~}~€~€~€}}€~~‚€~€}€~€~}€€€~}€}€~~~~~~€~€~€~~~~€~€€€€~€~~}€~€€~~~€~€~€€~€~}~~~~€~€}€~~~€~€~€~€~~€~€~~}~~€~~€~€€~~€~€€}€~~~}€~€~~€}€~~~€}~€~}€}€~~~~€~€~€}€~~~€~€€}~~~€~€~}€~~€}~€€€~~~~€€€~~~€~€€~€~€€}~~~€~€€€‚~~€~~~€~€~}€~~~~€~€~~~~€~€~~€~~€~~€~€~~€€~€}~€~€€}€~€~€~€~€€~€€~}€~~~~€~€~~~~~‚~€~€~€~‚€€~€~~€~€€€~€~}‚~~~‚~~€~€}€~€~€~~€€}~~€€€~€}~€~~}‚€~€~€€~~~~€~€€€~€~~~~€~‚~€€}~~~€‚~€}~€}€€‚€~€~~~~~~€~~~~~~~€‚}€}€~€€~~€~€€~€~~~~€~€€~€€~€~€~~~~€}€}€€~€}~€}€€~€~~‚~~€~~~€~€€~€~€~~~€~~€~~€~~~€~}~~~~€~~~~~€~€~~~€}~€~€€}€~~€~~~€~€€‚~€}~~€~~~€}€~~~~€~~~€~~~€}€~€~~€~€}€}€~€€~€~~€~€~~~~‚~€}~€}€~~~~~~€~€}€~}‚}€~€‚~~€~~~€€~~~~€}~€~€}~€~€€~~}~€}€}€~€~€€~~€~€~~~€~~€€€~€~~~~~€~~~~€€~€€~€}~~€~~€€€~€~}~‚€€€~~~~~€~~~€€~~~~~~~}~€~€~~€~€€€~€~~~€€~€~€€€~€~€~~€~€€~~€~€‚~€~€~€~€€~~~~€~€€~€€}€€~}€~~€€~€}~~€~€€~~€~€~~€~~€€€~€~~€€}€~€}}~~€~€€}€‚~€~~~}€~~€€~€~~€~€~~~€€~€~~€}}€€~€~}€~€~~~~€}€~€€~€}~€~€}€~~~€~~€~€€~€}€~~~€~€~€~€€~‚€~€~}‚~~€}~~€€€~}€~~€~€~€€€~€€~~~€~€}}€}€~~€~€~€~€€€~}€~~}€~~€~~~€~€}€~~~‚~~€~€}~€€€~€~€~€}~€~~~€~€~€~~~€}€€~€~€~€€}€~€~~~€~€~~€~~~~~~~€}€~€€€}~}€~€€~€}~€~€€~€~~€~‚~‚~~~€~~€}~}€~~€~~~~€€~€}~€~€€€€~€}€~€~~~~€~€€€~€~€~~€€€~~€~~€€}€~~}€~€€~€~~~~€€~€~~~~€~€~€}~€~€~€~€~€}€€~€~}€~~~~~€~€€~€~~~~~€€~€~€~€}~}~~€‚~€~€~€~€}€~~€~€~€~~€~~€~~€~~€}~~€~~~€€€€~~~~€‚~€~~~€}~€}€€}€€~€~~~~€~~€~€~~~‚~~~€}€}€~€~€€~~~~~€~€~€€€}~~€~€~€~‚~€~~~€~~€~€~~~€€~}}~~~~€‚~€~€~€}~~~€~€~~~€~€~~~€}€~€~~€~~€~€~€€‚~€~€~~€}€€€~€~~~€~‚€€~~€~}€~€€€€~€~~€~€€~~€}}~€~€}€€~€~€€~€~}€~~~€~€‚€~€~~~€€€‚~‚~€~~}€~€~~€~€~€€‚}€}~~~€€~€~€~€~€~€~~‚~~€~€~~€~~~€~€~~€~~€}€~€~€€}€~€~~~~~~€~€~€~€~€~~~~€‚€~~~~€~~€~€~€~~€~€€€}~€}~€}€~€€~€}€~~~~}~~€~~~€~€}‚€~~€~€~€~€~‚€‚}~€€~€~~~~~~~~€€€€~~€~~~€~€~}~~~~€€~€~~~~€€~€~~~~€~~~~~€}~~€€€€~€~~€}€~€€}€}€~€€}€~~~}~~~€~~€}~€~~€€~~€€~~~~~~€~~~€€~€~~~€~€€~~~~~€€€€~€~~€€~€~€~€~€~}}€~€€~€~~~~€~€~€€~€~~€~€~~€€~~~}€~~€€~€}~~}€~~}€~‚~~}~€~~€~€~~€~€~~~~‚~~~€~€~~~~€~€‚}~~€~~€€~~‚~~€‚}€~~€€~€~}~}€~}€}€~~€}€€€~€~€~€~€€}€~€€}€€~~~~~~€€€€~~€~~€}€€~~€}€~‚~‚~~~€~€~€€~€~~~~€~€€~}}€~€€€~~~€~~~~€~~€~€~~€€€~€}€~~€~€€€~€~}€~€€~€~~€~€~~}~€~€€~€~~€}‚~~~~€~€~}€~~€~€}€~€~~~€€~€~~}€~~€~€~~~~~~€~€~€~~~}€~€}€~~}‚~€}€€~~€~~€}€~}€}~~€~€~}~~€~~~€~€€~€~€€~€~€~€€€~€~€}€~~}€}~€€~€€}~~€}€}€~~€~}€~~~~€~€~€}~€€~€~~}€~€~€}~~~€~€€~€~~€~€~€}€€~€~€~~~€~}€~~~‚~~€~}€}~€~~€‚~€~€~€~€~~€~€}~€~~€€€~~~€~€}€~}€~~€~€~€~€€~€}€~~}~~€€}€€~€}€~€}€}€~~€~€~€~€}~€~€€~~€}€€~€~}€~~~€~€~~~€~~€~€~€€€~€~~~€~€€€~€€~€}€}€~€}€~€€~€~~€}€~~‚~€€€~~~}€~€€}€~~€€~‚~€~~~€~€€~€~}~€~~~€~€~~€}€}€€~€€~€}}~~€~€~€~}€€~}~€~€~€~€~€~~~€~€~~~~~€~€€~€~~~€~€€~~€~~~€~€~€~}€~€€}€€‚~€~€~€~€€~~€}~~€~€~€~~}€~€}~€}€€~~€~€~€~€}€€~€}~}€~€€~€}‚~~€~€~~€~€€~€~}~~~}€€~~~~}€~€~€~~~€~€~€~€~~€~~€€€~~~}€~€~€€~~€€~€~~~~~€~~€}€~€~€€}€~~}€~~~~€€}~~~€~€€~€~~€~€~€€~€€€~~~~€~€}€€~€~}~€~~€€€~~€~€}~~~~€}€~~}€~~€€~~€~€€€~~~€~€€€~€}~€~€€€~€~}~€€~~€~~€~€€~~~€~~€€~€~€~~~‚€}~€}€}€€}€~€~€~€~€~€€~‚~~€~~~~~~€~~€€}€~}€~~~€~€~€~€~~€€€~€~~€}€~~€~~~~€~€}}€~‚‚~€}€~€}€~€~~€}€~€~~~~~~€€~€~~‚~~~€~€~€€~€~€~~~~~€~€€~€€~}‚€}~~~€~€~€€€€‚~}€~}€~€~~~~}€~€}€€~€~€}~~~€~€}€~~€~€~€~€~€~‚~‚~~~€~€}€€‚}~}~€€€~~~€}~€}€~€€€~}€~~€~€}€~€~~€~~€~~€~~~~€}€€~€€~~~€~~€€~}~~‚}~}€}€~~~‚~€}~€}€~~~~€~~€~~~€~€~€}€~~€€~€}~€}~€€€‚~€~~~€€}€€}€~€~€~~€~~~~~~~€~€~€}€~€~~€~~€~€~€~€~€~€€~€~€~~€~€~~~€}~€~~€~~€€~€~€~}€~€}~€€~~€~~~€‚~€~€€~€€~€€~~~~€~~€~‚~~‚~~€~€€€~€~~~€~€~€~€~€~~~~€~€}~~€~€~~€~€~€~€~~€€€‚}€~~~~~~€€€~~€~€€€€~€~~}~€€~€~~~€€€~~~€€~~~}€~€€}€~~~~~€~€€~~€~~€~~}€~~~}€~€~€~~€~~€}~€}~~~~~€~€}€€~€~~€~~~€~‚€€~~€~~€~€~~~€€~~€~€~~€~~‚~€~€€~€~~~€~€€€~€~~‚~~}€~€€~}€~~€~€~}~~‚~~€‚}€~€~~~€~€~€~€~~€~€€~€~~~€€€~€~~~~€€€~€}€~~}€€~€€}€~€}€~€~~~€~€~~‚~~€}€€~€€€~~€~€€~~€~~€~~~€}€€}€€~€~~€‚€€€~€~€~~€~~~€~‚€€€~~~€€~}€€}€~€~€~~}~~€~€}~~€}€€~~~~~€~}€~€~€~~€~€}~€~€€~€~€~€~~~€}€‚~~€€}~€~€~}~~~€~€}~€~~~€€}€€~€~~~€~€~€~€€~~~€~€~~€~}}~€}€€}~~€~€~€~€€~€€~}€~~€~€€€€~~~€~‚€~}€}€}€~~€~€~€}€}€~}€~}€}~~€}€~€}~€€€}€}~~€~€€€~~~€€€~~~€€~€~€~€}€€~~€~}€€~€~€~€€~€~~€~~€}~€~~~~~€~~€€€}~~~€~~€€€~€~}‚‚~~€~~€~€€~€}€~~€~€~~€~~~€~€€~~~~~€~€~~€~~€€~~~€€~€~€€~~~~~€‚}}~~‚}~~~€€~€~~~€€~~€}€~€~~€~€}~€~~~€€~~~~~~€~€~€~€~~~~}~€}€~€~‚€~€~€}€~€}~~€~~€~~~~~€~~€€~€~~€~€€~€~€~€€~€~€~~~€~€~€~~€~€~€€~~€~~~€}€~}€~~‚}~}€~€~€~~~€~€€€€~~€}~~~€€~~~~~€~~€~~~€~‚€€~~~€~€‚~~‚}}~€}~€~~€}€~€~€~€~€€€~~€~~€€~€€~€~~}€}€~}€~~~~€~~~€€~€~€~€}~~€~~~€~~~€€}~}‚~~€~€~€€~~€‚~€~~~~~~€~€}€~€~€~€~€~€€~~€~~€~€€€~€~~~€~€€~~~~~€~€~€~€~€€~~~~~€}€€~€~}€~€€€~~~}€~~~€~~€~~~~~€~€~€€}€~}€~~€~€€~~~}~}€}€‚~€~~~€~€€€~€}~~€~~~~€~}€}€~€€€€~€~~~€}~~~€‚~~€~€~~~€~€€€€~~€~~€~~~€~€€~€‚~~~~}~€€~€}€~~€~€€~€~~~~€~€~€~~~€~€€€€~€~~€~€€€€~}~€}€~~~~€~€~€~~€}€€€~~~~~€~€~€~€~€€~€€~~€€~€~~~€~€€€€}~~~€~€~€~~€€}~~€~€€~€€~€~~€~€~~€~€~~~~€~~€~‚~€‚~€~~€~€}€€~~€€}€€~€~~€~€~~~~~€}€~€€~€}}€~~€€~~~~€€}€~~€}~~~~€€}~~€~€‚~~~€~~€~€€~€~~€~€~}€}}~€~€€€~~€}€~€~~€€~~~€~}€~€~~€€~~€~€}€~€~€~~}€~€~€€}~~€~~€}€€€€€€~}€~~}~€€~€~€~~€~~~€~€€€~~~~€€~€~€}~€~€}€€~€~€}~€~€}€€~€~~€~€€~~~€€‚~€€~€~€~€~}€‚~~€~€~€~€€~~~‚€‚~€~~€~€~~~~€~€}€~}~~}€~€€}€~~‚~€~€~€~~~}€€}€}€€}€}~€}€~€~€~€~€~~~€~}~~€~€€€~€}€~~~~}€€~~€}€~~~~~€~€~~~~€~€~€~~€}€~~~€~€}€~€~~€~€~~~€~‚~€€~€~~~}~~€€~~}~~€€~€~€}€~‚€~~~€~€~€~€}€~€~€~€€€~€~€~€~€~€~€€}€€€~~€~}€~~€~€}€~~~~€~€€}€~€~‚~~~€€}€~~~~€~€€€€€~~~~€€~€~€€€‚~€~~~€~€~€~€~~€}€~~€~~€~~€€}~~€~€~€€~~€~~~€}~€€€}€}~~~€~€€€~€~~€~~~~€~€}€~€~€€€~~~~€~€€€€~€~~€~€€}€~~~€€€~}€~€~€€~€~~€~€}€}€€~€€~€~~}€~~€€~€~€~~€~~€~€~€€~‚€~~~€~€~€~€€}€}~€~€~€€€~€~€~€~€€€~~~€~€~€€~€~€~~~~~~~€}€€~~~‚€}~~}€}€~~}~~€€~~~~€~~‚€}€}}€~}€~€~}€€‚~~~~~€~~€}~€~€~}€}€~~~~~€~€~€}‚~~€~}~~~€}€~~~~~€~€€~~€~€~~€€~€~~}‚~€~~€}~€~€~€~€~€€~€}‚~€~~€€€€~€~~~~€~€}€~€~~~€~~€€~€~~‚€~~}~~~}€}€~€~~€~€~€~~~€~€€€~€~~~€€~€~€~‚~€~€~€€~€~~~€~€}€}€~€€~€~€~~€~€€€€~~€}€~~€~€€~~€~€~€~€€}€~€~}€~€~€€}€~€}~€~~€~€~~€€~~~€€~~€}€€~~€~‚€~€~~€‚~€€~~~~€~~€~€€€~~€}~~€€€~~€‚~~€}}~€~€€~~€~~~€~€€}}€}}€~~~~€}€~~€~~€~€~€~€~€~€~€€~}€~}€€~€~€}~~~€~~€‚~€~€~€~€~~‚€~}€€€€€~~€}~}€~€~€~~~~‚~~€‚~€€~€~~~€~€€~€~~}€~€~€~}€~€€~~~~~~~€~~~~~€~€}€~}€~~~~~}€€~~~~€~€~€€~~€~€€€~~~~€~~€~}€~}€€~€~€~€~~~}€~~€€}€~~€~€€}€~€}~€~~~}}€€€}€~‚~~€~~€}€~~€}€~~}€~€€~}~~€~~€}€~~~€~€€~~~€~€€}€~~~~€€~€~}€~€~~~}€~~}€}€}€}~€~€~€~~€~€~‚€€~~~€~€}€}€~€€€€~~~~‚€~€~}€}€~€}€~€~€€~€~~~€~€€‚~}~~€~€€~~€~~€~€~€~€~€}}€~~}€~€€~~~~‚~~€~€~~~€}~~~€~€€€€~~}€~€€~~€€~€~€~€~€~~€~‚€€€~€~~~€~~€€~~~~~€€~~~~€‚€~~~~€}€~~€~€€€~€~~~€~€€€~~~€~€€~€~~€}€~‚€€~€~~€~€~€}~~€~€€~€~€~€~€€€~~~~€~€~€}€}€~€}€~~~~€~€~€}€~‚~}~€~€~€€€€~€~~€~‚€€~~~€}€~€~€€}~~€~~~€~€~~€}~~€~€~~€~€~~~€~€~}~€~€€€~€~€}€~~€€}€}~~~€~€}€€~€~~~€~€~~~~€~~€€€~€~~~€~€€~€~~}~~€€€~}~}€~€€~€~€}€~€€~}€€}€~€~~€~~€~~€}€~~‚~€~}€~}€~~€~~€€~}€~~~}€}~€~€€~€~~€~€€‚~€}~~€~€€~~€~€€~€€~~~€~~~€}€€~€~€~‚€~~€~€~~~€€~~~~€~€~€~~‚~~€~€~~€}~€}€€~€~€€~~€}€€~~‚}~€~€~~€~€~€€€~~~~~€~€}€€}€~~€~€~€~~~€~€€~€}€~~€~€€~}€~~~€€~€~~€€}€}~~~~~€€~€}~~~€€~€€~~~}}€~‚€€~€~~€~€~€~€~€~~€~~~~~€~~~€€€~~~~€~€€€€~~€~€€}~~€}€€~€~€~}€~€~~‚~~~€}€~€~€€~~€~~€€~€~€~‚€~€~~~~~~€€~€}~~~€~~~€~~~€~~€~}~€}‚€~€~~€~€~€€€€~}~~€~€€~€}€~~~~€~~€€}€~~€~€€~€~}€~~~€~~€€~€~~€~€~€‚~€€~€}€€~€~~€~€€~~€~}~~~~~~€~€~~~€~€~€}€}€~~~~~€€~€~€€~€~~€~~€€~~€~€~€€€~~€~€€€~€~€~~~~€€~}€€~€~€~€~~~€~€~~~€~€€}€~~€}€~~€~~€~€~€‚~€~€~€~~~~}€}€€€~~€~€~}€~€~~~~~€~~€~~~~€}~€~€€~~€~}~~}€}€}€}€~~~€€~€~~~€~€}~€~€~~}~€~€€€}€~~~~€€€}~~€~€~~€}€~€€€~~€~~€~€~~€€}€}~~€~~€~€~~‚€}~}€~€€~€~~€~~€€~€€€~€~~~~}}€~~~€~~~€~~€€€~€~~€~€€~€~€~€~~~€~€~€~}~~~€~€~€€€~€~~~€~~€~~~€~€~€€€~€~~~~€€€~~~~~€€€~€~~€~€~}‚€~~~€~€~~€~€€~~~~€~~€€~€~‚~~~~~€~€~€~~€~~~€~~€€€‚~~€~€~~€€}~~~~~€~€}€}€~‚€~~~~€~}€~€€€‚~}~~}€~€€€~€~~€~€€€€~~€~€}~€€~}~€~€~€}~€~~~~~€~~~~~€€€€€}~~€~€~~€~~€~~‚€€‚~~€}~~€~~~€~~~€€}€~~‚~~€~€~~€€~€~}€~€€~}€~~~€~‚€€~€€~€€~€}€~€~~€~€€€€€~€~~€€~~~~€~}€~‚€~~~~~}€~€€}€~€~~€~€~€~~~€~}€~~€~}~€~~~€~~€€~€~~~~€~€~€€~€~~~~€~~}‚~~€~€~€~~~~~~€€~€€~~€€~€~~~~€~~€€~~~}€}€€~€~~~}€~€€€~~~~~~€}€~~€~€~~~~~~€~€€~~€}€~~~}€~€~€€~‚~~€€‚€~~€~€€~€~€~€}€€~~€~~€~€~€~~~~~€~€~€€€~}~}€€~‚€~€}€~~‚~}~€~€~~~€~€€~€~~€~€€~~€~€~€€~€€~€~€~€}~~~~~€}~€~€€€~~~~€~€~~€~~€~€€€~€~~€}€€}~€~€€~€~~€~~€~~~€~€~~~€‚~€~€~€~~€€€€~~€~€€~€~€~~€~€~~~€~€}~~~~€~€~~~€€~€€~~€~‚€~‚~~~€~€~~€~~~~€~€€~€€~~~~€~€~€~€}~~~€~€~‚~€€€~€€~}€~}}€€~~€€‚~~~~~€~€~~~€~€~€~€}~€~€~€~€~€~~~‚~~~~~~€€~€}€~~~~€}€}€~€~~€€}€}€~€~€€€~}~~€~€~€~€~~~~}€~€€}~~~€~€€~~~}€~€~€~~}€~€€~€~~~~€€~€€~~€€~€~€~€€~~€~€~~€€€€~~~~€~~€~~€~}€~€}€~}€~€~€~}}~€}€~€~€~~€~~€~~€~€~~}€~~}~~~€}€€~€~€~€~€€~€~~~€~~€€€€~€~€~~~€~‚€~€~‚€~~~€€~€~~€~~~€~€~~€~€~€~€€~€~~€€}€€~~~€~€€€€~€~€}€~}}}€~€~~€}€~€~}€~~~€€~€~~~€~€~~€€}€}~€~~‚~€~€}€€~‚€~€~€~~~€~~€~~~~€~€~~~€€€€€~~€~~}€€~€~~~~€~€~€~~~€~~€€€~~€€€€~€~~€~€~€~~~€~€~€~€~}~~€~~~€}~€~€€€€~~}€~}€~~€€€~€~~€~€~~~€~€~}€€}€~}~€€~~~€~€~€}€~€}~€~~~€~€€‚~}€~€~~€€~€~€€~~~~~€~€}€~€}‚€~~~€~€~€~~€~~€~~€~~€~~€€~‚~~~~}€€€~€~€~€~€€€€~€~‚~€€€~~~~€€}€}€~€~€~€}€~~€~‚€~~~€€~€~}~~€~€~€€~€~~~€}€‚€€~~~€€~€~~~€€‚~€~€~€~~€€}~€}~~~~€~~€~~€€~~€~€~€~}~~~€~€~~~~€~€€€€~~~}~€€~~€€~€~~€~€€€~~~~‚~€}€€~~€~~~~€}~€~€}€‚~~~€~~€~~~€‚€€~€}€}€}€~€~}€}€€~€~~€~~~~€}€€}€€~€}‚}}~€~€~€~€~€€}€~~~€€‚~~€~€‚~€~€€~~~~€‚€~€~~~€~~€€~~~~€~€~~}€~€}€}€~€}~~}€~€€€~€}€~€}~~}}€~€}€~~€~~€}€~€~~~€}€~€}€~€~€~‚€~~~€~€€~€~~~‚€‚€~~~€~~€€~€~~€~€~€~~~€}~€~€~€}}~€~€€}€~~€~~€€€~~€}€~}~~€€}€~~€}€€~~€}€€~~€}‚€€~~€€}€~€€~~€}~~~€}€~€~€~~}€~}~€~€}€~~}~~~~€}€}€€~~~~€~~€~~‚~~€~€~€~€€}€~~~€€~~€~~~~€~€€}€}€€~‚€~~}}€€~€~~€}€~~€€~€~€€~}€~~~€€~€~€~€~€~~‚€~~~€~‚€€‚~€~~€~€}€€~€~~€~€}€€€~~€~~€~€~~~~€€~}€~~~€€}€~~€}}€}€}€~€€~€~~~€€~~~€~€~€€~€}~~€~€~€~~€~}€€€€~€~~€€}€~~}€‚~~~€~}€‚~€~€~~~~€}€~€~~~‚~€~€~€~€€~€~€~€}~€€~}~}‚~~}€~€~~€~~~€}~€€€~€~~€}€‚~~€~~~€€}}€€~€~€~~~€~~~€~~‚€~€~~~€~€€~€~~~€~€~€}€~~€€€~€~€~€€}€~~~€~€~~}€~€€€€~€~~€~€~~€~€~}€€}~~€~~€~~‚€€~€~~~~€}€€~~~~~~~€~€}€~€~€~€~€€€€~€~€€}€~~~‚~}€~€}~~~€~€}€~€~€€}€~~}~~~€~~~~~~€}€~~€~€~€€~€~€~~~€€~~€~~€~€}€~~€~€~€~}~~~€‚}€}}€~€~~~€~€€€~}€~~~€~€~€~€~~€~~~~~~€~~€~€~~~~€~}€~‚~€€~€~€~~~€€~}~}€}~~€~€~~€~~~€~~€€~~€~€~€‚~€~€€~€~€~~€€~€~€~€~~€~~~€~~~€~€€}€~~€~€~~€~~€~~€€~‚}~~~€~~€€~€~€~~~€€~€~~}€~€€~~~€~~€€~€~€€~€}€~~€~~~€~€~€~~€~~~~€€~€~~€~€€~€}~~€~~€€€~~~€}}€€~€€~~€~~~€}~€~€}~~€€}€~€€}€~~€~€~€}€~€~~}~~€}€€~€~€~~€~~€}€€€€~€~~~~~€€~€~~}€€€~€~~~€~€~€~€~€‚~€~}€}€€€€‚€~€~}€~€€‚~~~~€~€€~€}€~€~~~~€€~~}~~€€~}€~~€~€€~~~~€€~€~‚€€~€}~~~€~€~€€~~€}€~~~€~~~€~€~}~€€€~€~€}€~€~~~~~€~€~~~~€~€€~€~~€€}€~€~~€~€~€~€}€~~~€~~~€}}~}~~€‚}€}€~‚~~€}~~~~€}€~€}€~€~}~€~€€€~€~~~€~~~€€~€~€€}}~€~~€~€~~}€€~}~€~€~€~€€€~€~€~~~~}€~‚}~€~€~€}~~~~€}€~~€~}€€~~€~€~~~€~‚~€}€}€}~~€~€~€~€~€€~~~~~€~€~~~}€~€~€~~~€€€~€~€€~€~~~~~~€€~€~~~€~€~€~€~~‚€~~€~€~€€€~€~~€~€€~€€}~~~€‚~~‚~€}€~€}€~~€~€}€€~€~~~~€~€~~~}€€}€€}€~}€~€~~~~€‚~€€~€~€~~~€~‚~€~}‚~~~€}€~‚€€~~€~~~€€~~~~~~€€~€~~€~€~‚€~€~~~~~€~~€€~~~}€~‚€€~~~~~€~€}~€}€~€~~€€~€}€€~€~€~~~€~€~€€€~€~€~~~~€~€~~~~€~€~€}~~€~~€€€€~€~~€~~€€‚~~~~~€~}€~€~€€}€~€~€€€~}€~~~~~~~}}€€~€€~€~~€~~~€}~~~€~€€€~€~~~€~€€€~€~~~€~€}€€~~€}€~~}‚~~~€}~€€~€~€~~~€~€€~€~~~~~€~€~€€€€~€}€~~€€~€~€~€~~~~~€~€~~€~€€€~~~~€~~€~~€}~€~€~~‚~€~€}~~~~€~€~~€~~~€}€~€€}€~€~€~€~€~~~~€~€~€€~€}€~€~~~}€~€€€~€~~~~€‚~€~€‚~€~~~~€~€€€€~€~~~€}€~€~€~~€~€~€€~~‚€~~~~~€€~~€~~€~€~~€~~}‚}~~€~}~€~‚~€€}€‚~€}‚~€~~~€€~€}€~€~~~~~~€€~~~€~€}€~~€~~€~}€~€€}€~~€~~~~~~~€€~€€}€~‚€~~~‚}€}~€~~€~€€~€~~~~€}~€}€}€~~€~€~~€€€€~€~~~}€€}~~€~€~€~~~‚€€~€~~}€~€}€€~~€€~€~€~~€~~€€€~~€~~}~~€~€€~~~~€~~~~€€~€~~~‚~~~€~€~€}€~~~~€€~€~€}€~€~€~€~€~€~€€~~€~~~~€~~~€~€}~~‚~~€}€~€~~€‚€~€~~€~€~~‚~~}€}€}€}€}€~~~€~€}€}~€€~€~€~~~}€}~~~~€}€}€}€~~~~~€~€}€~~~€}€~€~~€€~~~€}€€~‚€~~~€€~€~~€~€}}€~€~€€}€~~€~€€~€}€~~}‚€~~~€€‚~€~~~€~~€~€}~~€~~~€}€~~€}€~~~~€~€}€~€~~€}~€~€~€~€~~~~€€‚~€~€~~~€€~~€}€€€~€~~~~~€€~€€~~~}~~€€~~€~~€}}}}€~€~~~~€}€}€€~~~~€~€‚~€}~~€~€~€}~~€}€~€~}~~€€~~~~~€~€~€~€}€€~€~~~~~€~€~€~€~~~€~~€~~~~€~€}€€}€~€~€€~€~~€~€€~€~}‚~~~~~~€~€€~€€~€}}~~€€€€€€~€~~€~€€|~€~€~€~~€~~€~~~}~~~€€€~€~~~~€€€€~~€~€~€~~€~~€~€€~€~~€}~~~€€~~~}~€€~~~~}€~€~€~}€~€}‚~~~€~€~€€}€~~~€}€~€~€~€€‚~~€~~~~€€~€~~~€}~€€~~~~€~€€‚~€~~€}€~~€~€€€~~~€~€~}~~€~€}€~~~‚€~~~~}~~€~€~€~~€~~€~€}€~~~~€~€~~€~€€}€~~~€~~~€~€~}€€~‚€~~~~€‚}€~€~~~€€~~~~~~€€€}€~€~€~€~‚€~~~~€~€~€~~~~~€~€€~€}~}€~€~€~~~€~~~~~~~€€€~€~€€~€~€}€~}€~~~€}€~€~}€‚~~~€~€€}€€€}~~€~€~€~€~~~€~€€~~€~~€}~~~‚}€~€}€}~€~€~€~€€~~€~~~~€}€~€}€~~~~€€~~€~~~€}€~~€~€~~~~~}€~€€}€€}‚~€}}€~}€~‚~€~€~€~€€~~~€€~€~€~}€€~~€~~~€~€~€~€~~€~~}€~€€€~€}€~€}€}€~~~‚~~€~€~€~~~~€€‚~~~€}€€~~€}€€~~€~€~~€~~~€~€~€~€~~~€~~‚€€~~~~€€~€}€€~}€€€~~~~~~€}€~~€~~€€€~€~~€~€€€~~€}~€~€~€~€}€~€~‚€~~€~~}€~€€€~€}~€~‚€~~~€€~~€~~~~~€~~€~€}€~€~~~€~€€€~€}€~}~~~€€~~€~~€€€~€~~~~€€~~~~‚€}€~~€~€€~€~~~€~€€~~€~~€~~€}~~~~~~}~€~€€~€~~€~€~~}€}€€~€~~~~€~€€€~€~€~€~~}~~€~€}~€~€~€€€‚~€~€~€~~€~€€€~€~€~~€}€~}~~~~~€~~~€~€~€~€€~~~~~€€~~~~~~€~~~€~‚€€~~~~€~€€~~~~€}~€€~€}~~}€~€€€~€~}€}€}€€}€~€~~€~~€~€€~~~~€~€€€~~€~~~€~€€}€~€~~~€}€~€~~~€~€€€€€‚~€~€~€~€€~~~€~~€€}€}€€~~~~€~€€~~~~€~€}€~€~~}}€€‚}~€~~~€}~~€~€€~}~€~€€}~~€€€~€~~€~€€€‚~~€~~~€~€~€~€}~€~€~€€}€}€~~€~~~€~€~€~€~€~~~~€~~€~€€€}€~~€}~€}€~~~~‚€€~€~~~€~€~€}~€}€~€~~€~~€~~€~}~}€~‚€~€~€~~€~~€~€~~€‚~~€~€€€~€~}}€~€~€}~€€~€~~~€€~€~~~€}~€€~€~€~~~€~€~€€€€}€}€~€€~€~~~€}€€~€€~~€€~~€~~€~€~‚~€€}~€~‚€~~~€~€~€~~~~~€~~€~€€~}€~€~}~€~~}~€}€~€‚~~€~~~}€€€}~~~~€€~€}~~€~€€‚~}~~€€€€~€}~€~€~~}~€~€~~~~€~€€~€~€~€~~€~‚~~~~€}~€€~~€~~~€€~~~~€~€~}€€~€~€~€~~~€}€~~~€€€€€~€~€~~~~~€}€}~€~~}~~€}€~~€~}~~€€~~€~~€~€€€~~~~~‚~~€‚}€~€€~€}€~~}~‚€€~€~}~~€€€}€~€~~€}~€~€~€~€€~~~€~}€€}€~~~€~~€~~€~~~~~€€~~~~}€‚€€~€~‚~~‚~~€~€€}€~~~€~€€~~€€~€~~€~~~~€‚~€}€~€~~~€~€€~}~~€}€~€~}€~€~~~}€~€~€€~€~€~~€~€€~~~€~€€€~€~}€~€~~‚~€~€~€~}€~€€€~€~€~€}€~~~~€}~€}€~€€~€~€~~€~€€~€}€€~~~~€€~€€}~~~€€}~€~~~€~‚€~~€~€€~€~}~€~€€~€~~€~€€~~€}€~€~€~€~}€~~~€~€~€~~~~~~€~€€~}€~€~€€~€~~~‚~~‚~€}€}~~~~~€~€~€~}~‚€~~~€~€€~~~}€‚~€~‚~€~~€~~€~€€€}~~~€~€€}€€‚~}€~€}€~~}}}€€~~~~€}€~~€}€~~€~€€~€}~~€~€}€}€~€€}‚~}~~€~€€€~€~€~€}€~}‚~~~~€‚~€~€}€}~~}€€~~€~€‚~~~}}€~‚~~€~€}~€}~~€~€~~~~€}€€}~€~€€}€~€}€€~€~€}€~~~€~€~€~~~~€~~€~€~~€~~€}€~€~}~~~€}€€}€~€~€~~~~€~~~~€}€~~€}~€€~~~€~€}€€~‚€}€~~~~~€~}~‚~~~}~~€~~~€~€~€~€~~~€~€€~~€}€~~~~~€~~€€~€~~€}€~‚~€~€~~€~~~€~€€€€€~~~€~€~~~€€}~€~‚€€€~~}}~€~~€}€~€~€~€€~€€~~‚€~~~~€~€}€}€€~~~€}€~€~€}€~~€€}€~€~€}€€~~€~~~€€~€~~€}€~~~~~~€~€~€€€~€~~€~€~€€~~€~€~~‚~~€~~€}€~~‚€~€}€€~}€~~}€€€€~}~~€~€€~€~€~€~€~~€~~~~}~€€‚}€€}€~~€‚~€~~€~~€~€~€~€~~€~~€€~~~~~~€€}€~€~€~€~€~€}~~€}~~~€~€€€}~~€‚~€}€~€~€~}~~€€~~}€~~}~€~€~}~€€~~€~~€~€€‚~€~~~€}€€~~~€~~~€~€~€~~€}~€€€~~€~~~~€~€~€~~€}€}€~€~€~€~€~~~~€~~€~~~~€~~€~€~€~~~~€~~€~€~‚€€€~€~€~~€~~€€~~}€~€€~€~~}€~€~€~€~~}~~}~€~€}€‚~~~€~~€€€~~€~€~~€}‚€~€}€}~€~€~~€}~}€~€€~~}~€~~~€~‚€€~€~~€~€~€€}}~~€€~€~~~€~€~€€~€~€~€~~~€}€~~~€€~}~~~€~€~€~~€~€~}~€~~~~~~‚}€~€~€~€~~€~~€€}€~€~€~~€~~~~~‚~~€€~~~~~€~€~}€~~~~~€€€}€}~~€~€€€~~~€€€~}€~}€}~€}€~€}€€~€~~~€~€~}€~~€~~€~~~~~€~€€€~€€}€~€€~€~€~€€~€~~~‚~~€~€}~€~~~~€~€€~€~~~€€~€~~€~€€€~€€~}€}~€€€€~~~~~~~€€~}~~~~~~€~€~~€}~}~€~€~€}~~~€€~€~€€~€€~€~~~€~€€€~~~€~€~€€~€~~~€~€€~€~~€~~€~€}€~€~€~€~}€~€~}~~}€~€€~€~}€€~~€}‚€~~~€~€}€}~~~~€‚~€€~€€}€€}~€€~€~~~~€~€€€~€~~€€~€~€}~~€~~~~€~€~€~€~€€€~~€~€~~€~~~~~~€~€€~€~~~‚~}}}€}€~~~~€~€~€€~€}€€~~€~€€€~€~~€}€€}€~€~€~€}€}}€~€€~~€~€~€~~~‚€~~€~€}€€~€~~~‚}~~€}€~~~~€€~€~~~~€~€~€~~~€~~~~€~€~~€~~~€€~}€~~~~€~€~~€}}€€~€}€}€~~}~}€~~~€~~~}€~~€€~€~~€~€€~€~€~€‚~~€‚~€€€~~~€~€€}€~€~€~€€}€~€€~€}‚~~~~~€}€}~€~}€}~€€~}€}€~€~€~~~~~~€€€~~~}€~‚€€~€~~~€~~€~€€~€€~€~~€~€€€~€}€~~~~~€}€~~}~~~}€~€€~€}€~~€~€€~~€}€~~~‚€~~~€}~~€}€€~€}}‚~~€~€}€~~€~}€€~€}~~~€}€€~€€~€~~€~€€~~~~€~€~€€~€~€~~}~€~€}€€}€€~}‚‚}~€}€~€~}~~€}€€€~€~}€~€€~€~~~€~€~~}€~€€€~€~€}~~~€~~€}€~‚€~€~€~~~€€€€~€~~~€~€~€}~~~€~€~~€~€~€€~€}~~€€€}~€}€}~€~€€€~€}€}‚€€‚~~~}€}€€~€}€€~€~€~€~~€~~}~€~€~~~€~~‚€€~~~~€‚~€~~~€€~€~~~€~€~€}€~~~€~~€€~€~~€~€€~€~€~~~~~€€~~}€~€€~~~~~~€€~€}€€~€€~€~~~€~€~~~~~€€‚~~~€~~~~~€~€€€~}€~~€~€~~~~€~€~~€~€€~€}~~€~€€€~€~~€~€~€€~~~~€}~€€}~~€}~~€~€€~€€~~~~€~~€€€~€~€~~~~‚€}€}~€~€€~~~~€€~€~~~~€~€~€}€€~~€~~}€~€€~€~~~€~€~€€€~€~€~~~€}~€€~€€}‚€~~‚‚~~}€€~~~~€}€~€€~~€~€~€~€~~~~~‚~€}~€~€~~~€~}€~~~~~~€~€~€~~~€~€~€€€~~€~~~~~~€~~€€~€€~€~€~‚€~~€~€€~~€~~€~€€~~~~€~€€€~~~~~€€€~€~~~~€€~€~€}~€~‚~~~~€~€€~€€‚~€~~~}€~€~€~~}€~€~€~~€~€~~~€}€~€€€~€~~~€€~~~~~~€~€~~~€}€~€~}€~€~~€~€~‚~~~€~~€~€~€€~€~~€~€~~€~€~~‚~~€~€€}€~€~‚~~€~€‚~€€~€€}€~~€~~€‚~~~€~€}~€~~€~~}}~€~€~€€~€~~€~‚€€€~€~}~€€~~€~€‚~~}~€}€~€~~€€€~~€~€}€~€~€€€~€}~~~~~‚~~€~€~€~~~€~€€€}€}~€€€~~~~€}€~€~€€~€~~~~€}€~~€}€~€~€~€~}~~€~€~€}€~€~€~~€~€~~}€~€~€}~~€~~€€~~~€~€~}€~~~~~~€~€€€€}~€~€~€}€}‚€€~~~~€€}~~~~€€~€€~€}}€~~~‚~~€}~€~}€~~~~€~€€€€~€~~}~~€~~€~€€}€~€}€~~€~€€}€~~~‚~~~€~€~€~~~€~~~}~€~~€€}€~~€€~~€~€~~~€€~€~~~}‚~€~€€~~~~€~€~~~~~€~€~~~~~~€€‚}~€~~€€~€~~}~€~€}€~€~€~~€}€~€€~€~~€}€‚~€~~€}€€~~€~~€~‚~€~~€~~€~~~€}~€~~~~}€~}€€€€~~€~€}€€~€~€}‚~~~€~~€}~€~~~€~€€}~}‚€~~€~€€~~~~€}€~}€}€~~~~~~}€€~~~€€~€~~~}€~~~}€~~€€}€~~~~~~€~€€}€~€~€‚~~~€}‚€~~€~‚}€~€~€~}~~~€~~€~~~}~€€~€}‚€~~~~€~~~€~~~€~€~~~~€€~€~‚€~~~~~€€€€~€~~~}€~€~~€€~~~~~€~€€€~~~~€~€€~~~€~~€€€}~€~~~€~€~€~€~€~~€‚~€~€€~€€~‚€~~€~€~€~~~~~€}€€}€€}~€~~~€~€~€€€~~~‚~€}€€€~€}€~~€~‚€€~~€~~~‚~€~}€~€€~€}~}€€~~€~€€~~~~~~€~€~€}~~}~~~€~~€~€~‚€~~~€}€€~€~~~€~~€€€€~~€~~€€~€~~}€~€€~€~€€~€~~~€€~€~€~€~€€~€~~~€€€~~€~€~€€~€€}€~€€~~€}~€€~€~~€~€€~~~€~€~~€~~€~€~€~€~€~€~€}~€€~~€~~}~€~€€~~€~€}~~~~€‚}€€}€~€~~~~€}€€}€~}€~€~€~€€€~}~€~€€~€}€~‚‚~~~€}€~€~€~€}~~€‚}€}€~~~~€~~€~€~€}~€~~€‚~~€~€€~€~€~~~~~€€€~~€~~€~€~€~€~€€~€~~~€~€~€€‚~~€~~€~€}€~€€~€~€~~~€~~~€~~~€~€}€€~€~€~~}€~~€~€~~~€~€€~€~€~}€€‚~€}€~€~}€~€€~€}~€~€~€~€}€~‚€~€~~€~€~€€~€}~~~‚~€}€€~€~~~}€~€€~~€€~€€~}~€~€~€~€€~~~~~€~‚€‚~~~~~€€~~€~~€~}~~€}€~€€€}€~~€~~€~€~~~~€~€€€~€~~€}€~€~€}~€~}€~~~€}€}€€~€~~€}~€~€~~~€~~~~~€€~€€~~~~€€~~~€€‚~~~€~€~€€~~€~~~€~~€€}~€~€~€~€}€~€~€}~~~€~€~~€~€€€~~~~~€€~€}€}€€~~~€~~~~€~€€~~~€~€€~~€~€~€€~~~~€~~€~~~€~€~€~~~~~~~~~~‚€€~~~~~~€€~€~}€~€~~€~}€~‚€~~~€}€€~€~€~~~}~~€~€‚~€€~€~‚}~€€~€~€~~€~~~€~€€}€~~€~~€€~€~€~€~€~~~~€€€~}~€€~€~€~~~~~~~€€€}€~~~€€~€}€‚€~~~€~€€~€~~€~~~€}~€~€~~€~€€€~€~€~€~€€~~€~€}€€~~~€€~~~~€~€~€€~€~~€~€€}~}€~€~€~}€~€€~€}€~~~~~€~€€~€~~~€}€~€~€~~~€€~€}€~~€€}€€~€~€}~€}~€~€~€€€~€~~€~€€~€~~€~}~~~‚~~€‚}€€~~~~€~€€~~€~~€~€€~€~~€€}~~~~€€}€~€~~€~€€~~€~€}€~€€~€~€~€~~~~€~€~~€~~€€}€~€€~€~€~~€~~€}~}€~€~~€~€€€€€~~€~€~€~€}€~€}‚€~~~~€~€~€~€~~~~€€€~~}€~€~~€~~€~}}€}~€}‚€~~~~€~€~€~€~~~~€€~€~€~~~~~€€~€~~~€~~€€~€€~~~€}€~€€~€€~€~~~€~~€~~€€~~€~~}€~€€~€~~€€~~€}€~€€€}€}~€~€}€€~€}~}~€~~€€€€~~€~€€~€}~€€~~‚~~€€~}~~~~€~€~€~€€~~€~€€~}}€€€~€~~~€~€~€~€~}}€~€€~€~~€~€~€€~~~~€~€~€~~€€~€€}~€~€€~€~~~€~€€}€~~~€~€€}€€~~€€}€~€~€~€~€~~~~~€~~€~€€€~}€~€~€~€~~€~€~€}€€}€~~~€€~€}€~~~}~€€€€~€~~~€~~~‚€~}}~~€~€€~€~€~~€~€€€~€~~}€}€€~€~€~~~~~€€~€~~€~€€€~~~€~€€€~}~€}~€€€}€}€~€€€~€~~~€~€~€~€~€€€~~~~}~€~€~€~€~~‚~€~€~€~‚~€~~~€~€€~€~€}~€~}~€~€~€~~€~€~€€€~~}€~€€~€~}€~€€}~€~€€~~~€~€~€~~€~€€~~€~~€~€€~€~~~~€~~€~€€€€~€~€~€~€~~~}€~€~€~~€~~€~€~€}€~€~€~€~~~~~~€~€~€~€~~~€€~€}€€~~€~~€}€€€~€}~€~€~~~~~€~~~€~€~€€€~}€~€€€€~€~~~~~€~~€€€~€~~~~~€}€~€~~€€~~~€~}€~~~~~€~€~€~~~€€~€€~€~€~€~€~~‚~~~~€~€€‚€}€~~~€~€€€~~~€~}€~~€}€~~~€~~€€€~€€~€~€€}€~‚€€~~€~~€~€€~€€~€}€~€~€~}€~€~~~‚~€}€~~€€}‚~~~€~~~~}~€~~€~€€}€€~€}~€€~€€~€€‚~€~~~€~~€€€~€~~€~€~€}€~~€~~}€€}€~€€~€~€~}€~€~€€~~€~}€€~~€~€~~~€~€~~~€~€€~}~€~€~€~~€~€€~~~€~€€€€~~€}€~€~€~€~~~€€~€~~€~€~€~~~}€€~~~~€~~€~~€~~~€~€~€~€~~~€}~}€~~€€~~€~~~~}~€€€~~€~~€}~€€~~~€~€€~€~~~€~}~~€~€}}~~}~~€}€~€}€~~~€~€€}€~‚~~€}€€~~€~~€~‚~€~€~€~~€~~~€~~€€€~~~~€~€€~€€~€€~€}€~~€~€€~~€~~€€€~€~~~~€~€€€€~€~~€~‚€€~~~€~€€€~~€~€€~€€}€~€}€€~~€~~~}€~€€€~~~~€~€~€~€~€}€~~€€€€~€~~‚}€~€}€~€~}~~~~€~€~~€~€€€~}€€~~€€€€€~~€~€€~€}€~€~~~€€~~~~~€~€~~€~€~€~€~~€~€€€}~}~€€€~~€~€€~€~~~~€~€~€~€~}€~€}~~€€~€~~€~€~~€}€~~€~€~€~~€€~~€~€€€~€€~€}€}€~~~~€~€~€€~€~€}€~€}€~€~~€~€€}€~€}~€}~€~‚~~€~€~~€~~€€~€~€~€~€€~€€~~~~€~€~~~€€~€~€~€€}€~~}€€€~€}€~}€€€€€~€€€~€~€~€~~~~€}}€~~€~€€}€€~€~~~‚~€~€€~€~€~~~~~€~~€~€~~€€€~€~~€~€€‚~€~~€}}~€~€~€~€€}€~~~€~€~€€€~€~€~~~€~€€~€}~€~€~~~~€~€€~€}~€~€}€~~€~~~~}€~}€€~€~€~€~€~€€€~€~~€~€~€~€~~~~~€~€~€}€~~€~€}€~€~}~~~}}€~~~~€~€€~€~~~}€~€€€‚€~~~€~€}€€}€~€~~~€~~~€~€~‚€€€~€~~~€€~~~‚~~‚~~€~}€~~~~€~€~~€~€~€€€~~€€~€~€€~€~€~€€€€~~~~€~~~€~€~€}€~€~~~~€~€€~~€~€~~€~~~~€~€€€~€~~}€~~€~~‚‚}€€~~€€€€€~€~~~€€~€~€}~€~€~~~~~€€~~~~~~€~€€€~~~~€~€~€}€~€~~€~~~€}€}~~~€~€€~€~~~~~€~€€~€~~€~~€~€~€~€€~€~~}€~€~~~‚~~€~€€~€€~€}€~~~€~€~€€~~€~~~€}€€€~~€}€~€~€€}€~~~€~€~€~€}~~€~~€€~€~€~~€~€€€~~€~~€€~~~€~€€~€}~~~€€€~€~~~€€~}‚~~€~~~~~€€~€~~~‚~~€~~€~‚€~€~€‚}€~€~€}~~€}€~€€€~~~~~€~€~~€~€~€~€}€€€}~~~€~€}€€~€~€~~~~~~€~€€~€~~~~~~€€€~€~~€~€€€~~€~€€~€}~€~€~€}~~€~€~‚~~€‚}€€~€~€}€~~}€~€}~€|€~~‚~€}€€~€~~~‚}~€~~€~€~~€~~€~€~€}~€~~€~€}~€~€~~‚~}€~€€}‚€~€~~~€~~€~€~~~€~~~}~~~~€€~~€~~~‚~~€}€~€~~~€€~€~€~€~~~€~€}€~€~~€~€~~}~~~€€€~€€~€~}‚€~~€~€‚~~~~~~€€~~€}€~€~€~~‚€~~}€‚€~~€~~~~~€€}€€~€~€}€~~€~€€~~€~~€}~€€~€~~~€~€~‚€~~~~~€~€€~€~~~€}€€€€~~~€€€€~~~~~€€€~€~~~€~€~€~~~€}~~~~€~€}€~€~€~~€~‚€€~€~~~~€}€~~~€}‚~€~€~€~€~€~~~~~€€~€}€~~~€~€}€€~€}€~€}€~~~€~€€~€~€~~€€€€~€~~€~€€€~€}~~€~~€~~‚~~~~~€~€~‚~€~~~€~€€€~}~~€}€€~€~€~€~~€~€}€€~€~~€~€~€~~}€€~€~€~€~€€€~~}€~~}‚~~€~€€~€~~}€€~€~~€~€~€~~€~€€}€~€~~€~~~~~€~€~€€~€~~~~}€€~€~}€~€}€}€~€~€€~~~~€~~€~€~}€}~~€}~}~~€‚~~~€~~~~~€~~€~~€~~~~~~€€}€~€}€€~€€~~}€}€€€}~~€~€~€~‚~~~~~€~€€~€~€€}~~€~~€~~~€~€~}€~~€~~~€‚€}€~~€~€€~~~~~€~€~~€~~€‚~~€}€€~€}€~~€€~€~€~~}€}€~~€€~€~€~€}€~}~€~€€~€~~~€~~€€~~~~€~€€~€~~~€€}€~~}€~€‚~€~~~~€€~€~~€}€€~~‚€~~~~€~€€~}~~€~€€~€~~€~€€~~}€~€~€€~€~~€€~~‚~~~~~~€€~€~~~€~€}€~~~€~€}€€~}~~€~~€€€€€~~€~€~€~€~€‚~€~~~~€~€€~}~€}€€€€€~€}~€€~~~~~~~}€~€€}€}€€~€€‚~~€}€€~~€~~€€€~€~~~€~€€~~€~€€€~€}~~~€~€~€~~€~€~~€~€~€€~~€~€~€~~€€~€~~~~€~‚~€~€~€~~€€€~€~€~~€~~€~~~€~€~}€~€€€€~€~~€}€}€€~€~€~~~~€€€~~€~~~~€~€€~}€~~€~€~€€}€€~~~€~€~~€~~€€~€~€€€~~~~€~~€€€€~€€~€€~€~€}€~~€~}€~€~~€~~€€~~€~~€~€€~€}€~€~€}~€~}~€~€~€~}~~€~~~€}~€€€~€~~€~€€€~~€~~€€€€~€~~€~~€€€€~~~€€€~€~~~~}€}€~}€~~€~€}€~€~€~‚}€‚~€~€~€~}~€~~~~}€~€€}€~~~~‚€€~~€~€}€~€€€~€~~}~€€€~€~~€€}€€~~~€~~~}€€~€~~~~‚€~~~€~€}€}~}€‚~~~€}€~~}€~€€}€~€~€~~€€~~~€€~€~~€~‚€~}~€~€~~~~€~€€~€}~€~~€€~~~~~€€€~€~~~~}€~~€~€~}~€~€€}€~~€}€€€~}~~~~€}~€~~~~~€~€~€~€~~~~€€€~€~~€~€€€~~~~€€~€~~~~~€€}€~€€~‚~~€~€~€~€}€~~~~€~€~€~€~~~~€~~€€€€~€~~~€~‚€€~€~€}~~‚€‚~~€‚~~€}€~€~€~€~~~€~€~~€~‚~€~~€~€~~~€}€~€~~~€€€~€~€~€~€~~€~€~€‚~€~~~€~‚€€€~€~~€~€€€~€~‚€~~}€~€}~€~~~~~€~€~€~€~}~~~}€}€~~~€~€}€~€~~~~€~~€€€€~}}€~~€~~€~~~~~€~€€€~~€~~€~€~€€~~€‚~~~€}~€~€~€~}€~€€€~~~~€~€€€€~€~€~~~~€€€€~€~~€~~‚€~€~€}€~~€~€}€~€~~~}€‚~~€~~~~€~~€€€}~€€~€}~~~~€€€€~€}~~~€}~€}€}€~€~}~~€€€~€~€~€€~~~€~~~‚~€~~€~€~~€~€~€~~~~~~~~~~€~€~€€}€~€~€€€€~~~~€~€€€€~€~~~€~€€€~€~~~€~~€€€~€~~~€€€€~€~€~~€~€~~€~~€~€‚€~€€~~€~~~~~€~~~€~~}~}~~~~~~~€}€~~~~}€~€€~€~~‚~~~~€~~~€~€~~€~€€}€€~~€}~~€}~€€€~~~‚~}~~€~€~~€€€}€~~€~€~€€}€~~~~~~€~~€€~~~~~€~~€€~}€~~€~~€}~~~€~€~~~€~€~€~€€~€}€€€€~€~~~€~€~€€}€~€~~~€~€~€€~~~€~~€}€~€~~~€}€}€~~‚€}~€~€~~€}€~~€~€}€~€~~~€€~~€~€~}€‚~~€~€~~~}€~€~~€~~€}€~€~€~€€}€~~}€~€~~€~€~~€~~~~€€~~€~€~€€~‚€~~~€~~~}~~~€}€~~€~€}€}€~€€~‚€~~€~€€~€~~}}~€€~€~~~€~€€€~€}€}€€~€~~~€~€€€~€}~‚~€}~€€~€~~~}~€€~€~€~~€~~~€}~€€‚~~~€~€~}€~€~~€~€€~~€~€~}€~~€~€€€~€~~~€~~€~€~€~€~~~~€~€~€~}€~~}~~~€€~€~~€~€~€~€~€~~~~~€€€~~~€~~‚~~~~€€}~~€€}€~€~€€~€}~~~€~~~~€€~~€€~€~~€€€€~€~€€~~€~€~‚€€~~~~~€€~~~~~}~€€~~€~€~€€~}~€€~~€~~~~€~~~€‚~~€~~€~€~€€€€~~~€}€€€€~€€~‚€€~€~~~€~€~~€~€~€~~€€~~€~€€~€€}€~€~~~~€~~~€}~~€}€~€}€€€~€~€~€~}~€~€€~~~~~~‚€‚~~}~€€~€~€~~€€~€~€~€}€€~~€~~~~~€~~€€}€~€~€~~€~€€€~€€}€€~€~~~€€‚~€~€~~~€~~~~€€~€~~€}€€€~€~‚€~~‚€~~~~€€~}€~~€}€~€~€}€€~€~€}~€~€€€}€~€~~~~~€~€€~~€~~~€~€~€~€€}€€~~€~~€€€~€~~€~~~~€€~€~~~€}€~€€}€€}€~~~~~€}€€€~~€~~~}€~€€€~€}~€~€~€~€~€€}‚€~~~~€~€€€~€~~~~~€~€€~€}€~~~€}€€~~€}€~~~~€€€~~~~‚~€~€~‚€€€~€~€}~~~€~€~~€~€~~€~€~€€~~~~€}~€}€}~€}~~€~€€}€€}€~€~€‚~€~~€}~€€~~~‚~~€~€€~€€~€~~€~€}€}€~~€}€}~}€~€~~}~€~€~€€~€€€€~~€~~~~~~€~~}€~~~€}~€~~€~€~€~€~€€€~€}~~€~€~~‚~€~€~~€~€~€€}€€~€~€~€~~€€~~€~€~€~}€~~€~~~€~~~~€~€}~€}€~€€€~~}~~~€€~~~€~€€€}€~€‚}€€}€€~€~~€€€€~€~€€}€~~€‚~~€€~~~~€~€€}€~}€€~€~€~~€~€~€~~~~~~€}€~~€~€€€}€}~€€}€~€~~~€~€}€}€~~~~~€~~€~~~~~€€€~€~~€}€~~~€~€~~~~‚€}~~€‚}€~€~€~~~~~€€~€~€~€~€~€~~€~~€€~}€~~~~€~€~€~~~€}€~€~€€}€~~~~€~€~€}€~€~~€~€~€~€€~€~~~€~~‚~€}€€~€~~~~~€~€€~€}€€€~€~€~}}€~~~€~~€~€~~€~€~‚€€}€€~€~~~~~~€€~€~€~~~€~€~€~~€~€~~€€~~€~€~‚~~€~}€~€~€}€~€}€~~€~€€~~€~€~€}€~€~€~€~~€~€}}~~€~~€€}€~~~€~€€~~€€~€~€~€}~~}~~€}~€~€~~€~€~€€€~~€~€€}€€}€~~€~~}€~~€}€~~~€}€~€~~‚}~~€~~~}~€}€}~~€~~€~€~~€~€~~~~€~€~~€}‚~~€}€}~€€€~€~~}€~~~~€~~~~€~€€~€~~~~€€~€~~€€}€~}€~€€€€~€~~€~~~~~‚€‚~}~~€~€€~}}~€}€~€~€~€~€~~€~~€€‚}€}€~€}€~~~€~€€~}€}€~€€}€~€~€~€~~~€}€~€~€€€~~~~~€€€~€~~~}~€€~€~€€~€~€~~~€~€€}€~~€~~~~€~€€~€~€€}€~~€€}‚~€}€~~~€~€~‚~€~~~}~~~}€~€~€~~~~€~€~€}€~€~€}€~€~~€}~~€~€~€~~~‚€~~}~~€~€}€~~~€~€~€~€€~€€~€~~~~€}~~€~‚€~~}~€~~€~€€~€~€~}~~€~€€€}~€~€~~€~~~~€€‚~€~~~~€~~~~~€~~€~€€~€}~€~~€€}€~€}€~~~~~~~€~€~}€~€€~€~~~€~~€€~}€~~€~€€€~~~~~~‚€€~}€~~~€€€€}€~~~~€€~€~~€~€~‚~~‚~~€}€~€~~€€~~~~€~€€}€~~~~€~€~€~~€~~~~€~€}€~€}€~~~~~~~€€}€~~~€~€}€~€}€~~~€}€~€€~€~~€~~€€}€~~~~€~€~€~~€€€~~€~€~€€~~~€€€~€}~~}€~€~~~€}€~~€~~~€~€€€~€€~~€}~}€~€~€€~~€~€~€~€~}~~~€€~€}‚€~€~~€~~~€~€€~~€~~€}€~~€}€}~€~€~~~~‚€€~€~~~€~€~~€~~~€~€~~~€~€~€~~~~€€€~~~~€~€€~~~€}€€~~~~~~€~€~€~€}~~€~€€~€€}€~€}~~~}€~€€~€~~€€~€}~~~€~€~~~€€€~}~€~€€~€~~~€€€€~€~~€~€€~€~~~€€€~~~~€~~€}~~€~€~~~€~€~}~~€~€€€}€}€€~€~€~}€~€€€€~~€~~€~€€€~€}~€}~€€}€~€~€~‚~€~€~€~~€€}€~~€~€€~}~~~€~€€~€~€~~€~~€~€€~~€~~}€~€~€~~~~€€~€~~~€}~€€~~~~~~€~€€~€}€}~~~€€}€€~€~~~~~€~€~€€}€‚~€~~~~~€€}~€~~€~€~€~~€€€€€~€}}€€~€€€€}€~~~~€€}~~‚€~~€~~}€~~€€€€~~€€~€€~}€~}€~€~€~~~~€~~~~€~€~~~~~€~€~€~€~€}€€}€~~~‚€€€~~€~~}~~€~~~€~€€~~~~€}€~€}~€~~€€~~~~€~~€‚~€~€€~€~~€~~~€€€€~€~~€~€~€~~~€~€€€‚~€}~~~~€~€~€~~~€€‚€~~~~€}~~€~~€€~~€~€~€€~~~~€~~€}€~}€}~€‚~}~~€~€~~€~~€~~€~€~€~~€~‚€€~~~~}~€~~€~€€~€~~~}€~€€€€~~€~~€~‚~€~}€}€~€€~€€}€~€‚~~€~€~€€~€~~~€~€€‚~~~~‚~€~€€€~~~~€~€~€~~€~€€€~€~}€~‚€€}€~€~~‚~~€~€~€€€~~€~~€~~€€}€~~€~€€~~~~~€~€~~€~€‚}~~€~€~€~~~~~~}~€~€~€~~}€€~€~~~€}€€€€~}€~~€~€~€€~€~~~€~~~~€~€~€~~€~~€~€~€~~~~€~€~~€~~~‚€~€~~€~~~€~€~€~€€}€~~~€‚~€~€~€~}~€€€~€~€~~~~‚€‚~~€~€~€€~€~~~}~}€~€~€~~€€}}€~~€~~‚€~~~}~€~€~~€€~€~~€~€€~€}€~€~€~~€~~~~€~~€~€~€~~~€~€€}€~~~€‚}~€}~€~€~~~€~~€€~~~~€~~€~~~€€~€€~€}€}€~€€~€~~~€~€~€}€€}€~€}€€~~€}€~€~€€~€~€~~€€~€~~~€€~€}~~~}~~€~~~~~~€€€€~~€€~€~~‚~~€~€~€~~€€~~~~€~}~}~€~€€~€~~~€~~~~}~€~}€~€€~~~€€~€}€~}€~~€€~€€~~€~€~€€~~~~~}~~€€~€}€~€~€€€~~~€€}€~~€€~~~~~€}€~€~~~~~€~}~~€~€€~€~~~€~~€}~€}€~~€~€~~}~~~~€~~€}€~€~€~€~€~€~~‚€}€}€€~€~€€~€}~~€~€€~~~~€~€€€~}€~€~~€€~~~€~€€€~€}~~~‚~€~~~€~€~~~€‚~~€~€~€€~€€~€~~~€~€~~€~~€~€€~}€}€€}€~€}€~~~€‚~€~~€~}€€}~~€~€~€~~€€~€~~}€~~€€€}~~€~€~}}~€~€‚}€~€‚~€}€~€~~~€~€~}€~€~€~~€~~~~}~~€~~€~~~~€}€€~~~€}€}€~~~€}~€~~}€~~~€€~€~€~~~€€~~€~~~~~€‚~~~€~€~~}€€€€~~~~€~~~€€‚}~€~€€~€~€~‚~~~€‚~€€~}€~€~~€€~~€~~~€~€€€~€~€~€€€~~~€~~€€~€~~€€~€~~€}€~€~~€~€€~€~€~~€}€€€~~€~~€~€€~€~€~~€~~€~€~€€~~€~~€~€~€€}~€~~€‚~~€~€~€~~~€~€~€~€~€€}€}€~~~€~€~€~€~‚€~~~~€~~~~€~€€€€€~~€~€~~€~€~€~€~€~}‚}~€~}€~~~€~~€€~~€~€~€~€~~€}~~€€~€}‚‚}~~}€~€~€~~~€~€~€~~~€€~€~~~~~€~€~~~€~€€~~€~€~€~€€€~~~€~~€€}€~~€~€€~~€~€€€~€~~€~~€~~€~~€€}€~€~€~~~€~€~€~€~~~~€~€}€~€~~~€~~€~~€~€~~~~}€~€€~€}~€~€}€~~~~}~€‚~€}€~}€~~~€~€}€~~€€~~~~€~~€~~€~}€~~~€€~€}€~~~€~€€€~€~~~€}~€€~~€~‚~~~€~€~€~€€}€€~~~€~€}€~€~~~~€~€~€~}~€~~~~~€€~~~€€}€~€~€~€€~€~~€~€~~‚€~~~‚~€}€~~~€€€€~~€}€€}€€}€€~~€~€}~€~€~~}€}~€€‚}€}~€~€~~~}~€~‚~~~€~€}€~~€~€~€€~~~€€}~€~€~€}€~~~~€}€}~~~€~€€~€~€~€}€~~~€~€€}~~~~€~€}}~€}€~€~~€€€~€}~~~€€€€~€~~~€~~€}€~€~}€~~~€~€€}~€~~~€€~€~~~~~€~}~€€~€~~~€~€~€€~~~~}€€~~~€~€~€~€~}~€~€}€€~~€~€‚~€~~€~~€€‚~}€~€}~€€~~~~€~~~€~€€€~~€}~}€~€~€~€~€€}€~~~€‚}~€~}~€€~~€}~€~~€}~‚~~~€~~~€~€€€~€€~~~€}€€€~~€~€€€~}€€~€~~€~~€}€€~€~€~‚~~~€}€€~~~€~€€~~€~€~€~~~}€€~€~~~~€€~€€}}€~€~~~~~€~€€}€~~~~~€~~€~€€€~€}€~~€~€€€~~€~~~~€~~€~~€~‚€€~€~~€~€€~€}~~€~€€~~~€}€~€€~€}~~~€€~~€~~~€~~~€~€~€}€~~€}€~~~€~~€~~~€~~€€~€~€~€€~€€~€~€~€~€}~~€~€~~~~~€~€~€€~€~€€~€}€€€€€~~€~}€~€€€~€~~~€~€~~~~~€€~€€}€~€~€‚~~€}€~€~~~€~€~€~~€~€~~}~€€~~~~€~€€~€~}~€~€~~~€~€€~~€~€~€€€~€~€~€~}€}€~~~~€~€€}‚~‚€}€~€€~€~~~€~€~€}€~~~€}€~€€}€~}€€€~€~~~€~~~€~~~~€€}€~}~€~€}}€€~€~~~€~€€€~€~~~~~€€€~€}~~~~€~€~€~€€~~€~€~€~}€~~~~€~€}~~~€€€}€~€~€~€€€~€}~€~€~~~€~€€€}~€~€€€€~}€~}~€€~€~€~~€~~~~€€~€~~€}~~~€€~€€~€~~~€~~€€~€~~~€~~~€~€€~~~€~€€~~~~~~~}€€~~}€‚~~~€~€€~€~~~~~~€~€‚~€}€~~~€}€~€€~€€~~~~€~€€‚~€~~}~~€~€~~~~~€~~€‚~€~~€}~€~€~~}~€€~€~~~€~€€~~~~€~€~€~~€~€~€~~~~‚~}€~€~~}‚~~‚~€}~€~€~€€~€~~}€~‚€€~~~€~€€~~~~€~~€€~~~~€~~~~~€~€~€€~~~}€~€€~}€~€€€€~~€~~€~‚€~€}€~~}‚}~€~~~€€~‚€~~~~~€~€}~~~~€~€€}€~€~~~~€~€~€~€~~€~€~~~€~~€€€~€}~~~€~€}€~~€}€€~~€~~~~€‚~€~€€~€~€~~€~€€~€}~€€~€~~~€~~€~€€~€~€~~~~€~‚€€~€€~}~~€~€€€~€}~~€}€~€~€~}€~€~~~€~€~~~€~€€€€€~€~€€~€}~~~~€}€~€~~~€~€€~~‚~~~~€~€}€~~€}€~~~}€~€~€}€}~€~~~~~~€~~€}€€~€~~~~€~€~~€~~~~~€~~~€€€~€‚~~}€}€€€~€~~}€~€€~~~~~~€~€~€}€}€}€~~~€~€~€}€~€~€~~€~€}~~~~€~€~}€~€~€}}€~€€~€}€~~}}~€~€}€}€~€€~‚€~€~~€~€€€~€~}€~€‚~~€~~~~~€~€€€~€~~~€~€€~~€€}€€~€~€~‚~~€~€~€~~~~€~~€~~~~~€~€~€€~~€~€€~~€~~~~~~€~~€~€~€~}~~~~~€~~}€~€€~€~€}€~€~~~~€~~~€~€}€~€}€~~~~}€}€~~~€€~€~€€~€~€~€}€}€~~€€~€~~€}~€€€~~~~€€€~~~~‚~€}€€~~€€~€~~€~~€€€~€~€~~€€€€~~€~~€~€~€}~}~~€~€€~€~€~€~€~~€~€€~€€~€~~€~€~€~€~~€~€€€~~~~‚€€}~€~}€}€~€~€€‚€~€}~~~~€~€~~~€~€~~~~€~€€}€~~€€€~~~~€~€€}€€~€~€~€~~‚~~€}€~€~~~€}€€€~~€~~}€~€~~€~~‚€€~~‚}~€~€€}€€~~€~€~€}€~€€€€€}€~~~€€€~~~€€€€~~~~~~€€~€~~~~€~~~€~€~€€‚~~~€€€€~€~€}€€€~~~~€€~~~~‚€€€~€~~€€}€~~~~€~€}€~~€~~€€€~~~~€~€€€‚~~€~~€€~~~€~€€~€}€~€~€€€}€~~~€~€€‚~€~~€~€€~}€~€~€€€~€}~€~€€‚}€~~~~~‚~}€}€~€}€~~~€~~€~€~€~~}}€€~€~~€~€~€€}€}€~€~€~~~€~~~~~€€€~~~~€~~€€€~€~~€~€€‚~€~€€~€€€€~€~€€€~€~~€€~€~~~€~€€~€}€~€~}€~€~€~€~~€~€~€~€~€~~~~€}~~~€€~~}~€~€}~~~~€~~€~€€~€~~€~€€~~~~€~€€~€~~€}€€~}€~}€€€~~€~~€}€€~€~~€~~€~€~€}€~~€~€€~€~~€~€€~~~€~€~€~~~}€~}€}€~~€~~€~‚€€€€~€~~€~€€~~€~€€~€€~€€}~~~~~€~}€~~~€~€~€}€}€~~~~€~~€~~€~~€€~~€~~€~€€~€~~~€~€~€~~~}€~~€~~€€}€~~‚€~€€~€€~€~€~€€€€~~€~}€~€€~€~~~~~~}€}€€~€€}€~~€~‚€€~€~€~€~~€~~~€~~~~€}€~~€€~€~~~€~~~~~€~€~}€~€~~€€~~€€~€~}~~€~€~~€~~€€~€~~€~€€~€~~~€~‚€€€€~€~€~~€‚€~~~€€}€~}€~€~~€~€~€~~~}€~~€€€€~€~~~~€~€€~~~€~€~€€€~€~€~‚~€~€~€€~€~€}€~~~~~€~€~€}€}€~€}€~€}~~~€~€~€€~€}€}€~~~€€~€}€€€€€~€~€~~~€~~~‚~~€~€}~~€~€~€~€~€~~€}€~~€~€~~€~~~€~€~~€~€€€~~€~€€~~~~~~€~€~~€~€€}~}~€~€~~€}~€~}€~€}€~~€~€}€~€~~~~€~~€€~€}~€~~€~~~~~~~~€~~}~~€~€€~~~~}~€€~€~~€~€€€~}~€~€€~€~€}€~€~€}€~~~€~€€~~€€~€}€€~~~€~€~~~€~~~€‚~~€~€}€}€~€~€€€‚~€~~~}~€€€~€}~€~€€€~€~~€~~~~€~€€€€~~€~~€~€~~€~~€€~}€~€}€}€~€}~€~€~€~~~‚~~~€~€~€~€€~€~€€~€~€€€€~~~€~€€~€~€~~~~~€€~€~~€€}~€€~€~~€~~~€~€~€~~€~€~~€~€}€}€~€~€~~€}€~~€€~~~€~€}~€~~~€€~}~€~€€~~€~~}€~€€€~€~€~€€~€~‚€~~~~~~€‚}€}€~€~‚~~€€}€€~€~~€~~€~~€~~€~€€~€€~€~~€~~€~~€€€~€~€~~€~~~~€~€~€~~€~€€~~€~~€~€~~~~€}€€€‚~€~~€~€~~€~~~‚€€~€~~€~~€~€~}~€}€~€~~~~€~~€€~~€~€~€~‚€~~€~€~~~€~€~€€~€~€€€~~€~€~€~€}€~~‚~€~}~€~€}‚~~€~~~€€~~~~~~~€}€~€~~~€~~~€€~~€€~€€~€~€~€~€€}€€~}~~~~~€~€€~~~~€~€~€€~€~~€~€€~€~~~~€€~~~€}~€~‚€€}€~~~~€~~€€}€~€~€~€€~€~€~~€~~~€}€~~~€~€€~}~~€~€€€~€~€~€~€€~~€~~~€€~€~€~€}€}~€}€€€~€~~€~}~~~€‚~€~€€€~~~~€€€~€~~~€~€~€~~€}~~€~€~~€€€€~€~~€€€€}€}}€~€~€~~}€€~~€€~€€~€}€~~~€}€€€~€~~~€}€€‚~€€~~€€}€~~~€€~~€€~€~~}~~€}€€~€~~}€~€~€€€}€~~~€~€}~}~€~€~~€~€~‚~~~‚~}~€~€~€€~~€~€~€€}€€~}€~€~€~€~€}~~~~€€~€~€~€}}~~€~€~€~~€‚~}€~~€€~€}€~~€~€~€€~€}~~}~€~~~}€~€~€~€~€~~~~€~€€~~€~}~~~€~€~~€~~€€€~~€~~~€~€~~€~~~€~~€}€~~~€~€€}€~~}€~€~~€~€~€€~€~}€~~€~€€€~€}~~~€€~€€~€~€~€~~~~€}€~~~€~~€~~€}€~€}€~~€}€~€~~€~€~~~€~~€€~€€~€~€}€~€~€~~€~~~~~€~~€€~€~~‚€~€~€~€€~~€~€~€€~€~}€~€~€~€‚~}~~~€~€~€}~~~~~€‚€€€€~€~~€~~€~€~€}€~~€~~}€~€€‚~~~~~‚€}€~€~€€~~}€~}~~€~~~€~~~€~€~~€~~€€}€~~€~€€€~€~~~€€~€€~~€~~~€~~~~~€~€~~~€~~€~~€€~€~~~€~€€~€~~~~€~€~€}~}~~~€~€~€€~~~}~€~€€}€~~€}~~€~€~~€€~}€€€€~€}~~€~€€~~~~€}€€}~€€}€~~‚~€~€~€€~€~€~~€}€~€~~€‚~€~~~€€}€~€~~€~~~~~~€}€~€~~}€~€}~€€€€~€~}~~‚~~€‚~€~€~€~€~~~€~€€}~€~~€~€}~~€}€~~€~€~€€~~~€~€€~~~~€~€€~€}€~€}~€~€~~~~€~~€~€~€~€‚~}€~~€~€~€}~€~~€}€~~‚€~~~€‚~€~€€~€~€~€~‚€€€~~}€€€€}~€}€€}€~~}~~~}€~€~€~~~~€}€~~~~€~€}€~~~~€~€~~€~€~~~€~€~€€~€}€~~€}~€‚~€€}‚€~~~‚~~~~€€~~€~€~~€€~€~€~~~~€~€€~€€~€~}€~~~€}€~€€~€~€~€~€~€~~~~~~€€~€}~€~€€~€~}€}€~~~€‚~~~€}€}€}€~~~€~€}€~~€€€~€~~€~€€€~~€~~~€}€~~~~€~~€~€~~€~€~‚€€€€~~€~€~~~€€~‚~~€~€}€~€~~€~~€€~€~~~}€~€€€~€~~€~}€~~€}€~€~€~€~€}~€~~€€~€}~~€€€€~€~~~~~~€~~€~~€~€‚~~€‚~€€~€~€~~~~€~~€~€€~~€€€}€€~€~€~}€~~~€~€€~~~~€}€~€}€€~~€~~‚€~€~}€}~~€~€~€€~€~~€~~~~€~€€‚~€~~€~€~€~~~€~€~€~€~~~‚‚~€}€~€~€~€~~~€~€€€€~~~~€~€€~~~~~€€€~~€~€~€~€~}€~€~€}~~}€~~€€~~~~€~~€€~~€~~~~€€€~€~~€}~€~€~€~€~~~€€€}€~€~€~€~~€€~~€~~€€~~}€~~~~~€~€~~€€~‚€~}€~~€€€~~€~€}€~€€}€€~€~€~~~~€~~~~€~€€€}€€}€~€~€~~~€~€€~€~~€~€€~~€~~€~~€~€~~€~€~€~~~€€~~~‚~~€~€€~€€€~~€~~€~~€€~}€~~~€}€~€}€~€~~~€~€€€}€~‚€~~}~~~€}€~~€}‚€~‚~€~€~€~€~‚€~~€~€}‚€~€}~€}}€~€~~€~€€}€€€€~€€~~€~€}€}~~€}~€~€€}€€~€~}~€~€€}€}€~€~~~€~€~~~~‚~€}€~€~~€~€~€~~~~€~€~~}€~€~~€}~~‚~~~€~~~€~€~€€€~~€~~~€€~€~~€~€~€€~~~‚€~~~~‚~€~~€€}€€~~~~}~€~€~~~€~€~€~~~€~‚€€~€}~€~€~€€}€~€€~~~~€€~€~~€~~€€‚~~~~~€~~~~€~€€~}€~~~€~~€~~~€~~€~~‚€€~€}€~€}€~~‚€~~€}€€~€~€~€~€~€~€~~~€}€~€~~~~€~€~~~~€~€~€~€}~‚~}€~€€~€~€€~€}€~~€}~€€~~~€}~€~€€~€~~‚€~~~€€€~€~€~€€~€~~€}€~}~~€~€~€~€~‚~~}~~~€€~€~~~€}€€}€~~‚€€~€~€~~~€~‚€€~~€~~~€~€€~€}~€~~€~~~~€~~€~}€~~€~~€~€~~€~€€}€€~‚~€~€~~}‚~~~€~€€~~€~~~~~€~~€€€~€}~€~€~€~~€~€€~€}~€~€€€~~~~~}~~€~€}€~€~~~~~}€~€€}~€}€~€€~€~€~€~‚~€~€~€€~€€~~~‚~€€}}€~€€€€~€~~€€~€~€~~~€}€€~€}€€~~€€}€}€€~~~~~€~€€~~~€~}~€~€€~€}€~~€~€~€€}€€~€~~~~€~€€}€~~~€~€}~~}€~€€~€~~~~~~~€~€~}~€~€~~~€}}€~~}~~~€‚}}~€~~€~€€~~€~~~}€~€€€~~~€~€~}~~‚~~€}€~~~~‚€~€}~€~‚~€~~~€~~€€~€~~~€~}€~~~€€~~~~~€~€~~~€~‚€~€~~€~€}€~€~~€~}€~~€~€}€~~~€}€~~~~~€~€‚€~€~~~€~~€~}€~€~€~~~€~~€~~€~~~€€~€~~~~€€‚~€}€€€€~}€~~~~}}€~€~‚€~~~}~€~€~€~€€~~€~€~€€~~~€~€~~~€~‚€}~€€€~€~~~~€~~€€~~}~~€~~€~€~~€~}€}€~€€~~€€}€~~€~€~€€€~~~~~~~€~€~€}€€~€~~~}~€~€€€~~€~~~€€€~€~}~€~}€~}€~€~~}€~€~€~€~€}~~€~€€€~~€~~~€~€‚}€€|€~€~~~~‚~~€€}~~~€}€}€}~‚€~€~~~€~€~€€~€~~€€~€€~€}€}€~€~€~€~~~€~~€~€~€€~€~€~€~‚€~~~€~€~~~€~€€€~€~€~~~}~~~€~~€~€}€~~~€~}~}€~~€~€‚}€~€}€~‚€~~~€}€~€~€}€~~~€~€€}~~~~~€€~€€~€~~~‚€€~€~€}~~€~‚€€}€~~~~€~~~€~€~€€~~€~~€~€€~}~~€}€~€€€~€~~€~€€€~€~~€~~€}}€~€€~~~~€~€€~€~€~€~~~€~~€€~€~€€~€~~~~}€~€~}€}~€~€€~€~~~}~€€€~~~~€~~€~€€}~}~~~~€~€}€€€~~~~~~€~€~~€~~€}€~~€~€~~~€~€~€~~~€~~~~€~€~€~~‚~~~~€~€~€~~~~€~€~€€~~~‚~€}~~€~€}€~~~€€~€~€~~~€}~€~€~€}€~€€~€~~~~‚~€~€~}~~~€~€~€~~}~€€~}€~€~€~€~~€~€~~~€~€~€~~~~€~€€~€~~~~~}}€~€€~~€~~~€~€~€~~€~~~€~€~~~€~€~€€~}€}~€~~€€~€~€}~€}~~}€~€€~}}€~~‚€€~~~€}€~€€€~~~~~€}}€}€~€~€‚~€~€€}€~€~~~€}€}€~€~~€~€}€~~€~€€~~€~~}~€€~€~~~€€‚}€}~€~€€~~€~€€€€€}~~€~~}~€~€}€~~~~€~~}~€€}‚~}€~€€~~€~~~€~~€€}€~~~~€~~€€€~€~~~€~~€~}€€~€~€~‚~~€~€~~€~~~~€~€€‚~€~€~~~~~€~€~€~€~~~~~€}~€~€~~€}€€}€~~‚~}~}€}~€~~~~€~~~~~~€~€}}~€~~€~€~€~~}€€€~€~~€~‚€€€~~~€‚€€}€~€}€€~€~€}~€~€~€~~~~~~€~€~~€~~€€~€~~~€~€~~~~~€~~}~~~€~€}}€}€~€~~€~€€~€~~~}~€€~€~~€~€~~€~~~~€€~€~~‚~€~€~€€~€€}€€~~~‚€€~€}~~~~€~€~€€~€~~€~~~€~~€€}~€~€~~€~~€€~~~~€~~~}‚~~€~€}~}€~€~~~€~~~€~~~€~€€}€~~€~€€}€}~~€~€€‚~€}~€~€€€~~~€~€€€~~~€~‚€~~€}€~€~€~€~€~€€~~€~~~~~}~€~€~~€~}~€~~~€~~~~~€€}}€€€€~€~~~€}€~}~~}~€~€~~~€~~€~~€€}~~~}€~€~€~€~€~€€}€}}~~€}€~€€~€~€~~~€€~€~~~€}€~€~€€}€~€~‚~~~€~€~€~€~€€~~€}~}~€‚~€}~~}~~€~~€€€~€~~}~€~€~~‚~~€€~~€~~€~~~~}€€~€}~~~~€~~~€~€~~~€~~€~~}‚~€€~€~€€~€~‚~€}€‚~€}€~~~€~€~€}€€}€€~~~~~€~€~€€€~~~~~€€}€€~~~€~~€~~~~~€}€~€~~~€€~~}€€€~€~€~€€€~€~~~€€~€€~€€~~€~~~}€~~€~€~~€~~€~€~€~€~€~€~~€~€~€}~~‚~~€~}€~€}€~~‚€€‚}€~€}}€~~~€~€~€~€}‚~~€~€~€~€~}~€€}€~€~€~~€~~€~~~~~€€}€€~€~~‚~~€€‚~€~€}}€~€€€~~€~€~‚€‚~€~€~€~€}€€~€}‚}€~~€€~€€~€€~}~}€~€€‚~€€~€~€€}€~~~€~€€~€~~~€}€‚~€~€~€~€~€~€}~€~~~€}~€~~~~€~€~~€€~€~~}€~€€€~€}€~~€}€€~€€~€}~}€€}}~~}~~€€€~~€~€‚}}}€}€~~€~€~~€€€~~€~~€}~€€~}€~€~€€}€~~~€~~~~€~€~€~~~€~€~€~€~~}~~€€~€~~€}~€~}€€€}~~~€~€~~~~~€€}~~€€€~€~~~~€€~€~€~€‚€~~~‚~~€}€€~€€~~~€~~€€~~}€~€€€€~€}~€€~€~~€~€~~€}€}€€€~€}€~~~€~€€€~€}~~}€~€~~€~~~€€€~€~~€~~€~}€}€€~~~~€~€~~~~~€€~€~€~€}€~€}€~‚~~~€‚}€~€~€~€~~€}€€~~€~€~~€~~€~~~~~€~~~€~€€~~€}€~€~€€~~~~~~~€~€~€}€~€~~~~€~}€}€~~€~€~€~~€}€~€€~€~~~~~€~~~~€~€~€~}€€‚~~€~~€€}€~€~~~€~~}€~€‚~€~€~€~€~€~€~~‚€~~~€€~€}€€~~€}~€~€~€~~~~€€€‚}€~~~€~€~~€€}~~€~~€~~~€~~€~€€€~~}~~€~€€~~€~~~€~€€~~~€~}€~€~€}~€~~~€~‚€€~~€~€~€}€}€€~~‚~~~‚~~€}‚~~€~€~€~€~~€~}€~~~€~‚€~€~€~€€~€~}€}~€€~~~~~€~~€~~~€€€}€~~€‚~€~€~€}~€€~€~~~~}~€~€€€€}€€}€€}‚€~€}~~€~€‚~€~~~€~€€€~€~}€~€~€~}~€~~~€€~€}~~€~~€€€~~~~€~€€~€~}€~€}€~~€~€~~~~}~}€}€~~‚~~}~€~€€~€~~€}€~€€~€~~~}€~€€€~}}€~€€~€~}€~‚€~~€}€~€€~€~€~}€~~~€~€~€~€~~~}€~€€€€€~~€~~}€€~€~~€}~€€~€~~€~€~~~~~€~€~~€~~€~€~€€}€}€}€€}€~€~~‚}~~€}€€~€~~~~€~€€€~€}~~~€~€€€€~~€€~€~}€~€~~€~~~~€~€€~€~‚~~€~€}~€~€~~€~€~~~€€}€€~€~€€~€€~€}€~€€€€}~~€~~~~~€~€}€}~~€~‚~€~~~~€~€}€}€€~€~€}€}~~€~€~~‚~~~€‚~€~€}€~€~~~€€~€~€~~~~€~~€~~€€~€~€~}€~~€}€~€~~~‚~~€~~~€~~€€~€~€~€~~€~€~€€}€~~€}~~~€‚€~€}~~€€~€€~€~}~~€€~}~~~€~‚€€€~€~~€~€~€}}€~€~€~~~€~~‚~€~~€~€~€~€~€~€€~~€~€~€~€€~~€~~€€~~€}€€~~~~~~€€~€}€~€}‚€€~~€~€€€~€~€~~~~€~}~€~~€€~€~€~~€€~~€~~€~€~€~€}€~€€~€}~~€}€~~€~~~€~€€~~€~€~€~€~~€~~€~~€~€}}€€€€~€~~€~€€~€~€~~~~~~€~€}~€~€~€€~€~~~€€€}€~€~~€€€~€~~€~€‚~€~‚~€~€~}~€~€~€}~~}€€€€~€~€~€€~~~€€~€~~~~€~€~~~€€}€}~€~~~~~€}~€~€~€€~€~}€}€~€~~~€~€~€€}~~~€~€€~~~€~~~~€€€~€~€~~~€€‚~~~~€~~~~€~€€~~€~~€~~€~€~€}~~€~€€€~~€€~€~~‚}~€€~€~~€€}€}€~€€}€~~€‚~€~€~}~~~‚}~~‚}€~€~~~~€~€~~~~€~€€~~€~€~~~~€}€€~€€~~€~~€~~€~~~€}€‚~€~~€~~€~}~~€~€€}€~}€~~~~~€~€~€€~€~~€}€~~€}~~~€€~~~~~€~~€~~~€~€~€€~}€~~€~~€€€~~~~€~€~~~€~€€~€~~€~€~€~~€~€~€~}~€€~€€~€~€}€€‚}~~€~€~€€~~~}‚~~€~€~€~~~~~€~~€€~~€€~‚‚~€~~€~~€€€€~~~~~€}€~~€€}~€~~~~€~€€€~€~~€~€€}€}~€~€~€~~~€€~~€~€~€~€}~€€~~~~}€}€€~~‚~~~}€~€~€€~€~~~€~€~€~~€~~€~€~~~€~~~€€€€~€}~~~€~€€~~~~€€€~€~€}€€~~~€‚~}~€~€~‚}~€~€~€~€~€~€~~~~€~€~€~~~~€~~€€~~~€}€€€}€~~€~€~€€}~~~~€€~€~€~~~€~~€~€~€}~€~~~€~~€~€~~~€€€‚~€}€~€}~~~€€~€~~€~€€€~}~€~€~€~€~}~€~~~€~€€~€~~€€}~}€€~€€€~~€~~€~}€~€~}€‚~~€~€~~€}€~€€‚~€~~€~~~~~~~~€~~€~€~~€~~~~€}€}€}€~€€~€~~~}€€~€€}~~~€~€~€€~€~€~~~€€€~€~~€~€~€~€~€}~€~~€~€}€~€}€€~€~€€~€}~~€~€~€~€}€€€€~~~~~~~€€}€~~}~~€~€~€~€~€€~~~€€~€~€}€~~~€~€~€~€~~‚~€~€~€~~~~€~~€~€~~€‚~~~~€‚~€~€~~€~€~€~€€}€€€}€~~~~€~€~~€~~~€€€~€}€~€}€~~~~€€~€~~~~~€~€}€~~€~}‚}~€~€€€~~€~€~~~~€}€€€~~€€~€~€~~€~~€‚~~~~€~‚~€€‚~~~€~€€~~~~‚~~~€€€~~~€~€~€~~€~€~€€~~~€~€~€~€€€~€~€~€€~€~~€€~€~~€}€~€€€}~~€€~~~~€~‚€~~~€~~€€€~€~€~€~€€~~€~~~€€~~€}~~€€~€~~€~~€€~~~€~~€~~€~€€~~~~€~€~~~~~€}~€~~€~~~~€€‚~}€~€~‚€}€~€~€~€~€~€}€~€€}€}~€~€€€~€}~€}€€~€}€€}€~~~€~~~€~~€~€~€~€~~€~~€~€~€€~€~€~€~€~~€}€~€€~€~~~€€~€~€~€~~€~~}~~€~}€€~€~€}~~€~~€€~€~~~~€~€~~€~€€}€~€~€~~~~‚}~€~€}€€}€~€~}~~€~€}€~‚~~€~€€€~€~€~~~}~€~€}~€~€~}~~}€~€~€~€}~~€€€€€}€~~~}€~€~€€~‚€€€~~~€~~€~~~€~}€€€€~€~€~€~~€}€}‚€€~~~~€~€€~~~~€~€~€}€~€}€~€€~~~€~€~~€~~€~~~~€~€}€€~€}€}€‚~~~€~€€~€}~~~‚€€€~€€}€€~~€~~}~€~€~~~~~€~€~€}€~~~~€}€~~~~~~~€€~€~~~€€~€}~~€~€€€~€~~€~~€~€~}~~~€~€€~€~}€~€€€~€~~€~€~€~~€~€~€~~€}~€~€~€}€~~€€~€~€~}€~~€}€~‚€~~€~}€~€€€}€}}€~€~€~‚€€~€}~€~€~€~€~~}€€~€€~€~~~~~€€}€~€~€~~€~~€~€~€€~~~€~€~€€€~~€~~}~€€€~€~~€}€~~€€~€~€~~~~~€}~€}€~~~€~€€€€}€}€~~~~~€~€~€€~€~€~~‚€~~€}€~~~~€€~€~€€}~~}~€~€€}€}~}€}€€~€}~~~€€€€~€~~€~€~€~€~~€~€~~€€~~~€~~€€~~€~~€€~€~€~€~~€‚~€~~€~€~~€~€€}€€~€~~€}€~€~~~~~€~€€~~~~€€~~~‚€€~~}~~~~~€€€~~~~€~~€€~€~~~€}€€€~~~~€~€~€~€~~~}~€€€~}€~~~€~~€~€€}€~~~~€~€~‚~~~€~€€~€~~}~~€}€}€~~~€~€}€€~€~~€~€€~€~~€~~€~~€~€}€~~€€~€~€~}~€€}€~}€~€€~~~€~€€~€~~€~€€€€}€}~€~€~~€€}€~€~}€}€~‚€€€‚~€}~€~€€~€~~~~~€~~~€~€€~€~~€~€~}€€~€€~~~€}€‚€€‚~~~~€~€‚€}€~€~€~€€~~€}~~~€~~~~~€~€~~€}‚€€~~~~€~~€~€~€~€~€€~~}€~~‚~~~€~€~€~€€~€€~}€€~€~€~€~€~€~~~}€~€€‚~~€~€€€}~~~€€€}€}€~€€~€~~~€~€€€}€}€~~~~}~€€~~~~}€~€€€~€~~~}€~€‚~€~~~€}€€€€~€~€€~~‚~~~€€~€~€~€~~~€}€~~~~€~‚€~€€}~€~~€‚~€~~}€~€~€~~~€€~~~€~~€~~€€€~€~~~€}€€~}~~~€~€~~~€~~€€~€}~~€}€€€€~~~€~~€~~€~€€}‚€~€}~~~}€~€~~€~€~€~€~~‚}~~€€}~€~~€~~€}€}‚€~~~~‚~€~€~€~€~~~~€‚~€€}~~~€~€~€~~€€}€~~€~€‚~~~€~€~€~€~~€~~~~€~~‚€€~~€~€€~~€€€~€}€~€~€€}€~~~€~€€€~€~~~€€~€~~~€~€€}€~€€~€~€~~€~€€~€}~~~€‚~~€~€~€€~€~~€}}€}€€€€~€~€~~~~€~~~€~~€~€~}€~€}€~~‚~~€~€€~~~~€~~€€~€~~~€€€~€}~~€~~~~~€~€~~€~‚€~€~~€}~~€~€€~€~€}~~}€~€€€~€~~~€€‚~€}~~€€€~~~€}€~€}€~~~€~€~€~~€~‚€~€~€}€~~~~}~€€~~~€~~€€~€}€}€~~~€€~€~~~€~~~€~~€~€~~~€€€‚~€~}€~€€~~€~€~€~€~€~€~‚~~}€}€~~~€~€€€‚~~€~~~€~€€}€~~~€~€~€~€€~€€}~~€~€€~~~€~€€}~~}~€€€}~‚~€}€}€~€~€~€}€€~€}}~€€~€€€~~€~€~€~~~~~~€}€€}€~~~€~€}€€~}€~€~€€€~~€~~€~~~~€~€~‚€€~€~}€~~€~~~~~€~~~~€~€~€~~€~~€€~~€~}~~€~€~€€~€~~~€€€}€}€€~~~€€~€~€~~~~~€€€~~€~~€€€€€~~~€~~€~€~€~€~€~€€€~~~€~€~€~~€~€~€€}€~€€~€€€}~~€~~€€€~€~€~~~~~€~€€~€~€~€‚~~€}~€€‚~~~€~€€~€~€~~~}~~€€~€~~~~€€€~~€~€€€~~~€~€~€~~€~€}~~€~€}€~€€‚~}~~~€~€}€~€~~~€~~€~€~‚€€~€}~~€~€€€~}~€~~€€~€~~€~€€€~€~€~€~€€~€~~€~€€}~~€~~€€€~€~~€~~€~~€}€~~€}‚€}~€€~€~€~€~€€~~~€~~€€}€~~€~~€~€~€~€~~€~€~€~€~€~€€~}~€~~~~€~€€~€~~€~€€~~~~€~~€€}€~€~€€~€€~€~€~~‚~~€~€~}€~€€€~€~€~~~€€~€}~~}€}~€}€€~€~€~~~€€€€€‚~~‚~€~~€~~€‚~€~€}€~~~€‚~€}€~€~~~~}€~€€~€~~€~€€~€}~€~‚€€€€~~~~~~~~€€~€~€~~~€~€~€€}€€€~~}€€€€}€~~€~€€~~€€~€~€~~~~€~€€~~€~~~€€}€~€~€~~€~€€~€€~€~~€€€€~€€€~€}~€~~~‚~€~€€~€~€~€~~€€~€~€€€€€~€~~~€~€€€‚~€~~€~~€~€}~€~~~€~~~€~€€~~~€~€~€~€~}€~~€~€€~~€~~~€~€~€~~~~~}~€~~~~€~~€~‚€‚~~~~}~€€~~€~~€~€~€~€}€~€~€~~~}€~€€}€~€€~~€~€~€~~~€€~€~~~~€~€€~€~€}€~~€~~€~€€€~~~€~~~€€~~~€~~~~€~€~€€€€~~€~€€~~~~€€~€€~€€~€}€~~~€}€~€€~€~~~€~€}€~€~€€~~€~~~~€~€~~€~€~€€€€~~~~~€€€~€~€~€~€€~€~~€~€~€~}€€~€~~~~€~€€~€~}€~€€}€€}€}~€}~€~~~€~€€~~€~~€€~€~€€~~~€~~€€~€~~€~~~~~~€€€~~~~~€~€~€~€~€~€~~€}€~€}€~~€~€~~€~~~€€€€~€~~~~~€}€~€~€€~€~~~€~€~€~€}~~€~€~~~~€~€€~€€}€~}~~€}€€~€~€~~€€€~€~~€~€~€~€~€€€€~€~~~~€}€~€€~€~€~~€~€~}€€}€~~~€€‚~€€~€~~~‚~~€}€~~~€~€~€~~€€~}€~€~~‚~~€~€~~€~~~~€}€~~}}€~~~€~~€€€~~€}€~€€€~€~~~€~€~€~~€€~€~€€}~~~€€~~~~~€~€~~€~~€€€~~€~~€~~€~~~€€}€~€}€€~€€}~~€}~€~~€~€~~€~€}€~€~~~€~~~€~€~~€~€~€€}~~~~€€~€€}€~€~~€~~€€~€}~€~~€€~}€~~~€~€€~€‚~~~€~‚~€~€~~‚}~€€}€~€~~~~€~€~€~~~€‚}€~€}€€}€~€~€~€~€~~~~~~~~€€€~~~€~€~~€~~€€€~€}€~€~€€~~~~~€€}€}~~€~€~€~~€~€~€}~€}€€~€€}€~€€~~~}€~€~€~~€€~~€€}€}~~}€~€~}~€~€~€€‚}€}€}€€}€~€}~€~~€~€~~€~€~~~€~‚€~€~~}€€~€~~~~€€~~~‚~~~€~~€~€~€~}€~€~‚~€}€‚~~€~€€~€~~€€€€~~~€~~}~~~€~€~}€~~~€~€~€~}‚}€~€~~€~}~~€~€~~~~~€~€€~€€~€~€~}~€~€€~€€~~€€~~€~‚€€~€~€}€~€~€~~€~€~~}~€~~~~€~€~€~€€~~€}€~~€~€~€}~€€~~€~€~€€}€~~€~€€€~€~~~€~~€~€€~€~€~}€€~~~~~€~€~€~€~€€~€~~~€€~~€~€~~~}€€~€€~€~€~€~€~~~€~~~~~€~€~€~€~€€~~€~}~~~€~€€~€~€€~€~~€~~€~€€€~€~}€}~€€€~~€~~€~€~€~€€}~~‚~~€~€€}€~}~~€~€}€~~‚~~~€}~‚€}€~~€}‚~}€~€}€~~~€~€~€€~€}€~~€~€€~€}~~€}~€~€€~€~€~€€~€~~~~€~€€}~€~~€~~~€€~‚€~~~€€}€~€~~‚~~~€~€~~~€€~€}~~}€~‚~€~€€~€€~€}}€~~~~€}€~€~~~~€~€~~€~~}}~€~€€€}€~~€~€‚~~~€}€€€~~~~€€}€~~}€~€~€€}€~~~€~€€€~€~€~}}~~~}~€~€~~~€~€€‚~~}€}~€~€~€~~~€€~~€~~€~~€€}€~~€~~~~~€~€€€€}~~€~€~‚~€~~€€~€~~~€€€~€~€~€~~~€~€€~€}~€~€~€~~~~~€~‚€€~}€~~€~~€€€}€}€~€~~~€€€~}~€~€€€~€~~~€~~€€~~€~~~€€€}€~€}€€~€}€}€~~€~€~€}~€~~€~~~€~~€€~€}~€€~~€€€€~€}~~€~~€€€~€}€€~€€~~~~~‚€€}~~~~~~~~~}~€€~€€}€~~~‚‚~~€€}€€~€~~~€~€~~€~~‚€€€€~‚~€}~~~€~€~€}~}~~}€~~~€€~€€~€}€~~~}€}‚€~~~~~€~~€~€~~~€~~~~~€}€€~~€~€€}~~~‚€~€~‚€€~~}€~~~€~€€€~€}~€~~~€~€~€}€~~~€€~€~}€€~€}}€~~€~~~€€€}€~€~€~€}~}~€€~€~€~}~~~€~€€€~€~~~~~€}€€~€~€}€~~€}~~}€~€~€~~~~€~€~}€~€~€€€~€~~~€~~€~}€~€~}€~€€~€~€~~}~~~~}~€€~€~€~~~~€~€~€€~€~~€~~€~€~~€~€€~~~€}€€~€~€~€‚€~€~~~~~€~€€€~€~~€~‚~€~~€~€~€~~~~~€€~~~€~‚€€~~€~€€}€€~€~~€~~~~~€~€~~€~~€€‚~€~€}~€~~€}€~~€~€~~€~€}€€~€~€~~€~€€€~€~~~€‚~€~€‚}€}€~~€~~~€~€€~€~€~~€}~€~€}€~€€~~~€}~~~€~€€~~~€~~€€~}€~~€~€€€}€€}~€}€~€}€~€€€~€~}€}€€~€~~~€~€}€~€~~~€~€~~€€€~€~~€~€€~€~€~€~€~~~€€~~€~~€}€~€‚~€~€€}€}€~€€~€€~€~~~~~€€~~€~~~€}~}~€~€~~€~~~~€~~€~€}~~€~€}€~~~~~~€}€~~~€€‚~€~~~€~~~€}~~~€~~€~~€~}€~~~~€~€~€~€}~~~€~~}‚~~€~€~€}~€~~€~€~~€~‚€~~€~€}€}€~‚~~€~€€~~~~€~€€}~€~€~~~€~€~€~€~€€€€~€}~€~~€~~€~~€~~€~€€~~~‚~~~€‚~€€}€~€~~€~~~€~~}€~~€}€~~€~€~€~€~€~~€}€~~~~€~€~~€~€~€~‚~~~~~~€€~~€~€~~€}€~‚€€€~€~~€~€~~~~€~€~~~~~€€€~€~~€~€~€~€~€~€~€~~~~€~€~~~~~€~€~~€~~€€~~~~~~€~€~€~€~€~€€~€~€}~~~€~€€~€~~€~~€~€~€}€~~€~}€€€€€€}~~~~€€~~~~€}~€€~€~~~€}~~~}€~€~€~~€~€}}€~}~~€~~~€~€€~€~€~€€~~~~~€~~~€€€~~€}~~€~€€€~~€€~~€€€~€~~€~~€~€~~}€~€~€€~€~€~~~€~‚€€‚~€~€~~~~~~€}€~~€}~€~~~~~€€€~}~}~€€€€~}€~~€~€€~~€~}€~€}€}‚€~~~~~€~€€}€~~€€~~}~~~€€€~~€~€€~€}€~~~€~€~~‚€€~}€~~~~€€~€~~€~‚€€~~€~€€€€~€}~~~~~€‚}€~€}€~~~~€€}€€~€~}€~}~€~}€~€~~~~€~€€€€~€~}€~~€}~€~‚€€~~~~€~€~€~~€‚~€~~€}‚€€~~€~~~~€€~€€~~€~~€~~€~€€~~€~~~~~‚}~€}€}€€~€€~~~~~€€€€€~€~~~~€€€€~€~}‚~~‚~}~€~~~~~€~€~€~~€~‚€~~‚~€‚~€}€~~€}~€~€~€~~~~~€}€~€~€}€~~~‚~€}€~€}~€}€~~€}€~~~€~€‚}€}~€}€€€}~~~€~€~€~~€~€~~~€~}~~~€~€}€€~€}€}~~€€~€~~~~€~~~~€~€~~€~€~€~~~~€€~€~~~€~€~~~€~€~€~~€€}€~~~~€~€~€~~~€~~~€~€~~~~~€~€~~€~€~~€~€~€€~}€‚~€~~€}€~~~~€~€~€~~€€€~~}~}~~€~~€~€€}€~~‚‚~~€€~€~€~~~€€€~€~~~~€~€~€}€~~€~€~€~~~~~‚~~~€€}~€~€}‚~~€}€}€~€~€~€€~€~€~~€~~€~}€~~~}~€}€~€~€}€}€~€~€€}€~€~~}€}€}€}€}€~~~€~~€€~~‚€€~~~€~€~€€€~€~~€~€~~}€‚~}}~~~~‚€€€~€~~~€~€~€}~~€€}}€€€~€~€~~}~~~€€~~€~~€~€~€~€}€€~~€~€€~~~~€}€~‚€€€~€~~~€~€~~€~~~€~€~~~~€~€~~~~~~€€€~~~~€€~€~€€}€~€~€~‚~€}€~€~~€~€~~€~€€~€}~€~€~~€}€~€€~~~€€~}~€}€~~}~€~~~~~€~€}€}€€~€~€~€~€‚~~€}€€}€~~~~€}€~€~€~~€~€~€€}€~~~€~€€~~~‚~€}€~€‚}€€~~€~~€~€€€€~€~€€~‚€~~€€~~~€~€~€}€~}~€}€~~€~~€~~€~€~€}€}€€€~~~~€~€}€€~€~~€~~€}€€€~€~~€}€~€~€~~~~€}€}~€~~€}€€~€~~‚}~€~€~€€~€}€~}€‚}~€~~}€~€~~€€~}€}~~~€€€€}€~}€€€~€~€}€€€~€~~~€~€}€~~~€~€€€~€~~~‚}€~€€€~€~}~€~€~€~€‚~€~~€~€€€~€~~~~~€}~~€€‚~€}€~~~€~€€~~~€~~}~€}€~€}€€}€~‚~€~€€~~€~~€~~€~€~~~~€~~}€~€€~€}~~€~~€~€~~~~~~€‚}~€}€}€~~€‚~€~}€~€~~~€}€~€~~~~}€~~€€€~€~}€~€€~€}~€~€~‚~~€~€}€~€~€~€€€€~€}~~€~€~€~€~~}€~€~€~€~€~~~‚~~~~~€~€€€€~~~~€~€~€~~€~€€€~€}~~€~€€€~€}€~}€~€}€~~~€~~~€‚~€~~€~€€~~€~~~}€~~~~€~~€~€}€~}€~€~~€~€€€~~~~~€€€~€€~€~~}~~}€~€€€~~~}€~}€€€~€~}€~~€€~€€~~€~~~~~€~€~€~€€~€~~~€}€€€~€~€€~€}~€€~€~~€~~€€~}€~€}€€~€~€}€~~~€~€€€~€~~~€~~€€~}~€~€~€~€~~~~€~€~~~€~€€€~~~€€€~€~€}€~~€~~~€~€~~€}€~€€€€~€}~~€~€€€~€~}~~~~~~€~€}€}~€}€~~€~~€€~~~~~€€~€~~~~€€~~~}€€~€€}~€€~€~~~}€€€~~~~}~€€~€}€~~‚}€~€~€€~€~~€~€~€~€~~~€~€€~€~}€~~€~€~€~~~~€~€~€€€~€~~~€~€€~€~€~~€€€}€~}€~€~€~~~€€~€~~~}€‚€~~€~~€€~~~~€~€€€~~~€~€€~€~~€~~€€~€~~}}€~‚€~~‚€€~€~~~€~~~~~€~}€}€}€~~~€~€~~€~~€€}~‚€~€}€€}~€~€€€€€~~€~~~~€‚~€~~€€}€~~~~~€~€}€}€~~~‚~€}€~€€~~€~€~~~€~€~~~€}€~€€€~€~~~~~~€~€}€}€~}€}~~~~€€~€~€~€~€~€~~€~~€~~€~~~€~}~~€~€~€~€~€}€€~€~~~€~€€€€~€~~€~€€~~~}€~€~~~}€~~~€~€~€~}~‚€~~~}€~€€~€}‚€~~‚€‚~~~~€~€€~€~~€~€€}~~€€€‚~€~€~~~}€~€€~€~~€~}~~€€~~~~~€~~€€~€~}€~~~~~€~€€~~€~€}€~€~€~€~€~~~~€}~~€~€~€~~~~€~€~€~~~~€€}€~~€~~‚}~~€€~€~~~€~€~€~~~€€~€}~~€~€€~€~~~€~‚~~€~~~€}€~~~~~€~€€~€~~~€~€~€~~~€~‚€€€~€~~€}~~€€~~~€‚~~€€€~€}~€~€~€~€~€€~€~€~~€~€~~‚€~€~}~~€~€~€~~~~€}~€}€~€~€~€€~€~}‚‚~}€€~€}~~~‚‚~€}€}€~‚€~€}~€~€~~~€~€~~~~~~~€~~€€}€~~€€€~~~~€}~€€~€~€~€~€}€~~€~~~€€~~~‚~~~‚~~€}€€}€~~€‚~~€~~€~€€€~~€~€€}€}‚€~€~~~~€~€€€~~~€~~€€~€~~~€€€~€~€~€€}€~€~€~€€€€~€~€~‚~~~€~€~~€~~~~‚€~€€~€~€}€~~~€~€~€€~€}~~~€€~~€~€~~~€~€€~€~~€~€~~€~€~€€~€€~€}~~€}~€€€~~~€~€~€~€€~€~~~€~€~€€‚€~~~~€~~~€~€€~€~~~}~€~€~€~}~~€}€~€}€~€~~}€~€~€~€€€~€~~~}€~€€~€~~}€~~~~€€~~~~€~~€€}€~~€}~€€€~~~}€~€€€~€}~~€€~€~€~€~€€~€~~~~€€~€~~~€€~€~~€~€~€~~~€~€}€~€~€~~}~€€~€~~€~~€€}}€~~~‚€~€~~€‚~}€€~€~~~~}~~€}~€~~€~€~€€~~€~~~~€}~€€~€~~~~€~€€~~€}€~~€~€€€~~~~€~€~‚€~€~~€~€~€}€€}€€}}€~€~€€~~~~~€€~~€~~~€~~€€}‚€~€}~~€~~€~€~€~~€~€€~€~~€€€~~~~€~€~€~}€~€~}€€~€€~~€€€~~~€~€€€~€~~€~€~€~~‚~~~}€~}}~€~€~€~~~€~€~€~}€}€}}€~~~~€~€€~€~€€~‚~~}€}~€}}~‚~€}€~~€~€~€}~~~€~~€€€~€~~€~€€€~‚~~~~€}€}€€~€}‚€€~~~€}~~}€~~€€~€~~~~~€~~}€~€€~€~€~~~~~€€€~€}~~}€}€}€}€~~~}€~€~€~€~~~~~~‚~€~~~€€~€~€~€~€~~~~€€€~~~~~€€~€~~~€~~€€~€~€€~€~€~€~€‚~~€}€€~€~€~~€}€~€~~€~‚€~‚€‚~€~~€~~~€~€€€~€~€~€~€€~~~€~€~~€€~}€~~~€€€~€~~~€€~€~}€~~~~~}€~~~€€€~~~~~~€~‚~~€}€~€}€~~~€}€~€~~€~~~€~€~€€}€~~€~€~€}€~~€‚~~~€~~€~€€€~€~~€}€~}€€~~~~€~€~€€~€~~€~€€~~€}‚~~~€}€~€~€~~~€~~€}€~~~}~€€~~~€€~€€~~~~€~~~€~~~€~€~~€}~€€€}}~}~€~~~~~~~€}€€~€~€}€~~~€~€€~€~~~~€~€€€~~€~€~€€~~‚}~~~€€~€}€~~€~~~~~~‚~€€~€~}€€€€~€~~€~€~~~}~€€~~~€~€~€~€€~€~~€}~€~€~~€~~€€~~€~€~~~‚~€~€€}€~~}€‚~€~€€~€}€€€€~~€~€~€~~€~~€~€~€€~€~~€€~€~}€}~€~€~~~€}~€€~}~~€}€~€€€~~€~€€€~~€~~€~‚€€~€~€~~~€€€~€~~€~€€~~€~€€~}~~€~€~€€€~~~~€~~€€~~~€~€}€€}€~~€€‚~€~~~~€~€~~€~~€~€~~~€~~~€~€}~€~€~€€‚~~~~€~~~~~~~€€€€~~€~~~€~€~~€~~~~~€~~~}€~~€€€€~€~~~~€~€€~~~€~€~€€~~€€}€€~~€~€~€€~~€~~~€€~~~~€€‚~€~€~€€€€~€~~~€~€€~€~€~€~€~~~€~€~~~~~~‚€}€~€}€~€~~~~}€~~~€~€~~}€€€}~‚}~~€~€€~}€~~~€€~€~~~~€€}€~€}~€~}€~€}€}€€}~}~~~€}€~€~€~€}€€€~~€~~~€€~~€€~€~€~€~~‚~€}~€~€}€€~~€~‚€}€~€~€~~€€~~~€~‚}~€~€~~~~€~€€€‚€~€~~~~€€~~~~€~~€}€~€€‚~€~~€~~~~€}€~~€~}€~€}€~€~~~€}€}€~~~€~€~€€~€~€}~~~~}€}€~€~}~€€€€~€~~}€~~~~~€~€}~€}~€~€~~~€~€‚~~€}€~€~~€~€}~€€~~~~€~€€~€€~~~€~€~€~}€}€~~~‚~€}~€~€€~}~}€}€€€€~~~€~~€€}€~€~€~€~€~~€€~~€~~€~€~~€€~€~€~~~‚~~~€~‚€~€~€~~~~~€€~~€}‚€~€~€~€~€€~€~€~~~€}~€€~€~~€}€~€~€€~€~€~~}~~€}€~}~€~€€€~~€~€~€}~~~€€~€~€~€~€€€~~€~~~€~€€~€~€}~€€}€~}€€}€~€~~~~~€€}€~€~~~~€~€~€~~~~€}~€~€€~€~€~€~€€}€~~€~~‚}€~€~€~~~€~‚€~€~~€}€~€€€~~~€}~~~~~€‚€~€}~~€~~~‚€~~~€~}~~€~~€~~~€€€~€~€~~~~€~€€}~~~€~€~€~~~€~~~€}~€~€~~€~€€€~}€~~~~€€€~€~~~€~~~€€~€~€}~~}€~~€~~€€€‚~€}~~€}€€‚~€~€~~€~€}€~€~€~}€}€€€€~~~~€~€~€€~€€}€~€~~€~€~~~€~€~€~~}~~€~€~~~‚€~~€~~‚~€~~€~~~€~~€~~~€}€~~€~~€}~~€~€€~€}€~~€~€~€}€}~~€~~~€€}€~€~~~€~€~€~€~~€~~€~€}€€}€~€~€}~€€}€}~~~€€€~~€~~~~€~€~~~~~€~€€}~~~€~~€}~~}€~~€~€~~€}€~~~€€~}}~~€~€~€}€~~}‚~€~€~€€~~€~€~€}€~~€‚~€~€€~€~€~~~€}€€}€~~€~€€‚€~€~~~€~€~~€~~~~~~€€~€~~~€}€~~€~~~~€~€}€~~€~€€€~€~~~~€~~~~€~€~€~‚~€€~~€}€~€€~€~~~~€€~€~~~€}€~~€~~€~€€€‚~€}~~€~~€~€~€~€€~~~~€~€€~}€~~~~€€€~€~~~~€€€~€}€~€~€~‚€€~}€‚~€}~€~€~€€}~~€~~€~€~€~€~}~€}€~}‚~~€€}€~~~€~€€~}€~~€~~€€~€~‚~~~€~€~€€€~~€~~}~€~€}€~€}€~~~€~~€~€~€€~~€~~~~~~€€~€~}~€~~€~€~€€~~~~~€~€~€~€~~€~€~~€~~~€~~}€~€€‚~€~~€~~€~~€~€}~‚€~€~~€~~~€€}€}~~€~€}~}€}€~~~~€~€€€~~€~}€~~€€€~€~€€~€€~€~€~~€~€~~€~~€~€‚~€}~~€~€€€~€~~~€€€‚~~€}~~€~€~€~€}~€~~€€€~~~~~€€€~~~~€€~€~€~~€€€€~€~€}~€~~~€‚~~€~€~€€~~~~€}€€€~~~€~~~€~€~€}€~€~€~‚~~~~€}€~~~€~~€~€~}€~€€~~}~~‚~~~€}~€}€€}~‚}€€}€~€~€}}~~€€€~€~~€~€€€€~€~}‚~€€~€~~€~€€€~~~~~€€~‚€€€€~€~}€€}~€~€}~€~~€}€€~~€~€~€€€}~~€~€€€~~~~€~€€~}€~}~€~€€~~€~~€}€~€‚~€}~€~}~€~€~€}€€~€}€€€€€€~€~~~~€€~~€~~}€~€~€}€~~}€}€€~~~~~€~€}€~€~~~~€}€~€~€~~~€~€~€~~€~€~~~~}€~€~€€~€€~€€~~~€€€€~€~~}€}€€€~€}~~~€~€€~€~€~€~‚}~€}€~€€~€~~~~€~€}}€€€~}}~~~€€~€~€}~€~~€~~€}€~~~€€}€}~‚€~~€~~€€~~€~~€~~~€~~~€~€~€}€~~€€~€~~~~€~€€~€~€~€~€€~€~~~}€€~~~~€~‚~}€~€~€~~~~€€~}€~~~}€€}~}€~€~~~~€~€€€~~‚~~~€~~€€‚~~~~~~€~€}€€~€}€~~~~€~~€€~~~€~}€~€~€€€~~€~~€~€~€~~~€}~~~€~€~~€€}€€}€~€~€€}€~~~€}€€€€~~€~€~€€€~€~€~€~€~~~~€~}€~€€€~€~~€‚~€~~€€~€~~~~~€~~~~€€~€}~€~€~~~~~~€~€‚~€~~~€~€€~}€~€}}€~€~}€~~~€‚~~€~€~~}~€~€€€~€~~~~~€€~~€~~~~€}€~~€~€~}~~~€~~€~€~€}€~~€~€~€~}€~~€~~~€€~€~€~~‚€€‚}€€~€~€~€~€€‚~~~~~€~€~~€}€~€~€~~~€~€€~€~€~~~€€~~€}€~~~‚€~~~€~€~€€~~€~~~€~€~€~~€}€~€}€~~‚€~~~}€~€}€~€~~‚~€}€~~€~~~€~€€€}€~~}€~€~}€~€}€~~~€~€~~~~€}€€‚~€~~~}€~€€~€€~‚~€~~€~€~€€~€~~~~€€€~~€~€~~‚€~~~€‚}~~€~~€€€~~~€~€~€~€€~€~€~~‚~~~~€~~~‚~‚~}€~€~~~~€€€€€~€}€~~~€€€~~€~~~~€‚~~€~€€~€€~~‚€~~€}€€}‚€~~~€~€~~~€~€~€~€€}€~€~€€~€}~~€~€~~~€~~€~€~~€}‚~~€~€~€~€}~~~€~€~€~€}€~€~€~€~€~€€€€}€~~€~~€€~€~~€€€€€~€~~€~~€€~}~~~€~€~‚~€~~€€}€~€~€€~~€€}€}€~€}€~€~~~€~~€~€~€~€~~€~~€~€~€~}€~~~~€~€~}~€~~~€€~~€~€~‚€~~}~€~€€~€€~~~€~€}€~~€~€~€}€~~~€~€~~€~~€€~€~~~€~€€€~~~~~~€~€€~~~~~~€€~€~~~~‚€}€€~€}€~€~~~~€~~~~~€}€€~~€~~~€~€€}€~~~~‚}€~~€~~~€€€€~€~€~~~~~‚~~€~€~~€~€~€€€~€~€~€~€€}€~€~€€}€€~€~~€~€€}€~~~~‚~€~~}€~~€~€~€€~€~}‚~~~~€~€€€~€~€~~~€~€~€~~€€~~‚~~~€€~€~~€~€€~€~~}€€~~€~~€~€~€~€€~€~€~~~~~~€€~€~~€~~€‚~€~€~€€~€~€~~€~~~€~€~€~~~~€€~~€~~€}€~€~~€}€€~€~€}}€‚~~€~€~~~€~€~€~€~€€‚~€~€€~€~€€~~~€~€~~~€~‚€~~€€}€~€~€~€~~€~~€€~€~~€~~€~€~€~~~~}€€}€~~~~€~~~€~~~€~€~€}€~~~€‚~€}~€~~€€~~€~€€~€€~€~€€~}~~€}€~€~~~€~}€~€€€}}€~~€~€~‚€~~~€~€€~~€~~~~}€}€€€€~~€~~~€~~€€€~€}~€~€~~~€~~€~~~~€~€~€~~~~~€€}~~~€~€}~~}€~€€€~€~~~€€~~~~€}€€~€~€~€~~€~€~€~€‚~~~€}€~€~~~~€€€~€~}~‚€€~~€~€€~€€~}€~€€~€~€~~~€~~~€€~~~~€~€}€€~€~€~€}~€~€~€~€~~€~~~~€~€€}~€~~€}~~€~€~€€€~~~~€€}~~€~~‚~€~€€€~~€~~~~€}€~~€~€~€€€~€~~€~~~€~€~€€~€€~€~€~~~~‚~€~€~€~€}~€}€~€~€}‚~€€~€}~~€~~€€€~~~€~~€€~~€~~€~€~€~€}€~€~€~~€~€~€€~€~~~~€~€€€€~~~~~}€~€~~~€~€~~}€~€~€€~~~~€€~~~€}€~}€~~~‚~~~~~€~€~~~~€€~~€~~~€€~€~}€€}€~~~~~€~€~€~~}~€~€€~~€}€€~~€~€€€€~€~~~~€€~€~~€~€~~~~€~~~€~}€€~€}€~~€€~~€~~~~€~€€~~€~€~€~€~}~€€€~}~€~€€}€~~€~}€~€~~€~€~€~}€~€€€~€~€~~}€~€€~€€}€€~~~~~€€€€~€~~~~€~~€~~€~€~€~€~~€€}€~€~~€~€€~€~~~~~~€~~~~~€€€~~~€€~€~~€~€€~}€}~€~€~€}€~~€}€~~~€~€~~€~~~€€€~€~~~~~€~~€~~}€~~€~€~~~€}€~€~€~€€~~~€~€‚€€~~€~~€~€€~€~~€~€€~~~~€~€€~~€~€~€~~€~~}~€~€€}€€~~}~€~}€~~~~€€~€~€€~€€~~€~~~‚~€~~€~€€~}€~~€}~€~‚€~€}~~€~€€~~€~€~€€€~€~~~€~€~€~€~€~}~‚~€}~~~~~~€}}€~~~~~~€~€}€~~~€}~~}~€~€~€}€~€~~€}~€~~~€~~€~€€~€~€~~~€}~~}~~€~‚~~€‚}€~€~€~~€€~~~~€~~€€€~€~€~€€€~€~~€~€€€~€~€~€€€~~~~€~~€€~~€~~€~‚~€€€€~~€~~€}€~€€~~~~~~€‚~€~€}€}}€~~~€~~€~€€~€~~~~€~~~~€}€~€~€€~€~~‚~}€~€}~~€€~€}€€~~~~€~€~€~€€€€~€~}€~~‚€~~~€~~~~~€~~€~€~€}€~€}€~€€~€~~€}€~~~~€~~€€~€}€~€‚~~~€€}€~€~~€~€€€€€~€~€~~€~~€~€€€~€~~~€~€}€~€}~€~~~}~€€~€~€~~~~€€€}}€~~€€~~~~~€~€}~~~~€‚~€€~€~€}€€~€€€~€}~~€}~€€}€~~€~€€~~€~€~€€~€€~€~€~~€~€~~~~~€~€€}€~€~~€~€€€€~€~~€~€€€}€~~~~€~€}~€~~€~~~€~€€~~€~~~€~€~~€~~~~€€~~€~~€~}~~€}€€~€~€€}€~€}€€~~€}€€€~€~~€~€€}€~€~€~‚€~~‚~~€}€~€€€€~€~~€~~€‚~~€‚~€€}€}}}€}€€€~~~~}€€~€€~€}~~~€€~~€~€€~€~~~€€~€~~€€€~€~~~€~€~€€}€~~‚}~}€~€~€~€~€€€~~~~~~€~€}€~}€~~~€}€~€}€}€~~~€~€~‚€~€~~€~€~~€~~~~~~~€}€€~€~~~€~‚€€€~~€~~~€}€~€~~~~€~€~€~€~~}€€~€~~~€~€€~€~~~€~‚€€~‚~~~~~€~~~€~~~~}€~€}}‚~€~€~~€€€€}€€~€€~€~~€~€~~€~~€€~€~€~~€€~~~~~}}~€~€~€~}€~€~€~€€~~~~~€€}€~~€~~€}‚~~~~€~}€~€~€~~€€€~€~€~~~~€€€~€~~~‚~‚~€~€~€€}€~~~‚€‚}~~€€~€~‚~~~~€~€~~~~€}€~€€~~~~€~€~€}~~€‚~€~€~€~~~~€~~€~~~€~~~€~~€~€~€~€}~~~€}}€~€~~~€}€€~~~~€~€€~€€€~~~€~€~~€€€€~€~~€~€~€~€}€€~€~€~~~€}€~€~~~€}€~€~‚~~‚~€}~~~€~€~€€}€~€~~€€€~€~~~~€~€€‚}€~~€~‚€€}€~~~€~€~‚~€~€€~€~€~~€~~€~€€~€~}~€‚~€~€~}~€€~€~€~~€~~€~~€‚€€€~}€}~€~€€~€~~}€~€~€€}€€~€}€~~~€€~€~~€}~€~€~~€}~~~€~€€}€}~€~€~~€~~~€~~€~~€~~~€€~€~~€€~€~~€}~‚~~~~€~~~€~~€~~~~€€~~~€~€€~}~€~€~€~~€~}€}‚€~~}€~~€}€~~~€~~~}€}€~€~}€~€€~}€~€~€}€}€~~}€~‚~€}~~~€~~€~~€}€€€~€~~€~€}€~€€~€~€~~~€€€€~€~€~~~~€~€‚~}~€~~}~€€~€~€~€~‚~~€~€}~€~‚~~~~€}~~€~€~€€~~~‚~~}€}€~€~€~€~€~~€~~€~€€€~~€~~~~€~~~~~€~€~€€~€€~€~~}~€€~}~€~€~€~€€~€~€~€€~€}~~~€~~€€~~~€~€€€~€~~~€~€~~€‚}€€~€~€€}€~€~‚€~~€~€€~€€}€~€~~~~€~‚€€~~€~€~}€~~€€€~€~~~€€~€~€~~€~€€}€~~€€~€~€€€~€~€~~€~€~€~}~€€~€~~~€€}€}‚€~~~‚~~€~€~€~€€~€~€~€~‚€~~~~~€~~~}€~€€~€~€~€~€~€~~€~~~€~€~€~~}~~~€€~€}€~€~€}~€~€~€~€~€~~€~‚€€€€~€~~‚€~‚}~€~€€~€}€~~€~€€€€~€~~€€~~~€~€~€€~€}~~€~~€€~~€~€}€€~€~}‚€~~~~€}€‚~€}€~~€~€~€€€~€~~~€~~‚€~~~~€~€€~€€~€~~€€~~~~~~€€~€~€~€~~€}~~€~€~~~~~~~€€}€€}€~~€~€~€~~€}€~}~~~€~€}€~€~~€€~€~~€~~~‚~~€~€~€‚~}~~€~€~~}€~~~~€}€~€~€~~~€~€}~€~‚€~~~~€~€~~~~€~€~‚€€€~~€}€}€€}‚€€~€~~}~€~€~€~€}‚€~~‚~€‚}€~€~€~~~~~~€€~}~~~~}€~€€}€~~€€}€~€~~~€~€~€€~€~~€~~€€~€~~~€~€€~~€~€€~€€}€~~~~~€~€~~€~~~~€~~€€~€}~~~~‚€~}~~€~}€~€~€~€€~€~~€~€€~~~€~~€€}€~€~€€~~€}~~~}€~€~€~‚~~€}~€~€~‚€€€~€~}~€€~€€€~~}€~€~~€}€~~€~€}€~€~€~~~€~€~~~~€~€€~€~~€~€€€€~€~€~~€€~~~}€~€€~~€}€~€~~~€~~€~€~€~~€~~~€~~~~€~€~~€~~~‚}€}~~€~€€~€~~€~€€~}~}€}~€}~€€€}€~~€~€~€}€~~}€~~€~~‚~~€~€~€€}€€~€~~~~~€~€~€~~}€~€€}€~€€~~€~~€~€€~~}€‚~~€~€€~€~€~~~}€~€}€~€~~~€~€~~€}~€}€}€€~€~~~}~~€~‚€€~~}}€~€€‚~€~~€€}€~~}€€~~€~~~€~~€}~~~€~€‚‚€€~~€}~€~€~~€~€~€~~~€~~€~~~~€€~~€~€€~€~~€}€€}€~€~€~~€~~€~€~~‚~~~€~€€€~~}~€€}€~€~€~€~~~€~€~€~~~~€~€}€~€~€€€~}€~~€}€~€~~~€~~~~~‚~~~€~~€}€~€~~€€€~~€~€€~€~~~~~€~}~~€}‚€~~€~~€}€~}}~‚€€~€~€€~€}€}~€~~€€€~~~~~€~€‚~~~~€~€}€~~~€~€€€€}€~€~~€~~€€€~~~~€~€}€‚}€~€€}€~~€~€~€}€~~~~~~€€€~€~~€}‚~€~~€€~€~€€~~~€~€€€~€}€~~~€}~€€~~~~€}€}~}€€~€~}~€~€€€€‚}€}~~~~~€~€€€€~~~~~€~€}€~‚€~€}~€~~€~~~‚~€~€€~~~~‚~~€~~€~€~~~~€~€€€€€~€}~}€}€€~€~~~}~€~€€~}€}‚€~}~~€€€€€}~~~~‚€‚~€}€€~€~€~~€~€€~~€~€}€}~~~~€€~~~€}~€~€}€~€€~~~~~€~€~€}€~€~~~~~€}€~€€~}~€~€~~€~€~~~~~~€€~€~~~€~€€~~~€~€~€~€}€€€~~€~~€~€~}€€~€€~€~~€~~~€}‚~€~€~~€€~~~~€}‚€}€}‚~~~~€~€}€€~~~€}€~€~€~~€€~~~~€}€~}~~€~€~~€~€~€~€~€}€€~€~~€~€€€~~€~~€~€~€~‚€~~€~€~€~€~€~€€~€~~€€}€€~~€€€€~~~~~~~~~€~€~€~~}€}€~€€}€€~€~€}€~€~~€€~€}}€~~~~~€~~€~~€}€€~€~~€€}‚€~€~~~€~€~€~€~~€‚~~~€~~~~~€~€€~€~€~€~~€~€~€}~~~~~€~€}€~~~}~€€~€~€~~€~~€€€~~~€€}~€}€€~€~€~~~€}€~€€}€~€~€~€~‚€€€~~€~~€‚}€~€}€~€~€~€~~€~~€€~€~~€€€~~~€~~€~~}€~€~€~~}€~~}€~~€€~‚€~~~~€~~€~€~~€~€}€}€€~€~~€~~€~‚€€~€~~~‚~~~€}€~~~€}€€~~€€~‚€€~~~~€~€~~~‚€~€~~€~€€€~€~€~~€~~}€~€~€}~~~€~€€~~~€~}~€~€€€~€~€~€~€~€~€~€€~~€~~€}€~€~~~}~€~€~€€~~€~}€€}€~€}€}}~~€~€~‚€~~~€~€~~€}~€~~€~€~€}€€€}~€~~~}~~~~€~€~}€€~~~€~~€~€}~€€€~~~~€~~~€}€~~€~~~€~€€€€~€€~€}}€~~~€~€}€}€~~~€~~~€~€~€}€€~€~€}€}€~~~~€~}~~~€}~€}€}€€~~~€~~€~€~€~~€‚~~~€}€~~€}~€}€}€~~€~€~€~~€€~€~~€~~~~~~€€}€~€~€~€~~~€~~~~€~€}€~€€~€~~€~~€}€~~~‚~~~~~€~€~€~~~€}€~~€€~‚€~~}€~€€}€}~~~~€€}€}€~~€~~€~‚€€~}€~~~€~€~€}€~€~€}~~~}€~~€~~€‚€}€~}€~€€~€~~‚~€}€~€~€€}~€~€~€}~~}€~€~€~~€~€~~~~~~€~€€}€~~~~~€ƒ~€€~€~€~€~~~~€~~€~}€~~~€~€~€~€~€€}€€~€~€~~‚~~~€‚}~~€~€}€~~~€~€~~}€~~~€~€}€~€~~}}€~€~€~~€}€~€~€~€~~~€~~€~~€€~€~€~€~€~€~~~~~€~~~€}€~~~~~€~~€~~~€~€€~}€~~€~€€}~~~€€~€~€~}~~~€}~}€~~~€‚~~~~€~€~€~€}€~€~~~€€€€~~€~}~~~‚~~€~~€~€~€€~€€~€~€}€~~€~€€~€~€}~~€}~€}~€~~€€‚~€€~}~€~€~~~~~€~€~€€}~~~€~~~€~€€€~~~~€}‚~€€}~€~€~€~€~€€~~~}€~€}€~~€}€€~€€}~~~‚~€~€€€~€~~~~€}€}}€~€~~€~€€€}€}~~~~~~€~€~~~~~~~€€€~€}~€~€€~~€~~€}~€~€~~€}€€~~€~~~€€~€~~}~€~€€~}€~~~€~}€}~~~~~~€~€€€~€~~€~€‚~€~~~€~€~€€€~€~€~~€~~€€}~~}€€~€~~~~€~€€€~€~~€€€~€~~~€}€~€€~€~~}€~€€€~€~~~€~€~€€}€€~€~~€~€~~€€~~€€~}€~~‚~€~~€€}}€€~}~€~~~€~€€~€~~~€‚~~€~€~€~€~~€}€~€€€~€}€~~€}€~}‚€~~€‚~~~~€}€~€~€~€}€~€€~€}€~€€~€~~€}€}€~}‚~~~€~€€}€~€~~€~~€~~}€~}€~~}€~}~~€~~~~}~~€~~€€~€}€}‚~}~€~~~€€~~~}€~€€~€~€~~~}~~€€~~€~~~€~~~€~~€~‚€~€}~~~€~€~~€}~€~€~€~~€~~~€~€€~€}€~~~~~€~€~}€~‚~€~~~€~€€~€~~€~€€~€~~}€~€€€~}~~~€€€‚~€~€~€~€€€~~€~~€€~€~~}‚~€~€~€€}€~‚}~€€€}€~‚~~~~€}}~~~~~}~€€€€~€}€~€~~€€€~€~~‚€~~~€~€~€€}€~€~€~€~~~~€€~~~~~~€€€€~~~~~~€}€~~€~~}€~€~~~€}€€~~~€~€~~~€}€€€€~€~€~€€~€~€}€~~~~€~€~€€~~€‚}€~~€~~‚~€~€€~€~~€~€}€~‚€~€~€€~€~~€}€€~€~~€~€€~€}~€~€~~~€}€}€~}€~~}€~€~~~}€~€~~~}~€~~€~~~~€€~~€€~€~~€~€}€~~€~€}~~~€~~€~}~~€~€€~€~~~€~‚€~~~~€~€~‚€~€~~€~€€~~€~€~~~€~~€€~~€~~€€~€}~~~~€€~€}~€€€€}€~€~€€}‚€~~‚€€}€}€~~~~€~€€€~€~~~€}€~~~~€~€~€~~€~€~~~€}€}~~~~~€~€~€€€~€~~~€~€€€}~‚€€~}€~€~~€~€}€€~~€~~}€}€€€~€~~~~€€~€~~€~}~€}€~~~€}~€€~€~~~€~€€€€~€~€€}‚~~~€€~~€~~~€~€~€€~€~~€€~€~~€~~€~€~}€~€~€€}~€~€~‚~~~€~€}€~€~~~€}€~€~€~€~€~}~~~~~€~€€}~~~~€~~€}~~‚}€€~€~~~€~€~€}~~}~€~‚€~‚~~~~}€~€€~€~~~€}€}€~€€}€€~~€~~€~€~€~€~~}~€}€€}~€~}€~~~€~€€}€~}~~€~€€€~~~~‚}~€~€~~€~€}~~€~€€~€~}€~€}€‚~€~~€~€~€~€~€~‚}€}€~€~~~~€~€€~€~~~€~€~€~~€€~~~~~~€€~€€}~~€€€}€~€~~~€€~~~€€~~€~~€~€~€~~€‚€€€}~~~€€}€~~€~€~€~~~€~€€~€}~~€~€€~€}~~€}~~€~~€‚}€~~~€€~€~~~€€€~€}~~~~€~€}~€~€~~~‚~~€‚~~~€€~~}~~~~‚}€€~~~~~~€€}€~~~€€~~~~~~€~€~€~€~€~~€~€~~€}€}€}~€€‚~€~~~€€€~~€~€€~}€~~~€~~€~~€€~€~}€€€~€}~€~€€~€}~~~~‚€€~€~~~€~~€€€~€~~~~€~€€~~€‚~~€€}€~€~€€}€~~}€~€€~}‚~~~~€€}€~~€~€€€~€~€~€}~}€}€~‚€~€~~~~~€~€~‚€~~~~~~€~€‚}€~€~€~~~~€~€‚~~‚~~€~€€~€~€~~~~€}€~~~€}~€}€€~~€~~€€€€~~~~€€€~€}€€~‚€~€~~‚~}‚}€€~~€}€~€~€}€}€~~€~€~~~~€~~€~€~}€}€€}‚€~~~}~~€€}€€~~~~€~€~€€~~~€~€~€€€~~€}€~€€}€~€€~€~€~~~€~€~€€~~€}~€~~~€~€€}~€~~€~€€€€~€~€~~€€~€~~~~€~~}~€~~€~€~€~~€~€~~€}€~~€~€~~€}€€~€~~€~€€~€~€~€~~€~~€€~~~€}€~€€€}€€~~€}€~}~€~€}€~€~€~~€~€~€~~€€€€~€~~€~~€€‚~~~~€~~~€~€~€}~~~€€~~~~~~€€€}€~~~€~€~€€}€€}€~‚€~~~~~€}~}€~~€~€}€€~~~€~~€}€~~€~€~€~€~}~~€~€€~€~~~€~€~~}€€~~€~~~~~€€~€~~~€~€~~€€~~€~€~~€}~€€€~}€~€€€~~~€~~€~~€}€‚~}~~~~€~€}€€~€€}€~~~€~€€€~~€~~€~€~€~€}~~~‚€€~€~~~€~~€~€~~€}‚€~~‚€~~€}€€€~‚}€~€~~€~~‚~~€~~~}~€~€~€€~€~~~~€}€~€€‚~}€~€~€~€~}€€~~~~~~€~€~€€~€}~€€~~~}~~~€~€~€~~€~€€~~€~€‚~€€~€~~€~~€~~€}€‚~€~€}€~~€~€~€~€~~€€~~€}~~€~~€€~~€~€~~~}€}€~}~~€}€~~€~~‚~~~€€€~€}~~~€€€~}~€~~€€~€~~~€~€€~~~€~~‚€€~~€~€}€~€~€~~€~€€~€~~€~~~~€~€~~€~€€~€€}~€~€}€~€~~}~€~€€€€}€~€~€~€€~€~~~~~€€€~€~}€~€€€~€}~€~€€‚}~€~€~~€~~~~€€€}€~~~€~€~€}€~~~~€~€€}€~€~~~‚€~~~€~~€~€}€~~~~}~€~€~~‚~~€€~€€€~€~~€~€€€~€~~~€~‚€~€~€~~€~~€}€€~~}‚~~€‚~~€}}€~~~€~€~~€€€~€~€~€~€€~€~€~€~€~~~~~€~‚~~~~~€}€~~~~€~~€~~~€~€€~€~€~€~~€~€€~€~€}€~~}€~€~€}€~~~€~€~~€}€€‚~€~~~~}‚~~€~€~€€~~~€~€~‚€€‚~€}€~€~~€~~~€€€~~€}~~€}€~~€‚}€€~€~€€~€~~}~~€~}€~~~€~~€€~€~~€}~‚€€€~~€~~~~€~~~€~}}€~€~€~€~~~€€€~~~~€€~€~~€~~€€~~~~€~€€~€}€~~}€~~€~~}€€~}~~€~~€}€~~~~~~~€~€}€~~~€~€€€~€~~~~~€€€~€~€~€~€~€~€~€~~~€}~~€€€~€~€~~€€€~€~~~~€€~€~€~€€~~€~~~€~€~~~~€~€€~€€}€€}€~}‚~~€€~€~~~~€€~€~}~~~€‚~€~€~~~~~€€~€~~€~€€€~€~€~€‚}€~€~€€}€~~~~~€}€}}€€€~€~}~€€~€~€~€~€€~€~~‚€}€~€~€€~~€~~~€~€}€}€~€~~~€€~€~~~~~€€~}€~~€~€~~}‚~~~€‚}~€}€~€~~~€€€~€}~~€}€}€~€~€}€~€~‚~~€~€~€€}~~~~€~€€~€~~~€}€€~€}€~€€~~€~€}€€€~€~~~€€€€~€~~€€€€}€~}~€~€€}‚€‚~}~~~€~~€~~€~€~~~~~€}~€~~€~~€~~~~€~€€~~€~~~€~~}€€€~~€}~€~€€~~~€~€~~~€}€~~}€~€~€€~€~€~~~~€~€€€~€~~€}€€~€}~}~€}€~€€~€~€~€~~€‚~€}€€€~€~~~€~~€~~~€~€~€}€~~€~€€~~~€€€€}}~}€~€~€~€~€€}€~~€€€€€~}~€~€~~€~€~€~€~€~~€~€~~~~~€~€~€~€~‚~~€~~€}}~€}~€€~€}€€~~~€~~€€~€~~~€}~€}€}€~€~€~~~€€~€~€~~€€~€~€~~€~€~~€€}€~€~}€~€~€~}€}€€~€~}€~~~€~~~€}~~~€~}~~€}€~~€~€~€}€}€~~~‚€~~~}~‚~€~€~~€~€€}€}€~€~€~~€}€€~€}~€~€€~~€~~€~€~€~€~~€‚~~~€~€~€~~~€}€~€~~~€€€~€}€€€~€~~€€}~€}€}€€~~~~€€€‚~€~~‚~~~€€~€}~~}€‚~€~€~€€~~€~€}€}€~€}~€~~€~}€~€~€~}€€~€~~€~~€~}€€‚~~~~~€~€~€€~}€~~~€~€€}€}€~€~~~}€}€~~~€€~~€~~~€}€€~~~~€~€}€~€~}~~~€~€~€~€~€~€€}€~€€~}€~~~~~~~~~~€~€€‚~~€}€€~€}€~‚€~~€~~~~€~€€€€}~€~€€~€€~‚€~€~€~~~€~€~€}€~~~}€~€€~€~}~~€‚~€}~€~~~~€~~€~€~~€}~€~€€€}€~€~€€~€~~€~€}€~€€~}~€~€~€~}€~~€~}€~€€~~~~~~~€~€}€~€~~€~~€€€€~}€~€~€€€€}€~~~€‚~~~~}€~~€~€‚~€~~€~€~~~€~€~€€~}€~~€~€~~~~~€~€~~€~€~€~€~€~€€€~€~~~}~~}€~€€~€~~~€}~~~~€€€€€€~€~~~€~~€‚~~~€~€~€€€€~~~~€~€~€~€~€~€~€~~€~€~~€~}€€~€€~€}~~~€~~~~~€~~‚€~}€}€~~~€}€€€~€~~€~~€~€€}€€~~~~~€~€~€}€~}€~~€€€~~~€~~€€}€}~~‚‚~€~}€~~~€€€€€~~€~€~€~€€}~~~€~~€}€€~~~€~€~€€}€~~€~€€~€€~€~~€~~~€~~€~€~€~}€~€~€€~€~€~€€~€~~~€~€~€~€~~€}€~€}~~~~€}€~€~}‚~€€‚}€~€~~~~~€}€~€~~€~€~€~€~€~~~€€~€~~~€~‚~€€}€€~}~~~~€~~€€~~~€€~~€~}€~€€~€~~€~€€€€~~€~€~€~~€~~€~€~}~~€~€}}‚~€}~€~‚€~~}€~€~€~€~~~~~€€~}~~€~€€€~~}€}€~~~~€~€€~~€~~~€~€~~~~€~€€€~€~€€~€€~€€~€~€~‚€€}€~~€~€~~€~€~€~€~€~~~€€~~€~€}€~~€~~~~€}}€€€}€‚~€~€}€}‚~~}~€€~€€~€~~~€~€€~€~€~€}~€~€€}€€~€~€€‚~~€~}€~€€}~€~~~€~€€~€~€~€~~~€~~~~€}~€}€~~~~€}~€~€€~€~~~~€}€€~€€~}€~€~~€~~~€~€€~€~}~}€~€€~€~€€~€~€~€€~€~€}~~~€~€~~~~€~€€€~~€}~~€}€€€‚€~€~~~~€~€~€~€~€~€~~~~€~~~~€~€~~~}~€€}€~~€€~€~~~€~€~€}€~€~€~€€~~€}‚€~~€€~€}€~€}€€~~~~~€€€~€~~€~~€~~~€~€€~€~~~~~€~€€~€~€}€~~€~€€~€~€€~~€~~~€}~~€~~€€~€~€~~€€~€~€~€~~€~€€€~€~~€~€~€~~~€~€~~€~€~~~€}~€}€€}€€~~~€}€~~€€~€~~~€~€~€~~€~€}~€€€~€}€~€}~~€€~€~~~€~€~€~€€~~~‚~~~€~~~~€~€~~€~~€€}€~€€~€~~~€~€€~~~~~~~€~€~~€~~~~~€~€€~€€~€~€~€~}}~~€~€€}€~€~€~~€~~€€~~~~€~‚€€~~~~~~€€€~€~~~€€€~~~‚~~€~€~€~~~~€~€€}€~€~~€~€€€€~€~€~~€€€~~~€~€€~€~€€}~~€~€€~~~€~€€~~€~~€~~€€}€}€~€}€~~~€€€~~€~~~~€~€~€~~€~~‚~€~€~~~€}€‚~€~~€}‚€€}€~€~€~€€~~€~~€~€€€~€~~~€~‚€~~€~~~€~€€~€~~€~~~€~~€€€€~€~€~€€€~€~~~~€~€~~€~~~~~€~€€€~}€~}€~€~~€~€}~~€}~€€€~€~€~€€~}~~€}€€~€~€€~~€~€€}~~€~~€~}€~~~~€~~€~€€}€~€~€~‚~~~~}~€}€~}€~~~€~€~€€‚~€~~~€~€~€~€~€~€~}}€~~€~~~~~€}€~}~€}~€€~€~~~~}~~€€€~~€~}~~€€~€€~€~€~€‚~~€}~€~~€~~€~€~€}~~€~~€€~‚~€~€€~€}€~€~€€}€~‚~€‚}~~€~‚~~€€~€}~~~‚€€€~€€~~~~~~€~€~€~€~~~}€~€~~€€€~€~~~€~€€€~~€~~}€~€~€~€~~€~€~}€~€€~€~€}€~€€~€~~~€€~€~€€‚}~~~€€€€€~~~~€€~€~~€~~€~€~€~~~~~~€€‚~~~}€~~€~~~€~€€€~€~~~‚€~€€~‚~€~€~~~~€€~€~~~~€~‚~~€}~~€~€€~€~€~€~€}€€~€~~€€}~€~€~€~~~€~€€€~€~~}€~€~~}€~~€~~~~~~~~~€€~€~‚}€}€~€~€~‚~€~€~€~€~~~€€}}€~€~~}€€~€}~~€~€€~€~€~~~€~~~€~~€€~€~~~€}€€}€~‚€~~‚~~€~}€}€€~€~‚€~~~~~€~€~€~€~€€€€~~~~€~€~~€€€~~€~~€~€€}~~~~~~€~€~~~€€}}€~€€~€~€~~€€€~~~€~€~~~€}€~}€~~€}~€~}€}~~€~~~€~~€~€~€~€€€~~~€~~}‚~~~€~€~~€~~~€~€~~~~€~€~~~€~~€~€€~€~~~~€~€€~}~~€~€€~}€~~€~€~€~€~~~~€~€~~€€~~~~€~€€~€}€~€~~~€}€~€~€€~~~€~€~€~~~€€~€~~€€€~€}~€~€€~~~€~}€~€~€~€€~€~€~‚‚~~€~€~€€~€~~€}~€~~~~~€~€€€}€~~~~~€~€€~~~~~€~€~€~€~€€~‚€}€~~€~€€~€~€~~€~€~~~~€~€~~€~€~€€~~€~€}~~}€~€€~~~~€~€€€€~~~€~€€€‚~~~~€~€€€~€~€~~€~€~€~~‚€~~€~€€}€~~€~€~}~}€~~~€~~€€~€~~€~€€€~~€~€~~€€€~~€~~€~€~€€~€€}€}~~~€€€~~€~~€~€€~€€}€~€~€~~~~~~€}€€~~€~~~~€~€~~~~€~€~}€~€€~€}~€~€~€~€~~~~~~€~€€€}~~€~~€~€~€~€~~€~€~€~€~€€~€~~€}€~€~‚€~~~€~€~~€~€~€€‚~€~~}~€€~~~€~€~€~€}‚€€}~~€~€~~~~€~~€~€€}€~~€~€~~€€~€~~~}~€~}€~~€~~€~€€}€~~€~€}€~~€~€~}€~€~€~€~~€~€€~€~}~~~€~~€~€€~€~~~~~~‚‚€€€~€~~~€€~~~}€€€~€~€~€}~~€~~~~€~€€~€€~~~€~€€€€€~~~~~€~~€}€€~}€~€~€~~€~}€~~€~€~~€€€~‚~€~~~€~€~€~~€~€€~€~~€~€}~~€}~~~€~€€}€€~€~~~~~€€€~€~~€~€~€€~€~€~€~~€€}€~~€~€~€€€~€~~€~€~~~}€~€€~€~€€~€~~€€}€~~€~~~€}€€}€€~€~~~~€~€€‚~~€~~~~~€€~€~€~~€}€~€}€~€€~~~~€~€~€€~€€~~€~~~€~€€}€~€~~~~€~€}~€~}~€€~€€~~€~~€~€€~€~~€~€€‚~€~~€~€€~€€}€~~€~~€~~~~}~€~€}€~€€€€}}€~€€€~€}~~€~~€€~€~€~~~~~€~€~€~€~€~~~€~€~€~‚~~€~~~€}€}€~€~~}€~€~€~‚€~~~€~€~‚€€~}}€~€~~~€~~~€~€€~€€~‚€~~~}‚€€~~€}€€~~~€~€€}€}~}‚~~€}€~~€€~€~€~~€}€~€~~€}€~€~~€~€~€€€~€~~~}~~~€€€}€}~€}€€~~€}€}€~~~~~€€~~€~~}~~€€~~€~€~~€~€€€€~~€~€}€~€~€~}€‚~~€€€~€~~~~€}€~€€€~€€~~€}~~~€~€~€~~€€~€}~~}€~€}~€}}€~€€}~}~~€}€€~€~~~}~€~€~€~~€~~€€~€~~€~}€~€€~‚€~~€~~}~€€~€~~~€€~€~~€~€~~€~~€}€~€~€}€~~€~~€~€~‚~~~~€~€~€}€€~€~€~~€‚~~~~~€€}€~~}€~€~‚~~‚~~€~€~€~~€~€}€~~€€~~~€~€~~€}€}€~€~~~~~€}€€~€~~~~~~€~~}€}€~€}~€~~€€}€~~€~€€~€~€~~€}~€~€}€€}€~~~€~€~~}~~€€€€~~~€~€~~~~~}€€~€}€€~€~€~€€~€~€~€€€~€~€~€€~€~~}~€€€€~€~~~~€€~~~€~~€~~€}€~€~~~€~€~~~~€~€€€€~‚~€}~~~€~€€~~~~€~€€€~€}€~€~~€~~~€€~}€~~}‚~~€~‚€€€~}€~~~€}€€~€~€}€€€~€€~€€~}€€~~~~€~€~€~~~~€€€~~€~~‚~€~~~~€€~€~~}€~€~~€€~€~€}‚€~~~€~€~~~~~~€€~€~€~~~€~€€~~~~€~€~~€~€~€€€‚~~~~‚€}~€~~~~~~~€€~€€}~€~€~€~~~€€~}€~~€~~€~€~€€~€}~~€‚~~}€€~€~~~€~€~€~~€~€€~€~€~€~€€€~€~~~€~€~€€}~~~€~~~€~€€~€~~€~€}€~~~€~€€‚~€~€}€€~€~€~‚€~~€~~€~€€€€~~~~€€~€~~€~‚€€~~~€~€€€~€~~~~€€~~€€~~€}€~€~~€~~€€~~~€~€~€}€€~€~~~~~€}€~~~€~€~~~~€~€~€~~€~€€~€~‚~~‚‚~~~€}€~~€~€~€~}€~~€}€~€}~€~€€~~€~€~€~‚€~€~~~€~€~€€~€~~~}}€€~€}€~~~€}€€~€~~}€~~€€~~~~~~€~}‚€~~~~~€€~~€~~€~~€~}€€~€~€€~}~€~~~~~€~~€~€€~~€~‚~~~€~€~€~~€~€~~~€~€~€€‚~~~~~€€~€~~~€~€€~~~~~€~€€~€~€~~}~~€~€€€~€~~~~}€€~€~~~‚€~~~~}€~~€}€~€~€~~€€~}€~~€~~€~~~~}‚€~€~~€~€}€~}€}€}€~~~~~~~€~~~€}~~€~€~€€~€~~€~€~€€}€~~~~~}€~€€}€~€~~~€~€€~~~~~€}~€€€~}€~~~~€~€€}€~€~‚€~‚~~~€~~€~~~€€€~~€~~~~€~~~~€~~€~€~€~~€~€~€€}€€~€~~~~~€~~~~~~€~~€~€€€~€~~~€~€€€~~~€}~}€~€~~~€}~€~}€~~€~~~}€~€}€€~€~~~€~€~~~~‚~~€€~€}€~€~~€~€€}€}€}~€€~~€~€~€~}~~~€~~}~€~€€~€~~€}€~€~~€€€~€~€~~€}€~~~‚~~~€~~~~~€~‚€~~~€~~}~~‚~}~€~~€~~~~~€€~~€~~€€€~}€~~}~~€‚~~€€~€~~~~}€}‚€~€}~~~~€~~€}€~€}~€€€€€€~€}€~~~€~~€}~~€~‚~€~€~~~€€~~~‚€~~€~~€}~€€€~}~€}€€‚~~~~‚€€€€~€~~~~~~‚~~€~€~€~€€~‚~~~€€€~~€~~~~~€~~~€}€€}~}€~€~€€~~€~‚€~~€€~}~~€~~€~~€~€~‚~~~~~~€}€~€}€~~€~~€~€€€~~~€‚~~~€~€€€€}~}€~€€~~€~~€€€~€~€~~~~€€€~~~~€€~~~€€~€~€~€~€}~~€€~€~€~€€~}€~~€~€~~€~~€~€~€~‚}€~~~~€€€}€~~~€~€}~}€€€~€~~}€€~~~~~~€~€~€~}~~~€€~€€~€~€}‚~€~~€~€€€~~~‚~€}~‚€}~~€~€~€~~~~~€‚~€}~€~~€€€}€~~€~~€~~~~€~€}€~}€~~€~€~~€~‚€‚~~€}€€}~~~~~~€~~}~~€~‚€€}€€~€~}€~~€~}€~€~~€€~€~}~~€€€~~~~€~€€~}€~~~€€~~~€}€~€}€~‚}~€€€€~€~~~€€~€~€~‚€~‚}~€~€}€~€~€~~€€}€~€~~~~~€}€}~€€€~€~~~€~~€€~~€~~€~~€€~€~€~~~}~~‚}€~~~~~€€€~€~~€~‚€€~€~~}€~€€~€}~~~€}€~€}€}€~~~€~€€€‚}€~}€~~~~€~€~~€~~}}€~€~€}~~~€~~€€~~~~~€~€}€}€~€}€~€~}€~€€~€~~€~€€~~~~~€~€~€€~~€~~~~€}€}€€}€}~~~~€€~€~€~~~€}€~~€€}~~}€~~~}~€~€~€~€}€€}€€}‚€~}}€}€€€~€~€~}~~€€}€~€~~€~}€~€€~~~€€}~€€€€~€~~}€~~€~~€€€€~€}~‚€€}€~~}€~€€‚~€~~€~~€~~€~€~€~€€~€~~~€~~€~€~~}€~~~~€~~€€~~€}~€~~€€‚~€~~~€}€~~‚~~~~~€~€}€~€~~~~€~€}€~~}€~€€~€~~}€~~€€~€~~~€~€€~€}€~€€}€~€~‚~€~}~~~€~‚~€~€~€~~~€€€~~~}‚~~€€~€}€~~€~€€€~~~~~~€€~~~~~€~€~~~}~‚€€~~~‚~~€~€~€~€~~~€~€€~€~€~~~~€}€~€~€~~~€~€€~}€~~~~€€~}~~€€€~~~~€~€€€~~~€~€€€€€~€~€~€€~~€~~~€€~~~€~€~~€~~~‚~~€~€~€‚}€~~~~~€~}€~~}€~€~€€}€€~~€~€€~~~~~€~€€~‚€€~~~€}~€~€~~~~~~~€~€€~~~€~~€~€~€}€~€€~€~~~~€€~~€~~}~€~€€~€~€~~~~€€~~€~€~€~€}€~€€}~~~€€~~€~~€~€~€~€~~€~~€€‚}~€}€~€}€~€~~€~€~€~~}‚~€€~€~€~€}€~~~€~~€€€~€~~~€~€~€~€~€€}€~€~~€€€~€~}~‚€€€}€€~}€~~}~~€~€‚}€€~€~~~~~~€}€€}~~}‚}€~€€~}€~~~€~€~€~€~~~€~~€}€€€~~‚~}€~€}€~€~~~~€~€}}€~~€~~€~€€~€~€~~}€~€}€€}€~~€‚~~}€~~~~~~€~€~€~~€}~~€~€}€~~~€~~}€~€€€~~€~~€~~€€~€~~~}~€}€~€~~~}€~€~€~€~~~~~€~€€}€~~€~€~~€}€}‚€€~€~€~~~€~‚€€~~~~€~€}€}€~€€}€~}~~€€~~€~~€~~}~€€~~~€~€}}€€~€€~€€~€~~~~€}€€}€~€~~‚~€~~~~€~€€~€~~~€~€~~~€~€~€~€€~€~~‚~€~€€~}~€~€}~€€~€~~€~€€€€~€}~}€€~~€~€€~~~~~€~€}€~~~~€€~}€~~~€~€€~€~~~€~€~~~~€}€€~}~€~€~€~€€~€~€~~€€}€~~~€€€€€~€~€~~~€~~~~}€~~}~~€~~€€€~€~~‚}~~€~€}€~€}€~€}}‚~€~€~~~~~€~€~€~€}~~~€}€~€~}~~}~€€€~~}~~€~€~€€€~€~~~~€}~€€~€~€~€€~€~~€~€~~}€~~~€~€€€~€~~~€~€}~~€€~}€}€€~€~€~€~€~}€~€€}}~}€~~€~~€}~€€‚~€~~€}€~€~}€~~}€}€~~~~€€~€~~~€~~€€€~~~~€~€€€€~€~€~€€~~€}~~~€}~€}~€~~€‚}}€~€~€~~€~‚~~~€‚~€~€~€€~~€~~€}€€~€}€~~‚}€~€~€~~}€~~€‚}€~~€~‚~~~‚€€~€~€~~~€~~€~€}€~~~€~€€~€~€}€~€€}€~€~~}~~€~€€}~€}€€€€‚‚~~€}€€€€~~~~~€€~€~~€~€€€€~~~€~€€}€~€~}‚€~~~~€~€~~~~~€~€}€~€€~~~€~€€€~€€~€€~~€}€~~€€~€~~~€~€~€€}€~}~€}~€}€~€€~€}~€€~€~}€~~€€~€~~€€~‚~~}€~~€~€~~~~~~€~~€}~€€~€~~€~~~~€~€€~~}}~~~~€~€€€~~~€~€~~€~€~€~}~~}€~€€€~~~~€~~€€~€€~~€~~~~~€~€~‚€~€~~€€€€~~€~~€~€€}€}~‚€€~~~€~€€~}~~€~~€~€~€~€~€~€~~~€~}€~~}€~€~~€~€~~€‚~€~€~~€€~€}€~}~€~€~€€}€~~~~€€€‚~~~~€~€~€~€€~€~~~€~~€‚~€~~~€}~€~€€€~€~€€~€~€€~€€}€€~€}€~~~€}€€}€€~~~~~€~~~‚}~€~€~~€~€~€€€‚~€~€~~€€~~~‚}~‚~€~€}€€~~€~~~~€~€~€~~}~€€~}~~~€€~~€~~~}~~€~€€~~}~~~€}€€~€~}~~€€~€~€€~€~~€~€€~~~€~€€€~€~~€~€~~€}€~€€}€~‚€~~€~~€~€~€~€~~~€~~~~~€~‚€€€~€~~€~€~€~~€~€€~}~~~}€€~€~~€~~~€}€}€€~€~~€€€€~~}€~~€€~~~}€€€~€~~~€~€~€~~}€~€~€~~~€~‚€€~€~}€}€~€~~€~~€€~€~€~€~~€€~€}€~~€€€~€}€}‚~€~~~€~~€~~€}€~~~~€~~€~€€~€~~~}~€€~€~€}€€€~€~~€~€~€€~€~€~€€~€~€~€~~~~€€~~€~~~~€~€€~€~~€}~€~€€~€}~}~~€~€~€~€~~~~€~~€€~€~}~€~€~~~€~€€€~€~~€}€€‚~€~€~~€€~~€~~€€~~€~€€~~~~€}€~€€}€~~~€~€~}€€}€€€~~~€~€€€€}~~~~~~€}€~€€}€€~~~~~~€€}~~~~€€€~€~~~€}~€€~€~~€~€~~~~~€~€~~€€€€~€~€~€~€€€~~€~€~~€}€€~~}€~~€~€~€~€~€~~~€€~€~~€~~€~€~~}€~€€}~€~~~€€€~~‚~~~~~}€~€}€~~~‚~€}~~~€~€€~€€}€€~€~€~~€~€€€€~€~~}€~€€€€~~€~~€~€~€~€~‚€~~€}€€~€~€}~~~€~€~€€~~€~~~~€€~€~~€~‚~~€~€~~€~€~~€~€€}€~~~~~~~~~~~~€€~€~~~€~~~€}€~€~~€~€~}€~€~~}~€€~€~~€~€€~~€~€}€~€~~~~~~€~€}€€~~~~€~~€€~~€‚~~€~€~€€~~€~~~€~€~~~€~‚€~~€~~~~€~~€~~~~~€€€€‚~~€~~€€~~~€}~€~~~~€~~€€~€~~€~€~~~€~~€€~€~~€~€€}€~~~~‚~~€€}~€~€}€~~~€~€~~~€€€}~~€~~€~€~€~€~€}~~~‚~€~€~~~‚~~~€€}€€}€€~}~~€~~~~~€€}€~~€}~€€€~~€~€~€€}€~~‚~€~€~€~~~~€~~€€€}€}~€€€€}€~~€}€~€~~~€}~~~€~~~~~€~€}€~~~€~€~~~~€€~€~~€~‚€€~~~€~€€~}~~€€~~~~€€~€€‚~€€~€~~~€~€~€€~~€~}€}€€€~€~~€~€~~~€€~€}~~~}€~~€~€~€€€€~~€€}~~~~~~€~~~}€~~~~~‚€€€~~~~~}~€~~~€~~€~€~€}~~~€~€‚€€}€€~~~€~~~‚}€~€}€~€~~~€~€~€~€~€€~~~~}€~}€~~~€€~€~€~€~€~}~}€~}~~~~€€~€€~€~~~€~€~€€~€~‚~~€~€~€€~€~€~~~~€~~}€~‚~~~~€~€€€€~~~}~€}~€}}~~~~~~€~‚€€~~€~~€}€€}~~~€~€€~€~~€~€~€~€~€~€~€~~€~€€€~€~~~~~€€~}€~~€~~~€€€€~~~~~~€~€~€~~~€~~€€~€~}~~€}€}€}€}€~}€~€~€€~~€~€~~€~~€}€~~~€~~€€}€~~€~€~~€~€€~€~€}€~~~~€~~€~~~€}~€}€~€~€€€~€~€~€~€~€~~~~~}€~~€}~~~€~€~~€€€€~€~€~}€~€€€€~~~~}€~€~€~~~~€}€~~€~€~€~€~€~~~}~~‚}€~€€~~~~€~~~€€€~€~~€~€~~~~€€‚~~~€~€€€~}€~‚~€~~€~€~~‚~~€~€~€€~‚€~~€~~€~}€}~~€~€‚~€~~€}~~€~€€€~~€~€~~€~€~~~~€~€~€~€~~~~€~€~€}~~~~~~~~€‚~€~‚€~€~~‚~~€~€}‚~~~€~€€~€~~~~€~€€€~~~~}€~~‚~~€}€€~~}€~€~€€€€~€}€~~€€€}~~€~~€‚~~€~€~€}€~~~€€~€~€~€~}€~~€~€~€~~€}€€€€~~€~~~€~~€~€}~~€}€€~~€~~€~€~€}€~€~‚~‚}€~€}€~~~~‚~€~€€~~~~~~~€~€~~~€~€€}€~€€}~€~}€~~~€}€~€€€~~€~~€~€~€~~€~~€~~~}€€~€~€~~€~€€~€~~~€~€€~€~~~€~€€~~€~~}€€€~€~~~€~€~~~~€~€€‚~€~~~€~~~~€~~€€€€}€~}€€}€}€}€€~~€~}€~€~~~‚~~€~€~}}~~~~€~€}€€~~€~~~}€~€~~~~~€~€€€~}~€~€€~€}}€~~~~~~~€}~~€~€€~~€~~~€€€€€€~€~~€}€€}€~~~€~€€~€~~€~€~~}~~€~€€~€~~}~€€€~€~€~€~}€~}€}€~~€€~€~€~€~€~}€~€€€~€}€~~€~€~~€~€~€}~~€~~€€~€~~}€}€~~~}~€~~€€}~~~€~€~€}~~~~€~}€~€~~~~€}€}€~~~~€~€}€€~~~~€~€~€€~~€~~~€€€~€}~€~€€~€~}€}€€€~€~~~€~€€~€~~€~€€~€~‚€~€€~~€~~~€€€~~€~~~€€~€€}€}€~~‚~~~€~€}€~~~€~~€€~~~~~€~€~€}€}€~~~~~~~~~€~€‚€~€~~~€~€~~~€~}~€€}€~€}€~~€~~€}€}€€~€~}€~~€€€~~€~€€~€~~~€~~~~}€€€€~€~~~‚€€€}€€~€~€€~€~~~€€~€}~~€~~~€}€~€~€€}€~~€€}~€~€€€~~€~~€€~€~‚~~~€~€~€€}€~€€~€~~~~€~€€€€~~€}€~€€~€~€~~~~~€}€€~€~~€€~€}~€€€~€~€~~~€~€€~€~~~€€~€}~~€~€‚~}€~~~€~€~~~~~~€~€€~€€~€~~€~€}€~€~~~~~€~~€~~~€~€~~€~~€}€€€~~~€~€€~€}~€~€~~€}~~~€~€~€€€~€~~€€~€}~~€~€€~€~~~€€~€~€~~}‚~~~€€~}€~~~€~~€€~€~~€~~~‚€~€~€~€€€€~€~~€~~€€}~~€~~€~€}€~€~€~~€}€€‚~€~~~€}€~~~}~€~€~€~€~€€€~€~~~~€~€€~€~~~€~€~€~~}€~€€~€€~€}~~~‚€}€~€~€}‚€~~€~€~~~€~}~~~€~€~€~~€~~€€€~~€~€~€}~~~€~€}€}€€~€}~~€~~‚€€~€~}~‚€~€~~~~‚€~~~€~€~€~€~€~€~~~}€~~~€~~~~€~€~~~~~~€}€€}€€~~€€}€~~~~€‚~€€~€~€~€~~}€}~€}‚~~~~~€~€}€~~~€~~}€}€‚~€~~}€~€€€}~~~€€~}€~~~‚~~~€‚}€~~€~€~€~~~~€~€~€€€}€~€€~~€€€~~~~€~€~~~~€}€~€~€~€~~€}~}~~€~~‚€€}~~€€~€~}~~~€~~€~€~~~~€}€€}€~~~~€}€~~€~~€€€~~~€~~€~~€~€~~€}~~‚~€€~~€~€}~€~€~~~€~€~~€~~€~~€}€~€€~~}~€}€~€~~~~€~€~€~~€~~€~~~€€€‚€~~~€~€€~~€€~€€~€~€}€€}}~~~€~€~~~}€~~€~€€€€~~~€~~€~€~~}~~€~€€~€~~}€}€€~€~~~~~€€‚~~€~€~€~~~€~€~€}~€}€~€€~€~~~€~€~~€}~~~~€€~€€~€~}~€‚~€~€~}~~~}€€€€~~‚~~~~€~€~~€~€~}€~€~€€}€~~~€~€~~~€€€€€~€~~~€~€~}€~€€€~~~€~€~€~€~€~€~}}~€‚~€~€~~~€~~€€€~€~€~€~~€~~~~~~€~€~~€}~~‚~€~€€~~~}~€~~€~€~€€~€~€~}~~€€€~~€~~€~~€€€~€~~~~~€~€~~}€~€‚~€}~~€~€€‚~€~~~€}€~€~~~€~€}~~€~€~~€}~€€~€~~~€}€~€€~~€~~~~€~€~~€~~~~~~€~~~~~~€€~€~€~~~€€~€~~~€~€}€€~€~~~€~~}~€~~€€~€~}~~~€~€€€€~~~~€~€€~~~€~€€}€~€€€}~€~€~€~~}~}€€€€~€~~€~‚€€€}~€~€}€~€€~€~€~~~~~€~€~€~€~~€~€~~€~~~~€~~~€~€~~€~€€~€}€€~~~~~€~€~€~€~€~€~~~~€~€~~~‚~~~€}€~}€~~~}€~~~~€€€~€€~€€~~€~€€€~~€~~€~€~€€~€}}€~~~~€€~€~‚€~€~‚~~~€~€~€~€~~€~~~€~€€€€~~€}€~€€€~~€~€~€~€~€€}€€~€~~€}~€€}}~€}€€~~~€‚~€€}€~~‚~~€~€€~€~€~~€~€€~€~~€~~€~€}~€~~€~~~~~~~€~€€€~€~~€~€~€€~~€~€€~€~~€~~€€}€~~~~€}€~€~~€}€€€}€~~€€~~€~~€~€~}€‚~~€€~~€~€~€~~~~€~€€~€~€~€€~€~~~~~~€€€~~~~~€~€€€€~€~~€}€}€€~~~€~‚~€€~€~€€€€}€~~€‚~€€~€~‚~}~~~~€~€~~~~~€~€€€€~€~€}€~~~~€~~€~€~€~~~€}€~~€~€~~~€~€~~€}}~€~~~~~€€}€~€~~~~‚€~€~€~€~€~~€~€~€€~€~~€~€€€~€~~}€~€€~€~€~€~€€~~~€~€€€~€~~€~€~€}~~€~~€€}€~€~}€~€~€€~~€~}~~€}€~€~€}€€~~€€~€~~€}€€~~€~€€}~€~‚€~~€~€~€~€~€~~€~~€~€€~€~€€~€~€~~~€}€~€~~~€~€~€€~~~€~~€~~€~€~~€€€~~€~~€~~~€~€~€~€€€€~€~€~€}€€~€€}€€~€€~}~~~€~€~~}€~€€€~€~~~€~€€~}€}€€~€~~~€~~€€‚~~‚}€~€}€~€~€~~~~‚€~~€}€€~€~~€~‚€‚~~€€€~~€~€€€~}€~}€}€~~~~€~~~}€~~~~‚}~€~€}€~~~~€}~~€~~€~€€~€}€~~~€~~€~€~€~€~~~€€€~€~~€~€€€}€~~}€~€~}€~~€~~~€~}~~~~€€~€~€~€~€~€~€€~}~~€~~~~€~~~€~~€}~€€~€~~~€~€~~€~€~~€}€€}€€€€~~~~~€€~€~~~€~}€~€~€~~€}€~€€~€~~~~}~~€€~~€~~~€}€~€€~€~€€~€~}€~€€€~~~~~€€~€~~€}€~€~€}€~~€~€~‚}~€~€}€€~}€~~~€}€~€~€~~~~‚}€~€€€~~€~€€€€~€~~~€~~€}€~€~~~~~€~~€~€~€~~}~}€~€~€~}€~€€~~~€~€~~~€~€~~~}~€~€~€€~€€~~~~€}€€~~~~~€€€€~~~~€~€€~€~€~€€€}‚~€~~€~~€€~€~€~€}~€}€~€~~~~€€€}€}~€~~€~~~€~€~~€~~€~€~€~~~€~€€~€~~€~€~€~~~€~€€€~~€~~€~€~~~~€}~€€~~~€~€~€}€~€}€€~€~~~€€~~€€~€€~€~€~€€€€}€~€}€~~€}€€~€}~€~~€€€€~~~€}€€€~~~~€€€€~~~€}~€€€€~€~~€€€~€~~€~€~€~}€€~€~}€~~‚~€€€~€~~€~€€~€~~€€~~~€~€~~€~}€~~~~~€~~€~~~€~€~€~€}€~€€~€~~~€~€€€~€}~~€~~€€~€~€~}€~€€€~~~€~€€~€~~~€€€~€~~~€~€}€}€~€~~€~~€~€€€~€~~~~€€~}~~~~€€€~€~~~~€~€~€€~‚€~~€~€~€€}€~~~~€~€€€~€~~~~€~€€€~~€~€€~~€~€}~~€~‚€~~~€~€€~~€~~€~€}€€~€€~€~~~~€€€~~~~€~~~€~~€€~~~‚~€}€~€€~€~€~~~~€~€~€}€€~€€€~~~~~€€~‚~€~€~€€€~}~~€~€€~€~~}€}€~~~€~€€€~€~~~€~€€~~~~€€€~€~~~~€~€~€€€~~€}€~€~}€}€~~~~€€~€~‚‚~~€~€~~€}€€€€~€}€€€~€~€}€~€€~€~€~~~~€~~~~~€~€~}€€~}~€}€€€~~€}€~€}€~~~€~€€€~€~~€~€~€~~€€‚~~~~~€€~€~}~€€~€~~~€~€€€}€}~~€€~~€~€~~~~€~€~~~€~€‚~~~€~€~€}~€€€€~~€~~~€~€€€~~~~€~~€€€~€~€~€~€~~€}~€€~~~~€~€€€€~€}€~}€~~~€~€~~€}€~€€~}€~~€~€~~€~}€€€}€~~€~€~~~€~€€~~€}~€~~~~€~€€~~€~€~€~€~~€~~€~€€€~~€~€~~€~~~€~€~~€~€~€~€~~~€‚}~~~€}€~~€}€€~}~€~€€€~~€~€€~€}‚~~~€~€€‚~~~~€}€}€~~€€~€€~~~€~~€€}€~~~~~~€~€€€}€}~~~€~€€~€~€}€~~~~€~~€€~€~€~~€~€€~€~~}€~€€~€~~€~€€~~€~~€~€~€}~~~€€~€€}~~€~~~€}€~€€€~~€~€~€€€~~~€~€~~~€~~€~~€€~€~~€~~€~€~€~~}~~€~‚€€€~€~~€~€€€~~€~€€‚~~~~~~€}~€~~€~~€~€~~~~~€€~€€€~~~~€€~€}~€€€€~€}€~€~}€}~~~€~~~€€~€~~€~€}~€€~€~€~€~€~~€~~€€~~€~€‚}~~€~€€~~~~~~€‚~~~~}€~€€~€~~~€~~~€~€€€~~~}€~€‚~~€~€€€‚~€}€€~€~€~~~€~~~€~}~€€€€€€~~€~€~}€~‚~€~~~~€€~~€~~€~€€~€}~€~€~}~~~€~~~€~€€~~€~~~€€~€~}€€€~~~€~€€€~~~€~€~~€}€~~‚€}~~€~~~~~€€€~~€~€}€€}€~~~€€~€~€~~€‚~€~€€~~€}~~~€~~€~€~€~~~€~‚€€~€~~€~€€~~€~€€€~~€~‚~~€~~€~€~~€~€€€‚~€~~€€~‚€~~~~€€~€~~~~€~€€€~€~~~€~€€~€~~~€~}}€~€~}~€~€€~€~‚€~~~€~‚€€~€~~~~€}€~€~€€}€€}~~€~~‚€~~€~}}~€€€€}€~~~€~€€~€€~‚€~~€}~€}€~~~€~€€€~€~€~€€~~~€}€~€‚€~€~~~~€€€~~€~~~€~~€~€~€~€€~€}€~~~€~€€~€~‚~~~~}~€€€‚~€~~€~€~€~€~€€~€~}€~€€€}€~~€~€€~€~}€€~~~€€~€~~€~€~€~€~}€€~€€~€~€~€~~~€€~€~~€~€~€~~€~€‚~~~€}~~}€€€~~~~~~€~€~€~~~€€~}}€~~€€~€}~~~€€~~€~~€~€~~}€~€~€~€~€~~€~€~€~~~~€~~~‚~~~~€~~€~€€€~~€~~}~€~€~~~€~€~€}~€€~~€~~‚~€~€~~~~€~€‚~€~€~€~€}€~€~€€€~€}€~€~~~‚~~€~€€}€~}€~€€€~~~~€~‚€€~€~~€€€€~~~€~€~~~€~~}~~€}€€€~~~€~~€€~~~€~€}€~€~€~€~~~~€~€~€~€€~~~~~€€€~€~~~~€~€~€}€~€~~~~€~~€€~€€~€~~‚~~~€€}€~~~€€€€~~~~}€~€€~~€~€~€~~~€~€€~€~~€~€~~~€~€€~€~~~~€~€~€~~€~€€€}~~~€~‚}€€}€~€~~~~~~€~~€}~~~~€~€~€€~€~~~~€~‚€€€~€~}€}€€€}€~~€~€~€€€~€}‚~‚}€~€€~€~~€~€~€~€~€€~~~~€€~€~}€~€€~€~~~€~€€~~~~€‚~€~€~€~€€€~~}€~€~~~~~€€~€~~€€}€~~€€~€€~€~~~€~€€~€}~~~€€~€~~~~‚€~~~€~€€~~~€~€€€€~€~~~€~~€~€~€~~€€‚~€}~€~€~~€~~~€~~~€~~~~~€~€~€~}~€~€~~€~€~€}€~~~}~€~‚€€€~~~€}€~€}€~€~€€~€}€~~}€~€~€~~~€~~€~€~~€~€€€€~€~~€~€€€~~€~~‚€~€~€~€€~€~€~~€~~~~€~~€‚~~~~~€~~~€~~~€~~€~€}€~~€}€~€€~}€~~€~~€€~€~~}€~€‚~~~~~€€~~€~€~~€€~€~€~~~~€€€~€}~~~‚‚~~€~€}~~~€€€€~~€}~€€}~~~€~€€~~€~~€~~~~€€€}~€~€}€€~~€€~€€~€~€}~€~€€~€~€}~~~~€~€€~€~~~€~€€€~€~~~€~€€~€~~€~~€}~~€~€€€~}€~€~€€~~~€~~€€~€~~€~€€~€~€~}~~€~}€~~~~~€~€~€€}~€}€~€}~€€~€~~‚~~€~€~€~€~~~~€~€~€~€~€~~~€~€€€€‚~€~~€~~€~~€~€~~~€~€~~~~€~‚~~€~€~~‚€~~~€}}€~‚€€€€~€~~€~€€~€}~€~‚€€~€~€~€}€}‚€~€~‚€‚~~~€~~‚€€~‚€~~€~€~€~€~~€~€€~~~~~€~€€‚~~~~€~‚€~~}‚~~~€‚~~€~€€€€}~~€~~~€~€}~~€~~€€~€~~}€~€‚~~~~€~€~€~~€~€~}~€~€}€}€~€~~€~~~~€~~~€~}~€}~~}~€€€~~€~~~€€}€}}€~€€€~€~~€}~€~~~€~~€€~~~€~~€€~~~~€€€~~~€~€~~€}€~~~€€€}~}€}€~~€}€~€~€~~€~€~€€€}€€}€~€}€~~~€€~~€~~€~€~~~~€~~~€~€~€~~€€~€~~}€€€~€~€}~~€~€€€€~~~~€~~€~~‚~~€~€~€~~}€~€€~€~~€~€~€~~~€}~€€~~}~€€}€}€~~~~€}€~‚~€€~€~€€}‚€~€~€~€~~~€}€~€€€~€~€~~€~~€~~~€~€}~€€~€~~~€~~€~€~~~~~€~€€~‚~€}~~}€~€~€}€~~~€~~~€~€€~€~€~~~€~~~~€~~€~~}€~€~€~€€~€~~~~}€€~€~€~}~€~~€€€€~€~€}€~~~}}€€€~~€~~‚€€‚~€~~~~€€~~~~€~€€€~~€~~€€~€}~€€€~~~‚}€~€~}~€€~€~~~€}€~€~~}€~~€~€~€~}~€~~~€~€~~}€}~~}€~~€€}€~€~~€€~€~~€~~~€~~~~~€~~~€}€€€~€~~€}~}€~~€~~€€~€~~€~€}€€~‚€~€~~€~€€€~€~~~€~€€€~}~€~€€~€~€~€€}}€}€~€}~}~€~~‚~~~€~€~€~€€~~~}~€€€~€~~~~€€~€}~€~€~~~€~~€~€~~~€~€~€}~€~€~~€}€€€€€~~€~~~€€€€~€}€}~€€~~~~€~€~~~€~€~€~€~~€~~€~€~€~€}€~€~€~~€~€~~€}~€~~~~€~€~}€~€€~€~~€~€€~€}~~€~€€€~€~~~~€~~€}€~‚€€€~}~~€~€~€€~€~~}€~€€€}€}€€~€~~€~~€~€€~€}€~€~~~~~~~€~~~~~~€€~€~€~€~€~~€}€€~~€~‚~~~}€~€}~~~~~€€€}~~€~€~€~~~}€~€€€~~€~~}€~€€~~~~€~€€€~€~}~~€}€~~€~~~~€€~~~€~€€€~~~€~~€€~€~~~~‚~€}€€~~€~~~€~€€~€}€€}€~~~~€~~€€€~€~~~€€€~€~~€~€~~~~€}€~€~€}€€~~~~€}~€}€~~~}}€~€€~}~~~€~~~€~~€~€€~~~~€~€~€€}€~€~€}€}~€}€}~~~€}~€€~€~€~€~~~€~€€~€~€~€~~€~}€}~€€~€~~€}€€~~€}€~€~}€~~€€~}~~€~€€~€}~}€~€~~€~~~€€€~€~~~~~~€~~€€~€~€~~€~€~€~€~€€~€~€}€~€}~~~€~~~‚~~~€‚}€~~~~€€€~~€€~€}€€~€~€~€~€}~~~€}‚€€€~~~€~€~€€€~}~€~€~€}~~}~€€~}€~€~€~€~€}€}~~}€€~~~€~€~€€€~~~€}€€}~~€~€€€~€~€}€€~€~€~~€~€€€€€~€~~~~~~~~~~€}~‚€€~€~~~€~~}€~€€€~€~€~~€~~€€~}~~~~~€~€~€€~€€~~~~€€~~~€~€€€€}~~€~€€~~~‚~€‚}€~€~€~~€~€€~€€~€~~~~~€~€€€~}€~~~~€}€}€~€~~}~€~~€€~€€~€}€~€€€~~~~~€€~€~~€~€€€€€}€~~~€~€€€~~€~€€~€~~~€~~€~‚~€}€~~~~€€~~~~~~€~€€€~}€~~~€€~€€~}€~€‚~~€}€~€€~~~~~~‚~€}€€€~~€~~€‚~~~~~~€€}~~€~€€~€~~€~€€~€~~€~€~~}€‚}€~€€~}€~~€€~€}~€~€~~~~€€~~~~~}€}~€€€~€~~~€~€€~~€~€~~€€~€~~~€}~€€€~~}~~~€€€~€~~~€~€~~~~~~~€~~€€€~}~~€~~€~}~~€}~€€~€€~€}€‚~€~~€€‚~€}€~~€~~€~~€~~€~~~~}~}€~~~~}€~€€€~~€~€}€~€~~~€~€}~~}€€€€~~~€~€~€~€~€}~€~~€€€€~~~€~~~€~€€~~~~~€~€€~~€~~€€}€~~€~€€~‚~~€~~~}€~€€}€~~~€€~~€~~~€~‚€€‚~€~~~€€€~€~~}€~€~€~~€~€€€~€~~€€}€~}€}€€~}~~~~€~~€~~~~~~€~€€€~€~~€~€~~~~‚~~~€~€~€~}€~~~€~~€€}€~~€~~€}~€~€~~€}€€~€~~€~~€€~~~~~€‚~€~~€~~€~€~‚€‚~€~~~€~€€~}~€}€€€}}€~‚~‚~€~€€~€~~€~~‚€€~€~~€~€~~~}~€~€~€}‚~€~~~€~€~€~€~€}€~€~€~€~~€}}~€~€}€~€}€€~~~~~~€‚~€~€~€~}€~~~~~~€~€€}€~€}€~~~€~~€€€~€~€~€~~€~€~€}€€~€~€~~~€€~‚€~€~€~~€€~~~€~~~€‚~€~~}€~€~~~€}€€~€€}~€€~€~€}~~€~€€~~~}~€}~€€~~€~~~€~€€~€~€~~€~€~€~€~~€€€€~€}~€~€€~€}€~~€~€~€~€~€~~~~€}~€€~~€}€€~€~€~~€€~~€~~}€~€€€~}€~~~€~€€€~€~~€~€€~~€~€}~€~€€}€~€~~€~~~~€~€€~€~~~€€}€~~~~}€~€~~~~€€€~~€}€~€~~~€€~€~~}~€~€~€~~~~€~€€~€}€~~€~€€€~€~€~€~€}€~€~~~}~€}€}€€}~€‚~€~€~€~}~~~€€€~€}€~~~€~€€€~€~€~~€}~€~~}€~€}€~~€~~€€€€~€~}€~€€€}€~~~€~€~~€~€~€~€~€~€~~~€~€€€~~~~~€€~}€~~~~€~€~~~~~}€~€€}€~~€~€€€€~~~€~~€€~}€~€~€€~~€}€€~~€~~€‚~€}~~€~€}~€~€}~~~€~~€€€~€~€~~~~€~€~€~}€~~}~€€~€€~‚€~€~~~€~€€~€}€~~}~€~€~€‚~€~}~~€~€€€~~~€€~€}~~~€~~~}~€~€~€€~}€~}€~€€~~~~}€~€€€~~€~~€}~€~‚~}€~~‚€€~€~~€}€~~}~~‚~~~~€~~~€~~€€~€~€~€€}€~}€~~~€‚~€~€~€~~~~€~€~€€‚}€~~€~€€}€€~€€}€}‚~~}€~€~~€€~~~~~~~€~~~~}€€~€€€}~~€~€~€€€}~~~~€~~€~€~€~€~€€~€~€~€~~~~~~€}€~€}~~~}€~€~~€~~€~€€~€~€~€€‚€~€~~€~~€€~€€~~€~€~~€~€~€~~~~~€~~€}€~~~~~€‚~€}€€~~€~~€~~~~€~€€~€~~€~€~~~~~€€~~~~€~€€€~~€~€~€~~~€€~€~~}€€~~€~~~~€~€~€~€~~~~€}€€~€~~‚~€}€€~€~}~}~€~€€€~‚~}€}€}~~~€~€€€€~~€}€€€}€€}€~€~€~~~€~€€‚~€}~~€~~€~€€}€~}~~€~€‚~€€~€~~~~€€~}~~~€~~€€€~}}~~~~~€}€}~€}€~~~~€€~€~~~~€~~~~~~€€€~~}~€~~€€~~€~~~~€€~~~€~€€€€~€~~~~€~€~~€~€‚~~~~€€~~~€}€€~€~~€~~~€~~~€}€€~€}€~~€€€‚€~~€~‚€~}~€~€€~~}~~€~€~€~€~€~€~€}€~€~~€~€~€€~€~~~}€~~€€€}€}~€~‚€€}€€~€~€}~€~‚~~~€~€~~€~~€~~€€~~~€~€€~€}~€~€€~~€~€}~}€~~€~€~€‚~€~€~~€~€~€€~€}€~~€~€~€~€~€€~}~~€}€€€~€~~€~€~~€~}€€~€}~€~€~€~€~€}€~€~€~€€~€}€~~€~€}‚€~~~~~~€€~€~~~€~€€~€~~‚~€~€~~€~~€~~~€~€~~€}€€€‚~}}€~€~~€~}€~€~‚€‚~~~€~~€~€~€~~‚}€~€€~€~€}~€€€€~~~~€~€~€~~€€€~~}€~€€~€€~€}€~€}~€~~~€}€€}€~€}~€~€~~~~€~€~€€€‚~~~€€€~~€}}€€~€~~€}€€}€~~~€~€~€~€~€€~~~€~€~~~}~}€€~}€~€~~}~€€~€}~~€}€~~€€~€~~~€~€€€~~€~‚~€~€€~€~~~~~}€~€€}€~~}~€~€€~~~‚~~~~€~‚€~~€~€}€€€~~€€~~€~~}~~€€}€€~€}}}€~€€~~€~~~~€€~€€~~~€~~€~~€}~€}~€~€~€€€~~~~€~~€€‚~€~~€~€€~~~}€€~~~€~~~€}€~~~~~€~€€€~€~~~€~€~€~‚€~€~~~€~€}~~€~~€~€}€}€~}‚~€~€~€~~~€}~€€~€~€~~~€~~€~€€~}~~~€~€}€€}€}€~~€~~€~€‚~}€‚€€~€}€~~~€€}~~~€~€}€~€~€~€~~€€€€€€}€~~~€}€~~€~€}€~~~€}~~‚€~~~‚‚~~€}€~€~€~}€€~~€~~~~‚~~€~~}€~€~€~€€€~~€~~~€~€€~€}~~€~€~~~}~€€€€~~~€~€~€€~€~€~~~~€~€~€~~~€€~~€~~~}~€~~€~€~€~€~€}~~~}€}€~€~~€~€~€~€€~~€€~~€~€~€~}~~~€€}€~~€}€~~€€}€}~~~~~~€€~€~€~€€~~~~€~€€~€~€}€~€}~~~~€~€~€~~~}€~€€}~€~€€~€~€~€€~€~€€~€~~~}~~€€~€~~~}€~~€~~€~~~€€}€~~€~~}€~€}~~~~~~‚€}€~}€~€‚}€€}€}~~€}~€€€~~~}~€~€€}~€€~€}€~~~}~€~}€}~~~€€~€~~€€€~€~~€~€€}€€}}€~‚€~~€~~€~€€~€~~~~€~€}~~€~€~€~~€~~~€~€~~€~~~€~€~~~€~€~€}€~€~€€~€}€~~}~€€~}€~~€~€€~€~~~€~~€‚~~€~€~€}~}~~€}€}}~~€}€~€€~~€€~€}~~}~‚€‚~~€}€€~€~€€}‚€~~€~~€~€~€}~~~€~‚€~€~€€~~~‚~€}€~€~~€~~€}€€~€~~}}€~€€~€}€~€€~~€}~~~~€~€~€~~~~€~~€~€~~}€~€€€~~€~~€€€~€~€€~~€~‚€€~~~~~~€~€~}€~€~€€~‚~~~€~€~€~€~~~~€€~€€}€~~€€~€~€€}€€~€~~~}€€~€~€~}€}€~~~~€~€~~~~€}€~€~€~€€}}€~€€~€~€}~~€~~~}€~€€~~€~€€~}~}€~€~~€~€€}€~~~~~~}€}€€~€~~~~~~€€~~€~€}€~€€}€~~€~‚‚~~~€}€~€€~~€}~€~€~€€~~€~~€€~€~~~~‚€€~€}}€~€~~€~~€~~~~~€~€~€~~€~€~~~~€€~€~~€~€€‚€~€~~~€~€~~~~€}€€}€~}€€€~€}€~~~~~€€~€}~€~€~~~~~~€~€~‚~€~~€~~€~€~~~€~~‚~}‚~~€~~~€~‚€~}~€~~€€~€~€~€~€~~~~€€€~}~€€€~~~~€}€~~€}~€~€€€‚~~~~~€€~~€~€~€~~€€€~~€~~€~€€~~~~€~~€€€~~~~€€€~€}€~€€}€~€~€~€~~€~~~€~~~€}€}€}€~€~~~~~€~€~€~~€~}}~~€~~€~€~€}€~~~€~€€}€}€~~€~~€€~€~~}€~~~€}€€~€~€~~€~€€~€~€€~~~}~€~€€~~€~~~€}~€€€~€~~~~€~€~€~}€~€~€~€~€~€~€}€€€€€€}}~€~€~€€€}€~~€~€€‚~€~}€~€~€~~€~€€~€}~€~~‚€€~~~~€~€~~~€~~€€~€~‚~~€}~€~€~~€~€~~~€}€€~€~~€~€€~€~~€}€~~€€~€~€~€~~€~€~€~€}€~~€~€~€~€~}€~€€€~€}€~~~‚~€~€~€~€}~~€€€€}~€€~€~}€~€~~~~€~€~~~€~~~€~~~~~~€‚}~€€€€~€~~~€~€€~~€~~~~€€€~€~~€~€~~€~€€~€€~‚~€~€~~€}~€€~€~€~}~~~€€~€€~€~€~€~‚€~~€~€€~€~€~~€€~~~€€}€}~~€~~~~~~~€~€~€~€€€}€~€€~€~€~~‚~~~~€~€~‚~~~~€€~€~}}€€~~~€€}€~€~~€~€~~~€€€€}}€~~€€€~~€~~€~€€}~€~€~€~~~€€~€€~€~€}€}€~€}€€~~€~€€€}€~~€~€€€€~~€~€~~€~€~~~~€}~~~€~€€~}~~~~~€~€~€~€~~€€€}€~~€~~~}~€}€€}€~~€€€~~~~~€~}€~€€}€~€~}€‚~~~€€~€~~€~€~~€~€€~€~~}~€~€}~€~€~~€}~€€~~~~€€~€€~€~€€}€~~€~€~€~€~€€~€€€€~€~€~~€~€€€~€}€~€~€~€~€~~€~~€~‚~€~}}}€~€€~€}€~€€€~}~€~~€‚~~€~~€~~~€~~€€~€~~}~€~€~~€~€€~€~€~€~~~}€€‚~~~~~€}~€€~€~~€~€~€~~}~}€~€€~~€~~~~€~~~~€€€~~€~€€~€~~€€~€~€}€}€~}~€~€€€€€€~~~}~~€~€~~~~€€€€~€~~€~~~€‚~€~€}€~€~€~~~~~€~€€~~€~~~€€€}€~‚~~~€}}€}€}€~~~~~}€€~€~€~‚~€~€€~€~€~~€~~}~€€€~€~~€~~€€~€~~~€~~€~€~~~~€~~~~~€~€~~€~€~~€€}€€~~‚~~€}€~€~€~~~€~€}~~~€~~€€~€~€}€~€~€~~€~€€€€~€~~€~€€~~€~~~€€€}€~~~€~~€}€€~€€~€~~€}~€€€~}~€~~€€€€~}~~€~€€€~~~~~~~€~€€}€~€~€~~€~€~~€~~~~€€€~€~€~~~~€~€€~€~~€~€~~~~}~}€~€~€~€~~€€}€~~~~~€€€‚~€~~~€}€€~~€}~~€}€}~€€~‚€~~~€~}€€~€~€}€~~€~€€}€€~€~~~€~€~€}~€~~~~€~‚~~~}~~€}~~}}~€~€€€€~€}~}€}€€~€~€~~~~€€€~€~~€~~~€~€}€~€~€~~~~~€€~~~}€€~~€}~~€~€~€~€~€~~€~~€‚~€€~€~€~€~~~€}€€~~~~~€}€~~}~~~~~€~€€€€~€~~€~‚~€€~~}~€~~€~€~~~~€}€~€€~€~€~€~€~~€}€~€€~€€~€€€~€~~~~€~~~~€~~€~~~~€€€~~€~€~€}‚~}€~€~~~€}€~‚€~~~}€~€~~~€~€}€~}€}€~~~‚€}€}€~~~~€~€~€~€~~~~~€}~€}~€~€~€~~€€€~~~~~€€€€~~€~~~€}€€~~~€~€~}~€~€€€€}€~€~€~€}€€~€~~~~€~€€€€}€~~‚~€}€~€€}€~€~~€~€€~€~€~~~~~€~~€~~€~~€~€~€~€€~€€~~€~€~~~€~€€~}€~~~€~€€~€~~€~€~€~‚~€~€~€~}€}~€~€~€~€~~€~€~~€~~~~€~€~€~€~~~€~}€~€~~~€~€€~~~€~€€~€}€~€~€~€€~€€~€~€}~€~€~€}€~€~~~€}€~~~€~~€€€~~~€~€~€}}€~€€€~€~~~€~~~€~€€~~€~~~€€€€€~€~~€~~€€}€~~€}€~€~~~~~€‚~~€~€~€~€~~€~~~€~~~€}€~€€€~€~~€€€~~~€€€~€~~€~€~€~€€~€~~}€~€€€~€}~€€€~~~~€€€~~€~~€~~€~€~~€}~€~€~~~€€‚€~€~€€~~~~€‚~}€~~€~}~~€~€~€~€~}€‚~~€~€}€~‚€~~€~~~~€~€€~€~~€~~€€~}€~~€~€€~€~€~€€}~€~~€~~€}€~}€€}€~}}~~€}‚~€~€€~€~~€~€~~~~€€€~~€~€€~€~€~€€€~~~~€~‚€€€~~~~€€€€~€~~}}~€~€~€~€~~~}€~€~€}€~~~€~€~€~~~~~~€~}~‚~€~~€~€~}~€~€€~€~~€~€€€~€€~}~‚~~€‚~~€~€}€~~~€~€€~€~~‚}~€€}€€~€‚~€~~~~}€~€€€~~~~€~€~€~€~~~€‚~€~}€€~€~~~~~€~€~~€~€~€~~~~~‚€~€~€€€€~~€~~€~€~~~~€}~~~~~€~€~€€~~}~€~€~€~€~~~~~€~€}€€}€~~~€}€~‚€€€~~~€~€~€~€~€}€~~€}~~€~~€}~~~}~€~€€€€~€~~€~€€~}€~~€~€€€~}~~~~€€€~~~€~~€~€}€€~€~~~~€€~€~€~~€€~~€~€~€~€~€}€~~~€~}€~~€~~~€~~€}€}~~~€€~€~~~~~€~~~€€~€~~}€~~€€€€~€~€~~~~€~€€~€~~~~~€~€}€~€~€€~€~~}~~€€~€~€€~~€}~€~€€€~€~~€~€~€€~~€~€~~}~€€~~‚€~}~€~~€~€~~~€~~€€~€~€~~~€€}€~~€~€~~~€‚~~~€~€‚~€€}€~€~€~€}€~€€€~€~~~€~€€€}~€}~€}€~€~€€~€~~}€}€~~€}~€~€~€~~~€~€~€}€€~~~~€~~€€€~~~€~€€~€~€~~}‚~~€€~~€~~~~€~€~€~€€~€~€~~~~€~€~~~~~€~€~€~€~~~€}€~€~€€~€~~~€~€~~€~€‚~~~~€~€~~€~€€~€~~€~€~~~}~€~€~~~~€~€~€}~~~~~€€~€~~}€€~~€~€€~~~~€~€~€~€~€~~€}€€€~€~~€~€€}~~~‚~€}~}~€~~€~~~~}€~€€~€~~€~€€€€~}~€€~}~€~€~€€~€€~€~~~~~€}€}€~€~~‚}~€~€€}€~~~}~~€}~~‚€‚€~~~~~~€€~€~€~€~€~~€~}~~}€~€€€~€}€€~€€~€~~€~~~€€€~~€~~€‚€~€~~~€€}~}€~€‚~€}~~€~€€~}€€~€€~}~~~€~€}€€~€~~~~€}€}~~€€€}€~~}€~~}~~~€}€~€~€}€~}~€€~€~~~€€€€}~€}~€€~~~€}~€~~€~~~~€}€~€~€}‚€~€~€~€~€~~~~~€€~€~~~€~€}€~~€~€~~€}€~}~€€~€~€~~€~€~€~€~~}~€~~}€}€~€}~~€~€€€~‚}~~~€€~€~~€}€~€~~~~~€}€~€~~~~€}~€€€~€~~€~~~‚}~€~€€~€€~~€~~~~€~~€~~~€~€~€~€}~€€€~€~~~~~~~~€~€~€~~€~€~€~€~~~€~€}€€~~~€~~~€~€€~~}~€€~€~}~€€}~~€~}€~€}€~‚€~~€~}€~€~~~€~}~~~~€~€€~€~~~€~~€~€}€€~€~~~€~€~€}€~€~~~€}€€~€~€~€~~~€~~€€~}~€~€~€~~€~€~~€}~€€}€~€~~~~~€}€~~€~‚€~~€}€~€~}‚€~~‚~€~}€~~~~~~~€~~~‚~~€}€~€~~€€€~€~~€€~€~€~~~~~€~€~~€~~€}~~€~€~€~~~€~€~€€}€~~~}~€~€~€€~~€~~€~‚€€~€~~€€~~~~~~}~~~€~~€~~€€~€~€}€€~€}€~}~~€‚}€€}~€~~~€~€}€~~€}€~€€€~~~~~€€~~€~~}€€~€~~€~€€~~~€~‚€€}€~€~€€~€€~~€}‚€€~€~€~€€€}€~}~€€~€~~€€}€€~}€~€€~}€~~€€~€~€€~€~~‚~~€}‚€~€}~~€}€~€€~€~~€~€~€}~~€~~‚€~~~€~~€~€€~~~~~~€€€~~~~~~~€}€~}€}}‚~€~€~€~~€~€€~€~€~~~€€~€~€~~~~€~€~€~€}~}€~}€~€~€‚}~~~~€€~~~~~€€~€~€~~€~€}~~€}~€€}€~~~€~~~€~~~€}~€~€~€~€~~~~€€~}~€}€€€~€~~~~€~€~~€~}~€}~~€~€~€~~~~€~~}€~€€€~~€~€~€€€~~~~~€~€~~~€~€}~~€~€}€€~€~~€~~~€~€~}€~€‚}€~€~€}~~~~€~€~~€€€€€€}~~~€~€~~~€~€}€}€}€~~~~~}€~€~€~~€€~~€~~~}€€~~€~~~€€~~€~~€~~}€~€€€‚}€~~€~‚€~~€‚~~~€€€€~€~}€€~€~~~€~€~~~€€~~~~€~€~€~~~€~€~€}~€~€€~€~~€~€€}€~~€€€}€~}€€~€~€}€€~~~~€~€€~€~€~€~~‚€~~€~€€~€~~~~~~€~€}€€~€€~~~~€~€€~€~‚~~~~~€~€€€~~~~}€~€~€}€~€~€~~€~~€~~~~~~€~€€€~~~€}~€€~€~~€~~€€‚~}~€~€~€~~~€}€€}~€~€~€~~~€€€~~~€~~€~€€€~€~~~€}€€}€€~€}€}€~~~€~€€€~~~‚~~€‚~€€~€~~€~~~€~€}€€}€}€~€~~€~€~€€~~~~~€~€€~€€~}€~~€~€~€~€€~~€‚~€~~€~€€~€~~€~€}€€~€€€€~~~€~€}€}~~~€~~€~€€‚~€€‚~€€~€~}€€}~~€~€~~€~~€€~€~}€}~€€~€~€€~~€~~}~€€€~€~€~~~€~~~}~€~€~~€}€~~~€‚}~~€~€~€~~€~~€}€~~~~€€‚~~~~}€~€‚}€~~€€}€~€~~€€€~}~€}€~~~~€€~~}€~€€~€~€~€€~€~€~€~€€~~€~€~~~~~€~~€~€~€€}€€}€€~€€~€~€~~€~~‚€~~~‚‚~~~~~~€}~~€~~€€~€~€€~€€}€~€~€~‚€€‚€~~~‚~~~€~~~€~~~~~~€}~€~~‚~€~‚€~~~€~€€€~~~~~~‚€‚~~~€~~~€€‚~€}€€~~~€~€€€‚~~~‚~~~€~€€~~~~€~€‚~€€~‚€~~‚€~}€~€€€~€~~€}~€~€€}€~€}~~~€~~€~€~‚€~~~€~€~€€~€~€€}€€~~€~€~€~~€~€~~~€~~€~€€€~€~~€~€}€~}€~~€~~€~€~~~}€~€~€~€~€€~€~~€}€}€~€~€€~‚€€€~€}}}~€}€}‚~~~~~€~€€~€}€~€€}€€~~€}€~~€~~~€~€~~~}~~€~€}€€€€~€~€~€~€€}€~€~~€€~}~~~~€~~}€~€~€~~}€~€~€}€~€~€~€~~~€~~€~~~~~~~~€~€~€~~€~~€€€€~}€~€~~€}~€~~~~€~~~~€~€}€~~€~€~€€~€€~€~€~€~€~~€~€~~€~€~~€}~~€~€~€~€~~€~~€~~€~€~~€~€~€~}€~€~€~~~}€~~€‚~€}~~‚~~~€€~}€~~€}~€~~~€~€~}~€}€~€€€~€€}}~~€~€€€~€~}~~€~~~€}€€~~~€~~€~~‚€~~~~~€€€~€~€~€~€~€~€~€€~€~~€~~€€€~€~}~~~~€~€€~~€~~~€~~€}€~€~€~~~€~€€~~~€~€‚~€~€€~€~~€€~€€~€~€€}€‚}€~~€~€€~~~}€}€€€€~€}€~~~€€}€~~€~~~€~€€€~~~~€}€€~€€}€€€€~€~€~€}‚€~€}€~€~~~~‚€~~€~€}€~€~€}€~€€€~€~~€~~~€~~}€}€~}€~€~€~‚~~€‚}€}}€~~€€~€~€~~€~~€~~~~€~€~~~€~~€~~€~€~€~€~€~€€~~€~}€~}€~€~~€~~}€~€€‚~~~€€~€€}}€~€~~€~~~€~~‚€~~~€~~~~~€~€€€~~€}€€}€~€~~~€€€~€}€}‚€~~~~€~€~~~€~€~€€}€}€~€~~~~€€~€~~~~~~€€‚~€~}€~~€~€€€€~€~€}€~€~€~~€~€~}€~€~€~~~~€}~€~~€€€€~~~€~€~€~~€~‚€~~€~~€}€~€~~~€~€€€}€}€}~~€~€~€}~~‚~€}€~€~€€}€}~~~~}€~~€€€}~~}€}€~~€~~~€~€€}~€~€~~~‚~~~€~€}€~€~~‚€~~€~€}~~~€~~€€~€~€~~~~€~€€~€~€~‚~€~€~€}‚~€~}}~~€}€~~€~€€€~€~}~~‚€~~€~€€~€~€}~~~€~€~€~€~~~€~€~€€~€~€~€~~~~€~€€€~~~€}~€~€~~€€€~~~€~€~~~~~~€~€~~€€€€~~€~€~~~~~~€€€~~€~€~~~~~€€}~€~€}€~~€~€~~~}€~€€~€~~~€~€~€€€}€€~€€}€~€~~€~~~€~€~~~€~~€~€~}~~€€~}€~€~€}~~€€~€~}~€~~~€~~~€~~€~~€€€~€~€~€~~€~~~‚€~~~€~}€~‚~€~}€}~€€€€~€~}€€€€~€~~€}~€~€~}~~~€~~~€~€~€€€~~~~€‚~~~~€~~~€~~€~€~~€€~€~€€~€~}~€~€€€~€~~€~~~€~€~€~€}~}€}€~~~~€}€€€~~~€~€€€€}€~~€~€~€€€~~~€~€€€}€~~~~~€~€~€‚~€~~~€~€~€~€~€~~~~‚~€~~€}€€€~€~~~~€~€~€}€€~~€€€~~€~~€€€~€~~~€€~€~~~~€~€~€~‚~~€~€‚~€€~€}€€~~~~~~€~€€~~~€}€~€€~€€}€€~€€~~~€~€€€€}€~}€~~~~€}€~€€~€~€~~€~~~~€~€€}€~€~€}€~€~€€}~~~€€}~€~€~~~€~€€~€~€}€~~€~~€~~€~~}~€~~€€€~~€~€€}€~}€€~~~~}€~€~~~~}~~~€~€~~~~€~}~€~‚€~€~~€~€~~~€}~~€~~€~~€~~€€}€~€€}€}€~‚~€~€}~~~€}€€€~~~~~~‚~~€~~€~~€~€€€~~~€~~€€~€~€~~}€€€~}€~‚€€~€€~}€}€~€~}€~€€€€~~€}~€~~~~~€~€~€~€~€~}~€€~€}~€~€€€€~~€~~~€€~€~€~€€~~~~€€‚~€~}€~€~}€€~€€}€~€€~‚€~€~~~€€€~~~~~€~~€€€}€~~~€€€~€~~~~€}€€~€~~~€~€€€~€~€~€~~€}~~€}€}€~~~€~~€€~}~~€~€€~€~~~~~€~€€~€~~~€~€~€~~~~€€~€}~~€~€€‚~~~~~}~€~€}€~~€€}€~~‚~€~€~€~~}~~€~€~€}~~}‚€€~}~~~‚~€€~}€~€}~~€~€€€€}€~}~‚€~€}€}€~~€~~~€}€~€~€€~€~€~~~~€~€€~}€~~€€~€~}€~~~€€}€~€€€€€~€~~~~~€€}€~~€~€~~}€~~€€~~~€~€~~€~€~€€€~}€~~~€~€~€~€~~€‚~~~€~~€}€~~€~€~~~€~€~€}~~€~‚€€~€~€~~~€€~~€~€~€}€~€€~€€~~€~~~~~~~~~€~€}€}€~€~€€€~~~~€~~€~€~~~€~€~€~~~~€€€€~€~~€~€~€~~~€~‚~€€~€~€~~€€~€~€~€}~€}~€€~€~~~€}€€€~~~€~~€€}€}€~~‚~~~€~€~€}€~€€~€~~~}}~~€}€~~€~~~€~€€~~€~~~€‚~~~~~~€€~}~€~~~€}~~€~~€}€~€€~}€~~~€~~€~~€~€€~€~~~€€€‚~€~~€~€‚€}~~€~~~€€~~~~€~€~€€~€~~€~€€‚~€~~€~€€~}€~~€~~€~~~~€~€€}€~~~€~€€~~€}~€~€€}€€}€~€~€‚~~€~}~~~€~€~€~€~~~€~~€~~€~€~€~}€~~€~}~~€~€€}~‚€~~~~€}€~~~€€€€~~€~€‚~~~€~€~~€~~~}€~~€~€~€€~€~~€}~€~~~€~}€€‚~€~€~~~€~€~~€~~~~~}€~‚€€~€~~~€}~€€~€~€~€}~~€~€€~€~~~}‚}~€~}€€~€}€€~~~€~€€~~~~~€~€€~€~~~€~€€€~}€~€€~€}~~€~~€~€~€~~€}‚~€€~~~€}~€}~~€}€€‚~€~€~€}€}€~€~€~~~€~~€~~~€}~€€€~€€~~‚~~€‚~€}€~~€€~~€}~€€~€}~~€~€~€€~€~~~€‚~~€~~€}~~~€‚~€~€€~~~~€~€~}~~~€~€~~€~€~~€~€~~€}€€~€~~€~€€~€€~~€~€~‚~€€~€}~€~€€~~€~~€~}€€~€~~~~€~€~€~€~~€~~~~€~~€~€€~~~€~€~~~‚~€~~€~}€‚~~€~€~€~~~€~€€‚€~‚~€~€~€€~~€€~€~€€~}€}‚€‚~~}€~€}€€~~~~~}~~€~€~~~~€€€~€~€~~~~€~~€€€€€~€}~~€~€~~~~~}€~}€}€~~~~€}~~€~~~€}€~€€~~€~~€~~~}‚€~~€€~€~€~€~~~€~~€}~~~~~~€€€~€}~‚}€~€~€}€~€~‚~~€~€~~~€€€€~€~~~~€€€~€~~€~€‚~€€~~€€}€~~~~}~€~€~~~}~€€~~~~€~€~€~€~€}€€~€}€€~€~~€~~€~~€~~€~~‚~‚}€~€~€€~~~€~€~€~~€€~€€‚~€~~~€~€~~€~€€€~€~~€~€}~~~€~€}€~€€~~~}€~€~‚€~~~€~€~‚~€€~€~€~~}~€~€~~€~€~€~€}€€}~~~€~€€~€}~}€€~€~€}€~~€~~€~€€€~€~€~€~€~€}~€€‚~€~~~~€}€‚~~~~€~~~€}€~€€~€~~~€‚~€~€~~€}€}~€~~€~~€~€€~~~~€€~€~~€~€~€€~}€~~~€€~€~~€€~~~€~~}€~€€~~€}~€€}€~~~€~€~€~~~€~€€€~~€~€~€~€€~€}€€~~}~€}~€€~€~~}€~€€‚~€~~€~€€~~~~€}~€€~€~€}€~€~€€€~€~€~~€~€€€~€}~}€~€}€~€€~€~~~€}€~€~€}~€~~€}€~€~€~€~€€~€~€}€}~€€~€~~€~~€€€€~€~~€~~€€‚~~€~€€€~€~~~~~~€~€~€~€~~~€~€}€€}€~€}~~€~~€~}€~€}€~€~€~€~€~€~€~~€~€‚~~}€~~‚~~~}€~~€~€~~~€‚}€}~€}€~~~€~€€}€~€~~€‚~~~~~€~€}€€~€~~€~~€~€~~€~~€‚~€~€~~€~€€€~€~~€€€~}€~€€~€~~~€~~€}€~}€~~~€~€€€~~~~€~€}€€~€~‚€~~~~~~€€€€~~~~€~€€~€~~~~€~€~€~€~~€~~~~~~~~}~~~~~€€€~€~€~~€€~}}~~€~€~~€€~~€~~~€~€~~~~~~€}€~~€}€~€€€~~€~~€~~€~~€~€~€~}~~~‚~€~€}€~€€~~€}€~€~€}~€€€~~€~~€~~}}€~€~€~€~€~€~€€~€~€~~€~~€€€~€~}€~€€~~€~~}~€€~~~~~€~~€~€€}}€~‚€€~~€‚~€}€€€~}€~€~€~€€~€~€~}~€~~~€~~€€~~~€~€€}€}€~~~€~€€~€~€~€~‚€}€~~€€}€€~€~~~€~€€~€~~~}~€€~~}€~€}€~~‚~~~€~€~€~~~€~€€€€~~€€~€€€€~€~€}€}~~‚~~€~€}€~~~~€€€€~€~‚€~‚~~€~€~€}~€~€~€€€~~~€~€€~~€‚~€~}€~€~€~€~~€~€€~~€~~€~~€€€~~~~}~}€~€~€}€~~~~€}€€~€~~€~~€~~~€~€~€~~~~€~€~~~}€€}€~~~~€~€~~€~€~€}€€~€~€€}~~}~€}€~~~~}€~‚~€~~€~}€~€€~~€~}€}€~€€~€€~~€}~~€€~€~~€~€€~~€~~~~€€~}€}~~€€~€~~~€}€~}€~€~~~€‚~~~}€~‚€€~€~€}€€}€€~€~}€~€€€€~~€~~€~€~€~}€~€~€~€~€~~€€€}€~~€}€€€€€~€~~~€€~€~€~€€~€€}€~€~~}‚~€}€}€~~~}€~€€~€~}€~€€€~€~€~€}€~~~€~€€€‚€~}~~~~€~€~€~€~‚~~€~€€€~‚~€~€~€€~€€}€~€€}‚~€~~€~~€~~~~~€~}€~€~€~~€~€€€~~~~}€~€~€}€~€~€}~~€~€~€~€~€~~€€~~}€~€~~€~€€~}€}~€~~‚€~~~~€~€€€~€}~~~€‚~€€~€~~€~~~~€~€€}€~~~~€~€~€~~~€~€~€~}~~€~€~~€~€~€~€}€€}€~~€~~~€€~~~~€~€€~€€‚}€~€€~€~~}€~€€€€~~€}€~~‚€~~‚€€~€}€~~~€€€€}~€~€~€~~€~~}}€~€€€‚~€~~~~~€~~~€~€€~~~~~€€€~€}€~~€}€~€}€}€~€}}~‚}€~~€~€~~€~}€~~~~€€~}€~€~€€~~~~€~€~€~€~~€}~€}€~€€~~€~~}€€~~}~€~€€€~}€~~~€€‚€~~~~€~€~~€~€€€~€~~€~~~~}~€}€€~~€}~~€~€}€~~€~€~~~€€€~~€~€~€~€}€}~}€~€}€~~€~€~~€€~}~€~~€~~~€€}~€~€€}€€~~€~€}~~€~€~€~€~~~~€}}€~~€€€~~~~€}~€~€€}~€}€~€~€}~€~~€~~~€}~€€~€~~~~€€~€~~€}€}~}~€€€€~~€~~€~€~~€~€~‚€~€}€~€€~€€}~~~~~€€~}€~~}€~~€€~€€}}~~€~€€€~€~~~~€€~}~~€€~€~~~€~~~~€€€‚~~~}€}€~€€~~~€~€~~€}€~€~~~€~€€}€€~~€~€€}€~€~~€}~€}€~‚~~~€}€~~€~}}€~€€€}€~~€~€€~~~~}~€~€~~€}€~~~€€~€~€€~‚€~~‚~€€~€~€~}}€~€€€~€~€~€~€~~€~€~€~~~€~€~€~~~‚€~~~‚~€~~€}€~~€€~€~€}~~~~€‚}~~€~€~~€~~€€‚~€~‚~~~€€}€~€~€~~€~~}~€€~~€~~€~}}€€€~€~~€~€~~~€~~~~€~~~€~€€~}~~~€€‚~€}€~‚€}~€~€}~‚~~€~€~~€}€~‚~~}}€~€~~€~€€€€}€€}€~~€€~~~€~€}€~~€~€~€€~€~~~€~€€}~~€~~€~~€€€~€~€~~~€~‚€~€~}€€~~‚€~~~€~€}€~‚€~~~€~~€~~}€~€~€€~€~~‚€~}~~~~€}€€}€~~}€~€~~€~~€~€€~€~€€€~~}€€~€~~~€~€€~€~~~€€€~€~}€}€}€}€~€~~~€~€€~~~~~~‚€€~€~~€~~‚€~€~~€~€€€‚~€~~€‚€€~€~~}€€~€~€~€}€€~~~~€~€€~~~‚~~‚~~~}€~€~€~€~~€~€~€~~€~€~€€}€~}€‚~~~~€~€€~}~~€€}€~€€~€~~€‚~~~}€~€€~~~~‚~€~~}€~~~~~€~~€~~}€~€~€~‚~~€~€~€~€~€~~~€~€~~‚€€~€~€}€€~€~€}~~€~€~~~€~€€~€}}€}€~~~€~€€~~~}~€‚~€~€€}€}~~€~~‚€}€}‚€~€~€€€~~~~€}€~€}€~~€~~~~€€~€~~~€~€€€~~€~~€~€~€~~€~~€}€~€€~€~~~~€~~€~~~~~€€~~~€~€~€~~€~~~€}~€€~~€~}€~€~~~~€~€~~}€~€~€€}€~~€}~~~‚~~~€}~€~€~€~~~€€}‚€~~~~~€~€€~~€~~~€}~€€~€~}€~€€~}€}€~€€€‚~€~~~~€~€~€€}~€~€~€~~€~€€~~~~~€‚~~~~~~€~~€€€~€€}~~€~€€~€~~~€~~€€~€~‚€~~~~€€~€~€€~}€‚~~~€}€€~~~~€~€€€~€}€~~~~~~€~~€~€€~€~~~}€~€€€€}~~€~~€€~€~€~€~€~€~€~€€€~€~~€~€~‚~€~~~€~~€€~€€~€~~‚€}€~~€}€€}€~~~€~€~~}~~€€}€~~~~€~€€~€~~~€~~€~€~€~~~~‚€€~~}€~~€~~€~€€~€~~~€€~}~}~~~‚~~€~€}€~~€~~€~€€}€~€}€~€~}~€€€~€€€}~~~€~€}€~~~~€~€~~€~€€~~~~€}€~€~€~€~€€~€~~~€€€~~€~~~~€€}€~~€~~€~~~€}}€€€~}€~~€}€~€~~~€~€~~€~€€~~€~€‚~€~€~€~~€~}~€~€€~€}~€~€€~€~€~~~€€}€~€~€€~~€~€€€€‚~€~€}€~€~€~€‚~€~€~€~~€~€~€~€}~€€€~~€€}€€~€~~€€~~€~}~€~€~€}~€~}~~~~~€}€~€~€€~€~~~~€}€€€~~~~€~€~~~€~€~€€~€}€~~~~€~~€€~€}€~~€}~€‚~~}€~~~~~€€~€~€~~€~€€€}€~~€~€€~~€~€~€€€~~~~€€€€~€~€~~€€~~}€€~€~€~~€~€~€}€€~~€€~~~~€€~~€}€~€~€~€~~~€€}€~‚€~€~€~~~€~€€~€~~€~€~€~€€€€€~€~}€~€€€}€~~~€}~€}€}€~€~€€~~~€~€~€~~€~~€~€~€~~~~€€~€~~€~~~€~€€~€~€€~€~€~~€‚~€€~€~~~€~€€~€~~€~€~€€€~€~~~€€~~€~~€~€~~€~~~€~€€~~€€~~~€}~€€~€~~~~~€€}€~~€~€~€~~€~€~€}~~€~€€€€~€~~~€~€~~}~}€~€€€~€~€~~€~~€€~€~~~~€~€€~€€~€€~€~€~}€~~}}€€€~~~~€€~~~~€€~~€~~€€~€~~€~€}€~~~€~€€}€~~}€~~‚~€€~€}~~~~~~~~~€~€~~~~~~€~€€~€~€~€}~~}€~€€€~~~€~~€€~€~~€~€~~~~}~€€~€~€~€~€}€€~€~€~~~€~€~~~€€€€~€€}€~}~~~~€€~€~~€~~~€~€€~€~€~}€~~€€€€~€€~€~~~€~}€~€€~€~~~€~€~€€~}€~~~€~€~~€~~€}~~€~~€~~€~€}€€}~~€~€~~€~€€~~‚~~€~~€~€~€~~~€€~€}~~~€~€€~€€~€€~€~~~€~~€~~€€}~€~€~€€~€}~€‚~~~~€~€€€}€~~€~€€€€~€~~~€~€€~€~~~~€€~~}~€€}€~€~€~~€~€‚~~~€~€€€}~~~€€~~~~€~€‚}€€~€€~€~~}~~~€~~€}€€~~~€~€~€}€€~€~~€~€~~~€~€€~€€~€~€}€€~~~€~~€€~~~‚€~~~€~€~€~€~€~~€€~~€~€~€~€~~€~~€€€€~~~€}~€€~~€~~€~~€€€~€~~~~€€~€~~~~€€~€~€~€~€~~€‚~~€‚~€~~~~~€€€€}€~€~~}€}~€€~€~~~€~~~€€~€~~€~€~€~€}€~€~‚€~~~‚~€}€‚~€~~~}€~€~~€~~€~€€€}€~~€~€~€~€‚€}}}€~~~€~~€~€~}€~~~€}~€€€€~€~€~€~~}~~~~€~€~~€~~€~€€€~€~~~€€€~€~€~~€}€~€~~€~~~€~~€~~~€~€€~€~€€~€~~€~€~~€}€~€€~€}~~}€€}~€~~€~~€€~}~€~€€€~€~€}€€€€~€~~~€€~€}~€~€€~€}€€~€~~}~€€~€~~€~~}~€~€~€~€~€~€~€€}~€€~~~~€€€~€~~~€~€€~€}~~€€€€~€~€~}€~€~€€}€}€}€~~€~€~€~€€~€~~~~~€~€~~~~~~€€}€~~~€~~€€€€~€~~~€~€~}€~‚€}€~~~€€}€~~~€}~€~~€€€~€}~~€~€€~~~€}€~~€~~€}€~€€}€~~~€}€}~€}€€~~‚~~~€~€~€~€~€}~~€~~€€€~€~}€~€~~€~€~€~~~~~~€€~€~~€~}~€~€~€€~~€}€~~~€~€~~€~}}€€~€~€~€€~€~~~€€~€~~}€~€€~~}€~€€€~~~~€~€€€}~~}€€~€~~}~€€~€~~€~€€~€~~~€€€~€~~€~€}€~}€~€€}€~~~}€~€~€~‚€€~}€~‚€~€}€~~€~~€~€~~€~~~~~€€~€€~~~‚‚~~€}€€~~~~€~€~€~€}€~}~€~€~€€~€~€~~€~€~~~~~~€~€~~~€~€€€~€~~~€~€~€}€~€~€}€~€€~~~~€~~€~€}€~}€~€~€€~~}~~€}€€~€~~~€~€€~€~€€~~€~€~€~€~€€€~€~~~~~~~}€€€~}€~}€~€€€€~~~€~€~~~~€~‚~€€€~€~~€~€€€~~~€~€€~€~~~}€}€~€~€€~€~~‚€}~€}€~€~~~€~€‚~~~~~€}€~€~}€~~~~€~€~}€~~~€~~€}~€€€~€~~~€~€}€}€~€~~€~€~€~€~~~}€~€~€~~~€~€€~}€~~€~~€~€€€€~€}~€}~€~~€}€€‚~€~~~~~€~~~€~€~€€~€~~€€~~}€}€~€~~€~€~}~€~€€€~~~~€€€~€~~~€€€~€~€~€~€€~€~}€~~‚~~€~~~~~~€~€~€~~~€~~~~~~€~€~€~~~€~~€~}}€€~~~€~~€€€~€~~~~‚~€~€~€}€}€~€~~€}€~€€€~€~€~€}€~€~€~€€~~€~~€~€€~~€~~€€~~€~~}€~~€~~€€~€~~€~€€~€~~€~€~€~~€}~~€~~~€~€~~~~€~€~~€~~}~~€€~€~~~€€}€~€~€~€€~~€~~€}€~€~€~~‚~~€~€€~€}€~~~~€~€~€€~~€~~~}€~~~€~€~~~}~~€~}€~€~~€~~~}€~~~~€€}~€~€}~~~€}€€}€~‚€}€~~~€~‚€€‚~€}€~~€~€€€}~~€~€€~~€~€}€€~€~€€~~€‚~€~€~€~‚€‚~~~~€~~€~~~~~€€€~€~€~~€~€~€~}~}~€€~€~~~~€€~~€~~}€€~€€}€}€}€}}~~€~€~~€~€~€~~~€~€€€€}€~€~~€€~~~~€€€~~~€~€~€€€~€~~~€~€~€€}€~~~~~~€~€~~~€~€‚~€€~€~€~~~~€~€~€~~~~€~€~€~€~~€~€~€}~€~€~€~€~~}~~~~}€~~€~€€€~}~€€}€~€~€~}€~~€~~~€~€~€}~~€~€€}‚€~}€}€~€€€€~€~~~€}€~€€~€~€~€~€~~€~€~~€~€€€€}}€€€}€~€~€€~~€~€~€€~€~~€€€~€~~€€}€}€}~}~~~~}€~€~€~€~~~€~€€€~~€~~€}€~€~~€~€~~~~‚~~€~€~€€~€}€~~~€€~€~€~~~~€~~€€~€~~~~~€~~€~€€~€~€~~~~~~~~€~~€~€~~~~~€~~~~€€~~€~€€~€}~~€~€~€~~€~~€~~~~€}~~~€€€€€~~~}€~~~€~€€}€~€~€~~}~€~€€€€~~~~~€~€}~~€‚~€~~~€~€€€~~~~€~€€}€~€€~‚€~~‚}€~}€€}€~~~‚~€~€~}€~~~}€~€€~~€~€~€~~€€€~€}~€~€~€~~}€~~~‚~~~€}€~€~~~€~€}€~€~~€€€~€~~€~€~€~€~€~}€~€€~€~€~€~~€~€€~~~~~€~€€}~}€~~~~~€~€€~~€}~~€€€~€}~~€}‚~€~€~€~€€~€~~}~€€}€~~€~€~~~€~€~~~~€~€~~€~€€€~€}€~~€}€€€~€~~~€~~€‚~€}~€€}€~~€~€~€~~~~~€€~€~~}€~€€€~}~€€‚~~~~€~~~~~~}~~~€€}~€€€~€~€~~~~€~‚~~€~~€~€~€~~€~€~€~‚~€€}€~€}€€~~~~€€}€~~~~€~€~€~€}~}€€~€~~}€}€~€~€~~~~€}€~~€}€~~~}€~€}€~~€€€}~‚~~~€~~~€~€€~€~€~~~~€€€~~~€~€~€~€~~~~€~~€~~€~€€~~~~€€~~€~~€~~€~~€~~~~€}€~~}~~€~~€~~~}€€~€~€~~~€€€~€~~~€~~~€~€~~€~€~~~€~€€~~~~€€‚~€~~}€~€~~~€€~€~~~}~€}€€}€€~€}~~~~€~€~~‚~~~~~€~€~€~}~~~€}€~€}€~~~€~€€~€}~€~€}€}€~~‚€~~‚~€~€~€~€~€}€€~€~~~€€~€~€~€}€~~€~~‚~~€~~€~‚€~€€~€~€~€€~~~€~~€~~€}€€~}€~~€~~€~~~~€~€~€~€€}€~~~€€~€~~~€~€€~~€}€~}~€}~~€€€~€}€~€~€~~~~~~€~~~€€}€~~€~€€€€~€~€~~€}~€}€€~€~€}‚€~~~€~€~€€~~€€~~~€~~‚€~~~€~€}~}€~‚€€€~€€}€~€~~€~~€~€€~€}~€}€~~~~€}€€~}~€}€~€}~€~€~~~~}~€}€€~€}€~€~}~€}€~~~~€‚~€€~‚€~~€~~€}€}~€~}€}€~€~~€~€~€~€~€~€~€~€€€~€}€~€}€~€€~€~€€~~€~€}€~€~~~~€}~€~€~~€~~}€~€€}€~~~€€~€~€~€~~~}~€~€}€~€~}~€~~€€~€~~€~€~€~}~~~~€}€~€~€~€~~~€}~€~~~€€~}~~~€}€~~~}€~€}€~€}€~}~€~}€}~~~~}€~~€~~~€~€€~€~~€}€}€~~€~~€~}~€€‚~€~~}}€€~€~~~€~€~~€~€~€~~~€~€~~~~€~€~€}~~€~€€~€~€~}€€}€~€~‚~€~~~€~€€€~€}~~€~€~~~~€~~~€~€~€}€}~€€€~}€~~€~~~€~~€}€~€~~€~‚€~€~~~€€‚~~€~€~~€€‚~€~€}€~~€}€~€€~~~€~€}€€€}€}€~€€~~~€~‚€~~€}~~€~~€~€€€~€~~~€€}€~~~€€}€~~}€~~~~€}€~}}~€€~€€~€~~}~~€~~€}~~€~~~€}~€~~~~€~~€€€}€€~€~~€~~~€‚~~€~€~~~~€~~€~~~~~~~€}€~€~€~‚‚~~}‚~€~€~~~€~€~€~~~€~€~~~~~€~€~~~€~‚~}€€€~€~~~~~€~€~€~€~~~~~€}~€~~€~~€~€~~€€~~~€~‚€~€}}~€~~~~€€~€€~€~€~€~~~€~€~~€€€~~€}~€~€€~}~~~€~€€€~€€~€~€~€}€€~€~~~€~€€€~€~~~~‚€~~€~~€€~~~~€€~€~~~}€~€~€~‚}~~€~~~€~~€~~~€~~€‚~€€~~€~€~~~€~~~~}~€€€~}~~‚~~~~€~~€~€~€~~€~€€€~€~~€~~€~‚€~~~€~€}€€}€~~~€‚~€€~€€€~~~€~€~~‚€~~}‚~€~~~€~€~€€~}~~€~~€€€~~~€~~~€~~~€€€€~€~€~~‚€€€~€~~~€€~€}~~€~€~€€~~€€~€~€~~‚~€~~~€€~~€€€~~€~~€~‚€€€}~€€~€€~€}€}€~~~~€~€€~~~~}~}€}€€‚€~€}~}€~~€€}~€}€~~~~~~€~€~€~~}€~}€~€~~€€~~~€}€~€€€€~€€~€~~€~‚~}~}}~€€~~}~}€~€}€~~~~€}€}€}~€~€~€~€~€~~~~€}~€€~€~~€~€~}€~€~€}€€~~€}€€~€~€€}}~}~€€~€~~~€€~€~~~~~~€~~~€~€}€~€}€~€~€}€~€€€~~~~}€~€€~~}~€‚}€}€}€€}€~}€~~~€~€€€~€~~~~~~~€~€~~€~}€~€€~~~}~€€€~~~~€~~€~€}€€€~~€~~~~€€~}€~€~€€~€~~€€~~~€}~€~~€}~€~€~~~}€~€€~€~}~€~~~€~€€€~~~€~€~~~~€~~~€~€~€~€€~€~~‚~~~€~€~~}€~€€€~€~~~~€~~€€€~€~~~~~}€~~€~~~~~€~~€€}~~€~€~€~€~~€~~€~€~€~€~~€€€‚~€}~€~€~€€€~~€~~€‚€~€}~~€~€~€~~€~~~€~~~€}€~€~€~€~~€‚}€~€~€~‚~€~~~~€€€~€~}€~€€~€~~€€}€~~€€~€~~~€~€}€€~€~€~}~~€~€}€~~}€~~€€~€~~~~€~€€~~€~~~€€~€€~}€€~€~€~~€~€€~€~~~~~}~€}€~~~€~~€~€€~~€}~€~~€~~~€}€~~€~~€€~~€~~~‚~~€}€€~€€~€€~~€~€~€}~~€~~~€~€~€}€~}~~€€~€}€~~€~€€€~~€€}€€~€€}€}€~~‚€€}~~€~€~€~~~€~€~€€~}~~~€~~~€}~€~~€~€~€€~€~~€~€€€~~€~‚~~~€~~€~€~~~}€€}€€}€~€}€~€~~€~€}€€~}€‚~~€}€~€€~€~€~~~~€~€~€}€€~€}€~}~~€~€€€~~~~€€€~€}€~€~€~~€~~€~€~€~€}~~€~€~~€€~~~€~~€€€~€~~~~€~€€€~€~~€~‚€€}€~€~~‚€~~~~€}~€~€€€‚~€~~~~€€€~~€~~}€~€€~€~~€~€~~‚€~~€~€~~~€~€~€€~~~~€~‚€~€~~~~~€~€~€€~€€~€~€~~~~€~€~~€}~€~€}~~€}€€€€~~~~€}~€€}€~~€~€~€€~}~~~€€~€€~€~€~~~~€€~~€~~}~€€~~€~~€~€€€~~~~€~€~€~€€~€€~€~~}~€~€~~~~€~~€€‚}€~€~~€€~€~~€€~~~~~€}€~€}€€~€~~~~€~~~~€~€€~€~~~€~~~}€~~~€€~‚€~~~€~€~€~€~~}~~€}€€~€~~~€€~~€~~~€~€~€~~€}€~€€~€~~€~}€€}€€}€~€~~€}€€€~~~~€~~€€~€~~€~€~€}€~€~‚~~~€‚~}€€~~€~~€~€}}€~€~~€~€}€~€~€~~€~}€€~€~~~€}€~}€~~~~}€~€€}€~~€~€~€€€~€~~~€~€€~€€~~~~~€~~€~~}~€€€~€~~~~€€~€~~€€€~€~~€~€€€€€}~~~€€~€~€€~€€~€~€~€~~€‚~€}‚€~‚~€~~€}€€€€~€}~~€}~€€€€~€~}€€€~€~~~~€~~~~~~}~€~€€~~~~€~~€~~€}}€€}€~€€~~~~€}€€€€~~€~€~~~~€~}}€€~€~€~~€}~€€€~~€}~~~€€€~~‚~~‚}~~€}€}~€~}€}€~}€~€€~‚~€~€~€~€~€€~€~~~~~}€~~~~€~~€€€€~€~~~~€‚~~€~€~€€~€~~€‚~~~€}€~€€€~€~~~€~€€€~~~~€~€€~}€~~€}~~€~~~~~~€~€‚~€}~€}€~}~€€€€€~~~~€~€€~€}~~€~~~€~€€~€~€~~€~€€€~~~€~€€€~€~~€~€€~}~~~~‚~~€}€}€~€}‚~~~€€€€~€~€~€~€~€}€€~‚€~~€~~~€~€~~~€~€€€~€}‚€~~~~}€€~}~€~~~~€€}€}~}€€~~~~~~€~€~€€~€~~~}€~€€€~€~~€€~€}~€€~}€~€~~€~€~€}~€~~~~~€~€€}€~~€~€~€~€~}€€~€€~~~~~~~€}€€€~~€~~~€~€~}~€~€€~~~€~~€~~~€~~€~€~€~€}~~~€€€~~€~€~€~€~€~€}€~€~€~€~~~~~~~‚€€~€~~~€~€~€~~~~~€€~€~~€€€~€~€~€~~~€€‚~~~€~€~€~€~~‚~€}€~€~€€€~€~~~€~€€~€~€~€~€~}€€~€~€~~~€~~}~~~€~€~~~}~€€€~€~~~€}€€~€~~€€~}~~€~€~}~~~‚~€~€~~~~‚€‚~~~€~€~€~~€~~€~‚~€~€~~~~€}~~~€~€€}€~~€~€€~~~~}~€~}~~~~€€~~~~€€€~€~~~€€~€~~€€}€}€~€€~€~€~~~€~€€€~~€~~}~‚€}€€~€}€|€}~~€~€€€€~€}~€~~~‚~~€~€~€~~€~€€€~€~}‚€€~€~~~€~€€~~€~~€€€€}~€~€~}€€~€~~€~}€€€~~€~~~€€~€~€}€€~~~€~€€}€~€~~}~~€~€€~}€~€}}~€~€}€~~€~~€}€~€~~~~~€}€~€~€~~~~€~~~~~~~€€~€€~€~€~~‚}€}€~~~}€€€~~}}~~€}€~€}~€€~€~~€~€~€€€~~€~~~€€€~€~}~€€‚~€~€~}€~€~~~€€~~€~~~€}€~~€}€~~€}~€~€~~~€€~€~€~€}€~€€~€~~~€}€~~~€~€~~€~~€~€€€}€~€~~€~~~~~~€€}€~‚~~~~€~€~}~~‚€}€}€€~}€€~~€~€~~€~~~~€€~€~~~~~€~€~€~~‚~€~~€}~~~€~€~~€€~€~~€~~€€~€}‚€~~‚€}~~~€€~~€~~~~~~€~~€~€€€~€~~€~€}‚~€~€‚~~€~~‚€€~}€~}€€€~~~€~~€~€€€~€~~€~€~€}€~€}€}€~€~€~€~€~~}~€€}€~€~~‚€€}~€‚~~~€~€~~~~€~€~~€~‚€€€~€~€~~~~€€€‚~~~~~€~~‚~€}€~~€€~€}~~~€~€€~~€}~~€~€}€~‚€~~~~~€~~~€~~~~‚~€€}€~~~~€~€~€~~€~~€€~}€~€~€€}€~~€€}€~~~~~}€~~€€~€~‚~~~€~€€}€€€~~€~€~€€~€}~~€~€}€€~€}€~€~~~~€~€}€~~~~€~€~€~~}}€~~€}€€~~~‚~~~€~€~€}€€~€€~€~~~}€~€€€€~€~~~€~~~~~~~€}}~~~}~~€~€€~€}~~€~€~€€~~~‚~~~€~€}€€~~€}~~~}€€€~€~~€~~€€~~€~}~€€~€~€}~€}€~€~€~€~~€~€€~€~~~€~€~€€€€~€~€}€~€~€~~~~~~€‚}€~‚€~€~~~€}€~€€~~~~€~€~€~€}~€~~€~€~€~€€~~~}~}€~€}~‚€€~~€~~~~~€~~~}~€~€~€~€~~‚~€~€‚~€}€€~€}~~~€}€€~€€~~~~~€€~€€}‚€€~€~~~}€~‚€€~~~~~€€€~€~~€}€~€~€}~€€~~~~~}€~€~~€~~~~€}€~~€~€}~€~€€€~~~~€~€~€€~€~€~€~~€€~~~~~€~€~€~€}~€~~}~~~€}€}€~~€~~€}~‚€~~~€‚~~€~~€~€}€€~€~~~€~~~~~€}€}€~}€€~~€~~€~}~~€~€~~€~~€‚}€~~~€~~~~~€~~€€€~€~€~€~~€€~€~~}~€~€~}€€~€}~~‚~~}€~€~~~€~€~€~€~€~€~€}€~}€~€€€~€~~}€~€}€€~€~~~€~€~€~~€~‚}~~€‚~€~€~~~~€}€€}€~~~~~~€~€~~€~~€~~€~€€~~~~~€~€~€~€}~~‚}}€}€~~‚€~~€~€~‚€€~~~~€~€€~}~€~€}€€~€~€~€~~~€}~€€€~€}€~€~~~€~€€€~€~~~€~~€}€~~€€~~~€‚}€~}€}€€~€~€~€~€~~€~}€~€~~~}~‚€~~€~€~€~€~€€~€~€~~€~€~~~~~}€~€~€€~€€~~~€‚~€~€€~€}€~€}€~€~€~€€‚~~~€}€€~‚}~€€~€~€~€~€~}~}€}€€€~€~~~€€~}~~~‚€€}€}~€€}€~€~~€~€€~~}€~~~~~€~~€~~~€~€€€~€~~~~€~~~}~~€~€}€€~}~~~€~~€~~€~€€~~~€~€€~~~€~€€~€}€€~~~}~€}~}}€}~~~€~€€~€~€~~€~€‚€~€}€~~€}€~€~€~~}€~~~‚€~~~~~~€~€~~~€~€€€€‚~~~~€~~~}€~€~€~~~~€~€~€~}~€~~€€€~~€}€~~~~€~~€~€€~~€}~€}€€~}~~‚~~€~~€~€~€€}€~€}~€~€€~~~~€~€€~~€~~€€~~~~€€~~€~~~€€~‚€~€~‚€€‚~~~~€}€€~€~~‚€~€~~}€~€}€€}€~€€}€~~~‚~€~~~~€~}€~~€~€~~~~}€}€~€~}~€~€~€€}€~€~~€~€€€~~}~€}€€~~~~~~€}€~~€~~~~€€~€}‚€~~~~€~€~€~~€~€~~~€}€~€€‚~€~€~~~~€€€~€~~~~‚~~€~€~€€~€~~~~~~~~€~~€€~€~€€~€€~}€~~~€}€}€}€~€~~~€~€}€~€~€}~€~€~€~~~‚€~}€~~~€~~€€€~€~~€~€~~~€~€€€€~€}~€~€~€€€~€~~€~€~€~€~€}€~~~~~~~~~€€}~€~€€~}~€~€~~€€~€~€~~€~€~‚~€~~~€~€€~€}~~‚€~~~}€~€~€~~€~~~~€~€~€~}€€}€€~€~‚€~~€}~~~€}~€€~‚€~~€~~€~~€€€~€~~€~~€}€€~€‚~€~~~~~€€€~~€~~€~€~€~€~~€}‚€~~}€~€~€€~~~~€~~~€€~~€~~€}~‚€€}€~€}€}~~~€~€€}€~}~~€~~€~€~~€}€~€~€~~€€~€~€}~€€€~€~~}~€€€~~€~~€~€~€~~~~€~€~€€~€~€~~€~€€€~€~~~~€€~~€~€€~€€}€}~€~}€~~~~€€€~€~€~~~~~€}~}€~€~€}€~€~~~~~€~€~~}€}€~‚€~~~~€~~€€~€~€~€€~~€}€~~~‚}€~~€~~~~}€~€~~€€~~€~~€€~~€~~~}€~€€€~~~~€~~€€€€~€~~}€€€~€}€~€~€~€~~~€~€~€~~~€~€€~€}~~~€€€~~€€~€~~€~~~€}~~€~€€}€}~€€~€~€~~€~€€€~€~~€~€€~€}€~€}€~~~~~€}}€}~‚~€~€~€~€~~~~€~€~€~€~~~€~€€~€~~~~~€~€~€~~~~€~€~‚~~~€~~~}€~€€~~~€~€‚~~€~€~~~€~€~€€‚~~€~~~€€~€~~€~€€~~€~~~€~‚}~€~€}€~~€~€~~€~€~€}€~~~€~~€~~€~~~€}€~€€€~~~~€~€~€~~€~€~€~}~~~€~€~€~€~€€~‚€~~~~~‚~€~€~€~~}€~€~€~€€€€~€~~~~~€€‚~€~€~€}~~~~€~~€€~€~~~€~€~}~€}€€€€€~}€€~€€}€}€~€}€~~~€~~~~€~€€~~~€~~€€~~~€~€€€~€~~€~€~€€€}€}€~~€€~‚€~~€~~~~}€~€€~~€}€~~€~€~€~~‚~~€€~~€}~~€~€~~€€~€}~~€~€~€~~€~~€~€~€€€~}€~~€€€€~€~€~€~€€}€~~€~€~}€~€~~~~~~~€~~~€~€~~€~€€~€}€€~}~~€€~€~€~~€~~~~~€€~€~€~€€}€~€}€~€~~~€~€€€~€~~€€~~~€~€~€}€~~}~~~€€}€€€~€~€~€€}€~~‚~~€~‚~€~€€~~~~€~€~€~~~€€~~~€~€€€~~€~€€~€~~~€€€}€~~~~€~€~€}‚€~~~~€~€}€€€~~~€€~€~~~~~€~€~}€~€~~~~€~~€€€~€~~€~€~~€~€}€}~€~~€€~€~~€~€~~~~~~~€~~~~€}€~€~€€~~€~€~€€~€~€~}€~€~€€‚~€}~~~€}~€~€~€~€~~‚€~~~€~~€€~€~€~€~€~€~~~~~}€~€~~€~€}~€}}~€€€~€~~}}€~€~€~€~€~€~~~~€~€~~€~~~€}€€}€~}~}€~~€~~€€€~€}~~€~€€€~~€~~~~€~€~~€~~€~~€~€€€~~~€~€€~~~€~~~€~€~€~€€~~~}€~~~}€~€~€€~~€~€~~€€}€~€~€€~~€~~€}€~€€€€~€~€~€€~€~€}~~}~€}~~~~‚}€}€}€~‚~€~€~€~~~€~€~~~€~€~€€‚~€~€~€~€~€~~~~€~€~€~€~€~~~~€~~€€~€~~€~€~€€~€~€}€~€~~~€~€~€€}€~~}€€~€~~€~€€€€~€}€~~~~€€€~€~€~~~€~€~~€~€€~€~~~}€~€€€~}~€~~€~~€~€~€~€~€~€~~~~€}‚€~~~€}~~}€€€~~€~€~€~~~~~€}€€~€~€~~€~€€‚~€~€~~€€~€~}€~~~~€~~~€~€€~€~€€~€}€}€~€~~~€}€~~€~~~€~€€€~€~€~~~€€~€~€€~€€~€€~}€~€‚~€}€~€~€~€~€€~€~€~~~~~€~€‚~€~~€~€€€~}€~~~€~~€}€~€~~€~~~€€€~~€~€€~~‚~~~€~€}~€~€~~€~€~€€€}~~€~€€~€~~~€~€~~€~‚€~~€~~~€~~~~~€~€~~€}€}€~€~€€€~€~€~€~~~~}~€}€€~~~€}€€~€~€€~€€€~€~~}€~€€~€~€~~~}~€~€~~~~€~€~€}~€~~~€~€~€~€~~€}~~€~€~~~‚~€~€}€~€~~~€€€€}€~€}~€€~€~~€~€~~€~~~~€‚€~~}~~~€~€~€€~~~€~€€~~€~€~€€€~€~~~€€€~€~~~€~€~~€€~€~~~€}€€~€~€~~€~~€~€€~€}€~~€‚€€€~~~€~€€~€~~€€€€€~~~€~€}~€~~€~€€}€~€~}€~~€~~~€€€€~€~}€‚€~~~€~€}€€~€~€~‚€}~€~€€~€~~~€}€}€€~€~~~€~€€}€~€~€}€€~~~€€€~~~€}~~~‚~~€€~~~~€€€~~€~~~€~€~~~~€~€~€~€€}€~€~~~}€~~€~~~~€€€€~~~€~€~€~€}€€~€€~€~~~}€~~€€€~€~~€~€~€€~~~€€~~~€~€€~€~~€}€~€}€~€~€€~}€~~~}~~~}€~~~~€~€~~€~€€€~~€~€~}€~€}€~~~‚€}€~~€~~€~~€€}€~‚€~€~~~€}€€~~€~€}€~~€~~€€€~€~€€€~~€~~€€~€€~€~€~~~€}€~~~~~‚~~~€€~~€~~€~~€~€~€€~€€~~‚€}~€€}~€€~€~~€~€~~€~€€€~€}~€~€€~€~~~€}~€}€~€~€}€~€€}€~€~€€~~€~~~~€€€‚~€}~~~}€€€~€~€~€€€~€~~}~€~~~~~~}~}€~~€~€€~€~~~€~€€~~€~~€€€€~€}~~€~€~€~€~€}~~~€~€€€€~€}~~€~€~€~€~€€~~~}~~~‚€€€€~€}€~~€~~€€€~€~~€~~€€~€~€€~€~€~€~€~€~~~~~€€~~€~~€}€€~€~‚€}~€~~€~~~€~€€~€~~~€}~~€~€€}€~€€~~}~‚€~€~€}~€~€~~~~~€~€~~€€}€€~~~€~}€}€~~~€~€€~~€}€}€‚~€}€~€~€€~€€‚~~€~~~€~€~}~~~‚~€~~€~€~€}~~€~€€}€~~~€~€~~€~~€~€€€~‚~€}€~}~€€~~~~€€€~€~~€~€~€~}€~€~~~~€}€~~€}~€€€€€~~~~~~€~€~~~~€€~€~~€~€€~~~~€~€~~€}€~~€~~€€~~~~~~€€~€€}€~€~~€}~€~€}€€}~~~}€~€~€€}‚€~~~~€~€€‚~~€~~}~€€~€~~~€~€}€€}€€~€€}€~€~€€€~~~~€€€~~~~€~~€€~}€~€}€€€€}€}~~€~~~}~~~€~€€~€~€~~€~€~~~~~€€~~€€~€}~€~€€~€}~~€~~~€~€€€€~~~~€~~€€€}€~~€~~€€€~~~€~€€~€~~~~‚~}~~~€~€~~€}€€~~€€€€~€~~~€€~€~~}€~€~€~~~€~€~€}~~€€~~~~€~€€€~~~~~~~}€€‚~~~~~€~~€}€}€€~}~€~~‚~€~€€~~~€~~€}~~€}€~€~~~€~~€€€~}~€~~~~~}~€}€}€~~~€}€~~~~~€~€~~€~€€~~€}~€~€‚~€}€€~~€~€~~~€~€€}€~~~~€~€€‚~~}~~€~€€~€~€}€~~~€~€€~€~€~~€~€~~~€}€€}€€}~~€~€~€}€~~~€~~€~€~€~€€}€~~~€€€~~€~~~€€~€~€~€~~~~€~€~€~~~~€‚~€~€~€€~€~~~€~€~€~~~€~€€~€€~€~€~€€~}€~~€€~€~~€}~~~€~~~€€€€~€~€€}€€~€~€~~~€€€‚~~€}~~‚€~~~~~€€}€~~~€~€~~€}€€~€~~~€~€€€€~~~€~€€€~€~€~~~€~€~€~€~€~~~}€~~~~~~€€~~~€~€~~~€~€~€~~‚€~€}~€~€~~~€~€€~€~~~€}€€€}€~~~€€€~~€}~~€~€€~€~€}€€~~€€}~~‚€€€~€~~~€~~€€~€~~~€~€~€}€~~~~€€€~€~~~€~~€€~~€~€~~€€~€~~€~€~€€~‚~€~~€~€~}~‚~~}€}€}‚€}€~€~€~€~€€~€€~~~~€~~~‚~€‚}€}€~€€~€~~~~}€€~€}~~~€~~€}€~~€~€~€~€~€~€~€~~€€~~€~~~€~€~~~€€~€~~}€~€~€~~€~€€~~~€~€~~~~~€~€€~€~€€}€~~€~€€€€}€~~€~}€~€~~€~~~€~€~€‚€~~}~€~€~€€~€~~~~€€~€~~~€}€~€~€~€€€~€~~~€~~~€}€~€~€‚€€~€~~€~€€~€~€€}€~~€~€~€~€}~~~€~~€€~€}€~~€~€~€~}~€€~€}}€€~€~€~~~€€}€~~~~~~€~€}€€~€~€}€~€~~~€€€}€€}€}€}€~€€€~~€~~~€~€~€~€€~~€~~~€€€€~€~~~€~€€~~~~€~€€~~€~}~€~€~€~€}~~‚~~~€}€~€~€~~€}€€€€€~~~~~~€~€~}~€~~}€~€€€~~€~~~€~}€€~€~~~~~€€€€€~€~~€~€~~€}€€~€~~~€~€~€€~€~‚€~~~~~€~€€~~~~~~~€~€~~~€€~~€~~€~€~€~~~~~€€€~€~~~‚}~€}€~€~€~~~}€}€€~€~‚€~€~}}€€€€~~€€~€}€~€~€~}~~€~€~€€}€~~~~€€€€~~€~~~€~€~}€~€€€~~~~€~€€€~€~~€}~€€~€~~~€}~~€~€~€€~}€~€~}~~~}€}€~€~~~€}~‚€€€}€~~€€€€~~€~~~~‚€€~}~€~€€€~~~€~€€~~~€}€}€~~€~€€~‚~€~~~€}€}€~€~€‚€}€€~~€€}‚€~€~~~~€~€‚~}~~}€~€~‚€~~€~€~€~€~~}€€€~~~~~}€}~€~€~~~€~€}}€~~€}€~€€~€€~€~€~~~€~~€€~~~€}€€~€}€~~~€€‚~€~€~~~€~€~€~}€€~~~~€~€€~~~~€}~€~}~~~~~}€~€€~€~~‚~~€~€}€~€~€~€~~~€~€~€~€~~~~€~€€€~€~~€€€~€~~~~€~€~~€~€€~~~~~~€€€~€~~~€€~€~~~€}~}€}€~€~~‚}€€~€~~€~~€€~€~~~~€€~~~€‚~€~€}€~‚€~~~€‚~~~€~~€~€~€}€~€€~~~~~}€~€}€€~€~~~€€~€~€~~€~€~€~€€~€€~~€~~~~~€~‚€€~~~~€~€€€~~~~€€‚~}€~~€€~€~}~~~€~€~}€€€~€~~~€~~~~€~~€€~€€~€€~}€~~€~€~€€€~~~~€€~}~€€~~~~€~~€~~}~€~~~€~€~€€~€~~~€~~~€~~€~~~~€€}~~€~€~~~‚}€}€}€}~~€~€}€}}‚~~€~€~~~€€~€}~~~€€~~~~€~€€~~€~~€}~€€€~€~€~~}€€~~~€~~~€~€€~~~}€}€~€~}€€~~}€~~~‚€~~€~€€~~€~€}€€}}€€~€~€~~€~~€€€~€~~€~€~€}€~€}€~~~~€}‚€€~€~~~€~€~€~~~€~€~€~~€~€~~€}€€~~€~€~~€~~~€~~~~€€}€~~}€‚~~€~€~~€~€~~~~€}€~€}€~€€~~~€~€~}€€~€~€~~~€€€€~€~€}€€€~~~~€~€€~€~~€~€€~€~~€~€~€~~~€~€~~~~~}€~€€~€~}~€€~€~€}~~~€€~€€~~~}€€€€~€~~~€~€€~€~~~€~€€€~}~~~€~€€~€~~}€}€~~€~~€€~~~~€~€~€~‚€~€~~~~€~~~~~}€~€~€~€~€€~~~~€~~€~€~~~~~€~€~€~€}~~€}€€~€}€~~~~€€~‚€~~~~~€~€€~~€~€~€~€€€€€~}~~€€€~€~~€~~€~€~‚€€€~~~~€}€€€~€~€~~~€€~€~€~~~€~‚€€~~€~‚~}€~€~€€~€~~‚}~~€}€~€~€~~~€~€~€}€~€~€~€}€€~€~~€~€~€}€~‚~~€}€~€€‚~~€~~€~~€~~‚~€}€€~‚}€€~€€~~~~€~€~€€~€~~€~~€€€~€~~~€~€€€€€~~~~€€~}€~~€€~€~€~€~~~~~€~~‚~~€~~€~€€€€~€~~€~€~€~€~~€~~~~}~€€€~~~~€~~€~€~€~€~‚€~~~~€€~~~€~~‚~~€~€~}~~€~€€€~€~~€~€€~€~€~€~~~€~~€~~€~€~~€}€~€}€€~~~~€~€}€}€~}€€~€~€|€~€}~€~€€~€~~~€}€€€€~€~~~~}€~€~€~€~€~}~~€}€€~€~~~€~€~€~~~~~€~€~~€~€~~‚~~~€~€~~€}€~€€€~€~~€~€~€~~€~~~~~~€~€~€€~€~~~‚~~€€~~~~€~€~€~€~€~€~€~~€~~€€€~}‚€~~€}€~€€}~~~€}€€€~€~€~€~~€~€}€~€~}€}€€~€~~€€€€~~~€~€~€€~~€}~~€}€~}€€}~€€~~€}€~~~€}~€~€~~~~€~~€~€~€~€~~~‚~€~}€€~}~}€~~€€€€~€~~~€~€€~€~~~}€€~€~~~€~}€~~~‚}~€~€~€~~€~€~~€}€~€~€~€€~€}€}€~}}~€~€€~‚€~€~~€}~~~€€~~€~~~€€~€~~€~~€€~€~€~€~~~€~€~€~€~~€~~~~}€}€€~€}~~~~€~~€~€~€~€~€~~~€~}€~€~€~~‚~~~€~‚€~~~€€~€~€}€~€~~~~~€€~~€~€~€€}€~~~€~~€~~€}€~€~~€~€~~~€€€~€~€~~€~~€}€~}€~~~~€€~€€~€~€€~€€~€€}~‚~~€~~}€‚€€~€}€~€}€€~~~€€€€€}€~~~€~€~~€}}€~~~~~€~€}~}~€~€€~€~€€~€~€~€~€~€~€~}~€~€~€~€€}€~€~~~~€~€~€}€€€~€~~}‚€€~~‚~~€‚~€~}€}€~€~~€~€€~€~~~€~€€€}~~~~€~~~€€€~~~~€~~~€}€~~€€}€~~~~~€~€~~~~}€~€}~~€}~€€‚~€~~~€}€€~€~€€~~~€~~~€}~€€~~€‚~~€~€~€€€~€~~~€~€~}~~€}€~€~€~€€~~~~~~€}€}€~~~~€€€~~~€~~€~}~€~~~~}€~~~€~~€€€€~~€~}€~€€~€~~€‚~~~€}€€}~€~€~~€~€~€~~‚~~~€}€~€~€~‚€~€~}€~~~~~€~€~€}€~‚~€}€~‚~‚~~€~€~€~~€€~}€~~~€~‚€€€}~€~€~€~~~~€€}€~~~~€€~~~~€~€€~€~€}€~~€~€€~€}~€~~~€~€~~€~~€}~€€~€~€~€~~€~€€~}~~€~€~€~€}~~}€~€‚}€~~€~€~~}€€€~}€~~~~~~€~€~€~€~~€}~€~€}€~€~~€€€~~€~~~~~~€~~€}€€}€}~~€}€~€€€~€~}~~~€~~~€}€~€€~}‚‚~~€~€€}€~~~€}€~€€~‚~€~~~~~‚€~~~€~~€€~€~~~€~€€€€€~€~€}€€}€~}€~€~€~€~~~~€~‚€€€~€~~€~€~€~€}€~~€~~~€~€~~~€~€‚€~€~~~€€€‚~~~~€~~€~€}€~~~‚~€}€~€€~€~~~}~€€~€~~€~~~€}€~€€}€~€€€~€~~€}€~}~~~~~€~€~~~~~€}€€}€~}~€~€}~~€~~€€~~€~€€‚€~~~€~€~€~~~~€~€}€~|€~€~~~‚~€~~€~€€€€~~€~~€~€~~~€~~~€~€~~€~€~~€~~~€€€€~~€~~€~€€~~~~€~€~€~€€~€€~~€~~~€~€~€}~~‚}~~}€€~€~€}€~€~~~€~€~~~‚~€~~€}€~~€~€~~€~~~€~€€~}€~~€~€€~€~~~€~~€~}€~€€€€€~~~€~€€~€~~~€}€€€~€}€~~~~~€€~€~~~~€~~€~~€~€~~€~~€}€~~€~~€~~€~~€€€}€~~€€€}€}€~€~‚€‚~~~€‚~€~~~~€~€€‚~~~€}€€~~~~~~‚~€~€~~€~~€~‚€€~}~€~€~~~~€~€€€‚~~€~~}~€€€€~€~~~€~~€~~~~€~€€~€~€~€~€~~~€~€~~~€~€€~~~~€~€}€}~~€€~~€~~~€€€~€~~~€}€‚}~~€~€~€€~€~~‚€€~€~~~€~€€~€~~~~€~€~€~~€~~~~€}€~~€}‚€~~}€~€€€~€~~€€~€€}€€~€~€€~~~~~€€~~~~~~~~}}€€}€~~~‚~}€~€~€~€~€~€€~€~~~€}~€€€~~~~~€€€}€~€€~€€}€~€}€~~€‚}€}~€~~~‚~€~}€~€€~}~~~€~€~€~~~€~€‚~€~}€~€€€~€~~€~€€~€~€}~€~€~€€~€€~€~€€}~~€‚~€€€~€~~~€~€€~~~~‚~~€~€€}€}€~~~~~~~€}€€}€~~~€~€~~~~~~~~€~€}€~€~~€~€~€~}~}~~€€~€}€~€~€~~~€~€~€}€~~}€~€~€}€~~~~€~€€~~€€€~€~~€€~€~~€~€~€~~€}€€€~€~~€~€~~€}~}€~€€~~€~€}€~€~€~~€€~€~~~€~€~€~~€~€~€}~€~}~~€}€€~€~~}€‚€€~€~~€~€€€~€~€~~€~~€~~~~€€~~~}€~€€€~~}€~€€~€}~€~€~~€~~~€~~~€~€~~€~€~~}€~€~€€~€€€~€~€~~€~€€~€~~}€€€€~€~~~€~~~~€}~€€~€~~}€~€~€€~€}€~€}€~~~€~~€€~€~~€~€€€~~€~€~~~€~€~€}€€~}~€~€~€~~~~€~€~~€~~~~€~€~€~~€}€}~€~€}€€}€€}€~~~~€~€~€~€€€~~~}~€~€€~€~~€~}€€€~~€~~€}~€}‚€~~€~€~~€~~€~~~~€}€~€~~~~€~€~€€~‚€~~~~€~€}€}~~~€~€€~€~}€~€~~~€}€~€€~~€~}€~€€~~~~~~€€~€~~€~€~€~~€~€~€~~}€~€€~€~~~€~€~€~~€~‚€‚~€~€~€~}€~}€~€€€~€~~~€~€€~}€~~~~€~~~~~~~€}€€~€€~€€~~€~~~€}~~}€~~~~€~‚€~~€~€€~€~€~€~€~€~€~~~€~~~€}~€~€~~}~€~€€€€€}€~€~€€}€€~~€~~~€~€~~€~~~€~€~~~‚€‚~€€}€~~~~€~€€~€~~€~€€~~€~~~€€~€~}€€€~€}~€~€~€~~€}€~€€~€~€€~‚~~~€}€~€}€‚€€€}~~€~‚€~~~‚}~€}}€}~~€}€~€€€~€~~€~€~€€}€~~~€~€~€~~~~~€~}€}~€~€~€~~€~~}~~~€}€~€€}€~€~€~}€€~~€}€}€~€~~€}~€~€~€~€~~€}€~‚~~~~~‚~€€}€~~~€~}€~~~€~€€€~}€}~€~~€~€}€~}€~~€€€~~~€~€~€~~~~€€~€€}€~€}€}~~€~}€}~€~€~~~~€~€~~~€~~€€~}~~~€~€~~€€~€~~}€€€€~€~~}~€~€~~€}€~~€~~€‚~}€~~~}€€~€~€~~~~€}€~€~€~€~€€€~€~€}€~€~~€}€~€~€}€~~~€~€}~€~}€€~~€}€~~~€~€~€~€~€€~€~~~~€~€€€~€~~~€€~€~}€€~~~€€~€~~~€~~€€€}€~~~~~~~€~€~€€~€~€~~~€~~€€€~~~~€~~€€€€€~€~~€€€~~€~~€€~€~~€~€€€~€~~€~~~‚~~€~€~‚€~}~€~€~€~€~€‚~€~}€~~~€~€~€~€}~€~~€}~~~€€€~}€~~~€~~€~€~~€~€€~€~~~€€€~~}€€~€~€}~~€~€~€~€‚~€}€~~~€~~€€~€~~~~€~€€}€~€~~~€~€}~‚€~~~‚~€€~€€~€~€~€€€€~~~‚}~~€€}‚€~‚~€~~€~€€€~~}€}€}}€~~€~€~~~€~~~~~~~€}~~€}‚€€€~}€€~~€~~€€~~~~€}~€~~€~~~}~€~~}€}€}~€~€~~~}€~~~~€€€€€}€€~€~€~~~~€~€€~~~~€}€~~€‚~€~~€~~€~€}€}€~€~€~~}€~€~€~~}€~€}~€~€€~€~}€~~€€€}€~€~~~~€€€~€~~~€~€}~€~€~€€~€~~~€~€€€~€~€~~€~~€~€€~€~~~€~€€}€~~€~€~~‚~~~€~€~€~€~€~~€}€~€€}€}~€~~€~€€€€~~~~€~€~€€~€~~~~}€~~€~€€€~€~~€~}€~€~€~€~~~~~€~€~€€~~€€€€}€~~}€~€~~€~€~€€~~~~~~‚~}€~€~~~€€}€€~€~€}€~€~~€~€}€€~€~~~~€~€€~~~€}~€€€~€~€€~€~€~€€~€}€~}~}€~€~€~€~€€€€~€}€~~~€€€~~€~~}~€€~€~}~€€~€~~~€~€~‚€‚~€‚}~€~€€~€~€~~}€€€~€~~}~~€}€~€€~€~~}€~€‚~~~~€~€}~~€‚~€~~€€~‚€~€~€~}€€~€~~~€~€~€}€~€~€~~~~~€~~€}€~~}~}~€}€~€~€~~~~€€€~~~~€~€~€~~~~€~‚~€€~€~€~~~€€~€~~~€~€€~~€}€~€~~~~~~~~~€~€~€~~~~~€~€}~€~€€}~€~‚€~~€~€~€€~~~~~~~~€€€~€~~€~€€~€~~€~€€~~~€~~€€~€}€€~€€~~~~~~~~€~~~€~€~€}€~~~€~€€~~~~~~‚~~€}}€€}€~€~}€}~€~€~€~~}~~€~€€~€~‚~~~€~€~~€~~~~€~€€~€~~~~~€~€~~~€~~€€€€€~~}~€€~~€€~~~€~~~€€€€~~~~€~~€€~}€€~~€~~€}€~€~~€~€~€€~€}~~~€€~€~~~€~€~~~€~€€~€~~€~€€~€~€~~€}€~€~€€~€~~~~€€€~€}~€~€€€~€~€~€~~‚~~€€~~~€}€}~€~€~€~~}€~€~€~€~~€~~~~€~€~~~€~€~€~€~€~€}€~~€~€~‚€}€~~~~~€~~€~~~€€}€~~€}€~~~~€€€}~€~~€€~~~~}€~€€~‚~€~~€€~€~}€~€~€~}€~€~€~€~€~€~~~~~€~€~€~~~€€~}~€~€~€~€~~~€€€€~€}€€~~~~~~€~€~~€~}€~€}€~€~€~€€€}€~€~~~~~}€‚€~~~€~€~€~~€~}€€}€~}~€~€~}€~~~€~~€~~}€~€€€~€~~~€~€€~~}~€~€~}€€~€~~~€~€€~~€~}~~€€~€~€€~€}~}~€~~€~~~€~~~€€€~€}~~}€~€‚~€~}€~~~~€~~€~€€€~€~€~€€~€€}€}€~~}}€~€~€~~~€~~€~€~€~~~€€~€}€~~€€~~~}€~€€~~€~€€€~~€~~~~‚€€~~€~~~~€~€~~€~~€‚~~~~€}€~€€~~~~~€~‚€€~~}€~€~}~~€~€~€~~~~€€~€~~~~~~~~€~~€€€~€~~€~€€~€~~~~‚€~€}~€~€~€€~~~€€~~~€~€~}€~€€~}€~~~€~€~€~~~€€€~€~~€~€~~€~~}~~€~~€~€}€~‚~~~~€~~€€~~~}~€~€~€}~€€}€~~€€}€~€~~€€~~€€€}~~€}~‚€€€~€~~€~€~~~€~€€~€~€}€~~€€~€~€€~€€}€€~~~~~€~€€‚~}~~€}~€€}€~~€~~~}€~€~€~‚€€~~€~~~}€~€~€~~~€~€~€€~~€~~€~~€€€~€~~~~~€~~€~~~~€~€}~~~€~€€€~~~~~€~€€€~€~~~~€~€€~€~~€~€~€€~€€}€}€~€~~~~~€~€~€~~~~~€}€€~}~~~€~€~~~}€€~€€~€~€~€~€}~~~~€~€~€~~~~€€~~€~}‚~~€~‚‚€€~~~€~€€~~€}€€~€~~~~~€€~€~~~‚~€~~€~€}€~}€}€~€~€~€~~~€}€~€~€~~€€€~€~~~}~€‚~€}€~€~‚~~}~€~€~€€€~~~~€€~€~}€}€~~~€}€~€~€~€~~~€}€~€~~~€~€~‚~€~~~}€~€€€~€|€~~~~}~€€€~€~~€~€€}€}€€€~~~€~€‚~€~~~€~€~€}€~~~€~~~€}€~~€~‚~€~~~~~€~€~~€~€€~~~~€‚~~€€~€€~€}~~€~€~€~€}~€~~€~~€€~}~~€~€€€~€~€~~~~~€~€‚}€~~~€~€~~€}~‚€~€~~~€}€~€€~~~€~~~~~€}€€}€~€€~~€~~~€~€~~€}~€€€~~~~~€~€~~€~€€~~€~€|€€~‚€~€~~€€€€€€€‚€~~~€~}€~€€}~€~~~~€~€~~~€~}€~€}~~~€€€€~€}€~~~€~~~€~€}€~~~~€~€~€~~}€~~€~~€}€~~~€€€€~€~~~~~~€~€~€~€€}€}‚~~~}€~€~€~‚~~€€~€~€~~~€~€~€€~~~~}€€€€~€~€~~€}€~~€~~~~€€~€}~~~€€‚}€~~~€}€€~€~~~€}~€~€~€~~~‚€~}€~~€}€~~~~€~€€~}€~€€}}~~~€€~€~€~‚€~€~~~€}€}€€}€~€~€}€~€~€~~~€~~€€€~~€}~~€~€€~€~~~€~€~}€~~€~€~€~~~€~€€€~€~€~~€~~€}€~€~~‚€~}€~~€~€~€~~€~~~~~€~€~~~~€~~€}€~}€€~€~~~€~€€€}€~€}~~~‚~~}€€}€~~‚‚~€~~€€€~€~~€~‚€€€~~€}}‚~€€~€€‚~€~~€~€~€€€€~€~~~€~~€~€~€~}€€~€~~€~€}€€~€~~~€}~~€}€~€~~~€‚~€~~~~~~€~€~€}€~€~}€~€}€~€€€~~€~€~€~~~~~€~~~}~€€‚~€~~€€€~~~~€~‚}~€}€}€}~~€~€~€}~€€~€}~€}€~€~€~€~~€~~~€~€€€~~€~~~~€€€~€~€~~€~~€~€~~€~~€€~€~~€~€€€€~€~~~€~€€€}€~}~€€~€~~~~€‚€~€~€~€‚~€€~€~~~€~~€€€~€€}€~~‚~~€~€€€~~€~€~€~~€~€€~€}~€~~€~€~~€~€€~€~~~~€€~~€~€€€~€~€€}€~~~}€~€€~~}€~€~€€~€~~~~‚~€~€}€€~~~‚~~~€~€€~€~~€~€~€€‚~€~€~€~€~€€~€~€}~~~€~€€~€~~€~€~~€~~}~€€~~~€~€~€~~€~€}€€€~~€€~€€~€~€~€~~€~~~~€€€}€~€€~€}‚€~~‚~~~~€~~€~~~€~~€€~~~~~€~~€~€}€~~€~€~€€~€€~~€~~~€~€~~~€~€}€~€~€~€€‚~€}€~~~€€€~~€~€~€~€~€~€~}~~€~~€€~}€~~€~~~~‚€~~€~~€~~€~~€~~~€‚~~€~~~~€€€~~~€~€~€€~~~~€~}~€€}€~~‚€€~€}€~~€~€€~~~€~€€~€~€~€~€~€~}€€~€~~}~€~€~€~€~~~~€}€~~€~€€€€}€€~‚€~€~~~~‚€‚}€~‚~€~~‚~~‚~€€~€~€~€~~€€€~€~~~€~€~€€}€}~~€€~€}~€~€~€}€}}€~€€~~€~€~~€}€~~~€€~€}~~€~€~€}€~€€~€~~~€€€€~€~€}€€‚}€~~€~€~~}~€~~€}~~~€‚}€~‚~~~€}€~~~€~€€~€~€~€€~~€~€~~~~€~€~€~~€~~~~}€€€~~~~€‚€‚~€€~€}€}€~~~€~€€~~}~‚€~~‚~~~€}€~~€~€~~~€€€€~€~~€~€~€~€€~€~€~~€~€~~~~~~‚~€~~~€~€€€€~~€~~€~€}€~~~~}~~€~€~€€~}‚~}€~€€‚~€~~~~~€~€€~€~~€~€€€€~€~~~€~€€~€~~~€~€~€~€€~€~}~~€}€}~€€€€~€}~~€~€€~€~~}€~‚€~}~~€~€~~‚~~€€‚~€~€}~€€~~~~€~€€~€~~}€~€~€~}~~}~~~}€}~€~€~~~€}~€~€€~€}~€€~~€~€~~~}~€}€}€~€~~~€~€€~€~€~€}~€~~€~~€~~~€€€~€~~~~€~€~€}~€~~€‚~€~~€~€~€~}~€~~€~€~~~€€~€~~}€~‚€~~~~€~€~~~}~~€}~€~~~€€€~€~~~€~€~€}€~€€~~~~~€€‚~€~€~~~~€~€~~€}~~~€~€}€~€~€~~~~€~€€€‚~€~~€~~€~~€€~€€}€~€~€€~~~~~€~~~€~€~}€}‚€~€~~~€~€€~~~~~~~€€~€€}~€~~~}€€~€€}~~~~€}€~€~~€~~€€€~€~~~€~€~€~}€~‚€€€‚~€}~~~€€~~~~~€~}~~}€}€~€~~~€~~~€~€€~~€~€~€€}~~€~€~~€~€€~€€}€~~€~€~~~€~€€~~~€~~€}€~€€~€~~~}€€~~€~~~€~€€~€~}€~€€}€~~€~€€~€~€~~€~€€€~€~€~~~~~€~€}€}€~~~~~~~€~~€€~€€}€€}€€}€~~‚~~~€~~~~€~€‚~~~€}€~~~‚€~~}}‚€~~~€~€€~~€}€~~~€~€€~~€~~~€€€~}€~~€~€~~€}€}€~€~~~€~€€~€~€€~€~~~‚~€€~€~~~~€€€€~€~~~~€~€~~~€~~€~~~€~€€€~~€~€€€€~}~~‚~~~~~€~€~~~€~€~€~€}}€}€~€~~€}€‚}~€~~~~€}€~€~}€~~~‚}~€~€€‚~}€~€~€}~€}~~~}€~€~~‚€~~€~€~€€€~€~~~~}€~€~~€~}~‚~€€}€~~€~€~€~~€€~€~€€~‚~€~€~€€}€~€~}€~€~}€~€}~~~~~€}~~~}€€€~€~~€~~€~€€}~€~€~~€~€€~~~}€~€€€~€~~€~€~€~€~~~‚~€~~~€€~€~}€~€€~€€}~}~‚~~€~€€~€~~€}€€~€~~€€~‚~~‚~}€}€~€~~~~~€~€~€~€~~€~€€~~~}€~~€}~~‚~~~€€€~~~~€~~~€~€~~}€~~€€€~~€~~€~}€~€€€~€~}~€~€~€~~~€~€€~€~~~~€€~~€~~~€~~€~~€€€}~€~~€€~€~~€~~€~€€~€€€~~~~€~€€€~€~€}~€€~€~€~€~€€€~~~}€€€‚}€~~€~~~~~€€~€~~€~‚€~€}}}€~~}€~€€€€~~€~€}~€~~}~~€‚~€}€~€}€~€~€€~€~~~€~‚}€}€‚~€}€~~~€~€€}€~~~‚€}€~€~€€~€~~€€~‚~€}~~}€~~€~€€~€~~€}~€€€‚~€}€~}~~~€~€€€~€~€~~~‚€‚}€~€~€~€€~~€~€~€€~~~€}€€~€~~~~€~€}}~~€~€€~~~€~~}~‚~~€€~~€€}€}€~~€~€~€€~~€}~€~€€€€~€~€~~€~€~~~€~‚€€~€~~€~€€~~~€~€~€~~€~€€~€}€~€€~~~~€~€~€}€~~€~~~~€~€~}€}~~~€~€}€~€~}€~}€}€€~€}~~€}€€~€€}€€~€€‚€~€~~€}~€~~€~~}~€~€€€€~€~~~€~~€€~€€~€€‚€~€~~~~€~€~€~~~€€~~€~€€~~~€~€€}€€~€€~€~€~~~~~}€~~~~€~€~€€€~~€~€~€~€}€~€~€~~~€~~€~~€€€}~~€}~€€€€~~€~€~€€}~€~€~€~€~€}€~~€~~€~€‚}€~€}€~€€~}€~€~€€}‚€~~~‚~€€€~€}~~~€~€}}~~~~€~~€~€€}€€~€}~€~~~~~~~~€~€~~€~€~€~~€~‚€€}~€~€}€~~~~€~~€~~~€~~€}~€}€~~€~~€~€~€€}~‚~~€~~€€~~€~~~}‚€}~€~€}€~~~}€}€€€€~€~€~€~~~~€~€€~€~€~~}~€~€~€}€€~€€~~€~€€~€}€~~~€~€€€}~~~~~€‚~~}€€}‚€~}~}€~€€€~€}€~~€~€~€€~€~€~}€~€}€~~€}€~~~~€~~€‚}€~‚€€~‚~~~~€€€~€€~€~€}€}~~~€~~€€~~~~~~€~~€~€€‚~€~~€~}€€~€~€~}~~}€~~€€~€~~‚~~€€~€€~€~}€}€~€~€€~€€~}~€‚~€~~~€}€€€~€~€€~~€€€~}€~€~€~€~€~~~~€}~~€€}~€~€~€~€~~€€~~~~€~~€}‚~~~€}€~~~€~~~~€‚~€~€€}€~~€~€~~~€~€~€~~€~~€€~~~~}€~€€€}€~}~~€~€€€€€~€~€~~€‚~€~€~~€~€~€~~~€}€~~€~€~€~€~}~~~€€€}€~~~€~€~~€~~‚~~~~€~€€~€~}€€}€}~~€~€€~€~€~€}~~~~€€€~€~~€}~€}€€€~€€~€~~~€~€€€~€}€~€~~~€€~~€}€~€~€~~}€~€‚~€€~}€€}€~~€~€€€€~€~~~~€}~€~€~€~~}€~€€}€€~}€~€~~€€~~€~~~~€~~€€€}€~~~}~€~€€~€~€}~€~€€~€~}~€~€~€}€€~€~€~€€~€€~€~€}~~€~€€€}€~~€~€}€~€~€~}~€~€~~}}€~~~}~‚€€€~€~€~€~€~€~€~€€~~€~~~~~€}€}}~~€€€~€~~€~}€~€}€€}€€~~€~~~€~~€~€~€~}~€}~€~‚€€~€~€}€€~~€~€€~€~~}€~€~~~~~~}€~~€€€~€}€€}~€}€€~~€}€~}€~€~~~~‚}~€~€€€~€~~€}€~€~€~€}~~€~‚~~~~~€€~€~€}~€€~~€~~€€~€~~}~~~~~€~~€~~~€}€~~€~€~€€~€~€~€€~€~€~€€€‚~€~€~~~€~‚~‚~€}€~€~~€~€~€~€€}€}€}€}~~~€€~~~~€~€€~~~€~€~~~~~€~~€€}€~€~~‚€€~€~}€~€~‚€~~~€‚~€}~~€~€€~€€~~‚~€€~~~}€~~€}€€}€~~~€~€~€~€~}‚€~~€~€€~~~€~€€}€~€}€€~€~€}~€€~~€~~~~~~€€}€~€~}~€~€~€~€~~~~~‚€€~}~~~~€~€€}~~~~€}€€~€~€~€‚~~~~€~€€€~€~~~€~€~€€}€~€~~€~~~}€~€€~€€€€~€€~€~€~~€~€€~€}~€~~~~€~~€~~~€}€~€~}€~~}€~~€€~€~€€‚~€~~~€}~€~€~~~€~~€~€€~~€~€~€€}€~€~€~~€~€~~€~~~€~€€€~}~~€~€€‚}€}€~€}€€~}€~~€~€~}€}€~~~€‚~€~€€‚€~~~€~€~~€~~~€~~~€€}€~€}€~~~~€~€~~~€‚~€€~€~~~€~€€€€~€~~~}~€}€}‚€~€~€~~~€}~~€}~€~~€€~€€~€}€~~€~€}~€‚}~€~€}€~€€€~€~~€~€~~€}~~~~~~€~€€€~~~~€€€~€~~~€€€~€~€}€~‚€€€~€~~€~€€~€€~~€~€€~~€~€€~€~}~€}~€~€~‚~€~€}€~€€}€€~€}€~€~€~~€€€€~€~~~€€€~~€~~€€~€}~~~€~‚}€€~€~€}€~~€~€~€‚€~€~}€~€}€~~€~€~€~€~€€~€~~}‚€‚~~~€‚~€}~€~€~~€}€~€~~}€~€~€~~~‚€€€€~€€}}€}‚€~~€~~€~€~€~~~~€~~€€~~~~~€~€}€~}€~€~€€~€€}€~€}€}€~~~~€€€~~~~~€}€}€€€~€}~€}€~€~~~€~~€~~€€~€~~~€€€~€}}€~~~~€~~€~€~€€~~~~€~€~€€~‚€~~€~~~€}€~€~€~~€~€€€~~~~~€~€€~~€~~~~€€€}€~~€~€€~~~€~€~~~€~€~€}}€}€‚~~€~~€~€~}~€€€~~~~}€~€~€~~~~€~€~€€~€}~~€~€~‚€€~~~€‚~~€}~€}~€~€~~~€~€€~€€~€~~}}~€~~€}~~~~€}€}€~}~~€~€~€€~~€€~}€~~}€‚~~‚~~~€€~€~~}€~~‚}€€~€€~€~€~~€~‚€€€}}€~~~~‚}~€~€~€~~}}€~‚€}}~~€~€€€~€~~~~~€~€€~€~€~€€~€}€}€€~‚€~~~}~€}€€~‚€€~€~~~~~€~~~~~~~€}~€€€~}€~~~€~}~~~}€~~~~€~€€€~€~}€€~€€~€}€}€}~~€~~€~~~‚~~~‚}€~€}€€~€}€~€~}}~€€~}€~~~~‚€€~€~~~€€‚~€~~€~€€~€~~~~€~~€~~€~~~€~€~€}€~€}}~~~~~€€~€~€}~~€}€€~€€€~~€}~~€~€€~€~€~€~€€~€}~€€~~~‚~~~~€~€€}}€~€~~~~€~~€€~€~~~~~‚}~~€~~€€€~€~~~~€~€€~€~~~€~€~€~}~€€€~€~~~€~€~€€~€~}€~~~‚~€~€}€~€~~€~~}€}‚€~~~€~~€€€~€~€~~€~€~~€~~~€~~~~€~€€€€~€~}€€€~‚~€~~~€€~~€~}€~}€€~~~~€~€€€~}~€~€€~€~~~€~€}€~}€}€€~€~~€€~€~~~€~~~€~~~€~~~~~~~€€€~€~~€~~€~€~~€~€~~€~~€€~€~~}€}€€~~~€‚~€~~€~€‚~€~~€~€€€‚~€~~€~€€€~€~~€~€}€~€~~~}~€€€~€~~~~}~~€~}€~}€~€~€~~€}~€~€€~€~~~€~€~€~€~€~€~~~€~€~€€€}~}€€~€~~€~€~€~€~‚~~€~€~€~‚€~€~~}~~~~€}~€€~~}€~~€~€~€~€€}€‚~~€~€~€~~~~€~€€}€~~~€€~}€~€€~€~}€~~€~~~€~€~~€~€}€€}}€}€}~~~€~€€~€~~€~€€‚~~€~€~€~~~€€€~€~~~€~~€~~€€~€€~€~~~~~~€}~€}}~€}‚~€~~€}~~€~€}€~€€~‚€~~~~€€€~~~~€~€~€}€~€~~‚€}~€~€~€€~~~€~€€~€~€~~~‚€~~€~€~~~~~€€€~€~€€~€€~€~€~€~~€}~~€}€~~~€~€~~~}€€€€€~€~€~~€}€~€€€~€~~~€~€}€~€~~~}€~‚€€~€~€~~€~€~~}€~‚€~}€~~€‚~€~~~~€~€~~}~}€}€~€~€}~}€~€~~€€€~~€}€€~€}€~~~€~€~~€}€€€~€~~~€~}€~}~€~€~€~~€}€~}~~~€}€~}€~~~~€~€}~€}~~€}~~~~~€€~€~~~€~€~€~~€€€~€~~~€~€€~€~~€~~~~~€~€€‚~€~€~€~~~~€~€€~~€~~~}€~€€~€~~€~‚€~~~~~~€‚~~~€~€~‚~~~€€~€~~~~€}€~‚}€~€~€~€~~€~€~€~~€~}~~~€€~€€}~€~~~~€}€}€~~~€}€~~~~~€~€~€~~~€~~€€€~€~€€~~~€€~~~€~~~€~€€~€~~~~}~€~€€€~~~€~€~€~€}€~~€~~~€~~€~~€~}€€}€€~€}€€~}€~€€€€~€}~~‚‚~~€~~~€~€€~€}~~~~‚€€€~€}€~€~€€~€~€}€~~€~~~€~~~€~}~}€€~€~~€~€€€~~~}€~€€‚~~~€~€~~~~€~€~~€€~~~~€€~€~€~€~€~~~€~€€~~~~~~~~~~~€}€}€€}€€}€~€€}~~~}€~}~~~~€~€€‚€~~~€~}€€~€~~€~€‚~~~‚~~~~~€€~€~~~€~~€~}€~€€~€~~€~€€€~€~~~€~€€~€~~€~~~~€~~€~~€~€~€€~€}~~}~€~~€~~‚€€~€~~}~€~~~€~~€~~€~€}€~€€€~~€}~~€~~~~€€}€~€}€}~~‚~~€~~€}~~~€€}€~~€~~€€~€~€~€~€€€~~~€~€€~€~€~~~~~€~€€€~€}€~~~€}€~€~€€~€~~~~€~~€~}~~~}€~€€~}€~~€}€€~~~€~~~~€~€~€}€€}€€~€~€~~~€~€~€~~~€€~€~~~€~‚~€‚~~€~}€‚~~~~~€~€~€€~€~~~€€~€~€~€~€~€~€~€€~~~‚~~€~~€~€}‚€~~~€~€}€~€}€~~€~~€}€€~€~~}~€}€~€~}~~~€€~~‚~~€}~€€~~€~~~€~€€€‚~€~~}~€}€~~~~€~~€}€~~~~€}~€~€~~~~€~~€€~€~€~‚€~~~€~~€~}€~€~€~~~~€~€~~€€~~~€~€~~€~€€~€~}€~€€€~€~~~€}€~€~€€~~~~€~~€€}€~~~~€~~€~~~~€€}~€~~€~€€€~~~~~€~€~€€‚~€}€~~~€€~€~}€€~€~€~€€€€}€~}~~~€~€}€~~~€~€~~€~~~€~€~€~€}~}~~~€‚}€~€}€~€~}~€~€€~}~~~€~€€~€~~~~~€~€}~€~€~€~~~€}~~~}}€~€}€€€€~~€~€~~€~~~€~€~~~~~€~~€~~€~€~€€€€‚~€~~~~€}€€~~~~€€~€~€~€~€~‚}~~€~€~‚~€~~~€}~~€~€€~€~~~~€}€€~€~~~€~~€~~~€~~~€~€€~€~~~}€}€~€~~€~~~€€€€~€}~~€}€~€}€~€€~~€~~~~€~~~}~€€}~~€~€}~€~~€~€}€€‚~€~~~€~€~€}€~~~€~€~€€~~€~‚€~€~€€~~‚~€}€~€~~€~~‚~€~~€~~€€~€~~€}€~€€~€}€~~€~~€€~€~€~~~€€~€}€~~~€€€~€~~~~€~~€~€‚~€~~€~€€~~~€}~€~€~~~~€~~~}€~~€~€~€~~~~€~€€~~€~~}‚~€€‚~~~€~~~€~€~€€~€}~}€€~}€~‚€~~€~~}€}~~~~€~€~~€€~€~~€€~€}}€}‚~}€~€~€~€~~€~~~~~€~~€}€~€~€~€~~~€~€€€~€}~€~€~€€~€~~~€}€~~}~€~€~~€~€€~€~~~~€~€}€}€}€~€~~~€€€~~~~€~~~€~€~~€}~~€}~€~‚€~~~€}€}€~€~€~~~€~€€~~~€~€~€‚~~~~€~€~~~~~€~€~~€~~€€~€~€~~€~~~‚€~}~~€~€~~}~}€~~€~~~~€}~€~€€~}~~€~‚€~}~~€~~€€€€~~~}€~~€~~~}~~€~€}~€~}~€~€€~€~€~€~‚€€~~~~}~€€€~€~~~€€}~€~}€€~}€€~€~€~€~~€~€€~€~~~€~~€€€~~~‚€€~€~~~€~€~}~~~€~€}€~}‚~~‚~€~~€€~~~~€~~€€}~€~€~€€~€~~€~€€}}€~~€€~~~€~€€€~€~€~~€~€~~€~~€€~€~~€~€~€~}€~€€~€~~€~~~€‚€~€~€}€~€~€€~‚~€~}€~€~€~~€€~}~~€~‚~~~~~€~€~€€}€}€~€}~€~~}€~~€~€€~€~~~€~€~~~€~€€~~€}€~~€~~€~€~€~~€~€~€~€}~‚€€~€~~~~€}~€}€~€~€}~€~€€~€~€~€~}€~~~€€~€~€~~~~€€~~}€~€€~€~~€~€~€}€~€~€~~~€~€€€~}~~‚~~€‚~~€~€}€~~~}~~€‚€€€~}€~}€€~€~}€~~‚~~€~€€~~~€~€~~~~€~€}€~€€~€~}~~€~€~€~~}€~€~€€€€~~~~~‚€~€€}€€~~€~~‚€€~€~~€~€€}€~~~€€€€}€~~~‚~€~€}}€~€}~~€~~~~~€~€}‚€~}€~~€~€€~}€~~~~€~€~€}~~~€~€~€€~€€~~~~~€‚~€~~~‚~~€~€€~€~~~€}€~€~€~€~~~~~~~€}€~€~~~~€~€~~€~€~€~€~‚~€€€~€~~~€~€€~€~~~€~€}€~~€}€€~~~~€~€€€~€~}~€~~€}€~€€~}€}€~~~€~~€~~€~€~€~€}~€~€~~€~~€~‚~~~~€}€€€€~~€~~€~€~~~€~€€~~~€~€€€~~~€~€~€€~€~€~~~~~~€~€€€~~}€~€€€~€}€~€~‚~~~~€~€€~‚€~~~€~€~€~€~~}~~~~}€~~€~€€€~}~€~~€~~€}€}€~€~~~~~€~~€~€~~~~€~~€~€~€~€}~€~€€}€~€~~~~~€~€~~~€~€~€€~€~€}}~€~€€}€~~}€~€~€~€~€€~€~~~~~~€€~€~€~~~~€€€}~~~~€€~~~~~€}~€~~~}~€}€~€€~~€}~€€€€~€~~€~€€€~€~~~€~€~€~€~~€~€€~€€~€~€}€‚~€~~~€€€~~€~~€~€€~~~~€~€€~}€~€€~€}€~€~€~~~~~€}€~€~~€€~€~~}€~€€~€~~~~~~€}€~€}€~}~€~€}€~~€}€~€€~€}~€~‚€~~~€‚~€~€~€}€~€~~€~~€€€~~~~€~€}€€}€~€}€~~~€}€~€€~€~}~~~€€€~~~€~€}€~€€~~€~‚€~~€€~€€}€}~~~€‚~€€}€~~}~€€€€~€~}€€~€~~€~~€}€~€~€~€~~~€}~€~~€€~€~~~~‚€~€}€~~€~€~~€~€~€~€~~~€~€€~‚€~€~~~}€~€‚~~~~€~€€€~~~~~€~€~~~€~€~€~€~€€~€~€~€€~€€~€~~€}€€€~€~}}€~~€~€~€€}€~~€€~€~~€~~€€~~~~~€~}€€~}€~~€~€€~€~€~~~‚~~~€}€}€~€~€~€€€~€}€~~~€~€~€~~€}~€~€€~€~€~€~~~~}€}}€~€~‚~€}€~€~~~€~€€€€~€~~~~€~~€}€}€€~}€~~€}€~~~~~€€€~€~~~€€€~~~~€~~€~€€~€~~~~€~€}€~€}€~~€~€~€~€~~~€€€~~€~~~€~€‚~€~~€~€€€~€~€~€€~~€~€~€~}~€~~~€~~~~€€~€~~~€~€~€~~~~€}€~€€~€~€~€}€€}~€}€€~€~~€}€~~~~€~€€~}~~€€~€}~~€~€~€~€€~€~~~‚€}€~€€€~€~}€~}~~€~€~€}€}€~~~~€~€~~€~€~~~€~€~}€~}~€€~€~~€~€€~€~~~€~€~€€}€~€~€~~~~}€~~€~~~€~€‚~€}~~~€~€‚€~€~~}€€~€~~€€}€€}€~€~€~}€~}€~~~~~~€~~€~~~~€~€€~€}€}€€}~€}€~~~€}~€~€~~~€~€~€€~€~€~~~~€€~€~~~~€~‚€€€€~~~~€~~€~€€~~~€~€~€€~~€~€~~~€~€€€~~~}}€~€~€}€€~~€~~€~~€~€~€€~~~€~‚€€~~}}€~€€~€~~€}€~€~~~‚€}€~€~€~€}€~~€~€~€€€‚~~€~~€€€~€~~€~€~~~~€€}€~€~€~€€~~€~€€€}~€}€~€~€~€‚€‚~€~~~€~€~€~~€~€€€€~}~~~~€~€~€€~~€~~€~€~€~~~€~€~€€~€}~€€~€€~€~€~€~~€~~€€~~~~~}€~€€}€€~€~~~~~€€~€~€~~~€~~€}€~€~~~~€}€~€~~€~~}€}€}~~~€~€~€€€~€}~€~~~€~~~€€€~€~~~€~€~€~€€}€~~~€~~€~~~€~~‚€€~~€~~€~€~€€€~~€}~€~€€~€~€€~€~~}€~~€€‚}€€~~‚~~~~€~~€}€€~€~€}~~~€~~€~€~€~~~~€€~€~€}~~~~€~~€~€~€~~~}€}€~€~~€~€€~}€€~~€€~€~~~€€€€~€~€~€}‚~‚~~€~€€}~~~€~~€~€~~~~€~€}€€}~€€€}€~~€~€~€}€~~€~~€~€~}€~€€~€€~€~€~€~€~€€€~€~~€~€~€~€~€~~~~~~‚€~€€}€€~€}€~~€}~€~~~€~~~€~~€~€~€~€~~€‚~€~€~€€}~~~€€€~€~€~~~€~€€~€~€€~€}€~~€}~€€€~€~~~~€€~€~~~~€~~€€~}€~€€}~€}‚€~~~~€~€}€~~~~€€€~€}~~~€}€€~€~~€}€€€~€~~€}~~€~~~€~}€~€€~€}~€€~€}€€}€€~€~€~~~€~€€~€~~~~€~€}~€~€€~€~~€~€€~~~€~€€€~~~€~~€~~€~~~~~~€~€~~€~~€~~~€€€~~~€€~€€~€~€~~~‚~~€~€~}€~€€€€}‚€€~}~~~~€~€}€~‚~€~~~€~€€~~€€}€~€~€€~€€~}€‚~~€~€~€~~~~~€}~€€€€~~€}~€€}~€~~~‚~€}€}~~€~~~}}€~€~~€~€€~€€~€~~€~€~~€~~~€~€€€€€~€~~~€}€~€~€~€~~~€~€~€~€}€€€~€}€€~~~~~€~€~€~~}€~€~€~€€}€€~€}€~€~€~~~‚~€~€€~€~€~~~€~~€~~~~~€€}~€~‚€€€€~€}~€~€~€}€~€~€~~~€~€~€€~}~~~€€~~}~€€~€~€}€~€~€~€€€~~~€~~€€~€~€~~€~€}€~~~~~~€~€~€~€€~€}~~€~€€~€~~~€~~€}€~~}}~~€~€~~~~€~~€€€~€}~~€~€~€€€~~~~~€€~~~~€~€~€€~~€~€}~€~€}~}€‚}~€~€€~€~~~€€~€}‚~~€~~€~~€~~}~€~€~€€~€~~€~€~€~€~€~€€~~~}~€€€€~€~~€~€€~€€~€}€€}€~~}€~€~‚€~€~}€~€~€€~~€€~€~~€~€€~~~€€~€~€~}~€~~€~~~~€~€~~~€€‚~€~€}€~€€~~‚~~€~€~€}~~~€~~€~~~~~€~€€~}€~~~€~‚€~~€}€€~€~€~~€€€~~€~~€~€~}€~~€~€~€~~~€~‚€€~€~€~€€~€~€~€~€~€~~€€~~}€~€~}~~~€~}~~~€}€~€~€}€~}€~~€~€~~€€€~~~~~€}~~€~€~€~~~~€€}€€~€~~€~~~€~€~€€~~~~~€}€~~€}€~~€€~€~~€~€€}€~€}€~€}€}~~€~~~€~~€~€€~€~~€~€~€€~~€}‚€~~~€€€€~~€~}~€~€~€€~~~€~~‚~€€€~€~~€~}~€€€~}€~}€~~~€€~€~€€~€~~~~€~~€~~}€~€}‚~~~}€~€€~€~~~~€€‚~~€~~~€~€€€~€}~€~€~€~~€~€€~€}€~€~€~~€€~€~~€}~€€~€€€~€€€~€}}€}€}~€€}‚€~~€~~}~~€~}~~~}~€~€~€}~~€€~€€~€€~€~€~€~~‚}€~€~€~~~~€€€€€~~~€~~€€~~~}€€~~€~~}~~~€}}€~~€~~€~€}€~~~~€}€~€~‚~€~~~€~€~€€~~€~€}€~€~~~€€€€~€~€~~}€~~€~~€~€}~~~‚~~€}€€~}€~~~€€€}~€~~€€€~~~~~~€~€~€‚}€€~~}€‚~€~~~€~~€€~€~€}€~€€~€~€~€€~~€}€€€€~~~€}€€~‚€~}€‚~~~€~€~~~~~€}€~~€~€~€~€~€~€€}€~~‚~~€~€~~€€~€~~€~€~€~€~~~~€€~€~~~€}€€~€~~€~€~~€‚~€~€}€~€€~~~~€~€~}€~~€~€€~€~€}€€~‚~~€~€}€~}~€~€~}~€~€€€€~}€~~€~€~€€~~€~€€~€}€~~~€}€~~~~~~~€~~}€~~~~€~€€€~€€~~~€~€~€€‚~€~€~€}€~€€‚~€€~€€~€~~~~€~€~~€~~€~€~€~€~€~~€~‚~}€~€~€~€~‚€€~~~€~€€~}€€~€~€~~€~~€€~~€~~€~€~€~~~€}}€€€€}€~~€~€~€€~€~~}€}~~~€€€€~~€~~€}€€~}€}€}~~€}€€~~~~}~€~€€~€~€~~€€~€~~~~~~€}€~€~€}~~€}€~€€€}€}€~€}€~~‚€‚}~~~€€~}€}~~~€~~~~€‚}~€€}€~~~‚€~€~€€€~€~~~}€~€‚~~~~~~‚~~€~~€}€€€~€~~}€€€€~€~€~~€~€€€~‚~~~€~€}€~€}€~‚}~~~€~~~€~€‚~€~~€~€~€~~~~€~€}€~€€~€~€~~€€~€~€~~~€~€€€€~~€~€€~~~€~€~€~€~~~€€~€~~~~€}€€~€~€€~€~€~~€~€€~~~‚~~‚‚~~€~~~€~€~€€}€€~}€~€~~€~€€€~~~~€~€€‚~~~~~€€~€~~€~€€~€~~~€~€€~€~~€~€~€€}€~~€~€~€~~€~€€€~~€~~€~~~~€}~€}~}~~€~€}€~€~~~}€~~€~€~~~€€~~€€~€~€~~~~€€~~~€~€~€€~}€}€~}~~~~€€~€~~‚}~~~~€~€€€~€}~~~}€~~€}‚}~~~€~‚€€~~~~~€}€~€€€~~€~~€}€€~€}~~~~~~€~€~~€€}€~~~€~€€€~€~~~€~~€~€€~~€~€~}€~€‚~€~~€~€€€~~~€~~€€€~€~€~~~€~€€~€~€~~€~€~€€}}~~€€€€~~€~~€~€€€}~~€~~€€~€~€~~€~€~~~€~~€~€}~~€~‚€~~~€~€~€€}€€}€~~~€~€~€}€€~€~~~‚€}~€~€€~~~~~€}€~€~€~~~~€€}€~€€~€~}€~€~€~€€~€€~}~~€~€€~~€~€~€€~~€~~~€€€~€~~€~€}~~€€€~€€~€~€}€~~€€€}}€}~€€~€~~~~€~~€~€€€~€€}~€€~€~~~€~€€~€}~‚~~~}€€~~€~~~€~€~€}~~}€€€~~~€~€€~€~€~~~~~~€~~€~€}}€~~~~€€€~~~€~€€~€~~~~~€~€€€€~€~~~€~€€~€~~~€~€€~~~~~€€€€~}€~~€~€~€~€~~€€}€~€~~~~€~‚~}~~~€~€€~}~~~€€€~~~~~‚~~~‚~~€~€}€~€~~~€}€€~}€~€~~~~€€€~€~~€~€€}€}€€~€~~~~~~~€}€€~€~€~~‚~€~}€~‚€~~~€‚}€}~~~~~€~€€~€~€~~‚~~€~€~~€~~~€~~€}€€€~~}~~€‚~€~~€~~€}€~€€~€~~~~€~~€~}~€~€€€‚~~€~€€~~~~~€€€}~€~€€‚}~~}€€}~€‚€€~~}€~€~~~€~€~€€€~~€~€~€}€€~~€~€€}€~~~~}€~€€~~~}€~€~€~~€~~~€~€€€~€~€~~~~€}€~~€~€~~~}~€~€~€~€~€~}€~€€~~~~€~€}€€~~}€€}€~~€~€~~~~~~}€~‚~~€~~€~€~€€}€~~€~€~~~€}€~€~~€~‚€€~€}€€}€~~€~€~€}~~€}€~€~}€€~~€~€~€~~‚~}~€~~€}‚~~~€~€~~}€}~€€~€€~€~€~€~€~~€~€€~€~€~~~~€~}~~€~€~€~€~~€}€€~}€€~€}~€~€€~€~~~~~€~€~€~~~~~~€~€€~~‚~‚~€~€~~€€~€}~~~€€€~~~~€~}€€~‚€~~~~€~€~€~€€~‚~~~€~~€~~~}~~€€~~~~~~€}€~€€€~€~~~~~€€~~€~~~~€~~€~~~~€~~€~}~€~€~€}€~€~€~€~€~~~}€~~€~€~~€~€}€~~€}~}€}~€}~‚~~~}€~~€€€~~~~~~€€~~~~€~€}€~~}€~€€~€~~~€€~€~}€~€€~~~~€€€€~~~~~€€~€~~€~€€~€}€~~€}€~€~~€€}€}~~€}~€€€~}~€€~€~~~~€~~}~‚€€~€}~~€~€~€}€€~€€~~‚€‚~~~€~~€€}~€~~‚€~€€~€~€}€~€~€~~~€~‚~~‚~€~€~€~~~€~€€~€~~€~~€~~€~~€~}€€~~~~~€~€€~~€~~~€~€€€~€~€€~€}€~~~€}€~€~}~~€~€~€~~}~‚€€€~~~~~€~~€}€~€~}€~~~€~€~€‚~€~~€~~€€€~€~€~~~~~€~€~~~}€}~€€}}€€~~‚~~€€~€€}€~€}~€~~~~~€}€€€~~~€€~~€~€€~€~~~€~€€~~~~~‚€€~~€~~~~~€~~€~€~~€}€~~€~~€~~~}€~~~~~~~~€~€~€€~}€~~€~€€€€~€~€~€~€~€~€€~€~‚€}€€~€}~€~€~~€~€~€€~€}}€~~~€~€‚€€~€~~~€~~~€~~~€~‚€€~€~€€}€~~~€~€~}€~‚€}€~~~~~~€€€~~~~~~}~€~€~~~€~~€~~€~€€~€€}€~€}€~~€~~~€~€~~€~~~~‚€~~~~}~~€~€~~€~€~~€~€~€€~€~~~€€~€~€~}€~€~~}~}}€~~€~~~}€€~€~€~€~~€~€€~€~€€~€€~}~~€€~€~}€~~‚~~~€~€~€€~~€~~€~€}€~}€€}€~€~€~€€~~€~~~€‚€€€€~~€~~€~}~€~~~~€~€‚~€}€~€}€~~~€€}€~~€}€}~€€€€€€€~€~~€€€€€~€~€~~~€~~€~~}€~€~€€~€~€~‚€~~~~€€€~~~€~~€€~€~€~€~~}€~€€~~€~€}~€~€~€€~€~€~~€€€€€~~}~~~~€~~~~~€€~~€€}€}~~~€~€~~~~€~€~€~€}€~~€€~~~~~~~€€‚~~€~~~‚~€~~~€€€}€~€~~€~€~}€~€€€€€}€€~}~‚€~~~‚~€€}€€~~~~~€€€~€~~€~€€€~€~€~€}€~~}~€}€~€~€~~€~€€}€}€€‚~~€~}€~€~~~~€~~€~€~}€~€€}€€~~€}€€~~~~€}€~€~€~~~~~€~€~~~~~€}~€~~€~}€~€~€€}€~~€€~€}€~~€~€~€~~~‚~~€~€~~~€~~€€€~~€€~}€}€~‚~~~€‚}€~~}~~~€}}€€€~€~€}~~~~~}€~€}€~€€}~€~€€€‚€~€~~€€~€}€~€€}}€~€~~~~~~€~€~~€€~~~€~€€€~€~€€~~€~~~~€~~€~~€~€‚~€€~~€€}€~€}~€~€~€}€~~€}~~€}~€€€~}~€~€€€€~~~~€}‚€€~~€~~€~€}~€}€~~~~€~€~€~~€~~€~€}€€~€~€€~~~€€€}€~‚~~€}~€~€€~€~~€~~€}€}€€~€~€€~€~~~€~~}~}~€~}€}€~€~}€}€‚€€€~€~~~€~€~€~}~€‚}€~}€~€€€‚€~~}€~€~€}€~~‚€~~€~€}€€}}€~~€}€~€~~~€~€~€~~€~~€~‚€~~€€~€~~~~€~~€~~€~€€~~€~~}€~€~€~€~‚~€~~€‚€€~€~€}€€~€~€€~€€‚}€~~~€~€~~€}€~€}~~~€€€€~€}~~€~€€~€}€~€}~~€~€€‚~€~~~~€€~€~~~€~~~~€~~€}€€€€~€~}€~€~€~~€~~€~€~€~~~~~‚€€~€~~~€~€~€€~€}~~€€€~€}~€~€~~€~€~€~€}€~€}~~€‚~€€~€~€€~~€~€~~~€~~~~€‚~~~€~€~~~~~~€}€}€€~~€~€~‚~€}€~~~€~€~~~‚€~€}€~~€}€~~€~€~€~€~~~€~€€~€~€~~€~~~€}€}~~~€~~}€}€~~~~€~€€}~~€~€€~~~€}~€€€~€~~~€~€‚~€~}~~}~~€~€€~€~€€~€~€€€‚~€~~€~~~}€~€~€~}~€€€}€}~€~€€~€~~~€}€€~€~}~~~~€}€€~~~€€‚~€~~~€~~€€€~~€€~~~~}~~~€~~~€~~}€~€~€€}€~€€~€~€~~€}€~‚€€~‚~~~~€~€~€~~}€~€~€~~€~€~~~~~~~€€€~~~€~€~€€~~€~~€~€€€~~~~€~€€€~€}~~~€€~€~~€~€~€~€€}€€~}~€~€~€}~~€~€~€~€€€~€}~€~~€~~~~~~€‚~€€~€~~~~~‚~~~~€~€}€€~€~~~€~~€~~‚€~~~~~~€€}€~€~€€~~€~~€~€€~€~}~€~€~~~~€~€~~~€}€~~€€}€~~~€~~‚€€~~~€~~€~~€~~~€~€€~~~~~~€~~€~~~‚~~€€~}€~~~~€~€~~~}~€€€~~~~€~€€~~€~€€~€}€~€~€~€‚}~~~}~€~€~€~~€~€~}€~€~~~€~€~~€}€€~~~€}€€~~~€€~€~}€~‚~~€‚~€€~~€~}‚€~~€~€}€~€~}€€~€~€~~~€‚~€~€~€}€€~€~~€}€~‚€€€~€~€~€}€~€~€~€~~€~€~€€}€~~€}€~~~~~€~~€~€~€~~~~~‚~~}€€~€~~~~}€}€~€€~€~~}€~€~~~~€~€~~}~~~€~€€€€~€~~~~}€€}€~€~~‚~€~}~€~€€~€~~€~€~~}€~€~~~€}~~~€~‚€€~~€~~~€~€€~€}€~€~~‚€}~~~€€~€~~~€€€‚~€~€~‚~}}€‚~€~€}~€~~€~~€€~€~~~€€‚~}€€~~€‚~~€}€~~~€~€~€~€~€}~€~€€~~~~€€€€~~~~€~€€~}~€€}€€~€€‚€~~~‚~€~€€~}€~~€~~€€}€€€~€}~}€~€€€~€~~~€~€}€€}€}€€~~€~~~~€~€~€€~~‚€}~~~€€~€€~~~~€~€~€}‚~~~€}€€~€€~€~€~€~~}€~~€}€~€}€€~€~€~~€~€€~€~~€~€~}€~~€€~‚}€~}~~~€~}€~€~~~€~€€~€~€~~~~~€}€~€}‚~~~~€~€~€~€€}~~€~€~~€~~€~~~€}€€}~€~€}€~~~~€~€}€€}‚€~~}€}€~€€~~~€~€‚}~~€~~€€}~~€~€€~€~€}‚€~~€€~€~€~€~~€~€€€~€~€~~‚~€~€€€€~~~~€~€€~€~~~€~~€€~~}~€€~~~~€€€~~~‚€€~€~~~€~€~~~~€€‚~€~~}€€€€~~~€~~€€~€~}~€~€€~€~€}~}€}~€~€€}~~~~~€~€~€~€€}€~~~€€}~~~€~~€€‚~€~€}€€}€~}‚~~€€~€~€}~~~€~€€~€~€~‚~~€~}€~€~€~~~€}€€~€~€~~}€~€€€€€~~~€~€}€}€€~€~~~~~}€~€€}€}~~~€~€}€~€€€€~~~~€~€~€~€~~~~€~€€}€€~‚€~~}~~€~€~€€~€~€~€~~€~~~‚~~€~€~€~~~€€€€}~€~€~€~}€€€~€~~€}‚€€~~~~€}~~€~}€~~~~€~€€‚~€~€}€~€~€€~€~~}€~~€€~}€~~~~€~€~€~~€~€€~~€~~~€€~~~~~€~€€€~€~~~~€€~~€}€~€~~~}€~€€~~~€~€€~€~~€~€€€}€~€€~}~~€}€€€~~~~~}€~~€~~~~~€}€€}€~€~~€€~~€}~€€€~~~~~~€~€~~€~€~€~}€€}€~~€~€‚}~~~~€€€~€}~~~‚}€~}€~€}€~~~}~€}€€~€€~~~~~€~€~€~€~~}~~€~€~€~€~~~€~~€€}€€~~€~~€€~~~}~~€}€~€}€}€€€~€~€~~€~€€}€~€}€€~€~€~~€}~‚~€}€~€€~~~~€~€~€~~€~€~€€~~€€~€~~€~~~€}€€}~~~~~€‚~~~~€~€€€}€}~~~€~~~€~€~€€~€~~~~€~€€~€€}€~€~€~~€~€~€€€~~€~€}€~€~€€~€€€~~~~€~€€~€~~€~€€}~~€}€~€~~~~€~€~~~€€€€~~€€}~€~€~€€€~}€~~~€€~~~~}~€}€~}€~€€€€~‚~€}~~€~€€~€~~~€~~~€~€~}~~~€~€€~€~€~€~~}€€~€~~~~~€~€~€~€~€~~€~€~€}~€~~~~€~€}~‚€~~€~€~€€}€~~~€~€~~‚~~~~€~€~€~€~~~€}~~€}€€~€~€~€€~€}€~~~€~~€~~}€~~~€€}€~~~€‚~€~€}€~€~}€~~€~€~}~~‚~~~€~€}}€~€‚~~~€~€€€~~€~~~€€~~€€~€~€€~€~€€~€€~€~€~€€~~~~€~€~~}~~€}€€~€~€~€~~~€~€~~€}€~~~~~€~€€€~~~~~€€~~€~€}€~€€~€~~}€~€€€~€~~}€€€~€~~€~€€~~‚~~~€~€~€€~~~€€€~€~~~~€~}~~€~~~~€€~~~~~€}€~€~€€~€~~}~€~€€~~€~€~€~€€~~}~}€}€}€~}€~~€‚~~~~‚~€~}~~}~~~€~€€}~~€~~€€~~€~~~€€~~€~~~€€~~~€€~€~~~€~€€~~~~€€~~~~€~€€€€~}€~€}€~€~€~~~€~€~€}€~€~~€~~~€~~€€~~~€}~€€~€~~€~~‚}~€~€€€~€~~~€~€€~€}~€~‚€~~€~~€~€~€~~~~~€~€~€~~€~~~€~~~~€~~~€}€~€~€~~€~€€€€€~€~~€~€€~€~~€~~€€~~~~€~€€€~€€~€~€~~~~€~~€~~~~€€€~~~~€~€€~€~€~€}€~~~€€~~€~~~|‚‚}€~€~€€~~€~‚€€}€€~€~€~€~~€‚~~€~~€~‚~}}€~~€~€}~€~~}~€~~}€}€~€~~~‚~‚}}€~€}€~~~€~€~~€}~~€€‚}€~€~~€~€€~~€~~€‚~~€~€~€~€}~~~€~€€~€~€~~€~€~}€€}€}€}~€€€~€~~€~}~~~~€~€~€~~€}€~~€~~~~~€€~€}€}~~€~€~€€~€~~€~€€~~€~~€}~€~€~~€~~€€€~~~~}~€€}€~~€}~€€}€~~~€~~~~~~‚~~~€‚€~~€~€€}€~~€~€€~€}~€}~€~~~~~€~€€‚~~€~~€€~}~~€~€~€€~€~€~€~€~~€~~€€}€~~~~€€~€~~~€€€~€~€~~~€€€}€€~}€~~€~€~~~~~~€€€‚~~~~€}~€}€}€~~€~~~~€~€‚~€}‚€}~~€~€€~~~€~€€€~~~~~~€~€}€~~€~~€~€€€€}~~~~~€~€€~€~~~€}€€€~€€~~€~€~€~}}€€~€€~€~~~€~€~€€€€€~~~~~~€~}}‚€€~€~~€~€€~€~€~~~€~€€}€~~‚€~~~~~€~€€~€€~€~€~~€~€€~~~~~~~~~€}€€~€}~~€~€‚€~~~~€~€€~€~~~~€~~€~€~}€~~~~€~€€~~~~€}€~~€~€~€~€}€€~€~~~€~€~€~~~~€~€€~~~€~€~€~€~€€~~€}~~€}~€~€~~~~€~€€€€~~~~€~~€~~€~€€~~~~€~~€}€}‚€~~‚‚~~~€~€~~€~~€}€~~€~~€~}~~€}~€~€~~€€~€~~~€€€~€}€}~€~~~€~€€€~~~~€~€~€~‚}€~€~~€~€€~~€‚~€~€}€~€}€~~€~€€~€€~~~€‚~€}~~€~~€~|~€~€€€~~~~€€~~€}€~€~€~}‚~~‚~~€~€~€~€~€}~€€~~€~~€~€~~~~€~€~~€~~€€€}€~}~‚}€€}€~~~€~€}€}€~€~~~‚~€~€~€€~~€~€€€~~€~~~~€€}€~€}~~‚€}€~€~€€~€~}~€~~€}€~€~~€€~€~€~~€€~~€€~~~~€€~~€~~~~~€€€~~~}€~€~€}~~€~€€~~€}€~~~€~€€€~€}€~~‚€~~~}~~€~}}~‚€€~€€}€}€}€€~~€}€€~€~~~€€€~€~€~~‚€‚~€~~€~€~€~~€~‚€~~€~~€~€€}€~~€~€€€€~€~~~}~€~€~€~€~~€‚}€~~€~€~~~‚€}€~€~€~€~~€€€~€}€~~}€}€€€~~~~€}~€€~~~€~€~~~~~€~€~~€~~~€~€~~~€~~€~€~~€~€€€€~€~~€~~€~€~€€~~~~~~€€~~~~‚~}~‚€€~€~~€~~€~€~‚€€~€~~~~€~€€€~€~~~€~€€~€~~€~€~€~~~€~€€~€~~~€~€€~€~€~€~€€~€€~€€~€~~~€~~~€~€€}€~~~~€~€€‚~€}~€}€€~€~€€~~~~€}€€}~€~‚€~€~€~€€}~~~€~€~€~~€~~€€€~€~~€~€€€~€~€~€€}€~~€~~~€~€~€}€}€~~€}€~€€€~~€~~~€~~€~~~€€~€~€€~€~€~~~~€}€~€~~~~~€~€~€~~~~€}€~€~€~~~~€~€€~€~}~€~~€}€~€~€~~‚~€~€~€~~€€~€~€~~€~€~~~~~€€}€~~€~€€€~€~€~€~~~€~€€~€~€~€~~€~€~€~€~~€~~~€~€€€~~~}€~‚€€~€~‚€~‚~~€~€€€~~~~€~‚~€€~€€~~€}€~~~~€}€~~€~‚~~~€€~€~€~~~~}€~€~€}~~~€~~~~€~~~~€~€~~€~€~~€~€}~€}~€€€~~}€~~€~}€€~€€~€€}€~~~~€~~€€~€}~€~€€~€€}€€~€~€~~€~‚€€€}€~~€~~~~‚~€~€~€€}‚€~~~~}€~€~~€~~€}€~€€~€}~}~‚€€~~~}€€€€~~~€}~~~~€~~~~~~€~~}~€~€~~€~€~~€€€~~€}}~€~€~~€~€~~€~~€~€~€}€~€~€~~€€~€~~~~€~€~€~~~€}€€~~€€~€~€~~~€~€~~€€~~~~€}€~‚‚~~~€~~~€~€€~€~~€€€~€~€~€~€€€€~€~€~€~€~~~€‚~~~~€~€€~€~€~€~~€~€~~€}~€~‚€€€~‚~€~~~€}~€€~€~~~~~€€€~}€~~~€€€~€~~€~€}€€~}€~€}€~~€~~~€~‚~€~€€~€~~€€€€~€}~~~€€~€~~€~~€~~~~~~€‚}€~~~~€€‚~€~€~‚€~€~€}€~€~}€~~~€~€~~€~€~€~‚}€~~€}~~€~€~~~€€~€~€~~}€~€}~€€~€~~~~€€€€€~~~~~}~~€~~~€~~}~€~€}€~~~€‚~~~€~~~€~€€~~}}~€€~‚~~€~~€}€€€~€~€~~€~€€€€}~~~€~€€~€~~~€€€€~~€~€}€}€}€€}€~~€~€~€~~~~~€}€}€}€~€~~}€~€~}€€~~€~€€~~€~€}}€~~~€€~~€}~~€‚}€~€~€~~~~~€~~€€€~€~~€~€€€‚~€~~~€}~€~€~~~~~€~€€}~€~‚~€}€~€~€~€€}~€~~~€~€€€~€~~€}‚€€~€~€~€~~€€€‚}~€~€}€€~€~€}‚}~€}€€~€~€€~~~~€~€~€~€}~~~€€~~€}~~~€~€€}€€~~€}~€~€~€}€~€~~~€€~~€}~€~€€~€}~€~€€~€~~}~~~€~€€~€~~€~‚€€~€~~~€~€€€~€~~€~€€}€~~€}‚€~€~~€~~~~€~~~€~€€€}€~}€}€~€~€€~~€}€~}~€€€~€~~~€}€€€~€~~€~€€€~€}~}~€€€€~~~€~€~~€~~~€€~€~€~€€~€~€~~~~€~€‚}€~€~~~€‚}€}~€~}€~~€~~~~€~‚€~€}~~~~€~€~~€~€€€~€}~}}€€~}€~~€~~€€~€~€~€~€~€€~~~~~€€~~~€~€€€€~€~€~€~€~~~~~~€‚~€€}€}€~~~€~€~€€€}~€~€~~€}~€}€~~€€~~~€€~€~~€~€~€~~~€~€€~~~€}€€€~~€~€€~~}€€~~€‚€€~€~€~}~~€~~€~€~~€~€€€~~€~}€€~€~~€~~~~€~€€€~€}€~€€~~~}€~}€}~~€~€€~€€}€~}~~~€~€~~€~€~~~€~~€€€‚~€~~€~€€~€€‚~~€}~€~€€}~€~~€€€€~€~~~~€~€€€~€~€~~€~€~€~}€~€€~€~€~€~€~€€~€~€~~€€~~€}€~€~€~€~€€~€€~~€~€€‚~~€}~}€€~}~~€}~€€€€~€~~€}€‚€€€~~€~~€€€‚~€~~~~€€~€~€~€€~€~€~€€~~~€~‚~~‚~‚~€‚~€€~€~~€€~~€}€~~~~€€}€~~~€~}~~€}€~~€~€~~}€~€€€€~€~~~€~€€€~€~~€~~€€~~}€}€~~~€}€€}‚€~~~‚~€~€€~€}‚€~~€}€€~€~€~€€~~€~€}€}~~~~€~€~€~€~~‚€~}~~~€€~€~€~~€}€~‚~€~~~~€~€~€~~~€~€€}€~~~~€~€€€~€~~~€€~~€~~€~~€~~~~€~€}€~€~~~~€}€€~~~~~~€~~€€~~~}€€€€€}€€~€~}€~~~~€€~~€~€~€€€~€~~~~~~~~~€~€€~}~€~€}€~€}€~€~€~~~~€~~~~~€€~~~~€€~‚€€~€~~~~~€€~€~~~~€€~€~~€~€~~~€~€~~€~~€~€~€~~€€€~€~~€~€~€~~€€~€~€}~~}~€~€~€~~~€€€~‚~~€~~€€}~€~€}€€~€~€}€€~‚€~~€~€~€}€‚~~€}€€}~€~€~~€}€~€~~~€}~€}~€}~~€~}€~€€€~€~~€~~€€~~€~€}€€~~€}€€€~€}~}€~~€~~€}~~€~€€~€}~~€~€€€~€~~€~€~€€€~~€}~€}€~}~€}€~€~€~~€~€€€€€~}€~€~~€‚}€~~}€~~€~€~€€€~€~€~€€~€~€~€~~~€~€~~~~~€}€€~€€~~~€~~€~€~~€~€~€€~}‚~~€~€€€~€~~~}€~€€~€~}}€€~€~~~~~€}€~~~€€€~€~~~~€}€~€~~€~€~€~€~~}€~€€€€€~~~€~~€~‚€€~~~€~~€~~€~€€~€~~€~~€~€~~~€~€€~€~€~~~~€~~€~€}€~€}€~~~€~€~€~~~€}€~}€~€~~~‚~€~€~€~€~~€}€~€~~~€~~€€~€~€€€~€~~~}€~€~~~€~€~€}~€}€~~~€~€~€~~~~~€}€~~€€~~€~~~€~€}€~~~~€~€‚~€~€~~~~€~€~~~~~€~}€€~€}~~€~€€~~€~~~€~~~~€}€}~€~~~€€€€~~~€~€€€€~~~}€~€€€~~~~€~€€€}€~~~~‚€€~~~}}~~€}€~€~~~~€~‚€€€~€~€~~‚~~~€€}€~~~}€€€~€~€~€~€}~~€}€~€€~€}~~}€~€€€~€}~€€€€~€}~€~€~~‚~~€~€~€~€}€~€€~~~~€~€~~~€€‚~€~€~€~€~~~€~€~€€~€~€}~~€~€€€€~€~€~~}€~€€~~€~~€~~~~~€~~€~€~~€~~~~€€€€~€~~€~€€€~~€€~~€~~€~€€~€}€~€}€~€}~~€~€€~~€‚~~~€~~€~€}€}€€~~€€}~~~€}~€~€~€~€~~~€~~~€€}~€€~€~~~€~~€~~€~€~~~~€~€~~~~~€~€~€~~~€~€€~~€~€€€~€~~}€~~~~€~€€~~~€}€€€~~€~~~€€}€~€~€~€~€}€€€}€~}~€€~€~€~€~€~~€~€~€~~~~€~~~€}}€~€}€~€€€‚}~~}~~€~~~~}~€~€~€~€€~€€~€~€~€~~}‚~}€~€~~~€~~€}€~~‚~~~€‚~€~€~€~‚‚€}€~~~€~€~~€~€‚~€€~€~~~~€~~€€€€~€~~€~€€€~~~€}€€~~€~~€~€~~€}€~€€~}~~~€~€~€~~}~}~€€~€~€~~‚~~~€€‚~€}~€~€~~€}€~€€~€~~~~€€~€€~‚€~~€~~~€}€~~€}€~~}~~€~€€~~~}€€~€€~‚€€~€~€}€~~~~~€€~€~€~~€~~€}€€~€~~€~~€~~€€~€~~~~€~~€€€€~~~€}€~€~~~~}€€~~~~€~€~€~}~~€€}€}€~€~€~~€}€€~€~~~~€~€€~~~‚}~€~€~€~€‚~€}~}€~€€€~}€€}~}€}€~€~~~~€€~€~€~~~‚~~~~€}€~~}‚~€~€€}}‚~~€~€~€~€~~}~~€~~}~€~€~~€}€€~~€~~€~€€€€}~~€}€€~€~~~~€~€}~~€~€~}€}€~~~~~~€~€~€~~€~}~€~€~~~€}€€~€~~}~€~€~€~€€~€~~~~~€~€~€~~~€~€~€~~~}€€€€~€~~€~~€~€‚~€€~€€~€~€~~€}€~~~~~~€}~}€~~€~~€}~~‚€€}~~€€}€~~~~€}€~~~€€~€~€}€}€}~€€}€~€~€~~~€~€~~€}~€~~~€~€€~~~~~€€€€~€~‚‚~~~~€~~}‚~~€~€}€}€~€~~€€€~€~€~~}}€~€}€€}€~€~~~~€~~~€€€~~~€~€~}~~‚~}€~~€~€~€€}~~~~€€~€~~~€€€€~~€€€€~€~~€~€~€‚}€€~€~~€~€€}€~€~€~~‚~~€}€~€}€~}€~€€‚~€~~~€~€€~~€~~€€~€}~€}€~}~~€~~€~~€€€~€~€}~~€~€€€€~€~€~€~~€€~~}€~€~}€~€~~~~~~€~€~~€~€€€~€}~€}€€€€}}‚€~~~‚}~€~€~~€‚~€€‚~€~€~€~~~€€~~€~~~€~~€€~€~€~€~€~‚~~~‚}€~~€~€€~€~€~~~€€€~~~~}€~€€~€~~~€~~€~€}~€}€~€€€~}~~~€~€€~~€~€€€€€}€~~~~‚€€~~~€~€}~~€~€~€~~€€~€~€~€~€€}€~€~€€~~~~~€~€€€~}€~~€}€€€€~~€~~~~€€~€~€}€€~~€~~~~‚~~€€~~~€~€~~€€€~~€~€€~~~€}€~~~€€€~€~~}€~€€~~}~€€}€~€~€~€~€~~~€~€€}€}~~€~€~€€~€~~~~~~€€€€~€~}}€~~€~€~}€}€~~~~€~€~€}€~~€~€~~€~~€~€~€~€~~}€~€~€~€~€~€€}€~‚€~€~€~~€‚}€~€~€}€~€~~‚€€~€€~€~€~}€}€€~}€~~~}€~€€€~~~~~~~~~€}€€~€€}€~~~~€~€€€}€~€~}~~~~€~€}€€~€~€}~~~€~~€€~€~~~~€~‚~€~€~~‚~}€€~~~~€€~€~€~€~~€€~€~€~€~~~€}~€}€€~~€}~€~‚€€€‚~~€~~~€}€€€~~~€~€€~€~€~€}~€~~€~€}€€}€~~~~€€~€~~~€~}}~~€~~}€~~‚~~~€}€~€~~‚€~~€~~€~€~~€~~€~~€~~~€}€€}€~€€}€~}~~€~~€€~€~}€~~~€~€~~€~~~}~€~€~€~€~€~€~}~~~€}€~€~~~~~€€~€€}~~~€~~€~€~€€€€}€}~~€~€€‚}€~~€~€~€}€€}~€~‚€€~~€~€~€~€~€€}~€~€}€~€~~€~€}~€~€~}~~€~€€~€~€~~€}€}€}€€~€~~~€~€€€€~€~~~~€~€€~~~~€~~€€~€~€~}}€~~€~~€€~~‚~€~}€€~~€~€~~~€€~~€~~~€~~€~€~}}€~~~~}€}€~€~€~~‚}~€€~€~~~€}€€~~~~~~€€€}€€~€}€~€}€~‚€~€}~~}€}€~~}~~~€~€~~~€€€~~~~~~€~€~~~~€€~~~~~€~~€~€}€~~€€~€~€~~€~~~€~€€€~€~~~€€~~‚~}~€~€~~~‚~~€~€}~~‚}€~€€~€~~}€~€€~€~€~~€~~€€~~~€~~€~€}€~~€€~~~€€€~€~~~~€~€‚~~~~~€€~€~~~~€€€~€~~€€€€~€~}€~€~€~~~~~}~€~€€~€}~€}€€€~~~}€~~~~€~}€~€~~‚~€~~~€~‚€~‚~~}~~€€~€€}€€~€~~~~€}€}€~~~~~€€}€~~}}€~€~€~~}~€~€~€~€~€~€€‚~€~~€~€~€~~~~~€€€~€~€~~€}€~€€€}€~~€~~€}€~~€€€~€~~~€~‚€}€~~~€~~~€~€€~€~€~€~}~~~~~€€€~€}~~€~€€~~~€}~€~€€}~~~~€}~~€~€~€€€~~~€~€€~~€~€}~~€}~€€€€~~~€~~€€~~€~€€~€}~€~~~€~~}}€~€€€~€~~€~€‚~€€}€~€~€~~~~~€~}€~€€€~€~~~€~~€€~€~~~€€€~~~~€~€}~€~€~€}€~€~€~€~~}~~€€~~€~€~€~}~~~€€~€~~}~€€~€~~~~~€~€~€€~€~~~~€~€~~~€}~€€€€~€~€~€}~~~€€€}€~€~€~€~€~~~~~€~€~€~~~~€~€~€€~€~~~€~~€~}~~€~€€~€~€~~~}~~€€~€~~€€}~€~€~~€~€~}~}~~€~€~~}‚~~~€€€€~}€~~~€~€€€~€~~~~~€~€~€€~~~}€}€€~€}~~~€~€€€~€~€}€}~€~~€~~€~~~€~€€~~~~€~~~€€€~€}~€~€}€~~€~~~€‚}~~€~~~€€€~€~~~~‚€}~€€€~~~~€€~}€€~€€~‚€~~€~€~~€~€€€€€~€}€~€~€}€€~~~~~€~~~€}}~€~€~€}€~€}~€}‚~~€~~€~€~~€~~€€}‚€~~€‚~€~‚~€}‚~~€}~€~€~~}~€~}€~~~€€€~€~~€~€~€€€~€~~€~€~€}€~~~€}€~~~€~~~~}€‚}€€~‚€~€~€~~}€€}€~~~€~€‚}€€}€~€€~~€~~~}€~~€~€€~~€~€€€~€~~€~€€}€~~€€€~€~~~~~€}€~€‚}€€}€~€~~€~~€~~€~~~~‚€€~€~€~~~€~€€€€}~~€~€€~€}€~~€}~€€~€}~~‚~}€~€€~€~~~~€~€€€~€~}€~~~~}~~€}€~€}€~€~~~€€€€~~~~€}€~}€€~€~~~}~€€}€}€~€}~~€~€~€~€~~~€}~€}~€~~~€~€€~€~~~}€~€€~~€~~€~~€‚~€}€~~€}€~~‚~€~~€~€€~~€€~~€~€}€€}€~}‚~~}€}€~€~~~~€~~€~~€}€~~€~~€~~}€~€~€€€~~€~~~~‚€€~~€~€~~€€~€~~€~€~€~~~~€~€~€}€€~€~~~€~~€~~€€~~€}€~€€€~~€~~~€~€~€~€~€~}€~}~€~€~~~€~€€€~€~~€~€€~€~~}~€~€~~€}~~~~€~~}~€€€}~€~€~€~~€~€~€~~€~~~€~€€€~~~€~~€~€~€~€~€~~~~~€€~~~}€~€~‚€€~€}~€~€~~€‚}€~‚€€~€}~~€~€~€€~€}~~~}~€~€~€}~€~€€~€~€~€~€~€€~~~~€€~€~€~‚~€~€}€~~~}€~~€€}~~~~€€€~€~}€~€~€~€€~€}€~~€~€~€~€~~~€~~€~~€~~‚~~~€€~€~~}€~€~€~~~}~€~€~€~€~€~}€~~€€}€~~€~€~€~€‚~€€}‚€€~€~~€~€~€~~€~€~€}€€~~€~€€~~~€‚€€}€}~~€~€€~€~~~~€~€~~~€€}€~~~}€~€~~~€~€~€~€€~~~€~~€~}€€}€~€}~~~~€€~}~€~€€€~€~~~€~€~€~€~‚‚€€~~~€}€€€}€~~€€~}€~‚~~~€~~~€~€~€~}~€€~~€~~€}‚€~~~~~€~~€~~€~€~~~~~~€~€}€‚~~€~€}~~~~~€€~€~~~~~~~€~~€€}€€~~€~€~€~€€~~~€‚~€~}€~€€~€~~~~€~€~€€~~€~~~€€~€€~}~~€~~€~€~€~}€~~~€€~€~~€~€~€€~€~}€~€€~~€}~~€~~€€~~~€~€~€}€€~~~€~€~€~€~~€~€€€~€~~~~~~€~~€‚~~~~€~€~€}€€~€€}€~~}€‚€€~€~€~‚~~€~€}€~€€~€~~~}~€~€}€~~~‚€}~€€~€~‚~~€~€}€~~€~€€€‚~~~~‚‚}€~€‚~€}€€~~~~~€}€€~€~€~~~~€€~€~~}€~€€~€~~€}€~~€€|€~~~€~€~~}€~€~~~€‚€€~~~~€}}~€€€~€~~~€~~€}~€~€~~~€~~~€~€~€€€~€~}€~~~€~€€~€~€}€~~~€€~€~‚€€€~€~€~~‚€€~€~~}€~€€~~~€~€~€}€~‚~€~~~€~~€~~~~}€~~€~‚€~€€~~~€~~€}~~~~€€€~}~~~€€~€€‚~€~€€}}€~~~‚~~€~€€}€~}}~€~€€}€~~€}~€~~~€~~€~~€~€€€€~~€~~~~€~€}€~~~~~€~€€~€~~€€€~€~~‚€~~€‚}~~€~€~~~€~‚€€~€}~€~€~€€~~~~~€~~€~‚€~~~~€~€~~~~~~€~}~€€~€~~~~‚€~€~€€~€~€~~}€~€~€~€~~~~~}~€~€€€‚~~~~}~€€~}€~~}€~€€~€~}~€€~€~~~~}~€}€~€~~~€}~€€~€}€~~~€}€}€~€~~~~€‚~€~~}~~€~€}€~~€~€€~€~~~}€~€~~~~~~€~€€~€~~~~€~€~€~€~€}~~~~€~€~€~€~~€€€€€~€}~€~€~~~~~}€~}€~~~~~~€€‚~~€}~~~€~€~~€~€€~~~}~€€~€~~€~€}~~~€‚}€~~€~€€~€}€~€~‚€€~€~~€~~€€€~€~~~€~~€€€€}~€}~€~~€€~€~~€~~~~~€~€~€~€}€~}~~~€}€~€€€~~~€~€~€~~€}~~}€~€~~~~€~€€€~~€~~€}~€€~€~~~€€~}€~‚~~€~~‚€~€~~~~}~€~€~€~~€~~€}€~€~€€~~}~€~€~€}€~~~}€~~€~}€~~~~€~~€~~~€€€€~~€}‚€~~~~~€~€~~~‚€~~~€}€~~€~€~€}€~~~€~€~~~~€~€~‚€~~~‚~~€‚}}€~€}€~~€~~~}~}€}€~€~€~~€~~€~€~€~€~€~€~~€~~~€~€€€~€~}€€}€~~~~~€‚~€~€€~~€~~~~€~~€€€~€}}~‚€~€~€}€~€~~~€}~~€~~~~~~~€€~€~~~€~€~€€€~€}~€~€€~~~~}€€~€~€~~~~~€~€~€~~~~€~~€}€€€~€~~~€}€€€}€~~}~€~€~}€~~~~€~€€~€~€€}€~‚~~}€~€~€€€~~€~~€~€~€~~~}€€}‚€~€~~€~~~€~€€€~€€~~€~€~}~~€~~}~€}}€~€~€~~€€€€~€~~€~€~€~€~€~€~€~}~~€~€~~€~€~€€~€}~€~€€€~~~€€~~~}~€€€~€}~€~€~€~€~~‚}~€‚~€~€~€~‚~€~€~€~~€~€~~~~€~‚~€~~€~€€€~}~~€~~€€~}~~€}~€€€~~~€~~€€‚~€~~€~~€€€~€~~~€~€~€~~~€€~€~~€~€~€}~}€~~‚€~~€~€~~€~€~~~€~€~€€~€~~€~€~~€€~~€~~}€}€€~}~~~~€~~~~~€~€~€~~~}€~~~€€€~~~€~~~}‚€~~~~€€~€}~}€~€€€}}~}~~~~€~~€~€~€€~~~~~€~€~€~~~€~€~€~~~€~~~~~€~€~€€€~~€}~€}€~€~€~~~€}€~~€~~€€~~€~~~€~€~€€~~~€~€€}€~~~€€~€~~€~~€€~~€~~€~€€}€}~}~~€~€€€~~€~~~}€~€}€€~€~~~€~}~€~‚~~€~€‚~€}~~~€~€~€~€€~€~~~}€€€~~~~€~€~€€~€€~€€~€~€~~~€~€~~~~€~€~~~}~€~€~€~€~~}€~€~~€~€€}€€~~~~~}€~€~~~€~~€€~€~€~€~€€~}~~~~€~€~~~}€~€~€€~€€~€€~€€~~~~~~€~€}€€€~~€~~}~€~€€~~~~~€~€~€~€€€~~~€~€~€€}€~~€‚~~€~~~€}€~€€~~‚‚~~€~~~€~€~€~€~~€~~€€€}€~~€~€~~€~€}~€~~€~}€~€~~~€~€~€~~~€~€~€€}€~€‚€}~~€~€~€~‚~~‚~€€~~~€~€~€€€~~~€~€€~~~‚~~~€~€~‚~€~€~~~€}~€€~‚~~~~€~€€}€€€€€~€}}€~~~~~~€€~€~€~~~€~~€~€}€~€}€~~~€~~~~€~€~€~€€~~€~~~€~€€~€~~}€~€‚~€~}€~€~€~€~€}~~‚€€‚~€}~€}‚€€€}€~~~€~€~€~€}€€€~€€}~€}€~~~€~€€€~€~€~~€~~€~€~~€~€€~€~€~~€}~€~€€€~~~€}~€~€~~~~~~€~€€~~€~}~€~€~€€€~~€~€€~€€~€~€~€~~~€~€~€~}~~€~€~}€€€~€~~~€~€~€~~~€~~€~€~€€~~~€}€€~€~€~~}~€}€~€}€~~€~~€~€€€€~€~~€~€€~~~}€}€€}}~€~€~~€~€€~€~~~€~€~}€~€€€~~}€€}€~€~€}€€~€~€~~€€‚~€~~€€€~~~€~~~~~€€~~~‚~~€‚}€~~€~€~~€~€€€€~€~~~€}€~~€~€€€~€}~~~~€~€~~€~€€€~~€~€~€}~€~~€~~~}€}~€€}~€~€~~€~~€~~€~~€€~€€~€€~€~~~~~~~€}~€~€~€~~~€€€~}€~}€€~€~~€~~€~€~€€}€~~€~€~€€€~~€~~~‚€€~~€~~~€~€€~€~~€~€~~}€~€~}€~€~€~~~€~€€‚€~€~~~~€~€~€~€€€~€~€~€~€~~~€~~~~}~~~}€~~€€~€~~~€~€~€€~~€~~~€}€€€~€~~~~€~€~€~€~€~€€~~~~~~€€~€~€~€~~€~~}€~€~~}~€€€~€~~}~~€~€}~€€}~~~~€€~€~~~}€~€~~€}€€~€~~~‚~~€}~€~€}~€€€€€~€~~~~€~~~€~~€~‚€~€~~~~}€~€€~~~}€~€€~€~~€~~~~€~~}€~~~€~€~~€~~~~~€~€~€~€~}‚€~~€~€€}€}~~~€~~€€~€~~~€~~€~€}€€}€~€~~}€~~~€~€}€~~€~}}€}€~~€~€~€€}~~€}~€~€€}€~~}~~~€€}€~€€~€}~€~€€~‚~€~~~€}€€~€€~€~~~~~€~€~~}€€~€}~~‚~~€‚}€~€~€~€‚€~€€~€~~~~€€€~}}~€~€€~€~€~€~€~~€~}€~€}~~€€~€~~~~€€~}€~~~€~€~€~~}€~€}€~}€€~€~~€~~€€~~~€€~€~~~~€€~€~~~~€€€€~~€~~~~~€€~~€~~€~€€€€~€~~€~€~€~~~~€~€€€~€€~~~€~~~€~€€~~€~~~€~€€€~€}~~€€€€~€~~~€~€~€€}€~€€}€€~€€~~€‚}€~€~€}~~€~~€~~~€~€€€~€~€~~€~~€€~~€~€€€~€}‚~~}~~€€~€~}~~€~€~€~€~~~€€~€~~}€~€~€~€€~~€~~~€~}€~€~~~~€~~}€~€~€€~€~€~~}~€}€~~€€~€€~€~~€~~€€~€~€~~~€€~€~~€~€~}~~€€€‚~~~~€~€~~~€~€~~€~€~€~}€€~}~~€~€~}€~~~€}~~€€‚}€~~€~~€~€~€~€~}€~~~€}~€€}~~~~€~€€€~~~~€~€€~€}~~€}~~€~€}€~€}€~~~€€}€~€~€}€~€~€~€€~~€~€}~€~~~€~€~~€€~€~~€~€€}€~~~~€}€€}~~~€~~€€€~€}€~~~~~€}€~~€}‚€~€~~€~€~‚€€€~€~~€€}€~}€~~~€~€€~~~€~€~€~€~~~~€€~€}€}€~~~~€€€~~~€}‚~~€~‚~~€}€}~€~~~€~€~~‚€€~‚~€€~~~~€~~€€~~€~~~€}€~~~€~€€€€~~~€}~€~€€~€~€€~€~€~€}~€~€}€~€~€~~€~€€€~€~~€~€~~~€€~€~€€~€~€€}€~€~€~€~~€~€€~€~~€~~€~~~€}€~€~~~~€}~€€€~€~~~~€€~~€~€~€~€~~~~~€~€€€~€}~~~€}~‚~€}~~~€€~}€~~€~€~€~~€€~€~~~~€}€€~€~€~}~€~€~~~€~~€~€~~€€€€~}~~~€€~€~€~€~~~~~~€~€~€~~~€~€~€€~€}~~~€~€~€~€~~€~~€~€}€~€€€€~~~~}€~€~€€~€€~~‚~~€~€~€~€~~€€€€~€~~~€‚}~€€€~€~€}€~€~~~~‚~€~€~€~}~~€~€~€€~€~€~€~€€~~~~€€~€~~€~€~~~~€€€~~~~€~€€~€~~}€~€€€}~~€~€~€€}€~€€~}€~~€€~~~€~~€€~€~~~€~€~~~~~€€}}€~€}‚~~}€~€€‚~~~~~€~~~€€~~~€}}€~€~€~~€~€€~€~~~~‚~€€‚~€~€~€€~~~€~~€~€‚~€€€~€~~~€~€€€‚~€~~€~€~~€}€~~€~€~€~~~~€€~~€~~~€~€€}€~~€~~~€}€€~‚€~€}~~€}€€~€€~‚~€~€~~~~€~€€~€€~€€~€~€~€€€~~€~€}~€€~~€~€~€€}~~€€~€}~~~€~€}~~~~€€~~~€}€~€€‚~€}€}~€~€~€€~€~€~~€~€€~€}€€~}€}~~€€€~€~~~~€}€}€~~~~~€}€€}~~€~€~€}€~€~~€~€€~~€~~~€~€€}€~~}~€€~€~~~€~~€~€}€~€~€~€~~~~~€~€€€€~€~}~€~€~€}€~~€}€}~€~€€~~~}€~~€~€~~€€€€}€~€~€€~€~€~€~~~€~~€~~€~€€€~~€~~€}~€€€~€~€€~€~~€~~€~~~~€~€€~~~~€€~~~€~€€~€~~~~~€~€~~€~€€~€}~€€‚€~€~€€‚~~~€€€€~~~€~~€}€~}~~~€~€€~~€~€€~€~€~~~€~€€~~~~€€~€~~}€~€}€~~~€~€€‚~~~~€~~€~€€~€~~~€€~~~~~€~€~€€‚~€~€~€~€~€~€}€€~€~}€~~~~€€~€~~~€~~€€~€~~€~~€~~~~€€~€~}€~€~~}}€€~€~~}€€~€~€€~€€~€}~~}€€~€€€€€~€~€€~€~~€}€~€~€~€~~~€~€€~€~€~~€~~~€}€€~€€~~€~€~~~~€~€€€€}~€~€~}€~€~~€~€~~‚~€~€~€~€~€~~€€€€~€~~}~€€~~~€~~€~€~€~€€€~€~~€~€€€~€~~€~€€€~€~€~~~~€€€~}€~~~€~~€~€~€~€€~~€}€€€€~€~~‚€~~~€~€~€€~€~~~€~€€€~€~}~€~€~}~€€~~~~~€~€€~€}~€~€€~~€}€~~€€~~€~€~€€~€~€~~€~~~}€~~€€~~~~~~€~~€~€~€€€€~~~~~€€~~~~€€~€~~€~~€~~~€~~€€€‚~€~€~~~~~€~€€~~€~~€~€€~~~€~€€~~€~~€€€€~€~~€~€€€~}~€~€€~~~€~~‚€~~~}€~€~~~€€~~~€~€€~€~€}€~~€~~~€~~€~€~€~~€~€~€}€~}}~€€~~~€~€€~€~~~~€~€€}€~€€~€~~~€€~~~€~€~~€~€~€€~€~~€~€~€~~~€€~~€~~~~‚~~€~€~€~~€~~€€~~~~€~€€~€~~€~€~~~€~~€‚~~€~€~~€~~~€~~€~€~€€€€~~€~~€~~€€~~€~~~€€~~~~~~€‚~€€~€€€~~~€~€€}€~€~€~€~~~~€€€~€~~€~€€€~€~~€~~~~~~€~€}~€~€~€€€~€~~€~‚€€€}~~~‚~~€~~€~~€}€~~~€~€~€€}€€~€~~€~~~}€~~€€~€~€}€~€~€~~€~~~‚}~€~€~€}€}~~‚~€€~€~€~€~~€~~€~‚~€~€‚}~~€€~~~~€~~€~~€}~€€~€~~}€~€~~~€~€€~€~‚€~~}€}€~€~~~‚}€€~€€~€~~~€~€}€€~€€~€~~~}~€€~~~~€~€~€~€~€€‚~~~~~€}€~€~‚€~€~}€~~‚~€~€}€€~~€~~~~€€‚~€~~€~€}€~€~~€}€~€€}€~€~€~~~€~}~€}~~€~€~~~€~~~€}€€~}€~~~~€~€~€~~}€~€€~~€~€~€€~€~€~€~~€~€~~~€}€~€~~€}€~~~~€€€~€~~~~~€€€~~~~€~€€~€~~~~€~€~~~~€€~~~€~€€€~€}~}€~€€€€}€€‚~~€€~€~€~~€~€~€~€~~~~~~€€}€€}€~~€~€~~€€€~~€~~€~€~~€~€~€€~€}~~€~€€€~~€~~€€€~€~~€~€€~~~€~€~€€}€~€}€~€~~~€€~€~€~€}~~€}~€€~~€~~}€}~€€€€}€~~~~~~€€~€~€~~~€~€€~€~€}€~€€~€}}€~€€~~~€~~€}€€~€€~€~‚€~~~~€~}€~~}~~€€~~€~}€~~€~€~€}~~~~~€~~~€~~~€‚~€~€~€€‚~~€~}~€€€~€~}~€~€~€}~~€~~€~€}~~~~€~~~€€€~€~€}€€~€€}€~~~~€~€~}€~~€€~€~€}€~€}€€}€~~~~~€~€€~€~~~€€~~€}~€€€~€~€~€~€~~€~‚~~€~€~€~€~~~~€~€€~~€~~~}€~€~~€~~€€~~€~~€~€€€~€~~~€~€~€~€~€€~~€~~}€~~€~~€~€€~€~€~~€~~€~€~€~~€€~€€€}€~~~~€€~€~~€~}~~~€}€€~€~~‚€~~€~€}€~€€~~€~€~~~€~~€}€€€€~€~~~}€€€~~~€€}€}€~€€~€~€~~€~~€€~~~~€}~€€€~}~~€~~~~€~~‚~€}€~€~€~€~~€~€~~€€~~~~~~}~€€€~~€~}~€}€~€€}€}€~€}€~~~€€~}€~~~€~€~€~~€}~€€~€€~€€€~~~~~€}‚€~€€~~~€~~€~~~€~€€€}~€~€€€~~€}~€€~~~~~~€~€~€~~€~~€€€~€~~€~€~~~~~€€€~~~€~€€~€~€}€~€}€~~‚~€~}€~€~€€~€~~~€~€‚~}~€€~~~~~€€~~€~~~~€~~€}€€~€€~~€~€€~~€~~~€~€~€~€€~~~€~~€}€~€€~€}€~~€€~€~~€€€~~~€~~~~~€~~~~~€~€€~€~€~~~€€€~~€~~~€~€€€~€~~~€€€€~€~~~‚~~~€}€~€~€~€~~~€€‚}€}€~€}€}~€~€}€~‚~€‚€~€~~~~€}€‚~€~~€~~€~€~~~~€}€€€~~~€~€€~€€~€~€~€~€~€€~~~€~~€€~~~~~~~€‚}€~€~~€~~€€€~~€~€}€~~~~€€€~~€}~~~~€~~€~€~€~~~~€€~~€~~~€~~€~€€~€~~~~~€~€}€}€€}€€~€~~~€€~€~€~~€~‚€~€~~~€}~€}€~€~€€~€‚~~€~€~€~€~~€~€€~€~~~~~€~}€}€~~~€~€~€~~~€~€~€~€€~~€~€}€€~€~~~€~~~~€€~~€~~~}€}€€~€~~~}€€}€~€~€}€~~~€~€‚~‚~€~€~€~€€~€~~}€€}€~€~}}~~}€~~€~€~~~€~~€}€~€~~~€~€}€~~€€~€}~€~€€~~~€~~€~€~~€€€~~~€~€~}~~€~~~~~€~€~€~~~€~~~€~€~~‚~~€~~€~€~€~€~~€~€~~~€}‚€€}~~€~~~€~~€€~~€~€~€~~~~~€~~~}€~€~€~€}€}€€~~~€~~€~€~€~~‚~~~€‚~€~€~~~}€€~~}€€~~€~~€€€~}~~€~€~~€~~~€~~€~€}€€~€~€€}€~~~~€~~~€~‚~~~~€~}}€€€~€€~€~€€~€€~~€€~€}~~~~~~€‚}~~~~€~€‚~€~€€}€~€~~~€}€€€€~€~~~}~€~~~~~~€~~€~€~~€~€}~~€~}€~~€~~€~€‚~€~€~€~~~~€~€}€€}€~€}~€~€~€~€~~€~~€~€}€€~€~€~~~€~€~€~€~~~~€~~€~€~~~€~€~€~€€~~~~~€~€}€~~€~~~‚~~€~€}€€~€~~~€‚~~~€€~~~€~€~€~€~}‚€~~~}€~€~€€€}€~~€}}~€~€}€~~~€~~€~€~~‚}~€~~€~~€~€}€~~€~€~€}~}~€~€~~€‚~~€€~~~€}~€€~~~€~~€~~€}€€~€~~~}€~€~}~~€~€~~€~~€€~€~}€~€€~€~€~~~}€~‚€~~~}~€~€~€~~€~€€~}€~€€~~€€~€~€€~~€}~~€~~~~~€~€~~}€~€‚€}€~€~€€~‚~€~~~€~~€~~~€}‚~~~€‚~€~~€~~~~€€€~€}€~€~‚~~€€~€~}~~~€‚~€~€~€~~}€~€~€~€~€}~~€€~€~~~€~~~~}€~€~}~€~~€€~€}€~~~~~~€~€€~€}€~~~€~~€~€~€€}€€~~~~~€€}~€~}~~~€€€~€}~~~€}€~€€~€€~€~~~}~€€~~}~€~~€~€€}€~~€~€~€~€€~€~~~~€~€€€~~}~~€~€~€€~€}€~~~€~€~€~~€€~€‚}€~~€~€€€€~~~~€~€~~~€€€~€~~~€~}€~€~€~~€~~€~€€€~~~€}~€}€€~€~€~}€~~€~€~€~~€~€~€~~€~~~€~€}€€~~~€~~~€~€~~~€~~~€~€€~~~€~€~}}~€€€~€~~~€~€~€~€~~€€€~€}~~~€~€~~€}€~€~€€~€~€~€€~}€~~€~~~€~€~€€~~€~€~~~~€€}€~€~€~~~€‚~~‚€€~€~€~~~€~€€~€~}€}~€~€}€€~€~}~}~~~~~~€~€~€~~€€}€~€~}€}€€€~~€~~€~€~‚~~~€~€}~€~~€€}€€~~€~€~€~~~~€~}€~€~€~~~~~~~~€~€~~~€€€~€~~€~€~€€}€€~€}€~~~~~€~€~‚~~€~€~€€}€~€~}~€€~€~~€~~€€~€€~€€}~~~~€~€~€~~~‚~€}€€}€~~}€~€}~~~€}€€€€~~~}€€€€~~~~~€~€~€€}€}€~~~€~€}€}€~~€~~€€€~~€~~}€~€~€€~€~€~€‚~‚~€€}€~€~‚}€~€~€€~€~€~€~~}~€~€€€}€~~€~~€~~~€~€~~~~~€}€~€~€~~~€~€€€~€}~~€~~€~€~€~€€~~~€€€~€}€~~}€€€~~}~€~€€€~~€~}~‚€~€~~€~€€€~€~~€~€~‚~€~€~€€€~€~~~€~€~~~~€~€~€~~€~‚€€~€~€}}€€}€~€}€~€~~~~€~€‚~~~~~~€‚}€~~€~~€€€€~~€}€~€~€~~€€~€~~~€~~~}~€€~€~~€~€~€€}€€~~€~€~~€€~€}~}€~}~€}~€}€€~€~~~€~€}€€~€~}€€~~~~€~‚€‚~€}~~€€~~~~€~€~€~€€~€~~€~~€€~~€~~~}€}}€€}€}€~€~~~€~€€}€~~~~~~}~€~€~~~€~€~€€~}~€}~€~€€~~}~€~€€~~€~€€€~€~~€~~€~~~€~€€~~€~~€~~€~€}€~€~‚~~~~~€~~~~~€‚}€~€€}€~€~~~‚€€~~~€}€‚€€}€~~~€€€€~~~€~€~~~€~€~~}€~~€€€~€}€€~~€~€~~€€~~€~€€~~€~€€~€~~€~€~~}~~~~~~~~~€}~€€}€~€}€€}€~~~~€}€~€~€}~~~€~€~~~~‚~~€~€~€}~~~€~~€}€~~€~€€~~~€~€}€€~€€~~€€~~€}~~€}~€€~~€~~€~€~€~‚€~€~€~~€~€~€~€~~}~€~€€~~~€~~€€€€~€~~€~€€€~€~~}€~€~€€}~€~~~€}€~€~~}€~€}€}€€~€}€~~€~€€~~~€€~€€~}€~€~~€~~}€€€€~~€~~€€€}€~~€~€€~~~€~€~~~~‚~~~€~€}€~~€~€~€}€}~~€~~€~}€}€~€~~~€~€€~€~~~€€~€~}€~€€€€~~~€€€€~~~€}~€~~€~~€€€€~~~~~~~~€~~~~~€€~€~~€~‚€~~~‚}€~}€€}€€~€~~€~€~~~~€}~€€~€~~€}€~€~~€~€~~€~€~~~~€~~€~€~~€}‚€~~~~~~~€€~€~~~€}€~~~€~€€}~~€}€~~~}~}~€~~€~}€~€~€~}€~~~€}~€~~‚~~~€€~€~~~€}~‚€€‚~€~~€~~€}€€~€€~~~~~€~€€€~€~~€~~€~€~~~€€~€~~~~~€~~€~~€~~~~€€~~~}~‚€€~~€~~~~}~~€~€~€€~~~~€~€€~€~€~€€~~€~~€~~€€€~€~€~€€~€~~€~€€~~~€~€€~}~~€~~€€€~~€~€€}€}€~€~€~€~}€€~€~~~€~€€€~~~~€~€~~€~€~€€~}€€€€‚~€}€~~€~€~}~~€~~€~€‚}€~€~€~~~€~€~€€~}€~€~€~€~€~~€€€~€~~}~€€~~~~€~‚€€~~~€~€€~€~€~€€~~~~}~‚}~~~€~€~~~}~€€~~~~~€~€~€€~~~~€€~€~~€~€€}€~€€}€~€~~€~€€~€~~~~~~€‚~€~€~€~€€€~~€~}~€~€€€~€~~€~€€}€€~€~~€~€€~~€}~~~€~€€~€~~€~€~€~~}€~€€€€}}}€~€}€~€€€~~€~€€€~€}€~~~€~}€~~~~~€~€}€~€~~€~€€€~~~‚~€~€~€~€~~~}€~€~€}~€}~€~€€€€~}€~~€~~€~€€~~€~€~~~€}€~€~€~~~~€€€~€~~~}€~~€€~}€€}}€~~~€~€~~~~}€}€€~€€~€~‚}€~€~€€}€~}~}~~~€~~~€~€€~€~~~}‚}~~€~€€}€€~€~~€~€~€~~~€~~~€‚~~~~€}~€€~€~~~~€~€~~~~€~€€~€~~€~€~~~‚€~~~~€~€}€}€~~~€}€~€~€€~€~~~€}~€~€}~~€}€~€€~€~€~~~~~€€~~€~€~~€€€~€~~~~~€}€}~€~~€€~~€~~~€~€~~~~€~€€}€€~€~€~€€}~~€~€€~~‚~€~~~€€~€~€~~~€~€~€~~€~€€~~€~€~€€‚~€~~€~€~€~~€}€€~€~~~€}€~~€€~€}~‚~€~€~€~~~~‚~}€€€~€~~~€€~€~}€€~~€€~€~€~~€~~€€‚~€}€~€~}‚€~~€}€~€~~€~}€}€€€~€}~€~€€}€~~}~~€}€~~€€€}€~~~€€‚~€~~€~€~€~}€~€~~€~€€~€€~~~~€€€~€~~€}€~€~~€~€~€~€}~~€~~‚‚}~~€}€}€}~~~€~€~€~~€~€€€~€~~~~€€€~€~~€~~€~€~‚€}~}€~€€}€~~€~€}€~€}€€~€~~€~€€€€~}€~€}~€~€~€€}€€‚~~~€~€~~~€~~~€~€€~€€~€~~€}~€}€€~~‚~€}~~€~~~~€~€€€~€~€~~€€~~€€}~~~~€~€€€~€~€}~€€~€€}€}€~€~~€~€‚~~~~€}€~€~€~~}€~€~€~}~€‚~€~~€~€~€}~~~‚~€~~€€~~€~~~€~€~~~€~€~€~€~€}€~€}€~~€}}€~€~~‚€~~€~€~€}~~~~€€}€~~€€‚~~€}€€}€~€~~€~~~~~€}~€~~€~€~~€~€~€€}€}€~~~~~€~€~~€~€€~€~~}~€~€~~~€~€}€}€~~€~€}~~~€}€~€~€~€}~€€~€~}~~~€~‚€~€~~‚~~€€€~~~}€~~€~~~€~~~~~€~€~€~€~‚€~~~‚}€}€}€~~~€}€€~~~~~€€~€~€~~~~€~€~€}}€}‚€~~‚€‚~€~€~€~‚€~~~€€~€~€~~~€~€~~~~~~€€~~~~€~€€~€~~~€~€}~€~€}~€€}€~~€~~€~~~€~€~€€~~€~~~~€~}~€€}€~}~~‚~€~}~€~~€€~~‚~~~~€~}€~€€~€}€~€~€~€~€~~~~~€}€~~~~€€~€}€}~~€€€~€€~€~€~~‚~€~€€€~~€~€~€}€~€~~€~€~~€}€~~~~€~€}€~~€~~~€~€~€~€~~~~€~€€€}€}}~€€~€~}€~‚€€~€~~€~}~~~€}~~€~~€}€}€~€~~}€~€€~}~€~€~~€€~}~~€~€€~€~~€€~~€~€~€€€~~€~€~~~~~~}€€~€€~€~‚€~~€}€~€}}~~~€}€~€~€~€~€~€~€~€~€€~€~€~€~€€€€~€~~€~€~}€~~~€€~€~~~~~€€€€€~~€~€€€}‚€~~€~~~€~€}~~‚€€}€~~€~€~€}~~€~~€€‚€~~€~}€~€€~~~~~~€€€~~~€~€~~€~~€~€€~~~~€~€€~~€~€}€€~~~~}‚~‚~€~€~€€~~~~~€~~€}‚€~€~€~€€~€}~€‚~€~€~€}€€~€~€~~}~€€~~€~~~‚}~€~€€~~€~€~€~€~~€}€~€€}~~~€€€€~~~~~€€~€~~}~€€~~~~~€~€~€€}‚€€~€~~~€~€~€~€~~~€~~€~€~~~€~~~€}€€€€~€~€~~~~€}€~~€~€~~~~~€~~€~€€}~~€€}€€€~~€~~~~€€€€~€~~~€~‚€€~~~€~€~~~€~€~€€~€~~€€€~€~~€~~€~€~€~€~~€~€~}€€~~~‚~~€€~€€}€}€~€~€~€€€€~~€}€€€~}€~~~€~€€€~€~€€}€}~€~~~€€€~~€}€~€~~~~€~~}~€~‚‚}€}~€€~~€~~~€€‚~€~~€}€€~~~~€€~€~€~~~~~€~€~€}€~}€€~~~€~€€~€~~~€}~~}€}~€€~€~€}€€}€~€~~€~€€~€~€~€~€€~~€~~~€~‚€~~}€~~€~~€€€~~~~~€}€~€~~}€~~€}€~~~~~€€‚}~€€€~€~~€~~€}€~€‚~~€~~€~~~~}€€€~€~€}€~}~€€~~~~‚~~€}€‚}~€}€€~‚€~~}~~€~€€€€€}€~~~~€~€€~€~~~€~€~€~€}€€~€€~~~~~~~€~€~~~~€‚‚~~€~~€~€~€€}€€}€~~~~€~€~~~€€€~~€~~~€~€~€~€~€€}~~€~€€~€~€~}€~€€~~€~}‚~~~€}€~~}€~~}~€~€€~~€~~~€~~€€€~€~~~~€€€~}€~€€~~~~~€~~~~~€~€~~€~~€~€‚~€~€~€~~~~€}}€~€€~€~€~~€~€€~~€~~€~€~€~~€€€€~~~~~€~~€~‚~€}~€~€€~€€€~~~€}€~€~~~€‚~€~€~~€~€€~€~€~~~€~€}€}€€~~€€~€€}€~~~}€~€~€}€~€~€~~€~€~~€€‚~€~€~€~~~~€~€~€~}~~€~€~~~€~€}~€€~~~€~~€€}~~€~~~}€~~€}~~€‚}€}~€~~‚~€€€~€~€~€~€~€€}€~€~€€~~~~€‚}€~€}€€~€}~€~€}€~€~€~~~€~~€‚~~€~€~€}€€~€~~~~€~€€~€~~~~€~€~€€~€~‚~€}~~~€~}€~~€~~€‚~€€~€€~}}~€~€~€}€~€~~}~~€€~€€~}‚€~€€~€}€€~€~~~€~€~€~€~~~}€}€~€}~~€~~€~€~€~~~}~€‚€€~~~€~€€~}€~~€~~~€~~~€~~€~€‚€~€~€~€€~€~~~~€€~~~~~~‚~€~€~€€~€~}€~€~~€€€€€‚~~€~€€~€~€€~~€~€}~~}€€~€~~~€~}€~€~€~€€~~€~~€€‚~€~~}€~€€€~€~~€~€~~~~€~€~€~€~€}~€~€~€}~€}~€~~~~€~€~~~€~~‚~€~€~~~€~€€~€~€~€~~€}€~~~~}€~€~€~~~~~€€~€}€~~~~~~~€~€~~€~€€~€~€~}€~€~€~€~~€~~€€~~}€€~€~€~~~€€~€~€~~~~‚€‚~~~€}}€€~€}€~€~}~€€~€~€€~€~~~~~€€€‚~€~~€}~~}€€~}€‚~~‚~€}€€}€€€~€~€~€~€€~~~~€~~€~€€}€€~~~€}€€~€}€~~€€€€~€~€~€~€~€~~}~€~€~~~~~€€~~~€}~‚€€‚~€}~~}€~~}€~€}€}~~~€~€€~€~€~~€‚~€~€~€}€~~~~€}€~~~~~}€~€~€~€~~~~€~}€~€~€~€~€€}€}~~~€€€~~€~€~€€~€~}€~€~€~€}~~~~€~€€~€}€~~~~€~~}€€}€~€~~~€~~€€€~~€~~~~€}~€€}€~~€~~~~€~€~€~~€~€€~~€~€~€}~€~€~~~~~€~~~~~€€€~~€~~€~~€~~€~€~€~€€€~~}€~€€~€~~~~€~€€€~€~€}‚€~~€‚~~~€‚~~~~~€~~~€€€~~~~~€~€~~~~€~€€~€~€~~€}€~€~€~~~}€€‚}~€€~€~€€~€~~~€~€€~~€}~€}€€~€~~~‚~€~€~€}€~€~}~~€~€~€~~~~€~€~€~€~~€~~€}~}~€€~~€~€~€~~~~€~€}~€€~€~~~€~€€€€~€~€~~€~€€~€~~€~€}}~€~~~€~~€€~€~~~~~€~€}€~~€~~€~€€~€~€~€~~~€~~€~€~€~€~~~~~~‚~€}~€~€~~~€~€}€~~~€}€€€~€~~~~€€~€~€~€~~‚€~~~€~€~€~~~€~€€€~€~~~~€€~€~~~‚~€~€€~€€~€€~€€~€~~~~}~€}€€~~~~€€€~~~}€€€}€~€€~€~€~€~~~~~~€}€~€€~~~~~€€~€~€~€~€€€€~€~~~€~€}€~~~€~~~‚€~~~~€}€~€~€}€~~}€€€~€}~€~~€€}€~~€}~€~€~€~~~€€~€~}~€}~~€~€‚~€~~€~~€}~€~€€~~~€~~€€‚~~€~€~~€€€~~€~€}€€~€}€~€‚~€}€~}~€~~€~€}~~€~€~€€€~~~~~~~€~~~~~€}~€~~~}€~€€€€~€~~~~€€~~~€}~€}‚€}~~~~~}~~~€~€~~€~~€€€€~€}€~€~€~€~~€€}}€~~€€‚~~~~~€~~€~~~€~€~€~~}€€€€~€~~~~~€€€~€}€€~€~€~€~~}~~€~€}€~~~~€~€~€~€€€€~~~€~~~~~€‚~}€~€~€~~€~€~€~~~€~~€~~€~€€€~€~}€€~€~~}~€~€~€~€~€~€~€~€~€~€€~€~~~€€}~€~~~€~€~€~€~€€~~~€~~€€~€~~~}€€~~€~~~€€~€~~~~~}€~€~€€}€~~~‚~~}€~~€€~~€~€€~€~€~€~€~~~€~€~}~€~€~€€€~€~~~€~€€~€~€€€~~~€~€~€~€~€~~€~€‚~€€~€~~‚€~€~€~€~€~~€€~~€~~€~€}€€~~~~€~€€~€~~~€~~€~~~€€€€~~~€~€€~~€}€~€~€~~~}€~~€~~€€~~~€~}€~€€~~€~€€~~~€‚~}~~~}~€~€€€‚~~€~~€€}~€~€~€~~~~€~€~€~~~~€€€~}€~€~€€€~€~€~~~~€~‚~~€~~€~€‚~€}~€~~€~~€~~‚€€~€~~~~€€€~~~~€}~€~€€~€~~€~~~~~€~€~€~€€}€€~€~€~~~€€€~€~~€~€€€€€‚~~~€€€€}~~~~~€~€~€€~€~~~~‚€}€~~~~€~€€‚~}~~€}~€€~~}€€~€~~€}€~~~€€~€~~€}€~~~€~€~~~€~€~€~€~€€~~~~€‚~~€~€~~€~€~€~~~€€€€~€~~€~€}€€~€~€~€~~€‚~~€~~}~~€~€~€~}€‚~~~€}€~~~~€~~€~€€€‚}~€~~€~€~~€~~~~~€€~€~~€~~~€€~~€~€€€~~€~€~~€€€~€~‚~~‚~€~€€~~€~~~€€~€€}€€~€€~€‚~€~~~€€€€~€~~€}€~~}‚~}‚~€€€~€~~~€~€~€~€~€~€€€~€~~€~€~€~€€~€~~~€~~~~€}€~€~€~~€~~€€~€}~€~€~€~~€~€€~~€~~€~€~}€€€~€~~~€~€€~€~~~‚~€‚~€}}€~~€~~€~€~~€}~~~€~€~~~~~€~€~€}€€}€}€~€~€~~€}€~€€~€~€~€~~€€€~}~~~‚~€€~€€~€€}€~€€~~€~~€}€~€~€~}~~~€‚~~€€€€€~~~~€~€~~€~~~€€~~~~}€~€~€~~€~€~€€€~~~~€~€€~~~~€~~€€~~€~€~~~~€~€~}€~€~€€~€~}~}~~~€~€}€~€~€~€~€~€~€€~}€~~€~€€}€~~€}€}€~~€~€~~~€~€€€€~~€~€€}~€~~€~€~~€~€€}€}€€}€~€€~€}~~}€~€~€~€~€~€~~€}~€~€€‚~€~~~~~€~€~~€~€~~~~€~€€€~€~~€~~€€~~~~€}€€~}€~~€~€€€~~€~~~€~~€~}€~~€~€~€~~~€‚~€~~~€~~€~~}~€€~€~~~‚~~€~€~~€~€~~~€~€€~~€~‚~}~}~€~€~~~€}€€}€~€~€~~~€~€€~~~€€€€~€~~€~€€~€€}~~~€~€~€~~~~~~€~€~€€€~~~€~€}€~€~~€€€~€~€~~‚€€~~€~~€}€~~~€~€~~~~€€~€€}€~€€}€€~~~~‚~€}€€~€~‚~~€~€€~~~€~€€~~€}~€€€~€~€~€€~€~~~~€~~€~€~€~€~~€}€~~€~‚~~€}€}~~~€~€~€~~~~~‚€~~€~€~€€€~~€~~~~€~€€€~~~€}‚~}€~€}€~~~€}€~€~~~~~}€}€€~‚€~€}~~~~€~€~~~€~€~€~€€~€~~€~€~€}~€~~}~~~~~~€~~~€~~€~€€~}~€~€~€€€~€~~€}€€}~~€~~}~€~€~€€~€~€~€}€~~€~€€}~~~~~€~~~€~~€~€~~€}€~}€~€€€€‚~€}~~~‚~€~€~€~~~~€~€~€€~€~€~~~~‚}~~~€€~€~‚~€~€}€}€~~~€~}€~€}€~~€}€~~~~€~€}€€}€~~~~~€~~~~}€~€€€~~€~‚€}~€€~}~~~€~€‚~€~€‚~€€~~€}~€€~~€~~}~€~~}€~€€~~€€~~€~€}€~€~‚€~~~€‚}€~€~~~~€~€€~€~~~}~~€~€}€€€~€~€~~~€}€~~~‚€~}€€~€~~€~€~€~~}~~~~~€~€~€}€~~~€~~~}€~€€~€~~~}€~€}€~€€€€~€~€~~~€~€€~~~}€~€€~€~~€~€~€~€~~€~€€€€€~€~€~~€~~€€~€~~~~€€~€~~~€~€}~}~€€~€~~~~‚€~~€~€}€~~~~~~€~~~€~~€€€~~~~~€~~€~~}€~€‚~~~~€~€}€€~€€~€€~€~~~~~€~€€€€€‚~~~~€~€~€€~€€~€~€~€~~€‚}€€}€€~~~~~€~€~€€€€~€~€~~€~‚€€~~~€~€€~€}~€~€~€~~~€~€€~€~~€~€€~~€}~~€~€€~€~~~€~€€~~€~‚€€€~€~~~€~€~€~~€~~~€~€~€€~€~~€€~€~~€~~~€‚}~~€~€~~€}~€€~}€~€~~~€~€~~€~€~€~‚~~€‚}€~€€~€~}~€~€€}€~~~€€~€~~~~~~€~€}€~€~~~€€~€}€€~}~€~€}€~€~€~~}€€~€}€€}€~}~~~€~~~€€~~€~~}€~~~€}}€‚~~€~€~~~~~~€}€~€~€~~~€}€€~€~~}€~€€~~~~}~~€~€~‚€€~€~~€}€€~‚€~€~~€~~€~€~€~€~€~}€~‚€€€~~€~~~€~~€€~~€~~€~€€~€€}€~€~~~€~€~‚€~}€}€~€€~~~~~€~€~~~~~€~~€~€€~€}~€~~€€~€}~~€~€~€€~~}~~€€~€~~€~~~~‚~‚~€~€€~~€}€~€~~€~‚€€~€~€~€~€~~~€~€}€~€~€~€€€~~~€}}€~€€~€~€~~€~€~€€~~~~~€~€€~€~}€~€€}~~~€‚€€€~~~€€€}~~~‚€}€~€}€€~€}~~€€~€€~~€}€€€~€~€~~€€€‚~~~~€€~~~~€~€~€~€~~€~~~€}€~€~~€}€€€~€~~€~€€~~~€~~€€~€~~}~~€€~~~€~}~~€€~~€~€~€€~€}€~}€~€}€€~€~~}~€~€~€€~}€~~€~€€€~€~}}€~€€€~€~€~~~~~€€~}~~~~€~€~€~~€~~€~~€~€€‚~€~~~~€~~€~€€}‚€~~€~~€~€~~€~}~€}~€€~}€~~~~€~€~€}~€~€~~~€~€~~~~€~€€€~}~~~€~€€~€~~~~~}€~~€€€€~€~~€}~€}~~€~€~€€~}€~~€~€~~~~~€€~€~~€~‚€~€}~€~€€~€€~€~€}~~€~€€~€}~~}€~€€~€~~~€~~~~€~~€~€€~€~~€}€€€~~€~~€~}€~€€~€}~~€}€~‚€€€~€~~€€€€~€~€}€~~€€~€~€~~}€~€}€~€}~~~~€~€€}€~€~~€‚~~€~}€~€~€~~~~€~€€~~~~€~€€~~~€~€~~€~~~€~€~€~€~€€€€~~€€}~~~€~~€€~~€~~}~€~~€~~€}€~€€}€~~‚€~~€‚}€~€~€~€~~~€~~~€~€€~€~~~€~~~€~€~€~€~~~€€€~~~€~€~€€~€~~~~€€~€~~~~€€~~~€~€€€~‚~€}~€~€€~€~~€€~€~€~~€~€‚}€~€~~~‚~~€~~€~~~~~~€€~€~}}€~~~€~€€€~€~€~~~~~€~€~€~~€}€€€~€}~€~€~~~}€~€}€€}€}~~~~€~€€€~€~~~~€~€€€~}~~€~€~~€~€}€€~€~~~€€€~€~~~~€~€}€~}~~€~€~‚€~~€}€€€€}~~€~}€}€~~€~€~~~~€~€}~}€~~~~€€€~~~~~€~€€~€~€~‚€€~~€~~}€~€€€}€~~€~€€~€~~€}€~€€~€~€~~€~€€€~~€~€~~~€~~€€€~~~~€€~~~€~€~€~€~}‚}€}~€~€€~~~~€~€~~€~‚€~~~~~€~~~~€~€€~€~€~~€~€€~€~~}~€€~~€~~~~€€~€~~~€}€~~€~~~~~€~€~€~€€€€~}€~~€~}€~~~~‚€~€~€~€~~€‚~~}~~€€}€~€~€~~~~}~€€}€~€€‚~}~~~~€€~€~~€~}€~~€~~~€}€}€~€}‚€€~€}~~~€~~€~}€~~€~~€€~€~~~~€€~€~~~~€~€~~~~€€€~~€~€~~‚€~€~€€~~€~}€~~€~~€}~€€~€~€}~~~€~~€~~~€~€€€~}€}€~~}€~~~~}€~€~€~~€~€}€~~€~€~€~~}€~~~~~€€~€€~€~€~~~€}~€€‚~~~~€~€~€}~~€~~€~~€€~~~~€~~€~€~~€~~‚€~€€~~~€}~€~~€€€~}~€~€~€~}€~€€~~~~€~€~~€~‚€~€~~~}€}€€}€~~~€~€~€~~~}‚€€€}~€~~€€~~~~}~€€~~~€~€~€~~€~€~€€~€‚}~€}€€~€~€~€~~€~€}€~€~€€€€~€~~~~€€~€}~~€~~€~€~€€~~€~~~}€~~~}~~~€~~€~€€~~~~€~~~~~€~€~€€‚}€~~~€~€~€}€~€€~~}~€~~€~~€~€‚~€}€~~~~~}}€~~€€~€~~€~~€€€€~}~~€~~€€~~€~€}~€€€~€~~€€~€~~~€~€‚~€}€€€~€~~}~€~€~~~~€€~~~~€}€~~~~‚}~€~~€~€~~~€€€€~~~€~~€€~€~~~€~€~}~~~€~~‚€~€~€~}€~~~‚~€~€}€~‚~}€~}€~~~~~€~€€~€~€}€}€~€€}€€~€}€~~~~€~€~~~€~~~€~€~~~}€}€€€~€~€~}~~~~€€~€}~~}~€€€~~€~}~€~~~~~~~€~€€~~~~~}€€~€€~€~~~€}€}€~~€}€€€€}~€~~~}~€~€€}€€~~}~~€~~~€}€~~€}€~~€€~€~€~€~€}€~€€~€~}€~~€~€~~~€‚~€~€‚~€€}€~€}~~€~‚~~€~~€~€~~~€~~‚~}~~~€~€€€€€~~~€~~€€€~~~~~€}}~€~~~}€~‚€~~}~~~€€~€‚~€~~€}€€~~€~~€~€~}€~€€~€}€}€€~€~€~€~}~€~€€~€~~~~‚€€€}€~~€~€€}~~€~€~€~€~~€~€~€~€~€}~€~€~~~~€~€‚~~‚~~~~€}~‚€€~€~~~€~€~~~€~€€~€~€~€€}~~~}~€}€€}‚~}€}~€~€€}€~~~}€~€~€~€~~€~€€€€~€~~€~~€}€€}€~€~~€~€~}€~}~}~~~€~~~~‚€}€~€}€~~€~€~~€~€€~€~€~~~€}€~€}€~€~~~‚~~€~€€~€}€~‚~~~}€}€~~}€}€~€~€~~€€€€~~~}€€~€~~~€€€€}}}~€}~~€~€~~~€}€~€€~€~~~~~€€€~}~~€~~€~~~~~}~~€€~€~€~~~€}€~~€~~~€~€~~€~~€€€~}~~}€€€~}~~€~€~€€€€~~~~€€~~}€€€~€~€~~€~~~€~€€~}~€~€€~~~~€~€~~€~~€~€~€}‚€}€~€~€~€€~€~€~~~€~~}~~€}~€€‚~€}~~~€~€~€~€~~€~€‚}€~€~€€~‚~~~€}€€€~~€}~}~€€~€}€~~~€~‚~€~~€~~€~€~~€~€~€~~~~~€}~€~€€~€~~€~€€€}~€~€~€~~~~€~~}€~€€€€}€~€~~~‚~~~‚€€~€}~~~€~~€~€}€~~~€~~~€~€~~€}€~~€‚~€}‚~~€}~~€~~€€}}€€~€~~~€‚~~~€~‚~€~€~~‚~}€~~~€~~€~€~€~~}}€~€~€€~€~€~~~~€~€}€~€}€~~~€~€€~€~~~~‚~~~~€€~€~€€€~€~}€~}~~€~~~~~~€€~€~~€~€~€~~~€~‚€~€~€~~~~~~€€~€}~~~~~€€~€~€€€}~~€~€~€€}€~€~~~~€~€€~~~~~€~€€~€~~€~€€€~€~}€~~€€~€€~€€}€~~~~~~€}€~€~€~€€~€~€€~€~~€~~€€~€~~~€€~€€~€€~€€~~€~~~~€~€~€~}~~€}~€€€~}€~~~€~€~€}€~€}€€~~€~}~~~€€}€}€}}~€€~€}~€~€~€~}€~€~~‚~€}€~}€}€~~€~€~~€}~~~€}€~~~~€~€€€~€}~€~€}€~€~€~€~~~€~€~€€}~~~~€~€}€~‚€‚~~‚}€~€€~~€~~€~~€~~€~~~€}~}€~€‚~~~€}€€}€€~€~€}€~€~~~~~€€‚~€~~€~~~€~€€~€}~~~~~~€~}€~~~‚~€~€~~~~~€~€€€~~€~€~€~€~€}~~€~€€~€}€~€~‚~€~€~€~~€~~€€~~€~~€}€€~~€}€~€~~€~~€€€~~~~}€€€€~~€~~€€~~€~}}~~~~€~€}€~€€~€}‚~€~€€€‚~}€~~€~~€€~€~€~~€~€~€€~€~€~€}~€~€€~~€~~€}€~~€~€€~~‚€~~~‚~€~€~€}€~€}‚}~~~~€€€~€~~€~€~€~€~€~~~€€~~€~~€~€~€~€~~~~~}~€~€~€~~€~€€€€~€}~~€}€}~€€}€~~~~‚~€}€~}}€€~€€~€€~‚€~€~~€}~€€€€€}~~~~€~€~~~~€‚~€~~€~€~€~}€~~~€}€}€~~}~~~€~€}€~~‚~~~€~~}€~€~~~}€~‚€~€~~~~€~€‚}€}‚€~~~‚~€~€}€}€~~}€~~~€~~‚~~}€}€€~~~€‚}€€~}€€~€~€}~~€}€~~€~~~}~€~~€€~€~}€€~€~€}€~€~~~€}€€~~~€~‚€}€€~€~€~€}~}~€€€}€~}€~~~~€}€~€}€}‚€~}€~‚€€€€~€~~}~€€€~€}~€~€~€~~€€€€~€}~€~~€€~~~€~€~}€}~~€~€}€~€~€~~~‚€€~~~}~€€€~~~€}~~€~€~€~€~~€~€~€€€~‚}~€~~€}€~~~~€‚~€~€~~~~~€€€~€~~~~€€‚~~€~~~€~€~}€€}€€}€€~€~€~~€}~€€~€~~~€~€€~€~€}€}~~€~€€~€~~€}€€~€}€~~€}€€~€~€~~€~€~‚€~€~~~€~€€}€~€~~€~~€~~€~€€~~~€~~~~€~~€~€~€€~€€}€€~~€~~~€~€€€~€}~~€~€~~~‚~€~~€~€~€}}€}~~~~~€~€~€}€~~€~€€~€~~~~~€€‚€}~~€€~~€~~~€~€}~€~~~~€~€€€~~€}~€~~}€€}€~€~~~}~€€€€}~~€~€€~€~}~€€~~~€~~~€~€}~€~€~~}~~}€}~€~€}€€}~}€~~~~€~€€~€~~~~~€~€}~~~~€‚}€€~‚€~~€€~~€~~~€~€€~~€~~~‚€€€~~~€~€~€~~€~€€~€~~€~~€€€€}~~€~€€}~~~€~€~€~€~€~~€~~‚€~~}~~€~~€~~€~€~~~~€€€~€~~~€~~~€~€€~€~~~~~~~€€}‚€~~~~€€€~}€~~~~€€€~~~}€~~~}€~€~€~€~€~€€~€€~€}€~~€~€€€€~}~~}€~~€~€~~€}~€€~~~~~~€~€}~€~€~€~~~€€€‚}€€~€~€€~€~~~€~€~€€}~~‚~~~€~€~~€€€€~€~~~€~€€~~~€~~‚€€~~€~~~€~‚€€~~€~~~~~‚€€~}‚€}~~}€~€~~€€~~€~~~€~€€~‚~€~~€~~€}~€~~€~€~€~€}~€}€€€€€~~~~€}~~}€€~€}€~‚€~~€~~€€~€~~€€~€~~€~~€€~€~€}€€~€~~~€~~~~€}€~€~€~~‚€}~~€~€}~~€~€~€}~€~~~€€~€~€~~€€}€~~}€~€€€}€~~}€€}€~€~€~~~~€~€€€}€~€~€}~€~€~€~~€~~~~~~€€~€~~€~}€~~€~~}~€‚€€€~€~~~~~€~~€~€}€~}~~€€}€€}€~~~€€~~€~€€~€}~~~~€~~€}€~~~€}€~€~~}€~~€~~~~€~€}€€~€~€~~}€~~€€~~€~~€~~~~~€€~€€~€~€~~~~€€~€~~~€€~~€~}€~}€€~~~€~€€}€~€€~€~~~~~€€~~~~~€€€~€~~~~€~~€}€~€}}€~~~€€€~€~~~€€€€€~~€}€~~~€~€€~€~€~€~~€~€€}~}€€‚~~~€}€~~€~€€€~€~~€~‚~~~€~€~~~€~€€€€~€€~€~€~€~~~€~€€~~~~~€~}€}~~~~}€~~~‚~€~€€~€~€~~€~€}€~€~~€~~€}€€€~~~‚~~€}€€~~€€€~~~~€€~€~~}}}€€€}€~€~€~€~~€~~~~~~€€~}€~~~€~€€~€~~€~€€€~~€~€~~€~~~}€~}€€~€~€~~€~~~€~€~~~}‚~~€}€€~}~€}~€€€~€~‚€~~€}€~‚€‚€~}€~€}€€~}€~€~~~~~~€~€~€~~~~‚€~€~~~}€~€€~~€~~~€€}€~~~€~€~~€€€}}~€~€~~~~~€~~€€~~€}~~~~€}~~~~~€~€€~€~€~~~€}€~~€}‚~~€~~~€}~~€€€~€€~€~~€}~€~€~€~~~}~€~€~€~~€}€~~€~€}€€~~€}~~~€~€~€~}~€‚~~€}€~€}€€~~~~€‚~€~€~€}~~€€}€}€€~€~~~~~~€€€€~€~~€‚€~€~€~€~€~€}€~€~~~‚~€~€~~~~~‚€~€}€~€~€~€€€€~~€~€}~~~~~€~~€~}€~€~~€~€~‚}€}‚~€~€€~‚€~~~~~€~€}€~€~€~€~}~~~}€€}€~~~€~€€~€~~~€~}€~€}~‚€€‚~€~~~€}}€~€~€~€€~€~~€~€€~€~~~€}€€~€€~}€~~€~€~~~~‚€€~€€~~€}€~~~€~€€€~€~~~‚~€€}€~}~€€~€~~€}€~€~€€~~~€~~~~€€}~~€~€€~~~€~€~€€~}€€~€€}~~€~€€€~€~~~~€}‚€€~~€~~~€}€~€~€~€€~~€}~€~€~}€~€€€€~~€}€~~~€~€}€~~€~€~~}€~€~~~€~€~€~~€}~€~~€~€}€~}€€~€~€~~~€~~~€~‚~~}~€}€€~€€~€~€€~~}~~~~~€}€~~‚€~~}~~€~~€€}€~€~~€~€€~~~€}}€€€~€~~€€~€€~€~}€~€~~~€~€€~~~~~€~€}~~€€€~~}~~~€€€~€~~€~€€~~~~€~~~€~~€~~€}~€€€~~€~€~€~‚€~€~‚~~€~€~€~€}€€~~~~~~~~€€€€~€~€~~€€}€~~~~€}€~‚€~€~}~€~~€~€~~~~~€~€€€€~€~€€~€~€~}€~€}€€~~€€}€}}€~€}~~~~~€~€~~€~€‚~€}~€€~€€~€~€~€~~}~~~~€~€€~~€~~~€~€€~~~~~~‚~‚€~~€~~~~€‚~~€~€€~€~~€~~€~~}€~€~€~~€~€€€~€~~~€€€~€~€~€~€~~~~~~~€}€~€~€~~€~€€€~€~}‚€€~€~~~€~€€~}~~~€€}€€~~€~€~€~~~~€€€~€~~~~~€~‚€~}€~~€~€€~~€~~€€~€€~~€~}~~~~~~€~€~€~€~~€}€~€~€}€~€~€~€~€€€~~~~~~~€~€€}€~€~~~€~~€}}€}~‚~~~€~€€€~~€}€€~€~~€~€€€}€~~€~~€~~}€~€~~~€~€~~~~~€~€~€€~~~€~}€€€~~~~‚~€€~}€~€~€~€~~~€~€~€€~~€~€~€~€~€~~€~€~~€~€~‚€~~€}€}€€}€€~~~‚€€~~€~€}€€}€~€~~‚~~€~€~€~~€~€€~€~~€~‚~~~~€~‚}€‚~~€~€~€~~}€}€€~€~€€~€}‚€~~~€~€€€~~~~~€~€€~€~€~~~~€~€}€~€~}~~€~€€~€~~€~€‚~}~~€~€~~~~€~~€€~~€~~~‚~~€€~€~€€~~~~€~€€€‚~€~‚€~€~€~~~€~~€}€~€‚~€~~~€~~€€~~~€}~€€~~€~€~€~€}€}~~~~€~€~~€~~~~~€}€€~€~~~}€~€~€~~€~~€€~€~~~~€~~€~‚€€‚~}€~~~~€~€€~€}€}€~€~~~~€~€~~€~~~€~}€~}€~~€~‚~~€~€€}€€~~~€~€~‚€~~~€€~€~~~€}~€~€~€€~€~~~€~€~€€}€~~}~€€~€~€‚}€~€~~~~€€€~~‚€~}€~~~€}€~€~€~‚€}~€€€~€~€~€€~€~}€€~€~€~~}~€~€~~~~€~€~€~€€~€}€~~~€~€~~€~~}€~€~€~~€~€~€~}€€€~}~€~~~€}~~~€€~€~~~~€‚~~~€~~€€~€~€~€€~~€€€~€~~€~~~€~€}€€}~€~~~€}}€~~~€‚~€~€€~~~~€~€~€€€€~€~~~€~~}€~€€~~~~~€€~€~‚€~~~~~€~~€}~~~€~€€‚~€~‚~€~€~€}€€~~€~}~~€}~€~€‚}€~€}€}€€~~€}€~€€€~}~~~€€€~}~~~~}€~€~€~~€~€~~€~€~€}€€~~€€€~€~~~~~~~€}€€~€~~}€~€€€‚~~~~‚‚~€~€€€~~}~~€~€~€|~€~~€~~~€~€}€€€€€}~€~€€~~€~~‚€‚~~‚~€€}€€~~€~€€~€~~~€~€~€~~€~€€~‚~~~€~~€€~~~~€~~€€~~€~~~€}€€~~~~€~€€~€~~€~€€~~€~~}€~€€~€~~~€€~€~€~€~€€‚~€~~€~~€~€~€~‚€€~~~~€~€€€~~~€~€€}€~€€~€€€€~€}~~~€~€€‚~€~~€~€€~€~~€~~€~~€~€€€~€~~€€€‚~~~€~€~€€~}~€~€~~~~}€~€~€~~~~€~~€}~€~€~~~€‚}€}€}~‚~€}~€}€~€~€~~~€~€€€~€~‚€~}~~}€~€~~€~~}~€€~~~€~€~€€~€~~~}~€~€€~~~}€~~~€~‚~~}€~€~€€~€~~‚~~~€~€~~€~‚‚~€~~~€~€}€~€€€~~~~~€~€€}€}€}€~~}~~€~€~€~~€~€€~~~€~€€~€~€~~€~€€€~€~~~€~€~€€}€~€~}~~}€}€~€€~~~~~€~€~‚€~€~~€€~~€~€€~~~~~€€}~€~}€~~~€€~€~€}€€~€~~‚}~€}€€}€~€}~~~€~€€~€~~~€~~€~€€~€~}‚}~~€~~€~~~}€€~€~~€~~€}~€}€~€~€€~€~€~€}€~€€~€~€~€~€}~}€~‚~~‚€~~€}€~€~~€~€€~€~~~~€~€€~}~}€~€€~~€~€~~~~€~€€~€}‚~}}~‚€€~€}€~~€~~€~}~~‚~~~€€€€~€~~~€~€€€~€~€~€€€~~€~€}€~€€~€~~€~€~~}€~€€~€~€~~~€€~€~€~~~‚~~~€}~€~~€~€€~€~~~€~€€~~~~€~€€€€~~~€€€~€~~~€~€€}€~~}~€~€~~€~€~~€€~~~~~~€~€~€~€}€~~€~€~€~~~~€~€~~}€~€~€€€~€~~€~~€~€~~€}€~€~€~~€~€~€~~~€€€~€€~~€}‚€~~~~~~€~€€}‚~€~~}€~€€€}€}~~€~€€~€~€~€~~€~€~€€€}€~~€~~€€~~€~~€~€€€~€}~~~€~€~~~~€€~~}~€~€~€~~€€~‚€~~€~~€€~~€}}}€~€€~€~€~€~€€€~~€~~~~€€~~~€~~}€~€€‚~~~€~€€~~€~€~€€€~€~~€~€€~€~~~€~€€~€~~~~‚€€€~€}~€~€~}€~~~~~€~€~~€~€~€€~€‚~€€~€~~~€€~€~~€~~~€~€€€~€~~~€~€€}€€~€€~€~€~~~€~€~€}€~€~~€}~}~€~€€€€€~~€~€~€~~~€€}€~€~~€€~€~~~€€~€}€~~}}€~€~~€~~~€~€€~€}~~€}‚€~}€~~~€€€€~€~~~€€~€~€~~€~~~~€~€€~~}€~€~€~€~€€~~~€~~~€~€~~~}~~€€€€~}€~€€}€~}€€}~~~~€~€~€~~€~€€~~~~€€€~~~~€~€~€~~‚€‚~~€~€}~€~€‚~€}€~~}~~€€€€~€~€€~€€~€~~~€~~~~~€~~~~~€~~~~€€€~}~€~€}€~€~~}€€€~€}~~€~~~€~~€~€~€€~€~}€~~€~€€~€€~€~€~~€~~€~€€~€€}€~~~€~€~€€~€~€€€~~€}~~~€}~€}€~~€~‚€~~~~~€}€~€~€~~€~~€~‚€~€~~€~€€~~€~~~€€~€€}~€€€€~€~€~€~€~€}€~~‚~~€‚~~€€~~€~€€~€~~~~€~€~€~~€~€€~€~~€~€~~€~€~~€€~~~€‚~€~~€~~~~€€~€~~€~€~€€€~~€~~€‚~€~€€~€~€~€~~~~€~€~~~~~€€~€~€~~€‚}~€~€€€~€~~€€}€~€€~€€~}€~~~€~€€~~€~~€~€~€~€~€}€€~€~€~€~~~}€}€€~€}~~~€~€€€~€€~~~€}~}€~€~€~€~~€~€€~~}~~€€~€~€~~€€~€~~~€~€~€€~€~}~€~~€€~~€€~}~~€~~€~~~~€~€~€~~€€~~}~~€}~€€€€~}~~€~~€€~€~}~€}€~€~€~~}€€€€~~}~€€~€~~€~‚€~~~~€€~€}€€}€~€€€~~~~}~€~~~~~€€~€~‚~€€}~€€~}€~‚~€~€~~~~€~€}€€}~€~€~€€€~€~~€~€~€~~~€~€~~€~€~€~€€€€~€~~~€~~~~~€€€~€~€~‚€€}~€}€~€~~~€~€€}€€~‚€~€}~~€~~€~€~~~‚~~€€~€~~€€~€~~~€~€€~€~~€~€€}€~~~€€~€~~€~€~~~€}€~€€~€€€~€~€}~€€~~€~~~€€€€~€}€~€~€}~~~~~€}€€~€~~€~~~€}€€~€~~~‚}~~€~~}€}~€€~€~~€~€~€€~~€~€}€~€~}~‚~€€~€}~~~~€~‚€€€}€~~~€€}~€~€~€~€~~€€€~€~€~~€~€‚€~€~~~~€€~~€~~€~€~€}€~€€~€€~€}€~~~€~€~€}€~€~€~€}€~€~€~€}€€~€~~}€~~€€~~}~€~}€}~€~‚‚~~€~~€€~}~‚€~€~‚~€€}}€~€}€~~~€}€~€€€~~~€~€€~€}€}~~~€~~€~€€~€€~€~€~€~}‚‚~~~~~~€€~€~~€€~}~~€~€€~~€~€~€€~~~€~€€~}~~~€€‚~€~€~€~€€~~~€€~~€€~€~~~€€€~}€€~~}~~‚€~~€~~~€~‚€€‚~~~€}~€}~}€}~~€‚~€}€~€}~~€}€~€~}~}}€~€€€€€~€~}€~€€€~€~~~€~~~~~€~~€~€~}~~~€€~~~~~€~~~€~€€~€~~€~€~€~~€~€€€~€}~~€~€€€~€}~€~€}€~€~€}€~}€~~€€~€~~~‚€€€~€~~~€}€€€€~~~~~~€€€~~€~~~€~€~~~€~~€}€~€~€~~~~€~~€€~~~~€~~€€€~€}€~€~}‚€~€~€‚~€~€~€~~~~~€~€}€~€~~€~~€€€~€}€~€~€~€~€~~~€€~}~~~€~€~}€}€~~€~~€~€€€~~~~~€~~€~~~€‚€€}€~~€€~~€€~€€~€~€~~~~€~€€}~~€~€~~€€€~€€~~€}‚€~~‚}~€~€~~~~€~~€~~~€~~~~€~€€‚~€~~€~€}€~~}€~~~~~€~€~~}€€€~€~~€~€}~~€~€~~€€~‚€€€€~€~~~€~€€€€~€~~}€~€~€€~~}€€~~~~€~€~€€~€~}€~~~€~€~€~€~~‚~~€}~~€}€~€~€~~~~€~€~€~€~€€~€~~€€€~€~€~~€~€€~€}~€~~~€~~€~€€~~€}€€~~~~~€€€~€~€€~~~~~€~~}}~€}€€~~}‚~€‚}€~€~€~~~~~€~€~€~~€‚~€~€~€~€‚~~€~~~~€€~~€}€~€~€~€~€~~€~~€}€€}‚€~~~€~€~~~€~€€}€}€~~~~~€‚~~~~€~€~€}€~€~}€~€~~€~€~~~€~€~€€~~~€~€~}~~€}€€~}€}€~€~€~~~~€€~~~~€~~€€~~€~~€~‚€€~€~~~€~€~€~~~~~€~~~€~~€€€~€~~€~€€~~~~€}€€€€~€~~~€}~€€~~~~€€~€~~~€~€~€~€~~~€€~€€~€~€}€€~~~}~€~€~€~€€~~€~~€~€€~€~~€~€€€~~~€~€~~~‚~~€}€€}€~€~~€~€€}€~~€€}€€}€€€~~€~~€~€€€€~~~~€~~~€~~‚€~~€~€~~€€~€~~€~~€}€~€€~~~~€~€~€€~€~€}€€~€~~~€}~€€~€~~~€~€€~~~€~€€~~€€~~~~€~~€€~}~~€~€€~€}€~~~~€~€}~}€~€~€~}~€€~~~~~€~€~~~~~}~~€}€}~€~~€~~€~€~€€€~~~€}€~~€~~‚~€~~€~~~€~€~~~€~~~~}‚~~‚€~€~€~€€~€€~€}~~~€}€€€~€~}€~€~€€~€€~€~€~€~~~~€}€}€~€~~€~~~€~}~~~~~~€~~€€~€}~~~~€~~~~~€~€~€~€~€~~}€~€~~€~€~}~~€€€‚~€}~}~€€~~~~€~€}€~~€~€~~€~~€~€}€~€~€~}~€~~€~~~~~~~€~€~~€~€~€€€~~€€~}~~}€~€}€~~€~€~€~~€~€~€€€~€~~~~€€~€~~€‚~~~~~€~€~~~€€~€}€~}€~}~~€~}~~€~~€~€}~~€€€€~€~~€~€€}~~~€€~€~€~~~€~~€~~€~€€‚~€~€}€€~€}~€~~~~~€~€€~€€~€~~~~€‚}€~~€~~€~€€~}€~€~€€~€€}~}€~~€€€~€~~€~~~€}~~€~~€€~~~~€}€€€~}~~€~‚€}~}€~€~€€}€~€~€~€~€€‚~~~~€~€€~€€}€~€}€€~€~~~~€€~~~€~€€~€~‚~€~~~€~€~~~€€~‚€€}€€~€~€~~€~~~~~~}~€€}€~~~€|€~€€}€~€~~}~€}€~€~€}}}€}€€~€€€~€~~~~~€~~~~€~€€}~€€~}€~~~~€~€€~€~~€~€€€~~~€~~~~€~€€~€~€€~€~~~~~€~‚€€~~~~~€‚~€~~€~€~~€‚~~~~€}€}€~€~€€}€~~€~€~~€~€€~€€~€}~~~€}€~~€~~€~€~€€€€~€~}€}€~€}€~~~~€~€}€~€~~€€‚~€}~€~~~€~€~€€~€~~~€~~~€€~~€~€~~~‚€}€~€}€€~€~~~€~~€~€€}€~~~~€~€~€~~€}€~~~~~‚}~€€}€~€~~‚€}€~€}€}‚€~~~€~~€€~~~€~€€€~~~~~€~}~~€~€~€~~~€~€‚~~€~€~€€~~€~€€~€~€}€€€~€~~~~€€~€~}~€~€~€~€~~~~}~~€~€€~€€}~}€~€€~€~€~~€‚~€~}€~€~€~~~€~‚€€‚~€€~€~}~~~€~~€~€~€}~€~}~€}€~€€~€}€~€~€~‚€}€~€~~€}€~~}~€~~~~€}~}€~€~€€~~~~€~€~~~~€~€€~€€~€~€~€€~~~€~€€~€~€€~~€}€~~~~}€€€~}€~~€~€}€€}€}~€€~€}€~€}‚€~€~~~€~~€~€€~€~‚~‚~€~€€€~~€€€~~€~€~~€~€~€~€~€~€~€€~~€~€}€~~~€~€~€~~}€~€~€€~€~€€~~~€~€€€~€}~~€~~€€~€~~€~€~€~€~€~~€}~~~€€~€~€~~€~€~€~}~€‚~€~€}€~~~}€~€}€€~€}€~~~~~~€~€~€~€}~€~€€~€~~~€~€€€€}~‚~~~~~€€~~~~~€€~€}€}€€}€~~~€~€~€€€~€~}€€€~€}€~€~€~~~~€~€~~€~€€~€~€~~€€}€€~~€€~€~€€~}€~~~€~€~€~€~€}€~~‚~€~~€}€€~~€~€~€}€~~}€~€~~~~€€~~~~€€€~~€~€€~€€~€~€}€~€~~~~€~€€~€~~~€~€}‚€€~€~~~~~€~~€~~€~€€~€~€€‚~€}~~€}€~€€}€~}‚€‚~~€}~€€€€~€~~~~€~€€€~€}~~€~€~€~~~€~€~€~~~€~~~~~€~€~€~~€~€€€}€~€~€€~€€~€~€~€~~~€~€~€~~~~~€€€€‚~€~‚€~~~‚}€~€€~~~~€€~€€~€€~€~€~~€}€~€€~€}‚~~~~€~€€~€~~~‚€~€~~}€€€€~~~~€~€~~}~€~€‚~€~~}€~~~~~~}€€~€~~~~‚~€~€~}~€€€~€~~€}€€~€~€~~€~€~€~€~€~~€~€~~€€}€~€~€~~~€€‚~~~~€~€~€~€~€~~}€~€~€~~€~~€€~€~~~€}€~€€~€~~€~~~~€~€~€~}€}~}€}€~~€~‚}€~€€}€~~€~€‚~€~€~€~€~€}}€~~~~€~€~€€€~€~~€‚€~~€~€~~~‚€~€~€€~€€~€~€~~€~€~~€~~‚}€~€~€}~~€~€€~~~~~~~~~€~~€~~€~€~‚€€~€~€~€~~€~€~€~€~€~€~€~~€~~~€~~€~€}}~~~‚~€}€€~€}€~}~€€~€€~~}~€~€~€€~€~~‚~€~€~}€~~~€~€‚~€~~€~€~€~~€~€€}~~~€~€~€}€~~€~€~€€€~~}~~€~€~€~€~~~~€~~€~€€~€~€}~~€}~~~€}€€~€~~~~€~€€‚~}€}€€~€}€~€~~~€~€€}€€€~~€~€}~~€€€€€~~~~~€~~~}€}€€}€~}€~~~~~~€}€€€~~€~€}€~~€~€~~€~}~~€€~~€~~€~~€‚~€~~€}€~~}‚~}~€‚}€}€~€}~~€€~~~~€~€~€~€€~€€€€}€~~€}~€€€}€~‚~~€}€~€~€~~~~~€~€€€~~~~€‚~~}€~€~€€~€~€~~~€~~€~~~~€}€€€€€~€}~~€}€~€€€~~~~~€~‚€}€~~€‚~€~~€~€~€~~~€}€€}~€~~~~€~€}~~~€€~}~€€~€~€~~~~~€~€€~~~~‚}~~€‚}€}€~€€€€€~€~~€~€€~~€~~~€~€€~€~~}~€€€~€}~~~€~€~~~}~€~€€€~~~}~€€~~€~~}~€€€~€~~~€€~€~~€}€~€}€€~€~€~~~€~€€€}€~~€~~€€~}~~€~€~€€‚~€~~€~€~€~~€~€~€~€~~~‚€~€~~~€~~€~~~~~€~€~~€€~~€~~}€~€€}€~}€~€~~~€~€~€}~€~€~€~~~~~€~~‚€~~~~€~‚€€~~~€~}€~~€~€~~~~€~€~}~~~€~‚~~~~€~€~€~€~~~~€}€€~~€~‚€~~~}~~€}€~~~€~~€~‚€~~€}€~€}~€€}€}€~~~}~€}€~~~~~}~€~}€~€}€€}~~€~€€€€}~~}€€€~~€~~~~€~€~}€~€€€~€~~€~€‚~€}~€~€~€~€~~€~~€€‚~€~€~~~~€}€~~~€~€~~~€~€~~~}~~€€}€~€~€~€‚~€}€~€~€}€€}€~~€~€~€€€~~€~€~€€€~}~‚~~~~€}€€~€~€~~€~€~~€€}€~}~€~€€~~€~~~~€€~€~~}€~€~€~~€~€€~~~€~€€~€~€~~€~€~~€~~~~€‚~~€€}€~‚€~€~~€~€~€€}€€~€~€~~€~€}~~~€}~€€€€~~}~~€€~€~~€~€€€~€~€~~€~~€}€}~~€~~~€~~€€~~~€~€€~~€€~}~€~€}€~~€€}€€€~€~~~~€~€}~~€~~~€€‚~}~~~€€~€~€~€~€~~~~€~€€~€~~€~‚€€€€~€}€~~~€€€€~€~~€~~€€~€~}}~€}€~€~€~€~~‚~~~€}€}€~~~€~~€~€€€~€~~€~€~~€~€~~~~€~€€~~€~}€~€~€}€~€~€~~~~€€‚~~€~~}€~€~€~€~~~€€~~€~~~~~€}€~}€~~~€~€€~~~~~€~€~~~€€€€~~~}€~€€~}€~~~€€~€~~€~~€}€~}€~~€~~}€~€€~€~~~€~€~~~‚~~~€~€~€~€}‚€~~€€~~~~€~€€~€~~€~€€~~€~€€€~~€~}~€€€}€}~€~€~€}‚€~€~~€~~€€~€}€~€~€~~~}€€~€~~}€~€~~~~€~~€~€}~~€}€€€€~~~~€}€~€€~€~~~‚~‚~€~~€€~~~~~€}€€~€€~€~€€~~~€€€€€€}€}~}€~€€~}€~€~€~‚~€~€~~€}€€~€~~~€€€~€~~~€€~€~}€~~~~€~€€~€€€~~€~~€~€~}~€~~€~€~‚~€~€~€~~€€~€~~~€~~€€~~~€~€~€~~€}~~€~€~~€~€~~~~~€~€~~~~}€€~€~€~€~~~€~~~~~€~€~~~~€€~€~~€~€€~€~~~€~€~€~€€}€}~~~€€€€}€~~~~€}€€}~€}~~~‚~€~€€~~€~~€‚~~€~€~€~€~€}~}~~€~€~~}~€€}€~~~€~~€€~€~~€~€}~~€~€~€~~}~~€€}€~~~€€~~€~€€~}~~€~€€~~~~~~~~~€€~~€~~€~€€~€~}~€~€~€~~~€~€€~€~€}~‚~€~€~~~~€~~€€~€~~}€~€~~~€~~€~€€‚~~€~~}€~€€~~~~~€€~€}‚~€€~‚€~~~€~€~€€~€~~€~€~€€€~~€~€~€€~€~~~€~~~€~€~€~}~~~€~€€~€~}€~~~~~€€€~}€~~€~~€~€€~}}~€~€€€}€~€~~~€~€~€~€~~~€~€€€}€~~}~~€}€~€~€€~€~~~€€~€~€~~~}€~€€€€~~‚‚~~€~€}‚€€€€}€}~}€~€€€€~€~€~~€€€€}€~~~~€~€~~~~~~€~€€€~€~~€~€~~€€}€€~€€~~~~€}€~€~~€~~€~€}~~~€~€~~€}€}€€~~}€}~€~~~€~€€~€~€~~€~~€€~€~~~€~€}~€~€~~~€}€~€~~~~~~€€~€~€€~~‚~}€~€€€~€~~~€€~€}~€€}€~~~~~€€‚~~~~‚~~~€~€}€~€~~~~~€}€}€~~}}€~~€~€~~~~€~€€~~~€~€~€~€}‚€~~€~€€‚~€~€~€~€€~€€~~~€~~€€€}€~~~€~€~‚€€~€~~~€€}€~€€~€€}€~~~~~€~€}~}€~€€~~€}~~€~€€€}~~~€€€~~~~~~~~~~~€~~€€€~€}€~€~€€€~€~~~€~€€~~€~€~€€€~~€~~€~‚~~‚}€~€~~~~€~~€€~~}~~€~€€‚€~~~~€~€~~€~€~~‚€~~~~€~€~€~~~€~€€~€~~‚~~~€~€~~€~€~~€€~€}‚€~~~€~€~€~€€€~~€~~~~€~€~~~~€~€€~~~€~€}€}€~€}~~€~€~€€€~€~‚~}~€~€~€€€‚}~~€~€€}€~‚€~€~}€~~~€~€€~~~~€}€}€€€~€}~€~€~€€~€~€~~€‚~€~~€~€~~~‚}}€~€~€}~~~€~€~~€~€‚}€€~}€}~~~€~€€€€€}~€~~€€~€~€~}€~€~€~€~€~}€~€~€€~~~€~~€€~€~€€~€~~~€}€}€~~~€~~~~€~€~€‚~~~€}€~€}€~~~€~~€~~€~~€~€~€~~~~€~~€}€~}~€~€~€~€~€€~~~€~€~€‚€~~~€~~€}€~€~~€}€~€~~~€~€~€€€~~}~€€~~~€~€€~€}€~€~€€~~€~~~~€~€~}~€}€€€~€}~€}~€~€~~~€~€~~~€~~~~€}~€€~€~~~}€€~€~€~~‚~€€~€}~~€~€~~~€}€~€~}~~€~€€~€~‚€~~~‚€}~€~€€~€~€~}~€~€‚~€€}€~~€~~€€~€~~€~€€€~€€~€}€~€~€~~~~€€~€~~~~~}€~~€€~€~‚~~~~€~€€€~~~~~~€~€€~~€~€€}~~~‚~€€~~~~~~~€}€€}€~€~‚‚~€~~€~€~~€}~€€~~~~~€~~€€€~€~€~€~~€‚~~~€~€~€~~€€€~€~~~€~€€~‚~~}€‚}€~€€~€~~~~€€€~€~€~~}‚}€€}€€~€€~€~€~~~}€~€~€€~€~~~€~~€~~~€~€€€€}€~€~€€~‚}~~‚~~~€}€€~~~}‚}~€}€~€~~}€€}€€€~€}~€~~€}€~€~€~€}€€~€~}~~~€~€~€~~~~~€}~~}~~~€~~€€~‚‚~~€~~~~~~€~€€}€€~}~~€~€€}~~€€€~}€~~~€}€~€~€~€}~€€~€~~€~€~€€€~€~~~€~~€€~€€~~€‚~€~~€~€€€~~~€~~€€€}~€~€€~€~~~€~€~€}€~~~€~€€~€~~~€~€€}€€~€~~€~€~~~~€~€~€€}€~~‚€~}€€€~~€~~}€~€~~~€~€€~€}€~€~€~€~~€~€~€}€~€}€~~~~€€~€~~~€€~€€~€~€~€~~~€~€~€~~€}~€€~~€}€€~€~}€~~~~€~€€~~~~~€~€~}€~~~~€€}€}~€~€€~~~€~~€~€}€€~~€~~~€~€€~}€~€~€€€~~€~~€~€€~€~~~€~}€~~€~€~~~~‚~~~}~~~~~~€€~€~~~~~€~€€€€~€}€~€}€~€€~~€€€€~~~~€~€~~}~€~€~€}€€}€~~}}€~€~€~€~€}~~~}~€~~~€}~€~€}~‚€€~~€~}€€}€~€~€€€~~~€~€~}~€}~€~~€~~€~€~€€‚~~€~~€€€~}~~€~€€~~~€}}~~€~€~~€~€~}~~€€€€~€~~~€~€~€~€~€€~~€~~€~~€€~~€~~}€~€€‚~€€~€}€€~€~€~€~€€~€}~~€~€€€~~€~~€€}€~€€~}€€}€~~}€~€€€~~€~~€~€}€~€~€€}€~~€~~€}~~€~~€€~€~}€~€‚€~~€~€€~~€~}~~~€€~~~€~~~€€€€}€~~€~€~€~}€~€~€~~€~€€€€~~~€~€€€~~€~€~€~€~}€}€€~}€~~~€~€}€~€~~‚~€~€~~~~~€€~}~~}~€~~€~~€~~~€~~€~€€~€~€}€~€€€~~~€~~}~}~~€}~€€}~}‚~~~€~}€€€~€~~~€~€€~€}~~€}€}€~~€}€‚~~€~€~€€~~€~€~€~€€}€}€~€~~€~~€~€~~~€~€~~~~~€~€€~}€~~~€€~€€~€~€~~€~}€~€~€~~~€€€~~€~~€}}€€~€~~~€~~~~~~€€€‚~~€~~€€€~€~€~~~~€€€~~€}}€~}€}€~}€~€€~€}~~€~~€€~€~~~€€€}€~~€~~~€~~€}€}€~€~~~~~~~€}~€€€~~€~€~€~€€~€~€~~~~€‚~}€~~€}~€~€}~~€~~€}€€}€~~€~~~€€€€~~€~€~€~€~€~€€~~€~€~€~€~€~€~€€€~~€~}€~€‚~€~~€€~~€~~~€}€~€~€~€~~€~€}~~€~€€~€~~€~€€€~}~~€~~€€}€~€}€~~~€€~€}€~}€}€~€€~~~€}€€~€~€~€~~‚~‚~€~€}€}~~~~~~€~€}€~~~€€~€€}€€~€~~~~~€~~€~~~~€~€~~~}}€~~~~€}€€€~€~€~~~~~€~€}~€~~€€~~€~~€€~~~~€~€~€~~~~~~~~€€~~~~~€~€~€~€}€€~€}~~~€~€~~€€€~€~~~€~€~}~~€~€}€€}€~€~~}€~}~€~€€~€~~€~€}€€}€~€~~~}~~~€}~~~€€€~~€‚~~€~€}€}€€€~€}~~€~€€~~€~~€~~€€~€~~€~€~~}~~€€‚~~~€~€€€~€~~~~~€€}~~€€~‚~€~€~€~€€~€~}€€~~€~€€~~€~€~€~~~~€€}€~~~€~€~~€~€~€~€€~~~€~~~~}€€‚~~~€}€~€~~~~€~€~~€}€~€€~~~~€€~~‚~~€~~~€‚~€~~~~€~}€}€~€€€~€~~~€~€€€~€~~~€€~~€~€~€~~€€}~€~€~~~~~~€€~€€~€~~}~€~~}€~€~~€~~€~~‚€~€~~~~~~€}€~€~€€€~€~~}‚~~~~~€}€~€~€}~~€~€€~~~~~€~€~~~€~€~€~€~~~€}‚€~€~~€~~~€}€~€~~~~~€}€}€€~~€}~€~~~~€~€€~€~}€}~€}~€‚~€~€~~€~€~€~€~~~‚‚}~€}€~€€~~€~€€€€€€~~€~€€~€€~~€~€~€~~€€~€}€~~~}€~€€€‚~€~~~€~€~~~~€~€€~~~~~€€€~}~~€}‚€~~~‚}~€}€€~~€~~~€~€‚~‚~€~~}€~€€€~~€~€}‚€~~~€}€~€€~~~~~€~€~€€€~~~~€~€~€€~€~~€}~~~€€~€~€~~€€~€~~€~€€}€€~~€~€~~~~€€~€~~~€~~€~~~€~€~€~~~~€€€~~~€}€€~€~~€}~€€~€~~~}~~€~~€}€}~€~~~~€~~€€~~€~€~€~~€~~€€~~€}~~~€~€~~€}~€€~~~~€€€~€~~~€~€€‚€~~€~~€~~€~€‚~~€€~€~~€~~~€}€~€€~€~€~€€~~~€~~~~€~€€~€€~~~€~~~}€~~€~€~~€~~~~~€~€~€~€~~€~~~}~€}€~€}~~€€~€~€€~€~€~€}€€~}~~}~€€~~~~€~€‚}~€€~~€€€~~€~~~~€~€‚~~~€~€~~~~~€‚~€~€}€€~€€~~}~€~€~€~€€~€~~~€~€~€~}€~~€~€€~€~€~~‚~€~€€~€~€}‚~~€}€~€~~~€€€~€~€~~~~€€€}€~€€~}~~€€€~€€~€€~~€~~€}~€~€}€~}~~~€~~}€€}€€~€~€~~~€~~~€~~€€}€€}€~€~~~€~~~€~~~€€~€}€~}€~~~}€}€€~€}~€}€~‚€€~~~€~€~€€€~~€}€~~~€~€€€~}€~€€~€~‚€~€}€~~~€~~}€}€~€}~€~€€€~~€~~€€~€~€}€~‚}~€€~}€~~~€~~€€~}~~€~€~~~€~€~~€~€~~~€~€~€~~~€~~€~€~~~~€~€€~}€€~€~€~€€€~€~}€€~€~€~€€~~~€}~~€€~€~€}~€~€}€€€~~~}€~€~~~€~€€€~€~~}€€€€}€~€~}~~~€~€}€~€~€€~€~€~~~€}€~~~‚~}€~€~~}~€€~€€~€~€}~~€~€€~~€~~€}~€€~~€~~€~€~€~}~€~€€~~~€~€€~€~€~~€€~€~€}‚€~}‚~~€~€~}~€€€~€}~€~~€€~€~€~€~€~~€}€~€~~€~€~~€~~~~€‚~€~€~~~€~€~€~€€}~€€~€~~€~€~~~€~€~€~€€}€~~€~~€€€€~€~€~~~€~€~€€~~€}€~€€€€~~~€~€€~€~~~€€€€€~€~}€€€€~~~~~€}€~~~€€€~€~~€~€€~€~€}~€‚}€~€€‚~€}~€~€~~€~~~~€€~€~}€~€€€~€~~}€~~€~€~~‚€~~~}~€~€€}€€}€~~€~€€~~~~~€~~~€€€~€~~~~€€}€~~€~€~~~€~‚~€~~~~~€~€~€~€}€~€~€}~€~€€€~€}~€}€}~€~€~€€€~€~~€~~~€~€€€€€~~~€~€~€€€~€~~€~€~~~~€~€~€~€~€€~€~€~~~‚€~~€~}€~€€€~€~€~€€~~‚~~~‚~€~€}€~€~~‚€~~€~€~€}€~‚~~‚~~€€~€}~~~€~€~€~~€~~€€~€€}~~‚~}~€~~€€€€}€€~~€€~€~€€~€~€~~€~€€}}€~€€~~€}€€~€~~€~‚€~€~€~~€~€€~~€~~€€€~~€}~€€~€~~~}~~€€~€~~~€~€~€}€~€}~€€€€~~~~~€~€~€~}€~€~€~~~~~€~€€}€€}€~~€€~€~€~€~€€~~~~€}~€€~€~~~€~~€€~€~~€~~~€~~€~€€€~€~~~€~}€~€~€~~~~€~€€~€~€~€~€€€~~~~€~€€~€€}€}€€~~‚€~€€~€~€~€~€~~~€~€€~€}€~~~€€~€€~‚€~€~‚~~}€€€~€~~~€}~€€~€€~~}~~}€~€~~~€~€€€~€€~€}€€}€}€~~€~€€~~€~~€~€€~€~~~€~~€€€‚~€~~~€~€~€~€~€~~€~~~€~~€}€€~€}~~€€~€~~~€~€~€~~€€}€}€~~~‚~€}€€~€~€~~€}}€}€~~~€~€~€~~€~~€~}~~}~€€~€}€~€~€}€~~~€‚~€~~€}€€~~~€‚}€~€~€~€€~~€€~€~~~~€~~~~~~€€€~~~~€~€€€~€~~}€~~€~~€€}€~€~~~~€~€~€~}~~€€~€~€€~~€~~€~€€~~€~~€~€€€~€~~~€}€~~€~~€~~~€€~€~~~€~~~~~~€}€~€}€€‚~€~€~~€€}~€~€}‚~~~€~€~€~~‚~~}~}€}~~~€€~€}€~~€~~~€~~€}€~~~~€}€~~~€~€~€~€~€€~€~€~~€~€€€~~~}~€~€~~~€€~€}~€~€~€}€€~€€~~~~}€~‚€€~~}~€€~€~~€€€~€~~~~~€}€~€~€~~~~€}€~€€~~~€€€€~~}€~€€~~~~€~~~~€}~€€‚~€€~€~~~~~€~€~~~€~€~€~€~€€~€~~~€}€~€€~€~€~~~€}€~€€€€~€~~€~~€€}€~~€~‚~~€}€}€~€~€~€€~€~~}€~€€€~}€~€}€€~€}€~€~€~~~~€€~€~}€‚€~€€~€€~€~€~}~~€~€~€}€~€~€~}€~€~€~~~~~~€}€€~‚€~€€~€~~~~~}€~~€~€~}€~€€~€€~€}€€}€€~€~€~€~~~€~€€~}~~~€€€~€~~~~~~€}€~€~€~€~~€~€~~~€€€}}~€€~€}~€~€€~€€~€~€~‚€~~~€€~~€~~~€~€€~~€~€~~}€€~~~€€}~~€~~€€~~€~€~~€€~€~}€~‚€€~€}~€}€€€€~~~~~€€€~}€~~€€~~€~€~~€~‚€€~}~€~€~€~~€}€€~€~}~~~‚~€~€~€}~~€~€~€}€~~~€~€€~~€~~~~~~€~~€~€€~€}€~€~€€~~~~~€€~€~€~~~€}€~€~€}€~€~~€~€~€~€~€€€~€~~€€~€~~}~~€~~€~~~€~€~€~~€~€€~}€}€~€}€~~~€~€‚}€}€}€~~}~€€~~~~~~}€~}€~€~~€~€€~€~~€€~~~€~€€~~~€~€‚~€€}€~€~€~€~~€~~€~€~~€~€€~€~~€}€€~€~~€~}€€€€~€~€~~€~~€~€~€~‚€~~~~€‚~€~€~€~‚€~€~€~€~€~~~~~~€~€~~~~€}€~€€~€}€€€€~€~~~€}€~~~~€~€~~€}~€~€~€~~€~€~€€€}€~€}€}€€~~€€€~~€~}€~€~~~}€~€}€~€~~‚~€~€€€~€~~}€}€~~€~~~~€~€~~}~~€~~€€~€}€}€~€~~~~€}€~~~€~€~€€€~€~€~~€€€€~€~~~~€~€}~~€~€~~~~~~€‚~~€}}€~~~€€}€~~~€~€~€€€~€~~€~~€~~€}€~€~€€~€~~€~~~€~€~~~~€~€~~€~~}€~€‚~~~~~€€~€~~~‚~}€~~€~€~€~€~~€~€€€}€~}€}€€}€~~~‚}€}}€€~}€~€~~€~€~€~€~~€~€€}€}~~€~€~€€~€~~€~€~~€€~€~~~~~€~€~€€~}~~~€~~€~€~}€‚~~~€€~€~~€}~€~€~€}€€~€~~~€~€~~€~~~€~€€€~€~~~€}~€}€~€~~}~~€~~€~€~€~~}~€~€€€~€~~€~€~~€~€€~~€~~€}€~€€~~~~€}~~€~€~~~€~€}€€~~€~~~€~~€~~~~~~~€}€~~~€€€~~€~€~€€~€~€~€~€}~~~€~€€~~~~~~€~~~€€€}€~~€€}€~~~€~~~~€~€~~€~~~€~~€~~€€€~~€~€~€}~€~~€~€~}~€~€~~€~€~€~~~€~€€~€~€~€~~~€€~~€~~}€~~~~€~€€~€€}~~€~~€}€€~€€}€~€~~~€€€~€~~~~~~~€~~~~~€~~€€}€~€~~~~~~€€~€~€~~~€~€~€€}€€~~€~~€€~~~‚~}€€€~€~~~€}~€‚}€€~€~~~~~~€€€~€}€~~~~~€}€€€~~~€~€~€~~€€~€€}~~€~€€‚}€}~~‚~~€}€€€~}€~}~~~~€~€~€~~~€~~€€~~~~‚~~€€~€€~~€~~~€}€}€~€€~€}€~~}€~€€~~~~€~€}€€€~~~~~~€€~~€~€}~~}~€€~~~~~€~€}~€~€~€~€~~€}€~€~€~~}€}€€~~€}~€~€€~~€€~€~~~€~€~€~€€~€~€~}~~€€~}€}€~€€~~€€‚~~~~€~€~€~}€~~~€~€~~~~~€€‚~~€}€€~€€~€~€€€€~€~€~€}€~~€~~~€€~~~~~€~~~€~€~€~€~€~€~€~~~€~~~~~€~€}~~€~~€~€~€~€~€~€~~€~€€€€~€~€~‚~}~€~€~€}~~€~€~€~~€~~~€~€€}~~~~~~~€€€}€}~~€~€€~€}€~€~€~~~€}€€~~~~~}€~€€~€~}~€€~}€~€€}€~€~€~€€~~€~~~~€‚~~€}}€~~€~€~€€~‚~€€~€~~~€}€€~~€~~‚}€~€~€~~~~€~€~€}€~€}€~~~€~€€€~}~~~~~€}€~€€~~~~€~~~€~€~~~~~€~€€~€~~~~€~~€€~~~~~~€}~€~€~€~~€~~€€€~~~€}€~€‚}~€€€~€~~€~€~~~~}~~€€~~~€€~€~~€}€}€~~€~~€€~‚€~‚}‚~€~~~€~€€€~€~€~€‚}€}‚~€~€€€~€~~}€€~~~~~~~€~€~~€€}~€~€€}€€~€~€~€~~~€~€€~~~~~€~~~€€~~€~€~€€}€~~~€~€~~~~~€~~€~~€}~~€€€€~€~~€}‚€~~€~€}€~~~}€~‚€~~}~€~€~€~~~~€€€~€~€~}€~€~~~€€~~~~~~€}}~€~}~€~€~€~~€~€€}€~€~€~~€~~~€€€~~€}‚~~€€~€~~~~€}‚€‚~~‚€~~~‚~~~€€~~€~~~~€~~€~€€}€€~~~€~‚~€€}€~€~€~~~~€€€~€~~~€‚~€~€~€~€~~~~~€€€~€~€~~~~~€~~~~€~€~€€~€~€~~~€~€€~€~~~}~€~€~~}€~€~~~€~~€~~~‚~~~~~€~€€~~€~~~€~€~~€~~€~€~€€~€}~~€~€~~€~€~~~~~€~€€~€}~~€~~€€~€}€}€~~‚~€~~€€~€~~€€~€€~}€€~€~€~‚~~~€~€}~~€~€€~}€}~€~€€€~~~€~€€~€~€~~€~~‚~~€€}€€~€~~}~€€~€~~~€~€~}€~€~€~~~€~~€~}~~}~~€}€€~€~}~€~€€~€~~€~€~€~€~€~€~~€€}€€}€~~}~~€€~€€~€€~~~~~€~~€~€~~}€~€~€~~~~€~€~€~~~€~€€€~€}~}€€€‚~~~~€~€~~~€~€€~~~~€~€€~~~}~€€~~}}€€€~€~~~€€~€}€~€€~~€~~~€€€~€}€~€~~~‚€~€~}€~€€~€€~€}~~€~€€~}~‚~~~~~~~€~~~~€~€~€~~€€}€~~~€~€€~}~~~‚}~€~€~~~}€}€~€~€~€~€~~€~~€}€€~€~€~~~~€~€~€~}€~€~€~€~~~€‚~€}€}€€~€~€~€~~‚~€~€~€}~€}€~€€€~}€~~‚€~€~€€~~€~~~€~€~€}~€~€~~~€~€€€~€}~~€~€~€€~€~€~~~€~€€€~}~~€~€€~€~~€~~€€~€~~€€€~€~~~€~~€~€~€€~~€~~~}€€}€}}€~~~~€~€~€€~~€€~~€~€~~€~~~€~€€€~}€}~~€€€~~~~~€€~‚~€~~~€~~~€~€~~~€~~€}€€~€€~€~€~~}~€€~€~€}~~~€€~€~~~€~€€}€~~€~~~~~€~€}€~~€~~€~€~~€~‚€~€}€~€~~~~€~~€}~~€~€~€€~€~€~~€}€~€~~~€€~~~~~€~~~€~€~€~€€€~}€~~€~€~€~~~~}€~€~€}€~~}~€~~€~~~~€~}}€~~}~€~€~~€~}€~~€€~€}€~€€~€~~~~€~€}€~}€~~~~~€€~‚€~~~‚~~€~€€~€}~~}€€‚~€~~€~€€€~~€€~€~~}~~~€~~~~~€~€€~€~€~~€~~~~€~€~€~€}~~~~~€€€}~~€~€~~~~€~€€€~~€~~~~€~€€~~€€}€~~}€~~€~~~~~€‚~~~€}€~}~€~€~€€~€}~€~~‚~~€~€~€~~‚€~~~€€~€€~~~~€~€€€~~€~~€‚}€~€}€~€~€}€~~~€}€~~€}€€€~€~~€€€~€}~}€€~€}~€€€~~€~~€~€€€~~€~~€€€~€~~~€~€~~~~~€~€~~‚€~~~~~€}€€}€€~€~€‚~~€~€~€€}€~~€}€~€€~~~~€~€~€€~‚~~‚~~~€~€€~€~~}€~€€€~~€~€~~€€~€~~€~€~}‚€~~~€‚}€~~~€~~€€€~€~~~~~€~€~~€}~€€}~€~€~}€~€~€€~€~~~~~€~~~~~€~€~~}~‚€€~€~~€~€}€}~€~€‚~€}~€~€€~€}~~€€€~~~~€~~~~~~€‚~€~~~€~€€€}~€~€€~€~}€~€~€}€€}€~~~€~~~€~€~}€~€~€~€}€}€~€~~€~€€~€~}€~€€~€~€~€~~€€~€~€~€~~~€‚~~€€~€~€~€€~~€~}€~€€~€~~€~~€€€~€~~~€~~~~€€~~~~€~€€€~~~~€~‚€€~~~~€~}€~€€}€~€}‚~~€€~~~€}€~€}€~~€~}~~€~€€~€~€~~~~~~~€~€€~€~~~€~‚€~€€~€~~€~~€~‚€€~€~~€~€~€~€~~€~€€~~~€€~~~~€~€~~~€~€~€~~€~€~~€~~€€}€~€~€€~}€~~€}€~~~~€~€~€~~~€~~~~€€€~}€~~€~€~€€~~€~~~~~~€}€€€~€~~€~€€~‚~~~~€€~~}€€~}€~€~€~€}€~~€}€~~€~€€€€}€~~€€~€€~€~€€}‚~~€~~~€€~~~~€€~€}~€€}€~€}~€€€~€~€~~~€€€~~€}€~€~~~}€~€~€~~~~€€~€~~~~€~€~€~€}€~~~~€}€€}€~€€~€~€~€~~€}~€€€~€~~~€~€€~€}~€~~~‚‚~~€}€€~€~~€~~€€~~~~€~‚€€€~~€~~~€€~€~~~€€}€~~}€€~€~€~€~€~‚€~}~€‚~~~~~€~€€~~€}~~€~~€~€€~€~~~€~€~€~€~€~€€~~€~~€~€€~€~~~~€€}~~~€~€~€~~~€€~~~€~€€‚~}€~~‚€~~€~€€~€~~}€~€~€€‚~€~~~~€€~~€~~~~~€‚~€€~€~€}~€~€~€~~~€~€€~€~~}~€€~€~~€~€}€~€~€€}€€~}€~~€€}€~~€~~€~~€~~€~~~€~~€€}~€€~~~~€~€€~~~~~~~€}€~~€~~~€~~€€~€}€~€~~€€€‚~€~~€~€€~€~~~~~‚~€~€~€~~~~~€‚}€~€~~€€~~€~~€~€~~€~~€~€}€~~~~€~€€~€~€~~~~~~€~~€~€‚€€€€~€~~€}€~€€€€~€~~€~€‚~~€}€€~€€~~€~~~€~~€}~€~‚~}€~€€€€~€~~~€}€~}~€~~~€}~~~€~~€‚~€~€~~~~€~€~€~~}€~€~~~€~~~€~~~~~~€€~€~~€€~€}€}€~€€~~~~€~€~~~~~€~€‚~€}‚€~~}~~€}‚~€~~~€~€~~€~€‚~€~€}€€~~}~~~€~€}€~~~~~~€€€~€~€~€~€}€~~~~~~~~~~~~€~€~~€€~€~~€~€~~€~€~~~~€~~€‚~}~~~€€€‚~€~}~€~€~~}~€€~~~~€~€~~€}€~~~€~€}€~~€~~€€~€~€~}€€~€~‚}€~€~~}~€~€€‚~€~~~€€~€~}€~€€€~€~~€~€€€~€}~}€€€€~~€~~€€~~€}~~}€€~€~~€}‚€}€}€~€~€~}€}~~€~€~~€€~€~~€~€€~~~€~~~€~€}‚€~~€~€~~€€~~€~€~~€~€~€~€~€€~€€~~~~~€€~€}~~~€~€~~~€}~€~~€~€~€~€~€~~~€~‚~~€‚~}€~~~‚€}~~€}‚€€€€~€~~~€~~€~~~€€}€~€~€~~‚~~€}€€~~€}‚}~€~€€~€~~~€~~}€~~€~~€~€€~~~~}€€~€}€€~~}€~~€~€~~€~€€}€~~€~€~€€~€‚~€~~~€~~~~~€}~€}~~€€€~€~~~€~€€€€~€}~~~€}€~€~€€~€~~~€}€~€€€}€~€~}~€~€€~~~~€~€~€~€}€€}~}€‚~~€~€~€€€~~~€}€€~€~}€~}~€~~~}~€€~~€~€~~€~~€€~€~~‚~~~‚}€€~€€~~~€€}€~€~€€~€~~€~~~~€~~€}€€~‚€€~~€~€~~}~}€~€€€}€}€€}€€~€~~~€~€€€}€~€}€~}€~~€~}€~~~~~€~~€~~€€~~~€~€€€€~€~~~‚~€€€~€~€~€~‚€~€~~~~€~~}~~€€~€~}€~€~€~~€€~€~~~€~~€~~€~~€~€€€~€~~€}€~}€~~~~~~€~~€~~~€~~€~€€}€€~~€€€~~€~~€~€€€~€~~€€€~~~€}€~~~€}~€}€~€}~€~€~‚€€‚~€~~~~~~€~~€}€‚~~€~€~~€~€~‚~~€~€~€~€~~}~€~€~€‚~€~€€~~~~€~€€~€~€}~~€~€~€~~€~€~~~€€~~€~€€€~€~}€~€€‚~~€}~~€~~€~€~~~€~€~€€}€~}~€~~‚~~€~€}~€€€~~~€~€€€€~~~€}€~€}€}~~€~€~€~€~€~~€}€€€€~€~~€~€}€~‚}€~€~~~~€~€~~~€~~€€‚~~~€~€~€}€~€~€~}€~~€€~€~~€€~‚€~~~}€~€~€€~~€~~}€~€~‚~~~€~€}~~}€~€€‚~€~~€~€~€~~~~€~€~€~€€~€~€~~€~~€}€€~€~}‚~~~}€~€~€€~~€~}€~€€~}€~~~~€€~€~€}€~~}€~€~€~€~€€~~€~~€~~~~~€~€}~}~~}~€€}€~~~€~€~~€€}€~€~}~~€}€}€~~~€€~€€~€~€~~€~€~~~~€~€€~€€~}€~€~~€}~€~~€~~€}~€}€~~€~€~€~~~€~}~~~€~€~~€~€~€€~€~€~~‚~~€~~~€~~~€~€}€€~€}€}~~€~€~‚€€~~~~~€~€€~~€~~~~~€€~€~€}€€~~‚~~€~€~€€~~€~~~€~~€‚~~€~~~€€~~~~~€€€}~~€€€~€~~~€€€~€~~~~~~~€‚~}€~€}€~~€~€~~~~€~€€}€~€}€~€€~€}~~~‚€~€~€~€}€~€~~€~€€~~}€}~~~~€~€~}~~~€€~€}€~€~~~~~~€~~€}€€€~~€~~€€}€€~~€~€~~~€€€€~€}~~€~€€~€~€~€~€~~~~~~€~€}€€~€~~€~€~€}~~€~€€‚~€~~€~€~~€~~€~€}€~~~€~€~€~€~~€~€~€€€~€~~~‚~€~€}€}€€~€~~~~~€~~€€~€~~€}€~€~}€~€€~~~~€~€€~~~€~}~~~~~~~€~~€~€}€~€~€~~~~€~~~€~€~€~}€€~~€~€€~~€~~€~~€€}€~~€~€€€~€~~~€~~~€}}€~€~~~€~‚€~€~€~~}~~~€€€€}~~}€~~€~~~~~€~~€~~€~€~}~‚~~€}€~€~‚€~~~}€~~€~~~~~€€€€~€~~}€€~€~~~}€~€~~~€€~€~~€~€€€~~€~~~€~~‚}~~~€~€€~~€}€~€~~~€}€~€€~€~€~~~€}€€~€~~~€~€~€}€~~~€€€~€€}€~‚~}~€~€€~€~~€}€~~~‚~~~~€}€}~€~€~~~€~€~€€~€€~‚€~€}~~€}€€~€~~~€}~€~€~€€}~~~€~€~€€‚~~€~~~~~€~~~~~€~~€€€€~~~~€~€~€‚~€~~€}~€€~~~€~~€€~~~€~€~~€~~‚€€~~}~€~‚~~€}€~~~€~~~€~€~€€~~€~€~€~€}~€€€~~€~~~€€€€~}~~~€‚}€€}€~€~€€~~~€~€~€~€~€~~}~€€€~€~€~€~€€~€~€€}€~€~~€€~~~~€~€~€~~~€~~~€~€~€~€~€~~€~~~~~€~€€€~~~}~~€~~‚€~~~~~}~€~~€€~~~~€€~~~~€~~€€~€~~~€~€~€~€~~~~~€~€~~€~~€€‚~~}~€~~€~~~€~~~€€~€€}€~~€~~~€~~€~~€~~~~~~~€~~~€}‚€~~€~€€~~~€~€€€~€~€~~~‚}~}€€~€~€~€~~€€}€~€€~~€~~€€‚~€~~~~~~~€~€€~~€~~~€~~€€€~€~€~~€~~€~€~€}€~€~‚€~~€~}€~€}€€~~~~~~~€~~}€€~~~~~€~~€}€€~€€~€~€~~~€~€€~}€~~€~€€~€~}€~~€~~€~€€~€~€~~€~€~}~€}€~€~~~~~~~€€€~€~~€~~€€~€~€~~€}€€~€~~‚€~}}€~€€~€~~~€~€~€~~~€~€€‚~€~}€€~€~€}~~~€€~~€}~~~~~€~€}€~€~~~~~€~€€~~~€~}€}}€}€~~€}~~€}€~~~~€~€€}~€€€€~~€~€~€€€€~€}~}€~€€‚~~~€~€€€~€~~~€~€€~€~~€€}~€~€~~€~€~~~~~€~€€~€}~~}€~€€€~€~~€}€~€}€~~€~~€~€€€€€~~~~€~€€~€~~}€€~€€~€~‚€~~~‚~€}€~€~€}€~~€~~€~~}€~€€}€~~€€~~€}€~~~€}€~€€~€~~~~€€~€~~~€~€€€~€}€~}‚€~~}€~€€~€~~~~€~€~€~€~~~~~€~~~~€~~€~~}€~~€~}~~€~€€€~~~€}~€~€}‚~~~€~€€~~€~~€€€~~€}€€~€~~~~~~€€~‚€~~~~€~€~~€~€~~€~~€~~€}~~€€~~}~€~~€~€}€€~~€€~€~€~€~~‚~~~€}€€~‚€~}€~~~€~€~}~€~€~€€€}~~~€~€~€}€~~~€~€~~€~‚€~}€~~~€~€~~€~€~~~~~€~€~€~~~€~€}€€~~€€}€~€~~~~~€~~}€€~}~€}~€}€€~€~~~€~€~€}€~€~~€~~€~~€€~€~~€}€€€~€~~~~~}€~~€~€~~€~€~€€}€~€~}€~€~€~€~€~€~€~~}€~~~~~€~~~}~€~€~€~€~~~€€~€~~~€€~~€~~€~€~~€~€€~€~€~€€~€~~~~€€‚~~~}€€€~~~€‚}~€~€~~~€~€~€€~~€}€€~€~~~€~€~€€~€}€~~~~~€~~€~€€€€~€~€~€€€~€~€~}~€€~€~~~~€~€~€~€~€}€~}€}€~€~€~~~€~€~~~~~€€~€~€~~~~~~€~€€~~€~~~€€‚~~€~}€€€~€~~~€~€€~€~€~~€~€}‚~€~~€€~~~~~~~€~€~€}~~€~€~€~€~‚€}€~€}€~€}}€€~~~~€~€~€~€~€~€€~~€~~~€~€~€€~€~€~€~~~~€~€€~€~€~€€~€~~€~€~~~~~€~€~€~~~~~€~‚€€€~~~€~€€~~€}€~~~~€~€}€€~€~}€}~~~~€€~€~€~€~€€€~~~€€€~€}~~€€~€~~~~€}~~€}€€€~€~~€‚~~€€€~~~~€~€~€~~~€~€€€€~~~~€€~~}~€~€~~~€~€€€}~~€~€€€~€~~€~€~~~€}€~€}~~€€€€~€~~~~€~€~~€~€€~€~~€~€€~€~~€~~€~€~€~€~~€€~€~~~€€~‚~~~~€~€~~~€€~~€}~~€}€}€~€~€~~~€}}~~€~€~}€~€~~~€~€~€~~€~‚€}~€~€~€~€~€~~€~€~€€€~€~€~€~~~~€€‚~€~~~€~€€~~€}~~€~€~~€~~~~~€}€€~€~~~€~~~~}~~€€}€}€~}~€~~€€~€}€~~~€~€~€€€€~~~~€~€€~~€€€~}~€~~~€~€~€}€~}~€~€~€€~€~€€~€~€~~€~~~}€~€~€~€~€~€}€€~~}€€€}~~~€~€€€~~~~}€~~~‚~~€€~€~€~~€~€€~€~€~€€€~€~}~~€€~€~€~}~~~€~€}€~€~€€€}~~~€‚~~€}€€~€€~€}~~~€~~€~~~~€~€€€~€~~~€~€€€}~}€~€€€€€~€~~€}€~€~~€~~~€~€~€€~€~~~€~‚€€}€~€}~~‚€~~€€~€~€€~€~€~€~~€~€~€€€~~}€~€€€~€~~~~€}€~€~€~~~~~€~~€~€€~€~€~~~€~€~€~~~€~€€~€}€€~~~€€~~~~~€~€~€~~~€€~~~~€~~~€€~€~~€~€€~€~~€~€€€~€~€~}€~‚~~~€~€~~€~€~~~~€~‚€€~}~~~€~~€~~~~€~€~€€~}€~~~~~~€~€€~€~€~~€€€~€~~~€~€€}~~~€~€€~€~~~€~~€~€~~€~~~~€~€€~~~~€~€€~}€~€€~€~~~€~€}~~}~€€€~€~~~~€€~€€~~€~~~~€~€~€~~~€€~~€€€€€~~~~~€}€~€€~€~}~€~€~€~€€€}€~~€~€€~€~~€~€€~€~~}€~€€~~€~€€~€€~€~€~€~~€}~€€~€~~~~€}€~€}€~€~~~€~~~€€~€~~~~€~€~‚€€~€~~€€€~€~€~€}€~~€€~€}€€}€€~~€~~~€~€~€~€~~€~€€€~~€~~€~€€€€~€~~~~€~~€}€}€}€€~~~~€€€€~~~~€~~€€€~}~€~€~€~€€~€€}€~~~€~€€}€€~€~~€~€~€~€€€~~€~€}€~~‚€~~~~€~€~~}~€€€€}~~~€€€~€~~€~€€€~~€~€€~~~~€€~€~~~~€~‚€€~~~€€€€~€~~€€€€~~~€€~€~~€~€~~~€~€}~€~€~~~~€~€~~~~€~€€€}€~€~€~€~~~~~}€~€~~~~€~€~~€}€‚~€~€~~~~€~~€€~€~‚€~~~€~€‚~€~~€~€€€‚~~~~€~€€~~~~€~€~€~~~~€€~€~~~€~€‚~~~€~€€€~~~€~€~~€~€~€~€€€~}~~~~‚€~~€~~~€~€~‚~€~~~€~~€}€}€~~€‚~~€}€~€~€}~€~€~€~€€€~}~~~~€€€~€~}€~€€}€~€€}€€~€€~‚~~€~~~}~€€~~~~€}€~€~€€}€}€~~~~€~~€€€~~€~~€~€€€~€~~€~€~~~~€~€€~~€~~~~~€~€}€€~€~€}‚~}€~€~€~~‚€~~~~€~€€~€~}€~€~~‚~~}€~€€~~€~~€~~€€~€~~~€€~~~~€}~€€~‚~€~}~~~€€}‚€~~€~€~€~~~}€~~€€€~€~€}€~€~€~€~€}€€}€~€€~~~€~€~€€}~€€~€€€~~~~~~€~€~~~€~€€~}~€~€€~€€~€~~€~}€}~€€~€~~€€€~~~~€~€~€~~€~€~€~€~~€~~€~}€€}‚€€~~€}~€~€}€~€~~€~€~~€~~~€~~€~€~~~€~€€€~€~€}€~€~€~~~€~€~€~~€‚€~}€~€~€~~€~€€~~‚~~€~€~~€~}‚~€~€~~~~~~€~€~€~€~€~€~€€€~€}~€}€€~~~~€€~€€}€~~~€‚}€€€}€}€€~}€~€€~€~€~~€~~€€~~€~}€~€}€€}€~€}€~~~}€€~~€~~~~€€~€~}€~€~€~}~€~€€€~~~€~€€€~€~~~‚€~~€~‚}€}€~€}€€~€~~€~~€~€€~}€~~~€~€}€€~€}~~€~~€€~€}€~€€~~~€~}€~€~~€}€€~€~€}€~~€~~~~€‚€~~€€~€~€}€~~€~~€~€}€~‚€~€~~~}€~€~€€}€~~~~~€~}€~~~€€}€~€~~€}€€~€~~€~€€~€}€~~}}€~~€~‚€€~}~~€~€€‚~€}~~~€€~€}~€~~€€~€~~~€€~€~~~€€~€~~~€}€}€}€€~€~}~~€~€}~€€~}€~~~€~€‚~€~~~€€~~~€~€€~~~~~~€~€€~€}€~~~€~~€~~~~€€~€}~€~~€~€~~~~€~€~€~~‚}€~}€~~€~€~~~€}€~~€~~~€~€~~~€€~€~~~€~~~~~}€~~€}~~€€~€€}€~€€}€~€~~~€~€€~€~€~}~€~}€€~~€~€~~~~~~€€~€~~€~€€€~€~~~€~€}~€€~€~€~~}€€~~~‚~€~~~€~€€~€~~~€~~€€~€~‚€~}~~~~‚~€~~€~€~~€~€~€€~€~€€€~}~~~~~€}€~€~€~€~~~~~€~€€}€~~~€€~~€~€~~~€~€}€€~~€€}€}~~}€~€€~€~~~}~€~€}€~}‚~~€~€~€~~~€}€~€€€}€}~~€€€~€€}€€~€~€€~~€~~€~€€~€€~~€~€~€€~~~~~~€~€}€€~€~~€}~€~€~‚~€~~~}€~~~~~~~€~~€~€}~~€~€€€~€~~}€~€~€€~€€~~€~€}€}€}€~~~‚€~€}~€~~€}€~~~€~€~~€~€€~€~~€~€~~~~€}€~€~€€~}€~~~€~€~€~~€~€€~~~~€~€~~€}€€~~~~€}€~€}€~~€~~€~~~~€€}}~~~€}€€€~€}~~~€~€~€}~~~€~~€~~€~~€~~‚€€€~~€}~€~€}€€~€}€~~€~€€~€~~}€~€‚~~€‚}€~€€~€€~~~~~~~€}€€~€~~~€~€~}}~€€€~€}‚~}~}~€€~~€~~~~€~~€€~~€~~€~‚€~€~€~}~€€€‚~€~~€~€~€~~~€€€‚~€€}€~€}‚€~~€~~€}€€~€~€~}€~€€€~€~~~€~€~€€~~€~€~€~€€~€}~€~~~€~€~€}€~€~€€~~~€~~€€€~~~€~€€€~€~~~€~€~~€~€}}€~~~‚~€~€~€€€€€~~€}~~€€€~~~€}€~~€}~~~€~€~€~~~€€~}€~}€~€€~€~~€~€€~~~€~€€€~€~€~~€~€}~€~€~~~€~€€~}~~~~~~€~€~€~€~~€~€~€}€~~€€~€~~€~~€€€~~€}€~€~~~~~€~~}€}~€€~~~€€}~~€~€}€~~€}~~~€}€~€€}€~€}~€~€€}€~€~~~€}€~€€}~~~€~‚€€€~~~}~€~€~~€}~~~€~€~€~€€}€}~~€€~~~€~~€€~~€~€~€~€}~~€€€~€~€~€}€~}€~~‚‚~~€}€€}€~€~~~~€~€~€~€~€~~~€}€€~~€~€~~€€~~~~~~€~€~€~~€~€}€~~€€~€~~€~€€€~~~~~€~€€~~€~€€}€}~€~€€~~~~~~€~€~~€~~€€~}~~~~€~~}€€~€~€~~€~€€‚~}~~~€~~€€~~~~€€~~€~}€~}€~€~€~€~~~€~~€€~€~~€~€€€~~~€€~€~€~€~~~~€~€~~~€€€€~€€}€~~~~~~€~~€~‚~€}~~~€~€€~€~~~€~€€~€~€~€€~€€~~}~~€}€~€~€€~€~}€~~€€‚~€~~~‚~~€~~€~~~~€~€€~€~€~€}~}~€€~€~~}€~€€}€€~~€~~~~€~€~~€~~~~€~€~~€€€€~€~~€~€€‚~~~€~€}€€}~€~€~€~~~€~~‚€€~~~}~~€}€}€€€€~€~~~€~~€€~~€~~~€~~€€~€~€}€}~~‚~€~€~€~€~~~€€~~€~~~€~€€}€~~€~~€~€~€~€~~€€‚~~~~€}€€}€~~€~€~~~€~€€€~€}~}€~€€~~~€~~€~€~~~~€~€}€}€~~~€}€}€€~€}€‚~~}€~€~€~~~~~~€}‚~€~~~~~€~‚~~€~€~€~~}€~€~€€}}~~€~€€~€}~~€~€€~~~~€~€~~€~€€~€€~}€€~~€~~€€€€~}~€~~€€‚~€~€~€~~~~€€}€~€€~€}€~}€~€~€}€€}‚€~~~€~~€~€€}€~~~~€~~€~~~~€~€~€€~€~~€}€€€~~€~~~~~€€€~~~~~‚~€}~€€}€~~~}€~~}~~~€€€€~~~€~€€€~€~}~~~~€~€~~~~€~€€€€~~~~‚€€~€~€~~~€€~~€~~€€€}€~€}€€~€€~}‚€~~€~€~~~€}~€€€~€~€~‚~€~€~}€~~€€}~€}€}€~~€~~~€}~€€~~~~~~€~€€€~~~~€~~€€~~€~€€~~~~~}€}‚€~€~~~€~€€~€~~€~€~€~€}€€~‚€€~€~~~€~€~€~~€~€~~~€~€~€}~€€€€~€}~~~€~€€~~~€~€‚€~~€~€~€~}‚~~€}€€~€~~~~€}€€~~€~€~~€}‚€€~€~~~}~~~}}€~€~~~€~€€~~~~€~€€€~~€}€€‚~€}~~€~€€~~€~€~€~€~€~~€~}~€~€~~~~€€~€~€~~€~€€~€~~}~€~~~~€~~€~~~€~~€€~€€~~€€€~}€~~€}~€€~€~~~~€~~€~€~€}€~€~€~~~€‚}€€}€~~~€~~€€}€~€~~~~~€~€€~€~~~€€~€~~€~‚€~~~€€€~€~~~~~~€€~€}~€‚~~~€}~€€~~}}~€~€€~‚€~€~~~€~}€}€~~~~€~€€~€~~~~€€~€}~~~€~€~~~~~~~~€~}€~~‚€€€€~€~~€~€~€€~€~~‚}~€~~€€~~~~~€~€~€€}€~€€~€~~€~~€€~}‚~~€~€€~€€~~}€~€€~€}€~€~‚€~~~€~€€~€~~€~€~€~~~~€€~~~€~~€~€~~~~‚€€~€~~~€}€€~€~~~€€€~€~}~~~~~~}~€~€~~~~~€~€~€~~€}~~€~€}€€}~~€‚€€~€~~€~€€~€~~~€}€~€~€~€~€~~€~~€~€~~~~€€€€~€~€~€~€~~~~€€~€€€€~€~~~€~~€€~€~~~~€~€€}€€~~~€€€~€~~~}~€€}~€~€~~€~~~~~~€~~€€€€~€~€~€€~€~~~€~€~€~€~~€~~~€~~~€~€~€~€~~~€€€~€~~~~~€€~€}~~~€}~~~€€}€}}€~€~~~€~~€~~~€€~€~€~‚~~€~}~€~~~€~€}~€€~€~~~€€‚~€~~}‚€€€~~~}€€~€~~~€~€~~~~~~€~€}€€~~~€~€~€€}€~€~~€~~€}€~~~~~~~€}€~€~€~€€~~€~~€~~~~€~€~€€}€€~€~€~€~~~~€€€~€}~~~~~~€~~~~~~€€~}€~~}€€€~€~~€~€~€~~~€~€€~€~~~€~€~€~~€€~€‚}€~€~€}€€€~€~‚~~‚€~€~€€~€~~€€€€~~~~€~€€~~€~€}~€€~~€~~€~€~~~~€~€€~€~~~~€‚~€~€~€€}€~~~~€~€€}€€}~€~~€}€~€€€€}€~~~€~~€~€€~€€~~~~~~€~€€~€~€~~€€~€~€~€€~~€~‚€~~€‚~€}~~‚~~€}€€}€~€~}€}~€~~€~€~~~~€~€~€~€~}€~€€€€€~€}~€~€~€~~€€}€~€~~~~~€€~~~€~~€~~~~~€~~€}€~€€~}€~~~~€~€~€~~‚~~€~€~~€~€~~€~€~€~~€€~€~~~~€~€~~~~€~€~€~~€~~€€€~€}€}€~€~~€~€}€€~~€}€~~€~}€€~€€~~~}€€~‚€~~~~€~€€~€€~€~~€~~~€€~€€~€~€~~€~~€~€~€~€~€€}€~~~€~€‚~€~~~~~‚~€€~}~}€~€€~€~~~~€€~€~€~~~€€~~€~~€~~€€€}€€~~‚€~~~€~~~€}€~€~€}~~~~€~€~}€~€€~€~~~~~€~€~€~~€~€~€€€~€}~~~~€~€~€€~€~~}~~€}€€}€~€~~€~€€€€~~€~€~€€~~€}€~€}~~€~€€~~}€€~~€}€~€€~~€~~~€€€}€~€}€~~~~€~€~€~~€~€€}~€~€~€~€~~~€€~€~€~~~~€€}~~€~~€~€}€€~~~~~€€~€~€~~~€~~€€~€~}~€€~€~~€€‚~€~~~€~€€~~~€~~~~~~}~€~€}€€~€}~~€~€~€~€~~€‚€~~}~€€€~~€~€‚}€~€~~~~€~€~~€~€~~€~~€~€~~~€~‚€€~}€~~€~€€~~~~~~~~€€€~}€~}~}€~€~€‚~€~€~€}~}€~€~}}€~}~€~~~~€}€€~€~}€€~€~~~~‚€}€~€}€~~}~€~~~‚€€€~~€~~€~€€~€~~~€~€~€}€~€}€~€~~€~~€€€~€~~~€€€~€~€~~€~~~~€€~€~~~~~~~€~€€~€~€}~~~‚~~~~€€~€~~€~€~€~€~€~~~€}~€~€~~€€€~€}~~~€~€~€~€~~€~€~€~~€~€~€€}€~€}~~~€~€~€€€~€~}€~€~€~€~~€~~~€~~€€~€~€~€~~~~€€~‚~€~€€}€~€~€~~€~}€~~~~}~€~~€~€~€€}€€~€~~~€‚~~€~‚€~€~~~€~€€€~€~€}~€€€~€~}€~€€€€~€~~€~~€€~~~€~€~~€€~~€~~~~€€~€}€~~~€~~€}‚€~~~~~~€~€~€~~€€}€€}€~€€}‚€~€}~~~€~€€~€~€}~~~~€€}€€}€~€~~~~€~~~~}~‚€€€~€~~€~€~~~~~€}~€}€€}€~}€}~€~€}€~€€‚~~~~}~~~~~~€~€}€~€€~~€~~€~~€~€~}‚~~€~€€~€~~~}~€€~€~€~€~€}€}~~~~~~€€}~~€€~€€€€}~~}€~€€~€~€~~€€}~~€€~~€€~~€~€~€€€~~~€€€~~}€~€€~€€~€~€€~€~~~€~€~~~~€~€€~~~~€~€}€€~€}€~‚~€~€€~~€}~€~~€~€€}~€~~~~~€~€}€~€~€€‚€~€~~~~€~~€}~~}€~€€~€€}€}€€~~~€~€€~€}€~~€}~€€~€~€~€~}‚€~€‚~~€‚~€~€~~~€~€~€~€~}~~}€~€€~~~~€~€€~~~~~€‚~~~€}~~€€}€~~~~~€~€~€~€~~~€~€~€}€~~€}€~~€~~~€}~€~€~€~€~€~€}~€~€~~~~~€~€€~~}€~‚€}€~€~~}~}~€€€~}~~€~€€~~~~€€~€~~€~€~€€~€~€~~~€€}~~~~~€~€}€~~}‚€~~~€~€€~€}~~€~€€~~~~€~€€€~€~~€~~€€}€€~€~~€~€~€€~~~~€~~€€~€~~~€~€€€~€}‚~~~€~€}€€~€~€}€‚~€~€}€}€~~~~€|€}€~~€~€~~~~€~‚€€~~~€~€~€€~€~~€~€~€~~~€~€€€~~~€~~~€}~€€~~~~€~€€~€~€~€~€~~}€}€€€~~~~~€~~€~€~~~€€~~€~€}€€~~€€}€€~€€~~€~€€€~€}~~~~€}€~€€~€~~~€}€€~€~~€}~€~€}€~~€}€€}€~~~‚€€‚~€}~~~}€€~€~~~~€~~€~€~€€~€~€~~‚€~~€~€~~€€~€~~~€~€~~~€}~€€€~€~€}€€~€~~€~€}€~~~€}€~~€~~€~€~€~~‚~~€~€~~€~~€~€€€~€~~~€~€~~~~~~€~€€~€~~~€€}~~~€}€€~~~€~€}€}€~~}€€€~~~~}~€€~€~~~€}€~~~~€€~€~€~}€~~€~~€~~~~~€~€€€~€}€~~€~~~~€~€}€~€~~€‚}€~~€~€~€€€~~}~}~€}€€}~€~€€‚~~~}€~~€~~}€~€~€~€€~~~~€~€~}~~~€~}€~‚~~€~~~~€~€~€~}€~~€~€~€~~€~}€~€~€€€€~€}~€}‚€~~~€€‚~~~€~€~~~€~€~€~~€~~€€~€~€€~€~~~€~~€~~~€~~‚€€~~~~€~€~€~€~~~~€~€~€€}€€~~}~~€‚}~€~~~~€~~€€~€}~€~€~€~~~}~~~~€€€€}€~~}}€€€~€~~€~€~€}~€~‚€~~~€~€€~~~~€~‚€€~~€~~~€}€~~€}€}~€~€€~~~}€~€€€~€~~~€~€~€€~~~€~~€~€~€€~~€~~~€}€~€~€€~€~~}€~€~€€~€~€~~~€~€€~€~~~~~€}~€}€}€~~~€}~€~~€€~€~~€~€€€~~€~~€€~€€~}~€}}~~~~€€~€~~~~~€~€}€}€€~~~~€~~~~~€~€€~€~~€~€€~€~~€~€~€~€~~}€~€€}~~€}€€€~~€~~€~~~€~€~€€~€~€~~~€€~€~~€~€€~€~€~€~€€€~€}~~€~€~€~~€~€€~€}€~€~€€€~€~€~€~€~€€€~€~€}€~€€}‚€~}€‚~€~~}€~€€~€}~€~~€€€~~~~~€~€€~€~~‚€€~~€~€€~€~~~}€~€~€€~€~~~~€€~€~€~€~~€‚~€€~€~€~~€~€€~€~~~~‚€€}~~~€~€~~€}€€}€~~~€€~€}~€~~€~~€~€~€~€}~€€}€~~€}€~~~~€~~~~~€€€~}~€~~~€‚~€~€~€~€~~~}€€~€~}~~~€~€€~€~~~€€~€~~}€~~€€€~€€}€~€€~~~~~€}€~~€~€€~~~~~€}€~~€~€€€€€~~€}€€~~€}‚€~‚~~~€~€€~€~€~~€~€€~~‚~~€~~€~}~~~€~€~€~~€~€~~€~€}€}~€€~€~~~€~~~~€}~€~€}€~~€~~€€€€€~€~€~€~€~~~~~~€~€~‚~~~~~€€€~€~~~~~€}~€€€~€~~~~€~€€€~~}€~€~~}€~€~~~~€}€~€~€~~‚€~~€~~€}€}€~€~€}€€~€~€~~~€~}€~~€~~€~€~€~~~‚}~~~~~‚€€~€~~€€}€~~€‚~~€~€~€~€~~~~~€}€~~€€‚}~~~€~€~~~~~€~~~€~€~€~~€~€€€~}€€~~€~~~€€~}€~~}€~~~}~€}€~}€~€€€€~€}~~~~€~~€~€~}~€~~‚~~€~~€~~~€~~€€~€~~~~€~€~~€~€€}€€}€~€}~~~~€~€}€}€‚~~~€‚~€~€~~€~~~~€~€~€~€~~~€}€~€}~~€~€}€}€~~€€€~€~~~~€€~€}€~€~€~~‚}€~€~€~~€~~€€~€~~€~€}€€~€~€~€~€~‚‚~~€€~€€~€~~€}~€~€~~€€~€~€}€€~€€~€}‚‚~€~€€}€€~~~€€~~~€~~€~~€~€~€}€~€~~~€~€~€}€~~€~~€€€€~~‚~€}~‚€€€~€}~~€~}~€~€~€~~€~~€~€~~}€}€€€}€~€~~~~€~~€}~~~€}~}€}€~~€~€~~~€~€€~~€~~~}~€€~~€~~€~€€€~€~~}€~~€€~€~€~~€€~~~€~€‚€~~~€}€~€€}€~€€~€~€~~~~~€~~~}~~€~}~€~€€€~€~€~€~€~}~€€€~~€~~€~~€~~}‚}~€~€}€€}€~~~€~€€~€~~€}~~~€~€~€~~€~€}€~€}€~€~~€~€~€€~€~}~€~€~}€~~~€~~}€€€~€~€~€~‚~€~€}~~~€~€€~~€}€~€€}~€~€€€€~~~~€~€~€~~€~~~~€~€~€~~€~~~€~€€~~~~}€~€}~€~€}~~~}€~}~€~~€}€~€}€~€~~€€~€~~~}~€€}€~}€~€~~~~€€~~~€~€~~~~~€€~€~~‚€~~~~~€~€€}€~~~~€}€€~€~€~~~~€}~~}€~€~€~~~€€~~‚~€~€~€~€~~€€~€~€~€€~€~€~€‚~}~€}€€}€~€~~~~€~~€€~~‚}~€~€}€~€~~~~€~~€~}‚€€}~€~€~~€~~€~~€€€‚€}€~€}€}~€~€}~€~€~€~~~~€~€}€}€}}€~~~‚~~~€€~€~~~€}~€‚}€}~}~‚}€~‚~~€}~~}€~~€~‚€~~~€~~€~€~€€~€~~€~€~€}~€€~€~€~~~€~€~~~€~~€€€€~~~€~€~€€~}€~€€~~€}~~€~~}~€~~~~€}}~€€€~~€~€~€€}€}€~€€~€~~€~€€€€€~€~~€~~€~€}€~€}~~~~~‚€€‚~€~~~€€~€~~€~€€€~€~~€~€€~~~€~€~‚~€~€}€~€€}}~~~€~€}€€~~~€€~~~~~€~€€€~€}~€~€€~€~~~€~€€€~€~~}~~‚~~€~€}~€~~~~~€€~€€~€~€~~~~€€~€~€~~€}€}€~~€~~€~€}€~€~~~€€~~~~~~€~€~~€}€~~~}~€~€~€~€~€€€~€}~~€~€€~€}€~~~~€~~~~‚€€~€~€~~€~~€€€€}~~€~€~€€€~~€~€€~}€}~€~~~€~~€~€~~€~€}€€€~~~~}~€€€~~~~~~€~}€~€~€~€~€}~~}€~~€~€€}€~€~€}€~€~€€‚}~~€~€€~~€€€~€}€~~€~€~€~~€~€€~€~~~€~~€€~~~€€~~€‚~~€~€€}‚€~€‚~€~~€}€~~~€€€€}€}€~~€€~}~~~~~€~~~€}~€~€€~~~~~~€~€€~€}€~~€~~€€~€~~~€~€€€}~~€€€~~€~~~€€~€~~}€‚~€~€€}}€~~€~~~~€€‚~€€~€€}}~~~~~€~€~€€~€€~€~€~~€€~€~~~~€~€~~~~€~€€€€~~~~~€~~€€}}€~~~~~€~€}€}~~€‚~€~~~~€~€~€~~~€~€€~€~~€~€~€~€~€}€~~~€€~~€~~~€~~~€}€~€‚~€€~€~~~€~€~€~€~~€€}~€~‚~~~€~€~€~€€‚~~€~€~€~€~‚~~€}€~~~€€€‚~~€~€~~~€~€€€~~€~~}~}€~€~€€}€~€}~~~€€~€€€€~€~~~~€~€~~~‚~}€~~€~€}€~~~€€~~~~}€~€€}€~}~~€}€€}€~~€~€~€€€€€~}€~€€~~€~~€~€~€~~€~~€€‚~€~~~~€~~~~€~~€~~€~€€~€}€~~€~€€‚~~~€~€€€~€~€~€~~€€~€}€~€~€~~~€}€~~~~€‚~€}~€}€€~~€~€~€}€}€}~€~€€~~€~~€€€€~€}~~~€~€~€}€€€}€~~~~€~€~~€~~~~€~€€~€€~~}~~€€€~~€~~~~€~€~~~~€€€~€~~€~€€~€~€~~~€~~~~~€~€~~~~€~€€€~€~~~~€~€~~€}~~€~€€€€~€~€~€~€€~~€~~€~€~€~~~‚~€~~€~€€€~~~~€~€~€‚}€~€€~€~~€}€€~€}€‚€~~~€€€€~€~~€~€}€€~~~~~}€~€~€~~€‚~~~€~€~~~€~€€~~€~€~€~~}~~€}€~€~~~}€}€~€~~€~€€€~}}‚~~~~€~€}€€~€€~€~‚~~€~€€}€~~}€€€€~€~~~~~€}~€‚~€~€~}~~€~}€~€}€€~~€€~~€~€~€~€~~~~€~€~€€~}~~~€~€}~~€~€€€~€~~~~€~€€~€~~€~€€~€~~€€~€~~€~~€€~€€}€~€}~~€€€€~€~~~€~€~€~€~~€}€€~€~~~€~€€~€}€€~€~€‚~€~~€~~€€€~~~~€~€~€€~€}€~€~€}€€~~€~€~‚~~€~€}€€~€~~~€~€~€€~€~€~€~~€~€~~~~‚}€~€}€€~€€~€~€€~€~~€~€~€~€~€€~€€~€}~~~€~~€~~€~~~~€}€~€}‚€~~~€€€~€~}€€~€~€~~€€~~€~~€€~€}~~}~~€~~‚€~€}‚€~~~~€~~€~~€€~€~€~€~€€~~€~~€~€~~€~~~~€€€~€~~~}~€€€€~~~}~~}€}€€~€~€~~€€~~~~~€~€€€~~~~~€€~€~€~€~€~~€~€~€~~€~~€€€~~€~~€}€€€~~€~€~€€~€~~~‚~~€}€€~~}~~€~€€€€€€~€~~~~~~~~€€~€~~~€€€~€}~€~~€~~€}€~€~~€~€~~~€~€€€~~~~‚~€~€}€}€~~€~~€~€€~€~~}~€~~~€~€~~€~€}~~~€~~€~€~~~}€€}€~}€~€€~~€~}~‚€€€~~€}€~€~€~€~‚€€}~~€}€~~€~~~€~€~~€~~€~~€~~}€€~€~~€~~€~€~€~€€~€~€~~€~€~€€€€~~€~~~~€€~€~~€~€}~‚~€~€~~~€~~~€~€€€~~€~€}‚~~€}€~€}€~~€~~~~€}€€~~~~€~~€}€‚}~€~€€€~~~€~~€€~}~}€~~‚~~~€}€}€~€€}€~~~€€~€~~~~~~€€~€}€~~~~€~€€€€~€~~€}~€€~~~€~~€€€‚~€}€€~€€}€}€~~€~€~~~€~‚~€}~€}€€~}~~€}€~~€‚}€~€}€€~‚~~~~~€}€€~€~~~~~€~}€~€€€~€~~~~€‚}€€~€~€~€€~~~~~€€~€~~€€~€~~~€~€€~~€~€~€€~}€~€‚~€~~~€~€~~~~~~~€~€}€€€~€~~~~€~€~~~€€€€~€~~€~~€~~~€~~‚~~€~€€~€€~}€~€~~€}~}~~€~€~€~~~~€~~~€~~€~€~€‚~~~}€€~~~€€~~~€~€~€~€~~}~~€~€€~~€~€€~~}€~~~€~€~‚~€~~€}€~~€~~~~€€€~€~~~€€~€~~~~€€~~~€~€€~€~~€~€~€~~€~€~~~€}~€}€~}€~~€~~~~~€}€~€~~~~~~~€~€~€~€€€~~}~€‚~~€}€€}€~~‚€~€}~~€~€€~~€‚~€€~}€~€~~~€~€~€~~‚€~~~~€~€}€~€€}€~€~€~€€€€~€~~€~€~€~€~}€€~€~€~}€~~~€~~~€€~€}}€~€€~€~~€~€€€~~~€~~€€~€~~~€~~€~€€~€~€~€~€~~€€}€~€~~~€~€€~~~}~€~~€~€~~~€~~~~€€€‚~~€~€}~€~€~€€€€}~~~€~€‚~~}€~€~~~€~€€€~€~~€}€€~~€~~€~€~€~~€~~~~€€~€~~~€€~€~~}€~€~€€~~~~€‚€‚~~€}}}€~€~~€~€€~~~~€~€€€~}~~~€~€€~€~€~~~€€€~~~~~~~€~~€€~€~}~€€~€~~‚~~~~~€~€~~€~~~€~~€~€}~€~€€~€~~}€~€~€€€~~~€~€~€}€~}€~€}€~~~~€~~€}€€€~~€~€~€~€~€~€~€~€}~~~~~~~~}~€~€~€~~€~€€€~~~€€}€~€}€€€~~€~€~€€~€~€~€~~~}€~€~€}~~€~€~€~€}~~~€~€~~~~€~€~€}~~€~~€€€€€€~~~€~~~€~€€~~~€~}€~~€€~~~~~~€€~€€~€€~€~€€~~€~~€~‚€~~}~~~€~€~~~}€~€~~€~€~€€~€~€~€€~~‚~€~€€~~€~~~~€~~€€~€}€€}~~‚~~~€~€€~~~€€€~€~~~€€~€~~€~€€~€~}€~‚€€€~}€~~~€~~~€~€€~€€~€~}€~~~‚}~€‚~€}€~€~~€~€€€~~~€~~€€~~€~~€}€€~€~}€~~€€€~€~€}~~~~€}€€~~~~}€~€}€}€~€}‚‚~~~€‚~~€}~€}€~~€~€€}€~~}~€~~€€€}€}€~€~€~‚€€}~~€~€~~~~€~€~~~€€€~€~}€~‚€€~€~~}~€€~€€~€~€}~~€~€~~~€€€~€}€}€~€~~~€~€‚~~€~~~~~~~€}~€~€~€€~€~~‚~~€~€~€~~~~~€~~€~€€~}~~€€~€~€~~}~€~}~~~~€~~€~€€~€~~~}€~€~€€~~€}~~~€~~€€€}}‚~~‚~€~€€‚~~~~€~~~€€~€€~€~€€~~~~€}€~€~~~‚~€~€€~€~~€~~€€€€~€~~}€~€€€~€~~€~€€~~€€~~~€~€~‚€€~€~~~}~€€~}€~€~€€€€~~€~€~€€€~~~€~‚€~}€}€€~~~€‚}~€~€}€~€}€‚}~€~}€€~€~€~‚€~€~~~€~~~€~€}€~~€~€€~~~€~~€€~~€‚~~‚~€}~~€}€~‚~€~~~~~~‚€~€~€}€€~€~~~€~~~~€‚~€€}€~€~}~~€~€}€~~}€~~€€€~€~~€}€~€}~~~€~€~~~€~~€€~~€~~€~€~€€€~~~€~~‚}€~€€€~}€~~~€~€~~€€~€~~~€~~€€€}€~~~€~€€}€~~~€€~€~~€~~~€}€€~€~€}€~~~~€}€~€}€~€€€€€~€~~€~€€~~~€}€€~€~}~€€€~~}~€~€€}~~~€~€~}€~~€~€}~~€~€€~€~~€~~~~€}€~~€~€~~€~€~€~~}€~~€€~€~~€~€~€~~€~~€€€~€~‚€~€~~€~~~~€€€~€~~~}~€€€~€}~~~~~€~~€~€€~€~~~~€€€~€}~~€~€~~€}€~€~€~~€~€~€€~~~~€~~€€~€~€€~€~}€~~~€~€~}€€}€~~}€~€€~}~~~€~€€~~}€~€€~€~~€~~}~€~}€~€~€~€~}~‚~€}~€~}€~€€~€}€~}€€€~€~~~~€€~~}€€~€~~€€}~~€~€€~~~€~€~€~€~~€€€~€~~~€~€~~~~~€‚~€~~€~~€}~€€€~€~~~€}€}€~€€~€€~€~~~}€~€~€~~€~€~~~€~€~€~~~€~€€~~€~~€~€€€~€~~~€~~€~~~€~€€~~~€~€}€€}€~~~‚€~€}~}€~€€~€~~~€~~€€~€}~~~~€~~~€~€~€~~~~€€~€~€}€€~€~~}~€€~}€~€~€~€~€~~~~~€~€~~€~~€}€~~€~€€~~~€€~€~€€~~€~€}~€~~€~‚€~}€~€~€}€~~~~€~~~€}~}€~€}‚€€~~€‚~~~~‚€‚~€~~~~~€‚}}€€~€~~~€}€€€~€~€~~€€~~~~€~€}€~€€}€~~‚~€~€~~~~€€€€~~}€~~€€~€~€~€~€€}~}‚€€~€~~~~€~€~~~~~~€~~€}€}€~~~~€€€~€~~~€~€~€~€~~€}~€~€}~€~€€~€}~~~~€€~~€}€~€~€€~€~€~~~~~€~€~~~~€~€€€~€~~€€~~~€‚~€~€~€€}€~}~~‚~€~~~~€~~€€~~€~~~}€~€~€}€~~~€~€~~€~~~~€€~€~~~}~€~€~‚€~~~~€}€~€~€}~~€~€~~~~~€~€~€€~€~€}~€~€~€~€€€~~~€€}~€}€~€€~€~~~~€}€~~€}~€~€~€~~~}~~€€}€~~}~~~€~~€~€}~€~~€~~€€‚~~€~~€~€~~}€~~€~~~~~€€~€}~€~~€€}€~~€~€}~€}€~€€~~~€~€€€~€~~~‚€~~~€~~€€~€~~€~}~~€~~€~€~~€~€~€€}€€~‚€~€~~€~~~~€~€~~€~~~~~~€~~~~€~€€€~€}~€€€}~~€~}~~€}€~€~~~~€€~€~}€~€€€~}€~}€€~}~~~}~€~€~~€~~€‚~€}~~€~€~~~~~€}€€~~€}€~~€~~~~~~€~€~‚€€~}€~~€€€~~~~~€~€~€~€€}€~~~}~€~€}~€~}€~€€€~~€}€€€€€~~€~~‚€~€~~~~}~€€~~~€~€~€€}€~~€~~€~€~~~€€€~€~~€~~€~€~€€~€~€~‚€~~€~€}€~€~~~€~€€~~€~~~}€€€€~€€~~~}€}€€~~~~~€€}€€~€~}€~~}}}€€}€}‚~~€€~€}~‚€€~€~€~~€~~€€}€~~~~€}~~}€‚}€~~€~~€€~€~€~€~€~~~€~€~€€~~~€~~€€~~€~}€~€€~€~~~€~€€€~€~~~€~€}~~€}€€~~~€~‚€~~~~€~‚~~~~€}~€~€~€}€~~€~€~}€~€~~~~~€}€€~€}€~€}€~~~~€€€~~~€~}€~~~€}€~€}€~€~~€‚~€~€~€€~€~€~~}€~~~}€€~€}~~€~€€€€~€~€~€€~‚€~~~€~~~€~€~~‚€}~€~€~~~€~~€€}€}€}~€~~~~~€~€~€~~}€~€~€€}~~~€~€~~€}€~~~€~€~~€~€€€~€~€~€~€€€€~~}€€}~€~€}€~€~~‚~€€~~~~€~~~~~~€€€~~€~}€}~€~‚€~€~€~~~€~€~~~~~~€~€€~€}}€~~}~€€€~~~€~}~€~~€~~€}€€€~}€~€€~~€~~€~~€€~€~~€~€€~~~~€}€~€€€~}~€~€~€~€~}€}‚€~~~€}€€~€~€}~~€~€€~~€~}€~€€€}€~~}~~~~}~~}€~€€€}€~~~€~€~€~~€}€€~€}€~~~€‚~~~€~€€}€}‚~€~€~}€}~~€~€~€}€}}€~~~~€}~~~‚~~€~€~€~€~€~~~~~€}€~~~}€~€~€~~€~€~}‚~~€~€}€€}€€€~€~~€~~~€€~€}~~}€€€~~~~€~~€}€~}€~€€~~€}~€€~€~~€~~~‚~}€}€€}€~~~€~€€~~€~€~€~€€~€}~~~€~~€€€~~~€~€~~€~€~‚€‚}€~~}€~€€€€€~~€~~}€€€}€~€~~€~~~€€€~€~€~~€~~€€€~€~~€~~€€€~€~~€~€€~€~~€€€~€}~€~€€€~€~€~}€}€€€~~€~€~€}€€~€€~€~~~€~€~€~~~~€~€~€~}€€~€€~}€~€€€€}€~~~€~€€~€~€}~€~€~~}€~€€}€}~~€~~€~~€~€€~~~€~~€~~~~€~~~€~€€~€~}~~~€~€~~€~~~~€~€~€~~~~€€€~€~~}~€~~€}€€~€~€}‚€~~~}~}~€€~€~€~€~~~€~~}~~€~€€}~}‚~~€}~€}€~~~€‚~€€}€~~~~~€€~}~~€~€~€€~~€~~€~‚€€~€~~€‚}~~€€~€~~~€~€€€~€~€~€~€~~€}€~~€~~€€€}€~~€€~€~~€~€€~€}€€~€}€~€~~€~~€~€~€~~€~~~€}€€€€~€}~~€~€~€€~€€}€}~~~~}€}€~€~~~~€}}~~~~~€~€‚~€}€~~~€~~€~}~€~€~€€~€~€}€}€€~‚€~€~€€~~~€~€~~~€~€}€~~~€~€€}~€~€~€}~€}~€€~€~~~~~‚~~~€~~€}€€€‚~€~€€}€~€~~~€€~~~~~~€€~~~€€~€~~~€~€~€€}€€~~~€~‚~€€€~€~~~€€€~€~~€~€€~€~~€~€~~~€~€~€}~~€~€€}€~€~€~~€~~€~€€}€}€}~~~€}€~~~}€~~€€€~€€~€~~~€~~}~~~€~}€~~~‚}€€~€}€~€€€€~€}€~~~~€€~~~~€~€~}€~€€~~~~~€~€€~}€~~‚€}€~€~~~€~~€~€€€€~}€~~€€€€€~€~~€}€~~~~€}€~~€~~€€€~€~~}€~€~€~~€~€€€€}~~€~€}~€~~€}€€~~~€~~~~~~€~€~€~}}~~~~€~}€~~~€~€€€€~~~}~€€~€~~~~€~€~~}€~‚€}~~€€}}€~~‚€~~~€~€~~~€~~€~€}~€~~~~€~‚€~~~~~€~~~€~€~‚}€~~~€€~~€~~~€~~€}€~~€‚~€}~€~€}€}€}€~~~}€€€‚~~~€~~€}€~~~€~€€~~~€}~~€€}€~~~€~~€~~€€~€}€~€~€€~~~~€~~~~~~€~€~€}€€~€€~€~€~€€~}€~€}€~~}~~€~~~~~€~~€€€€~~~~~€€~~~~~~€~~€}€}€~~€~~~~~~‚€€~€~€~€~~~€~~~€~€~€€‚~~}~}€~~€~~~€~~~~€~~€~~€€~~~€~€~~~€~~}‚}~~€~€~~~~~€~€~€~~€€€‚‚~€~~~~€€}€~~€~€~€~~~€€€€~~~~~~~~~~€}€€~~~€}€~€~€~€~~€~~~€~€€~€~~€€~€~€€~€~~~€}€}~~~~~~€€€~}€~‚~}~~€}€~€}€~}€~€~€~~~€}€€~~~€}~€~€~€~~~€€}€~~€~~}‚€~~}~€~€}~~€~~~€~€€~€€~€~~€€}€~~~€‚~€}€~€€~€€~€}}€}}‚~~}~~~€}}€~~€€~€~~€~~~€‚}€~€~€€~€~~~€~~€~€~~~~~€~€€~~}~~~€€€€~~~€~€}€~€}€€}€~~~€~€€€~€~~€~€~€€€€~€~~~~~€~€€~€~~~~€~€~€~~~€~€€€~€~~€~€~~~€~€~€~~~€~€€~~€~€~~}€~‚€€€}~€~€€~~~~€~~}~~€}€~€~€}‚~€~€€€€€€~€~~€~~€€~€~€€~‚~~~€~~~€~€€}€€~€~~€}€~~~~€~}€~~~€~€~€€€~€~~€}€~~~~~€~€~~€€}~~~€~~€~€~€€€~€€~~€€~€~€~~€~~€€€~€~~~~}€~€~~€~€}€}€~~€~~€}€€~~€~€}€€~€~~~~~€~~€}€~€~~~~€~€~~~€~€€€}~~€~€~‚~€~~€~}}~~€~€€~€}~~~~€~~}€€}~€}‚€~~‚~€~€~€~€~~~€~€~~~~}}~~~€~~~~~€~~~€€~€~~€}€~€~~~}€~~€€~}~~€}€€~€€~}‚€~~€‚~~~~€~€€~€~~~€~€€~~€~€}€~~€}~~~}€}€~€~‚~~~~€€}€~€€~€~~€~~€~€~€€‚~~€}~~€}€~€€€~€~~€}}€€}}€€}€~~€}‚€€€~}~‚~~}€~€~€€}€~~‚~~€~~~€~€~~€€}€~€}~~~€~€~€~~~€~}~€€~€€~~~~~~~~~€~~~~€~‚~‚~€}~€€~€~~~~€~~‚~~~~€~€~}€~€€}~€}~€~€~~‚~~€‚~€~€€~~~~€}€~‚€~~~€}~~}€~~€~€~~}~€€€~€€}€~~}~~~~€~€€~€}€~~~€‚~€~}€~~€€€~~€~}€~€~~€~€~€~€€~€~~~~~€~€~~~~€}€€~~~€~~}€€€~€~€~~€~€~€~~€~~€€‚€~€~~}~€~€}€~€€€~~~~€}~€~€~€~~‚~~~€}}~€}~~~~€}€€~~}~€~€€~€~~~€€~€~~€~~}€~€}€~€~€€~€€~€~€~~€~€~}€~~}€€~~~€~€€~~~€~€~€}~‚€€€~€~~~€}~€€€~~€~€€~~~~~€€€~€~€~€~€~€€~€~€€}~~~€~€€€~€~~~}~‚€€~€~~~}€~~€~€~~€~~€~€~€€~~~~}€€~~€~~€~€~€~€~‚~€}€~~~~~€~€}€~€~~€~€€~‚~€~~~~~€}€~€~~~~~€~~€~€€}€~}€~~~€~€~€~€}€~€}~~~€~€~‚}~~}~€~~€}€~~~€~€}€~~€€~~~€~}€€~~€~~€~‚€~€~}}~~€}€~€~€~~~~~€}€€}€~€~~~€~€~€~€~€€€~€~~€~}€~~€‚~€}€~€~}~€}~~€}~€~€~€~~~~~€~€€~€~€€}€~€~~~€~€~€~~~€€~€~~~~‚€~€~€}€~~€~~€€€~~~~~€~€€~€}€~€}€}€~€~}€€~€}€~~}€€~€~~~€~~€}€~€}€€~~~~€~€~‚€~€}€~~~€~~~~}~€~~€~€~€~~~€€€~€~€~~~~‚~~€~€~€€~€~€~€~~€€~€~~~~€}~€}€~€~~€~€~~€~€€~€}€~€~€~€~~~~€€}€}€~~~~~~€~~€~€~~~~~~€~~€€~~~~€}€}€}€}€~~€€~~€~€}€}~‚~~€~€}€}€~~~€‚}€}}}€~~€}€~€~€~~~€~€~€~€}€~~€}~~€€~€~€}€}~€€€~€~€~€~€~~~€‚~~€~€}€~~~~~€~€~€~€~~~~€}~€~€~~€~€~~€€€~€~~~€~€~€~~€~€€~€~€€~€}€~~€~€~~~€~€~~~~€€~~€~€}~€~€~€}€~~€}€~€€}€~~€~€~€~~~€~€~€~€~€€€€~~}€~€€€€~~~~~€€~€~~~€~~~€~~~~€~~€€€~~~€~€~~}~~€~€€~~€~~~~~~€~~~€~~€€~€~€~€€~€‚~~}~~}€~‚€~€}~€~€~€~€~~€~€~€~€~€~~€~€~~€~€€€€}€~€}€}€~€}€~€~€~~~‚€~€}~€~€€~€~€~~€}€€~€}}‚€~~~~€}€~€~~€~€~€}€}€~‚~~€~€~€~~€~~~€~€~€~€~~€~€€€~€~~~}€€~€~€€~€€}€~€~}~~€~€~~€~~€~~€€~€~}€~~€}~€€~€€}€€~~~~}~€}€€}~~~€~~~€~€}~€~€€€~€}~€~€}€~€~€~€~€~~~~€~~€~~€~€€€~~~~€~~€}€~€}€€~€~€}~~~}€~~}}~~€~€~€~~}€~€~€€~€~€~€~~~~€~€~~~€}€~}€€~~~~€~}€~€}~€~~~~€~~~€~€~}~~€~€~€~~~€‚~€}}€~}€~~~€~€~}~~~€~}€~‚€~~~€~€}~~€~~‚€‚€}~€€~€~~~€~~~€~‚€€~~€~~~~~€~€~~~~€~€~}€€~€€~~~~€~}~~€~€€~€~~€~€~€~€~€€~€~~€~€~~~€€€~~€~~~~€€€~€~€~€~}€~~~~~~~€€~~~~~€€~~€~~~€~}}€~~€~~€~‚€€€~~}~€~~~~~~€~€~€}€€~€~}€~~~‚€~€~€~€€‚~~~€~€~€€‚~€~€~~€~€€~€~~€}€~€~~~€€€~~€~~€}€~~~}€~~}~~€~€~~~€~€€~~€~}€~€€}~€€~€~~€}€~€~~~€~~}~~~€€€€~~€~€€~~€~‚€~~~€~~€~€}€~€~~€€}€~€€€~~~~~~€~€}~€~€~€~~~€}€~~~‚~~~€~€~~€~~€€~€~~€~€€~€~€~€€}}€~~€~~~€~~€€€~€~~€~€~}€€~€~~€€~~~€}~‚~}~€}€~~€~€€~~~€~€€~€~€~€€~€~~~~€~~€}~€}€€~€~€~€~~~€}~~}€€~~€~€~~€~€}~€~€~€~~~€~€‚~}€}~~~€~€~€~€~~€€~€~~~€‚~€~}€~€~~~~€~~~€}~€€~€~~~€~€~~€‚~€~€€}€€~€~€~~~~€~€~}~‚€}~€~€€€~~€~€}€€~€}€~€€~€~~~~€~‚€~~‚}~€~€~€€~~€~~~~€~€€€~€~~~~~€~€~€~€€~‚€~€~~€~~€€~~€~~~€€€€}€~~€~‚~}~€~~~€}€}€~~~}€~~€€~~~~~~€~~€~~~€€€~€~~€€~~~~€}€€€~€}~~~€€~€~~~€~€€€~€~~€~€€‚~€~~€~€}€~~€}€~€~€}€€€~~~~€}€€€~}€~€}€}€~€~~€~~~}}}}€~~€€~€~€~~}~~€~€~€~€~~‚~€~€~€€}€~}€€~€~~~~‚~€~€~€€~€€~€}€}€}€~~~~€€~€~~~€~€~€}€€}€~~€~~~‚}€~€~€€~€~‚}€}€~~€~€~~€~~}€}~€~€~~€~€~€~€~€~~~~€~€~~€}€€~~}€~~€~~€~€~€~~~€~~€€~}€~~~~~€~€€~€€}€~~~€}~~€~€~€~€~~€€~‚€~~~€~‚€€~~~~€}€~€~}€~~€~~~€~€~€~€~}~€€€~€~€€~~€~~~€€~€~~~€~€}€~€~~~€~~€€}€~€~~€}€€~~€~~~~€}€~~~~~€}€~€€}€~~~}~€}€~€~~~‚~}~€~€}€~~~€~‚€~~~€~€€€€~€~~€~~€~€€~‚€€~~€~~~€‚~€€~~€}~~~€}€~€}€€~€€}€~~~€~~~‚€~~~~€~€~€~€}€~€~~€}~€€€‚~€€~€}~}€~‚€€‚}~~€~€}€€~‚€~€~€~~~€}€€~€~~€~€€~€~€€}€€€~€~€~€}€~€€~~~~~~€~€~~€~€€~€€~€~€~~~~~~~~~€~€~~}€~~}~€~€~€~€~€~~€~~~€~€€€~€~~~~€~€~€}€~~~€~~€~€€}€~€~~€~~~€€}€}€~€~~~€~€~€€~~€~€~€€~~€~‚~~~‚~€~~€~€}~€€~€~~€€€~~€~}€~~€~}~€}~€}~~€~€‚~~€~~€~€€€~€~€~~€~€~€‚}}€~€€~€€}‚€~€~~€~~~~€€~€~€~~~~~€}€~€€~~~€~€~~}~}€€}€€~€€~€€~€~~~€~~€~~€€}€~~€~~~€~~~~€€~€~€~€~~~€~€€€€€~€~}~~€~€}€~€}€~~€~~~~~}€~~€~€€}€}~~~€~€€~}€}€€}€~‚~~€€}€}€~~~~€~€~~~~€~€€€€~€~€~€~€~€‚~€€~~€~€~~~€€~€€~€~~~€~€~€}‚€~€~€~~~~}‚~€€~€~~€}€~€}€}€‚~~~~~€~~€€~€~~~~€€€€~€}~€~€~~€~€~€€~€}€~~~‚~€~€€~€~~€~€}€~€€€~~~}€}€~€~€}€~~€~~~~€~~~~~‚}€~€~€}€~€€€~~€~~~€~€€€~€~~~‚€€}~~~€€€~~~€~€€€~~‚~~€~€€}€~}~~€~~€~€~~~}~€~~€~~€~€€€}€~~~€€}€~€~€~~~~~€€€~}€~~€~~‚€~~~€€~€~€~€~~€€€~€~€~€~~~~~€~~~~~€~~€}~€~€~€}~€~€~€€~€~~€~€€~}€~~€€~€~€~~€€}€~€~€€~~€}€~€~~€}~~~€€~€€}~}€~‚~€}€€~€~}€€€€€~€~~~~‚~~~~€}~~€~~€}€€~€~€€~€~€~€~~~€~€~€€~€~}€€~€~€~~€~€~€€}€€~€}€~€~~~~~€~€‚~€~€€€~€}~~€~€€~€~~€~€}€€~€~€~~€~€€€€}€~~~€~€€~€~~€~€~€~€~€€~€~€~~~~~€~€~}~~~~€~€~}€~~€~€}~~~~€€~€}€}€~~€}~~€~€~€€~€~€~~€€€€~€~~€~€€~~~€€€~~~€~€~~}€~~€€~€~€€~€~~€~€€€~€}}€€~~~€~€~~€~€€€€~€~~€~€~~€~€~€}€~€~~~~€~~€€€~€~€€€~€}~€~‚€~~~~€}~€€}€~€~€~€~€~~~~~~€}€€~€~~‚~€~~€€€€€~€~€~€€}€€~€}€€~€}~~~~€~~}~€€€€~~€~€€€~€~€~€~€€~€~‚~~}‚~~~€€~~~~~€€~€~€}€€~~€}€~€~€~€€€€~~~€~~~}~~~€~~€~~€~€~~€}€~€~€~~€€~€}€~~€~~€€~~€€~€~€~€}€}~€~€~€€€~~€~~~~€€~€~‚~~}‚~~~€~~€~€~}€~~‚€~}€~€~}€€€~€~~~€~‚€~~€~~€~~€~~€€~}€~€~~€}~~€€~€~~€~€~€€€‚~~€~€~€€}€}€~€~~~€~€~€~€~~~€~~€}€€}€}€}€~~€~€€€€~~€~~€€€~~~€~€€~€~~€~€€€~~~~€~€€~~€}€€~€~~~€}~€}€€~€~€~€~~~~€‚~€}€~~}€€~€}€~~~€€€€~€}~~€~€~€€~~~~€€€~€~}~€€~~€~~~~~~€}€~~€€~€~€}€~~€~~€}€}€€~€~€~€€~€}€~€}~}€€}€~€~€€€€}€~~€~€~~€~€€~~~€}€€~€~€}€€~€~€~€~~~€~€}€€}€~~~€~€€~€}~~~~€~€~~€‚~~€~€€~€~€~€~€~~~€}€€‚€~~€~€}€~~€~~~€~~~~€~~~€~€~€~€€~€}~€~~‚~~€}€€}€~€~~}€~€~€~‚€~€~€€~€€~}~~~€}~€~‚€~~~}€~‚€€~€~€~~€~€~€€~~€~~~~€€~~€~~€~~€~~€€~€~~€‚~€~€~€€~€~~~~~€~€~€~€~€~‚~~€~€~}‚€~~‚€~~~~~~€~€€}~}€€~€~~~~€€~€~~~}€€€~€~€~€~€€~€~~~€€~~}€~~~~~€~€~~€~€}€~~~}€~€~€~~~€~~€~~~€}€~}€€~~~‚~~€€€~€~~~~€€€~~€~~€}€€~~€~€}€~€}€~€€€~€~€~~~€€}€~~~€€~€~~~~~€~~€€}~€€~~~€~€~~€~€~~~€€~~€~}€~€}€~€~~~~€~€~€~~~~~‚~~€~€~}}€~€€~€~€~‚~~~}~~€€~€}€~~€~€€~€€~€‚~~~€~€~€~€~~€~€~~€~€~}€€}€~€~~~~€~~€~~}~~€~~€€€€€~~€€~~~€~€~~~}€~€~€~~~€~~€~€~€~~~€~€€€~€~€~~}€~€€~~€~~€€~€~€~€€~~€~~€}~€~~~~‚€~~€~~~~}~€~€€~‚€~€~~‚~€~€€€~~€}~~~€~€€~€€~€~€~€~~€~€~€€~~}€~€€€~€€}€}€~~€}€€€~~~~€}€~~~€~~€~~~€~€€~~~~€~€~€~~}}€€€~€~~€~€€€}€~~~~€€€€~€~~€~€€~€~~€~€~}~€~€}€~€~€~‚~€~~~€€€€~€~€~~~€}€~€€~~~~~€~€€~€~~~~€€~~€~~~€‚}€~€}~~~~~€~€€~€€~€}~~€~€~€}~~}€~€~€~€~~~€€~€~€~~~~€~€~€€~~~~~€~€~€~€}€~~€‚}€~€~€~€€~~~€~€~~€~€~€~€~~€~~€€~€~€}€€~€~€}€€~~€}€~~€~€~~€}€~€€€~€~€~~~€~~~€€~€~€~€~~€~‚€~€~~~~€€~€}€~~€~~€€~€~€~~€}€€~€}€~~€}~€€€~~€~€~~€}€‚€~€~€~~~€~~~€~~€~€}~€~~€€€€~~€~}€€}€~€~€~~€~~~€~‚~~~€~~€}€~€~€€‚~€~€~}}€}~~~€}€}~~€}€€~}€~€~€~€}~~€~€€€}~€~€€€~~~~~€€~~€~~€~€€~€~~€~‚~€}~€~‚€~€}~€~~€~~€~€€€~~€}€€€~}}~~~€€€~€~}€~€~€~~€~€€~‚€~~€}‚€€€€~~€~‚~€~€€}€~~~}€~€‚€€~€~€~€€~€~€~~€~€€€€~€~~‚~~€€~~€€~€~~~€~€~€}€€~€~€~€~€~€~~€€~~€}€€~~~€€~€}€€~€~~~~€~~~€€~€~€}~€}€~€~~€~‚~~€~€~~~~~€~€~€~€~€~~~€~€~€‚~€~~~€~€~€€}€€~~€~~~€~}~€~€€~€~~€~€€€~~€~~€~~€~€~~~~€~€~~€~€~€~~~}€~€‚~€~€€}~€~€}€€~}€~~~~€~€~€€~€€~~~€~€€€~€~~€~~€€~€~€~~~~~~€~€~€~~‚€€€}€€‚~}~€~€}€~~€~‚~€~€~~€~~~~€‚~€~~~~€~€~€~€€~€~€~€~€~~€~€~}~~€~€~€~€}~€€€}~€~€~€€~€~€~~€€~~€~~~€~‚~€~~~~~€‚~€~~€~~~€~}€~~~‚€€~~€~~}}~~€~€~€}€~~€€~~€}€}€€}€~~€€‚~€~~€~€~~~€~€~~€~~~€~€€~}€~€~~€~~€~€€€~€~~~€~€}€~€‚~€~€~€}~~€~€~€~€}~}~~~€€€~~~~€~~€~€~€~~~~€~€}€~€~€~}~€~€~~}€~€~€}€~~~~~€~~€~€~~~~€}€‚€~}~}€}~}€~€~€~€~~~€~€€€€~€~€~~€~€~€€~}~~~€~€}€~€€~€}€~~~}~€~€~€~}~~~}€~€€€~€~~~~€}€€~~}€€~€~~€}€~€€€~~~~‚~~}€~‚€€€~€~~~€~€~€€~~€~~€}~~}€}€~~€~~€~~€€~€~€~~€~€}~€~€~€~~~~€~€~€€~~~€~‚~~€€}}~€€€~}~€€~€}€~~€~€~€~~€~€~€~~€}€~€}€~€€€~~~€~~~€~~~~~~~€}€€~~~~€~~~€}€~€€€~€~~€}~}€~~~‚€~€~~~€~€€~€€}€~€~€~~~~€~€~€~~€~~€€~~€~~~€~€~~~€~€~€~€~€€~~€~€~€~€}~~~~€~~€~~~€~€€~€€~€~€€~€~€~€~€€~~€}~~~~~}€~€~€€€~€~}€~€~~~€~€€€€~}}~~~}~€~~€~~~~€~€~€~€€}€}€€~~€~~€€€~€}€~‚€~~~€}‚~€~~€~€€~€}€€~€€~€~~~€~€€€€~}~~~~~€~€€‚~€}~~€€€~€~~}€~~~€€€~€~~~~€€}€~€~€}€~~€~€€~€~€~~~~~€}€€~€~~~~~~€~€}€€€~€~~~€~~~€~€€~‚~~~€€~€~€~€~€€}€€~€~}~~}€~€~€~~€~}}~€~€€€€~€~~‚~~~€~€€~€~~€~~€€}€~~~~€~€€€~€~~€~€~€~~~€~~~€~€~~‚~~~€}€~~€~~€€~}~~}€~~€~}€~€}~~~€~~~~~€}€~~~€~€€~€~€€~€~€}€~€€}€~~~€}‚€~~€‚~~~€~~}€~€€€€~~€~€~€€~€~~€~€~~~~~€~~~~‚~~~€}€~}€€€~€€~~€€~~€€~~€~~~€~€~€}~€~€€~€~~}€€€~€}€~€~€~~~~~€}€~€~€~}€~‚€€€~~~~~~~€~~~€€€~€~~~~~€}~€~‚~€}~€~~€~€~~€~€~€}€€~€~€~€}~€~€~€~~~€~€}€~€~~€€}€~~~€€€€€~€~€}€‚~~€~~€}€€~€~€~~~€~€€€€~€~}€~~€~~~~€~€~}€}€~~~}€~€€}€€~~~€~~€}~€‚}€€~~€}€~~~‚}€€}€~}~~€~€}€~~€~}€~~€}€}~€~€~~~€}€}€€}€~~~~€}€€~€~~~‚~€~€~~~}~~€~~€~~€~~~€}€~€€~€~~~}~€€~~~€~€€€~€~€~~€}~~€~€€~€~~~€€~€~~€~€€€~~~€~€€~‚€‚|€€‚}€€}~€~€~€€}€€~€€~€}~~€~€~~~~€€€~€~}€}~€}€~€€€~~€~~€~€~€~€~~€~€~~~~€~€€~~€~€~€€~€~€~€~~€~€€~~‚€~~€~€€~~~~~€€~€~€~~€~€~~~~€~€~€}€~~~~€}€~~€~€€€~€~}€~€€~~~€}€~€}€€}€~}€~~€‚~€~€~€~€~~€}€~}€~~~~~€}~~€~‚€~€}€€~€~~~€~~€€~€~€~}€~~~€€€~€~~~€~€€‚}€}~€~€€~€}~€~€€~€~€}€€~}~~€~€€~€~€~€~~~~~€~€~€~€~}~€~}~~~~~~€}€~€€~~€~~~€~€~}~€}€€~~€~€€~€~€~€~~~}~€~€€~~€~~€~~€~€~~~~~€~€€€~€~~€~‚€€~~€~~€~~~‚€‚~~€~€~~€~~€€€}€~~€~€~}‚~~€~~€}‚~~€~€€~€~€~~€~€€~€~~~~€}€~€~~€~~€}€€~~~€~€€}€€~€}~~€~~€~~‚€~~€~~€~€€}€€~~~~~}€€~€~€~}~~€}~~~~}€€€€~€~€~}~€€~€~~€~€~€~€~€~~€}~~~€~€~~~€€~}€~‚€~€}~~~€€~}€}€~~~€~€€~€~~€~~€}€~‚€€~€~~€~‚~€~~€€~€~~€}~€€€~~~€}~~~€}~€€€~€~~~€~€~€~~€~‚€€~~~‚€}€€}€~~€~~€€~€~~€~€~~~€~€~€}~€~€~€€‚~€}~€~~€€~€~~€€€€~€~~~‚€~~~€}€~€~~~€}€€€~€~€~€~€€€~€}€~}€€€~}€~€}~€€€~€~€~~}€€~€~‚€~}~~~€€~€€}€~~€~€~‚€€€~~€~~}~€€€~€~~€~€~€€~~€}€€~~€~€€€€~}€~}€€~€~~~€€~€~~~€~€~€~~~€~€~~~~~~~€~€~€€~€}€~~~‚€~~€~€€~€~~~~€~~€~€~~€~~€€~~€~~~€~}€~~~~~~€~€€~~€~~}€~‚€€€~€~~}€~€€~~~~~€~€~€~~~€}€€~€~~€~€€~€~~€€~€~€~~~~}€~€€€~~€~~~€~~~€€}€€€~€~~€~€€€~~}€~€~€~~}€~€€€€~€~~~€~€€€~}€~~€€~€~~~€~~€€~€€~€~€~~~}~~€~~~€~€~€}~~€~~~~~€€~€~€~~~€~~€€~€~€~€~~~€‚}€~€~~‚~~€~€€~€~€~~~~~€€~€}~€~€~€€~~€~~€}€€~~~~~€€€~€~~€~€~€~~€€}€€~€~~~~€}€€~€~~~~€€~€~‚€~~~~~‚~€~~€~~~}~~~€~‚~~€‚}~€~€‚~€~~~€€€€~~}€~€€€~~~€€€~}}€}~~~€~~~~€~€~€}~~€~€€~~~}~€~€~€}€€~~~~~~€~€€~‚€~~}€~€€~~~€~~}€}€~€€~€~~~~~€~~~€~~~€~~€}€~€~~~€~~€~~~}€~~}€~€€~€€}~~~‚~€~}€€€€}~~€~€~€€~€~€~~~~€}€~€~€~~€}€~~€€~€€~~~€~€€~€}}~€}~€~~€~€~€~~€~€~€~€€~€~€~~€}~€~€~€~}€}€‚~}~~€~€€€~€~~€~€~€~€~~€~€€€~~~€~~~€~~~}~~€~€~~€~~€}€€~€~~€~€~€€~~€~~€~€~}~€€€€~~~~~€~€€~€~~€~€~€~€€}€€€~€€€~~€~~€~€~€€~€~€~~~~~€~€~€~~~~~‚€€~€~€~~~~~€€~~~~€~€€}€}€}€€~€€}‚€~~€}€}€~€~}‚€~€~~€~€~€~~€~€~‚€€~~~€~~€~}€~€‚~~~€}€€€~}~~~€~~€~€€€~€~~~~€‚~€~~~€€~~€~€~~€~~~€~€~~~€~‚~€~€~€}€~€€~~~~~~~}€~€~~~~€~€}€~€~~~~€~€~~~€~~€~~€}€€~€~~€~‚€~€~€~€~€€~€}€~‚~~‚~~€~}€~€~~€~~~€€€~€}~€~~~~€~€~~}€~~€€}€~€€~€}€~~~€~~€~€~~~~~‚}~€~€~€}€~~‚~~~€}€€~€~~~}€~€~€~€}€~~€}€~€~€~~~}~€€~€€~€€€}€~~€€~~€~€€~€~€~€~€~~}~€€~~~}€~€}~~€€~~€}~€€~€~€~~€~€~~~~~€~~~€}€€~~€~~~€~€~€~~~~~€~€€~€~~€‚}~€~~€~€€~€~€~‚~‚€~€}~~€~€€€~€~~~}€€€~~€~€~}~~€~€~~~~€~€€€~~€~~~~~~~€~~~€~~€€~€~~€~€~€~€~~~~€}€~€€‚€~€~~~~~~~€}~€}€}€€~€~€€}~~~€~~€~}€€~€~~~~~~€~~~€}€~}~€~€~~~~€€~€~‚€~~~~~€~€~€~€~}~€~~€~~€€~~~~€~€~€~~€€~€~€€}€€~~€~€€~}~~€~€€€€€}~~~€}€€~€~€€~}€~‚€€~€~~€~€~}}€~~~€~~€€~}€~~}€~~€€~~€~€}€~€€€~€~~~~€€~€~€~€~€~€€€€~€~~€~€€~~€~~~€~€~€~~~~~€}€~€~€~~€~~€~~~~€~€~~€~~~€~€€€~€~~€~€~}~~~~€€€}~~~€€~€~~€~€~€~~~€~€€~€~~~€~€~~€~~~€~€€}€~€~~€€~~~~€~~€}€~€~~€~~€~€‚~€~~~~‚}~€~€€€~€~€}~~€}€~~€~€~€}~€}~€~€~€~~€~~~~€~~~€€€~€~~€~€~€~~~~€€}€~}€}€~~~~~€€~~€~~~€€~€€~€}€~~~€~€€~€€~€}€~}~~~€~€~€~~~€}~€€~€~~€~€~~~€~€~€~€~€~~€~€~€}€€~~~€~€€€~~~€€~~€}€~€~~~~|~€}€}€~~~}€~€~€~€~~~€~€}€~€~}~~~€€~€~€~~€~€~€€}€~€€~~€~~€~€€€~€~~€~}€~~€€€€~~€~~€~€~€~~€~€}€€~~€}€~~~~~€~€€~~~~€~~€‚~€€}~€~€~~~}€~€€~€~€~€~~€~€~€€~€}~}€~‚~€~€~}€~€€€‚~~~€€€€~€~~~€~~}€€€~~~€~€€€~}€€}‚€€€~~€~€~€~€~€~}€~~~€€~€~€~~€~€€~}}€~~~~~~€}€}~~‚€~€~€~€~€~€~~€~€~€~~€~~~~~€€}~}~~€~€€~€~~}~€€~€~~~~~€~€}~~€~€€€~€~€~€~€~~€~}€~~~~€€€}~~€€~~€€~~~~~€~€~€~~€~€‚}€~~€€~€~€€}€~~~‚~~~}€~~~~€~€~€€€~€~~~€€~~~~€}€~~€€}€€~~€}~~€€‚~€~~€~€~€€~€~~€~‚€}~~€~}~€€}‚€~€~}~€~~€€~€~}€~€€€‚~€~~€~€~~~~~€}€}€~€€}~~€~€}€}}€~~}€~€€€~€~€~€~€}€~€~‚€~€~~~}€~~~~~~€~€~€~€}€~~~~€~~€}€~~~€}€~}€~‚~~€}€~€~€~~~€~€~~~~€€~€~€~€~€€~}}€€~€~€~€~~€€~}€~~~€~€€€€~€~~~}€~€~~~€~~~€€€~€~~€€~~~}€}€€‚~~€~~€~€€€‚~}€~~~€~€~€€}€~€}€~€€~€}~€~€~~‚~~€~€~€~€~€~€~~€€~~~€~€~~€}€€€~€~~~€~~‚€€€~~}€~‚€~€}€~€}~}‚~€~~~€~€}€€~~}€~€~€~~~€~€€~€~~~€~~€~€~€~€~~~€~€~€~€~€~~~€}~€~~€~~~€€~~~~~€€€~€~~~€‚€~~€~€~~~~}~~~~~}€~~~€~€€€€~~~~€~€~~~€~‚€€~~~~€~€}~€€}~~~€~€~€€~€~~€~€~~~€€~€~~~€~€€~~~€~€€€€~€~~€}€€~~€€}‚‚~€~~~€~€€~~}~€}~€€~€~~~€~€€€~~~€~€€~€~~~€~€~~~‚}~€~~€€}€~~€~~€€~€~~~€€~€~~€~€€}€€~€~€~€€~€~~€~‚€~~~€}~€€~~€~€€~€~~€}~€€~€}€~~~€€€~€~~€~€€€~€~€~}€~~€~€~€€~}~~€~€€~€~€~}€€~~~~~€~€}€€~€~~~€€€€€~€~€~€€€~€~~~€~€€~~~~}€€€~€~€~€~}~~}€~€~€~~€~~€}€€~~€~‚€€~~€~~€~€~€~}€~€~€~~~€~€~~~~€~€€€€€~€~€}~€€~€~€~€~‚~~€€~€~~}€~€€€~~~€~€€~~~€~€~~~€~~~~€~€~€~~€€}~€~€~~€~€}€~}‚€~€~€~~~€}€€€}~~~€€€€~€~~€~€~~~€}€~€€~~~€€~€~€€~}€€~~~~€€~€~~€~~€€€€€}€}‚€€~~€}~€€~€~~~~~€~€~~}~€€~~~€~€€~€€‚~€~€~€€~€~€~€~~~€~€~}€~~€~~€~€€~€~~€€€~~~~€€€}~~€}€~€~~€~~€~€~€~€~}€}~}€~€€~~€~~~€~€€~~~€€€~~~~~€~€}€€~€€~€}~~€~€~€~~~€}€~€€}€€~€~~€€~€~~}€~€€}~}€€}€€}€}€}€~~~€~€~€‚~€~€~~€~~€~€~~~€~‚€~€~~€~€€~~~}~~€~€~~€~€~~~€€~~}~~~~€€~~~€~€~~}~€}€€~~€}€~~~€}€~€€~€}~~€}€~}~~~€~€€€~€~~~~€€~€~€~€}€}€~~~€‚~~~~€~€~~~€~€‚~€~~€~~€~~€~~~~€~~~~€~‚€€€~}€~€}€~€~~€€~€~€~~€€~~€~€~€~€~€~€}€~€}€~€€~€}~€~~€€}‚€~~~~~}~€€€~€}~€~€~€~~€~€~€~~~€}~€~~€~€}‚~~~~~€}~~€~~‚€~€€}€~€~€€~~€€€~€~~€~€€€~~~}}~€~€~~}~€~€€€~€}€~~€~€€~~~~~~‚~~€€‚~€~~€~€~€~€€}€~€}€€~~~€~‚€~~€~~}€~€€~€~~~€~€~€~€~~€~€€~€~~~€~€~~~~€~€~€~‚€€~~~€~~€~€~~~€€~~€~€~~~~€~}€}~~~~€€€€~€~~~€~~€}€~~~~~~€~~€~~~~~~~€}€~€~€~€~~~€~€~€~€~€€~}€~€~~~~€~€~€~€~~€~€~€~€~}~~€€~€}~€~€€~€~~€~~‚€€~}~~~~€€~€~~€~~€€~€~~€~€€~€~~€~€~€~€~€}~€~€€}~~~€}~€}€€}€€~€~}~€€€€€~€~€~€€€~€~~€~~€~~}€}€~~‚}}€~€€~}€~}€€~€}}€~~~~~€}€~€~€~}~~~}€~~€~~€~€~€~€~~€~~~€~€~€~~~~~~€~€}€~~}€~€€€€~€€~~€}€~~~€~€~€~~~€~€€€~€~~~~€~€€~€~€~€~~}€~€€~~€~~}~€}€~€}€€~€~}~€~€~€}~€€€}€}€~~‚~~~~~}€€~€€~~}€~€~€€€~€}~~€~€€~~~€~€‚~€~~~~€€~€~€~€€€~~€~~~~€€~~€~~€~€~}€~~€~~€~~€~€~€}€€~~€~€}~€€~€~~~€~~€€~€‚~€}€~€€‚~}€~~€~€~‚€€~~~}€~€~€~€~€€~€~~€}~€~€~~~~‚~€~€€€~€}€~~€~€~€~~~€~~€€~~~~~~€~€€~€~€~€~~€€~€~€~€~€~~€~~~€}~~~‚~€~€~€~€~€~~~~€}€€~€~~~~€~~‚€€~~€~€€€~€~~€~€€€~~€~€~~€€€}€}€~€}€~~~~€~€}}€~‚~~~}€€~€~}}~~€€~€~~€~€€}€}~€~€~~~~~€~€}€€~}€}~~~€}€~€~~~~~~€~€~€~€~~~‚~~€~€~€~~~€~€€€€€~~€~~€~€€€~€~‚~~~~~~€~€~€€~€~€}€~€~~~~~~€~€~~€~€~€~€€€~~€~~€~~~€~~‚€€~€~~}€}€~€~~€~€~€~~€~~€~€~€~€~€~~~~€~€}€~€~~}~€~€~€€€~~~€~~~}~€~€~~~€~€€€~€~€~~€€€~€~~€~€€€~€~€€~€~}}€~€€}€~€€~}€}€~€~€}~€€€~€~€~}€~€€~€~~~€~€€~€~}€~€~€€}€~€}€~~~~€€‚~€~~€~~~‚~}~~€€~€}€~€~~~€~~€~~~~~}}~~~~€~€~€~}€‚~~€~€€~€~}€~~~€~€€~€~~~~€~€}€~€~€‚~€~€~€}€}€~}€}€~~~€~€~€~€~€~~~~€~€~€~€€~€~€€}€~~~€~€€~~~~~~€~€‚~€}~€}€~€}€€~~€€~€~~~~€~€€~~€~~~€€~€~€~€}‚~~~~~€~~€‚~~€}€~~€~~€~~€~€~€~~~€~€~€€~€‚~€€~€~€~~~€}~‚€}€~€~~€~~€~€~~}~€~€~€~€‚€~€~€~~~€€~~~~€~~~€~}~€€~€~~}€~€€€€~€~€}~~€~€~€~~~~~~€~€€~€~}}€€€~€€~~~}€~€~€~~~€~€€~~~€~€€€}€}~€}€€~~~~€~~€€~~€~~}€€€~€~€~€€~~€~~€~€~~~€~€€}~€€€~€}~~€}€€~~€~€}€~}~~€€~€~~€~€~€~€}~}€~~}}~€~~€~€~~€~€€~~€}€}~~‚€€}~€~€~€€€~€~~~~~~€}~‚€~€~~~€~€~€~~~~~~~~€~€€~~€~~€~~€}~€~~€€~~€~}€~€~€}€~€~€~€~~€~~~}~~€~€~€~€~~€~~~€}€~€~€~~€~€€€€~€~~€~€~€~}€~€€~€€~~~~€€}~€}€~~€~€€€~€~€~€€}€~€~~~€~€}~€~€~€~~€~~‚‚~~~€‚~€~€~~~~€~€~€~~~€~€~€€€~}€}~€~}~~~~~€}€~€~}€~€~€~€~€~€~~~~€~€€€€~€~€~~‚€}€}€~~}}~€€~~€~~~‚~€~‚~€€~~}~€~~€~€€€}€~}€~€~~~€~€~€€}€~€€~~~}}~€€~~~~~~€€~€~€~€€~€~€~€~€~~~€€~€~€~€~€~€~€}€~~~€€~~~~€~}€~€€~}~~~~€~€}~~~€}€~€€~~~€}€~~~€~€€}€}€€~€}~~~~~€~€€~€~~}~€€~€~~€}€€~€}€~‚~~‚~~€€~€~~~€~€~~~€€€€€~€€~~€€}€~~€}€~~~}€€€~~~~~~~€~€}€~€~~€~€~~~€~€€‚~€~€€}€~€€~€€}~€~}~~€€~€~~~€~€~€€€~~~€~€~€~~~~€€~€~~~~€€‚~€~€~€~€~€~~€~~~~~€~~~€~€}~‚€~€~~~€}~€€~€~~~€~€~€~€~~€~~~€~€~~‚~‚€}€~€~~€~}€~€~~}€~€€€~~€~€€~€~~€~~€€}€~€~€~€~~~€~€€‚~€~~~~€€}€~~~€~~~}~}~€~~€€€€~}~~€~€€~€~€~€€‚~€~~~~€~€~€}~€~€~~~€~€€~~€}~}€~~€~€~~~€€~€~~€€~€~€}€€~~~€~~€}€~€€€‚€€}€~}~€~€€~~~€~~~}~~€€€~~€~~~€€€~€}€~~€~€}€~€}~~€~€€}€~€€~~~~~€~€}€~}~~~€€}~~~~~€~~~~~€€}€€~€~€}€~~€€€€~~€~~~€€~€~~€}€~}€~~€~€}€~~€€~€~€~€~€€€~~~~€~~~}€~~~€€~€}€~€~€~€~~}€€~€~€~}€~~€~€~}~€~~~~~€~€~€~~€~€€~}~~~€}€~€€~€~€~€~~~}€~~€€~€~€~€~€€}‚~}€~~~€}€~€~€~~€~~~€€~€~~~€}€~€~€}}~€€~€~€~€€}€~~~~‚~€€€~~~~€~€~~€~~€~~€€€~~€~~~€~€€~€}~~~€~‚~€~~~~€~€€~}~€~€~~~~‚~€€~€}~€}€~}~€€~€~€~€~€~€~~‚€~€~‚€~~€€~€~~€~€~€~€€~~€~}~~~~€}€‚~€~‚~€~~~€~€‚~€~€~€}‚€€~€~€~~~~~‚~€~€~€~~‚~€~~€~~€€~}~€~€~€~~~€~€€~~€~~€~€‚~}€~~€~€}€€~€€~€€}~}~~€~~€€€€‚~€~~€~~€}€~~€~€~€~~~€€}~~€~~€€~~~~€~€~~~€~€~€~~€~‚~€~‚€}€}€~~~~~€~~€~~~~€~€~€~€€€€~~€~~~€}€~€€~€~~€~€~€~€~€€}~~~~~~€~€~€~~~€}~}€~‚}~€€~€~~€~€€~~€~€€~~~~‚€€€~~~‚~~€~~€~~~~~~~€€}~€~€~~€‚}€~}}€~~~~~~€€~€}~}€€~~~~€€}€~~€~€€}~~€~€~~€~€€~€}€~~~~~€~€}~€~~€~€€€€~€~€~~€~€€~€~~~€~€~€~~}~}€~€}€~€~€€~~‚}~~~€~€~~~€}€~~~€~€€€}}€~€~~€€~~~€~€‚~€}}€€~€~€~~}€}€~€~€~~~€~€€~€~~€~€€~~~~~€~€~€~€~€€€€~€~~~€}€€€~~€~~€‚~~€~€~}~~€}€~€}€€~}€€~€~€~‚~~€~€~}€~€~~~~€~~€€€~~~}€€~€~~€~€~€‚~~€~€}€~€‚~€~~~€~€€~€~~€~€€€€~~~€€~~~~€}~€€€~€~~~~€€}€}€€~€}€~€€~€~~€€€~€~~~€~€~~€~}~~€~~~€~€€€~~}~€€€€~~~€~€€~~€~€~€€~~~~}€€}€~€~~€~€€~€€~€€}~€~}€~~€~~€€~~~€~€~€}~}€~€}€~€€~~€~~‚~~€~€€~€~~~~€~€€~~~~~€~€~€~€~€~~~€~€~€~~~~~€~~~€€€~}€~~~€~€€~}}€~€€~€~~~~€~€€~~€~€~~~~~€~€}€€}€~‚~~~€~€~€~~~€~~€€€~€~~}€€€~€~€~€€~‚€~€~~~~~€}€~}~~€~~€€~~€~~€~€~€~~~€~‚€€~~~€~€€~€~~~~~€€~€~~€~€€~€~€~~}€~~€~€‚~€}€~~~€~~~~}€}€~€€€~€~~~€~€~‚€~€~€~€~€€~€~€€~€€}€~~~€~€€~~~~~‚€‚~€~€~}€€~~‚~~€€~€~€~~~€‚}~€~}€~€€~~~}€~‚€~€~~~~€~~~}~~~€}€~}€~~€€€~}€~€~€€~€~€}€€€~~~€~€~€~~~€~€€}€~€~€€~~~~~~€~~€~~~~~€~~€}€~~~~€}~~€~€€€~€€~€€~€~€~~€~~€}~€~~~~€~€~€~€€~~}‚~}}€~~€€~~~€~~€€~~~€~€€€~€}}€€€€~}~~€~€€~~~€~€€~€~€}€~~€~~~€~}€~~€€€~}~~€~€€~~€~€}€€~€}€€~‚€~~~~€}€}€~~€}€~€~~~€~€~€~}€~~~~~€€}~€}~~~€~€~~~}€}€~€~~~€~~€€}€~€}~€~€€~€€~€}~€~~€}~~€~€~~€~~€~€€~}~~}€~€~~€~~€~€~~~€~€}€~}€~€~~€}~€}€~€~}€~~~€~€€~€~‚~~~‚€~~€~€}€~€~€~~}~€~€~€}€~‚€€‚~€€~€~€}€~€~€}~~~€~€€€~€}~€~€~}€~~~€~‚€€~€~~~~‚~~~‚}~€€~€}~€€€~~~€€€}€€}€~€~€‚~€}~€~€~€~~~€~€~€€~€}~~€~€~€~€~~€~~€}€€€~~~~~€~€~€~~~}~~€~€~€~€~€€~€~€~€}~~~€~~€~~}€~€~€~€€€€}€~~~€~~}€~~€~€€~~€}€€~~~~}€~€€€€~~€~~~€~€}€}€~~~~€~~€~€€}~}€€~€~€~~~€€€‚€~€}}~~~‚€~~~~~}€~~~€}€}€}€~}~~€~€~€€~€~€~~~~~€€}€€~~~~~€~€~€~€€~~~~~€€}€~€~~~~~€~~€~~€~€€~€~€~€~€€~€~~}€~‚~€~~€}~€}€}€€~€€~€~~}~€~€~~~~~€~~~}€~€€~~€~€~€~~€}€}€€~€€~€~~~€€€€~~~€~€€~~€~€€~~~~€~€€~€~~‚~~~~~€~€}~€~€}€~~€~€€~~~}€~€~~€~€€~€€~€~€€}~~~€}~~€~€€~€}~~€}~}€~~€~€€}~€}~€€~~€€~€~~€}€~~~~}€€~€~~€}~€~€~€}€~€}~€~€~€€~€€€~€~~~€~€€~€~~€€~~~}€~~~€€€~€~€~€~€€}€€~€€}€~~‚~€}€€~~~}~€~€€€€~€~~€}€~€€~}€~~}~€€}€~~}€~~€~~~€~‚€~€}~~€}€€~€~€€~~€}‚~~~~€~€}~€€€€~€~€~~}€~€~~€~€~€€~~~~}€~€€~~€~~€~€€~€~~€~~€~€~€}~€~€~€€€~~€~€~€~~€~~€~€~€}€€~€~‚€‚~€~€~€~€€€~~€~~€~~€€€~~€~~~€~€~€€~‚~~€€}€~€}€~~€€€€~€~~€~~}€~~€~€~~€~€~~€~~€~‚€€}€~~~€~€€~€}€~€}‚€€~€~€~€~€}€~~~}~€‚~€~~~€~~~~~€€~~€}€~~~‚€€€€~~~€~€€€~€~}€~€€~€~~~€€}€~€€€}€}€}‚~~€~€€~€€}~‚€~~€~€~€~~~~€€}€~€~€~~~~~€€~~~€~€€~€€€~~€~~~~€€~€~~€~‚€‚~~€~€~€~€~€}€~€~€~€€~~€~~}€~€}~€~€~€€~€€~€}€~~~~~€~~€€‚~~~~€}€}~~~€~€€}€~}€~€€~~~~~€~€€~}~}}~€~€€~€~~~~€€€~}€~~~€€}€~~€~€~€}€~€}€~~~~€~€€€~~‚~€~~€~€€}€~€}‚€~~€~€~~~€}~~~€~~}~€€~~~€~~€€~~~~~€€€€~€~~~€€~€~~~~€}€~€~€€~‚€~€~~~~€~~€~~€~~~€~~€~~€~€€~€~~~€~‚€€}~~€~€}~~~€~€€~€}~€€€~~~~€€€~€~~~€€€~€~~~~}€~~€€~€~~~~€~€~~€}€€~€}~€~€€€~€~~€}€}€~~€~€~€~~€~€€~€}~~€€€~€~~~~~~~~~€€~€~€~‚€€~€~€}€~‚€‚}€~€}€~~€~~€~€€~~~~€~~€€}~€~€€~€~~‚~€~€}€}€€~€}€~~}€~}€~€€~€~~~€~€~€~€~€~€~€~€€~€~~€~~€}€~‚~~€~€~€~~~~~€~€~~~~€~€~€‚~€~}€~}~€~€€€~~€~~~€~€~~~€}€~€}€€~€~~~€~€~€€~€~‚~~~~~~€~€‚}€~€~€~~~~€}€}€~€~~€~~€~~~}€‚}€€}€€~}‚~~~~}€~~€€~€~~€}€€~~~€‚€~~}€~€€€~~€}~~€~€€~€~~€~€~~~~€~€~€}€~€~€~€€~~€~~~€~€€~€~~~~€~€€~}~€~€€~€~~~€~€€€€‚}€€}€~~€~~~€€€€~€~€~~€~€€}€~€}€~€~~€~~~}€~~~~~€~~‚€‚~~€~~€€}~~€~~€€€~€~~~€~€~€}~€}€~€~~~€~~~~~€€~€~~€}~€€~~€~~~€~€€~€~~~~€€~€~~‚~~~~€}€~€~€~~€~€~~€~€~€€€€~}~~~€~}€~~~€~~~€~€€~€}~€~~~€~~~~‚€€~~€~~€~}~~€}€€~~~~~€€~~~~~€€~€€}€~€~€€~€‚~€€~€€}€~~€~€€~€~}‚€~}€}€~€~€}~€€€~€~€~~€~€~€~~~€~€~€~€~€~€~‚}~~€~~}~~€~€~€€‚~€~~~€~€€~€~~€}€~€€~€}€€~~€‚~~€~€€€€~€~~}€€~€€~€€~€~€~€‚~~~}€}~~€~~~€~€~~}}€~€€~}€~~~€€‚~€~€‚~€~~€}€€~€‚}~€}€€~€~~€~€~€~€}‚€€}~€€~~€~€~€}€€€~€~~€~~~}~~~€€~€~€~~~€}€~€~~~‚~€~€}}€~€}€}~~€€€~€~~}~~€~€€~€~€€}€~~}€~€~€~€}~~}~€~€~~~€~~€~~~~€€€~€~~~~€~€~€€~}€~‚€~~~~~€~€}€~}~~€}€}€~~~€~}€€€~}€~~€~€~€~~€~‚~~~~€~€€}€~~~€~€~€}€~~}~€~€}€~~€~€~~~~€~€~€~~€~~~€~€~~~~}‚~€~~€}€~€}~€€~€€~€€}€~€~~~‚‚}€~~~~€~€€~€~}~~€~~‚€~€~~~€~~~€~€~€~~~€€~~€~~~€‚€€€~~~€~€~~€~~}~~€~~‚€€}‚~~~}€€}€~~~~€}~€~~€~~€€}~€~~~‚~€~€~€}€~~}€~€€~€~€~~€~~~€}€~}€€}‚€~~€~€~€~€€}€~~‚€~~~~€€€‚~€~}~€€~€~~‚}}€€~€€~‚€€~€~€~~}€~€~€}€~€~€~€~~€€~€~~€~€~~~~€~‚~€€€~~~€~~€€~~~~‚~€~€~€~~~€~€~€~~€~€~~~~}€~€~~~€~~~}~‚€~€~~~}€}‚}}€~€€~€~€}€~~€}€~~€~€~~€~€~€~~}~€€~€}~€~~€~~€~€~€~}€€~€€~~€}~~€~~€~~‚~~~~~€}€€~€}€~€~€~€€}€~~~€€€€~€~~€~€~€~€~€~~€~~€~€~€~€~€}€€€~€~~€}‚€€€~€~~€~~€~€~}€€€~€~€~€~‚~~~€~€}~~€~}~€€~€~€~~~€~€€~~‚~~}~€~€~€~~€~}€~~€}€~€~€~}€€~€~~€~‚€€~~}~~~~~€~€€~€€}€~~~€~~€€~‚€€€~~€~~~€~}~~€~~€~€~~~~€~€€~€~€~€~~~~~~€~€~€€~€~€~~~€~‚€€~€~€~~€~~~€~}~€~~€€~~€}~‚}€~~~~€~~€€€~€~}€~~€~~~~~€~~€~~~~€€~€€~€}€€}€}~~~€~€€€~€~~€~€€~€~€~€~~~~€€~€~~~€}~€‚}~€~€~~~€~~~€~€€€~~~~€~~€€~~~€€~€~~€~€€~€~~~€~€~€~~€€~~€~€€~€~~€~€~€~€€~€~€€~~~€€€€€}€~~~~€~€€}€€‚€~€~~~€~~€€~€~~€~}~€€€}}~€~€~€~€~€~~~€~€~€}€~‚€~~€}€~€~€}~~€€~~€~~~€€}€~€~~€~€~€€~}€~€~€~€~~~~€~~€~€~€~~€}€~~€€~~€~~€~~€€€~}~€~€~€€~}€~}€€~€~}~~€~~~~€~€~€€~€~~~}~€~€~€€€~~€}}€}€€~€~~~~~€~€~€~~}~€€‚}~~~€~~~€~€~~€}~~€~€€}€€~€~~€~€}€~€}€~€‚~€~€}€€~€~~~€€€}~}‚€~~€~~€}€~~€€~~~~~€‚€€€€~~€}€~€}€€~€~}~~~€~€~~~€~€€~€€}}€~~‚~~~~~€~‚~~}€€~€€~€~€~€~~€~~~~~~~€€~€~~}€~€€~€~~€~€~~‚~~€‚~€~~}€€~~~~€€~€~€~€~€~~~}€}€€}€~}~€~€}€~~€~~€~€€~~€~~€~€€~€~~€~~~~~~~€~€~~~€}€€~€}€~~€~€€~~}~€~€~€€~€~~~~€~€~~~~~€€~‚€~~~|€€~~~‚}€~€~€~~~~~€~~€~~~~€~~€~€~€~~€~€~}€~~€~€~€~€~~€~€€~€€}€€~~€~€~~~~€~€€€~‚~€€}€~~~€~€~~~€~€~€~€~€~~~~~€~€~€€~€~~€}~€€€~€~~~€~€~~~~€€}€~~~~€~€€~~~}€~€€~€~€~€€‚}€~~~~€€€€}€~~}€~€€€~€~~€~€~~~~~}~}€~€€€€€~~~~€~€€~€~~€‚€~~€€}€}€€~~}€~‚€€~€~~€}€€€~~~~~€~}€~€~€}~€~~~~€€~€~~~~€‚~€}€~~~~}~€~€}~€~}~~€}€~€~~~~~€~~€~€~~€~€‚~}~€~€€€~~~}€~€€€~~€~~€~€~~~~‚€~€~~~~€~~‚~~€‚~~€}}}€~~€~€€~~€}~}€~€€~€~~~‚€~€~~€}€}€€~€~~€~~~€~€}~€~€~€}€~€}}~€~~€€€~}€~~}€~€€€~~~€~€~~€}€~‚~~~€~~€~€~€}€~}€~€~€~~€€€~€~~€~~~€}~€}€~~€~~€€€~€~~€~€~€~~~€~€€€~€}}€~~~~€~€}€~~}‚€~~€~~€€€~}~~€~‚€€~~~€~~~€~~€}€~€}€~€}~~€€~€~~€~~~€€}€}~~€‚~~~€~€~€~‚~~~€}€~€~~~€~€~€~~}~€~~€€€~~€~~€€}€~~~}‚~~€~€}€~‚€€~€~~~€~~€€~}€~~~€~€}€~€~~~€~€}€~€~~~€}€~€~€€~€~~~€~€~€~€~~€~€~~~€~€~~€€‚~€~~€~~~~€~€‚€~~~€~€~~~~€€~€€~€~~~~~€~€~€~€~}€~~~€~~€€‚€~~€~€~~~~~€€~€~~€~~€€€~€~~~€~~~~€~€~€~€€~€~‚~~~€~€€~€€~}~€~€~€€~€~€}~€€~€}€~~~~€€}€€~€}€~~€~~€~€~~~€~€}€€~€~~€~~€~~~~~~€~€~}€~€}€€~~~~€€~~€~~~~~€~€€€~~~~€€€}~€~~~€}~~€~€~~€~€€~~€~~€€~~€~}€~~~€€~€~€€}~~}€~€€~}~~~~~€~€€~€~~~~~€}€~€}~~~‚€~€~€~€~~~€~€}€~‚}~€~~€€~€~}€~€€€~~~€}~€~~‚~}~~€~€€~~€~~€~~€€~€~~€~€~€~€~€€~€}~}€~€}~~€~€~€~}€€~~€~~~€€~~€~~€€}~€}€~€}~~~€~€~€~~~~~~~~}€€€€‚~~€~€€~€~~€~~~~}€~€~~~€~~€€~€~~~€~€€~€~~€~‚€~€}~€}~€~€}€€~~€~€‚~~€~€~~€~€~€€€}€~€€}€}€~~~€~~€~~€}€€~~‚~€~€}€}~€~}€}~€~€}€€}€~€~€~~€~~~€~€€€€}~~~~€~~~€€~€~€~€}€€€€~~~}€€~~~‚~~~€~€~€~~~}€~€‚~}~€~~€~~~€~€~~~~€~€~€€€~€~~€€~~~~~€}€~€~€€~~€~‚~~€~€~~~€~€~€~~~€}€~~‚€~~~€~~€~}€~~~~~€€~€~~~€€~‚~~~~€€~€~~€~~}€~}~€~€~~~€~€€~€~~~€~~€~€~~€~€€€~~€~€€€~~~~€~€}€€~€}€€~€~€~~~€~€€~~~~~}~}}€~~~~~€}€}€}~~€~‚€€€€~€~~€~€€~€~~~~€€€~~€~~€}€~€~€~€~~~~~€€~€~~~~‚€€€~€}~€~~€€}€~}~~~~}~€€~~€~€€~€~~€}€~€€~€~~€~€~~}€€~€~~€€~€~€}€~}~}~~€€€~€~~~€}€~~€€~~~~~€~~}€~€€~€~€~€~€~€}€~€~€~€~~~€}€~€~€€~‚~~}€~€€€~€~~€}~~~€~€~~€€~€~€~~€}€~~}~~€~~€~€€€~€}~€~€€~€}~‚}~€~€~~~~‚~~~~€~~}€~‚€€€~~~~~€~€}~~€~~€€~€}~‚€~~~~€~€€~€~}€~~€~€~€}€~€€~€~~~}~€~€~~~€€~}~~~€€~}~~€~€€~€~€~~~€}€€€~€~€~€€~}€~€~}~~~€~€~€~~~€}€~€}‚€~~~~€~€~~~€~€€}}€}€~€~~~~~€}}€€}~€}€~}€}‚~~€}~€€€~~€~~~€€€~~~~€~€€€€~~~€~€€~€~€~~€~€€~~€~}€}€~~€€€~€~}€~€€~~€~~€~€€€}€~~€~~€€€~}€~€~~~~~€~€~€€~€~}~~~~€~€~~€}~€~~€~~€~~~€}€€~~~~€~€~~€€~€~~~€~~€~€~~€~~€‚~~€~€€~€~~~€~€~~€€~~}€~€}€~€~~}~~€~€€~€~€~~~€~€‚~€~~€~€€€~€€~€~}~‚€~€}~~€~€~€€€~€~€~~€€€~€~~~~€€~€~~€}€~€€~~~€~€€€~~~€~‚€~~€~~~€€€~€~€~€~~€~€~€~~€~€€€€~€}€~€~€~€~~€~€~€~~~€~~€~~~€€~€~~~~€€€}€~~€~€~~~€€€~}~€~}~€€}€~€~€~€~~€~€~€~‚€~~€~€~€€}€€~~€~€~€€~€~€~~}€~}€~€€}€~€~‚€~~‚~~~€}€€~€~~~€€~~€~~~€~€€~€~~~€~€}€~€~~€~€}~€€~€~€~~€~€}€~‚€~~}~~€~~€~€}~~€~€€€‚‚~€~€~~€~€~€€~€~€~}€~‚~€€€~€~€~~~€}€~€~~~€~€€€~€~~~€~€€‚~€~~~~€€€~~}€€~~~‚~~~€€~€€~€‚~€}~€€€~€~€~€}€€~~€~~€}€€~~~€~€€€~~~~~€€€€}~~}€~€~€~~}€~€€~}~€~€€€~~~~€~€~€~€~~€~~~‚}~~}€}€~€~~€~€~€€~~}~~~€€~}€~~€~~€}~}€~€}~~€~€~~€~~€~€€‚~€~~€~€~~~~~~€~€€}€}€~~~€~€}€}€~€~}€~~~€~€€}€€~~~€}€~‚€~~‚~~~~€~€~~€€€€€~~~€~~~~}~€~€~€~~~~€€~}~~}~~€~€‚~€~}~~€€€~€~€~~~~~€~€~~~~~€€}€~€~‚€€~€~~€~€~€~~~€~€~~}}~€~€~€}~~€~~€~€€€~~~€~€~~€~~€}€}€€~€~~€}~~€~€€}€~}€~€~€~~~~€~€~€€€~€~€~€~~€~€~€~€€€~€}~~€~~}€~}€~€~~~~€}€~‚}€~€~~~€~€€~€€~~€~~€~€}€€~€~~€~~€~€~€~~€~~~€~€~€€€~€~~~~~€}€}~~~~~€~€€~~€~€~€~~€~~~~~€~€€}€~€€~€~~}€€~€~€~~€~€€}€}€~}~€~€~€€~€~~€~€€~~~~€€~€}}€€}~€~~~€~€~€}€~€€€~€}~~€~~€€€}€~~€~€~€}‚~€~€€‚~€~~~€~€~€~‚}~€~€~€€}€~€~‚€~€€~~€}€~}~€~€~~€~€~€}€}€~€~~~€~€€~~~€~€€€€}€~~~~~€~€}€€~~€~~~~‚~~~€~€~}~€~~€}€€€~~~~~~~‚€~~~€~~€~~€~€€~~€~€~}€}~€€€~~€~€~}~~~€€~~€~€~~€~€}€}€€~€~€~€€€~€}€~€~~~€~€}€~€}€~~~€~~}€~~€}}~€~~~~€~€~~~€~€€~€~~€~€€‚}€€‚}€€~€€}~~€€~€€~}€~~~€~~€~€~~€€~€€~}€}~€}~~€€~~€~~~~~€€€€€}~~~€~€~~€~€}€€~€~€~€€~~€€~~~~€~}~~~€~~~€€€~~}~€}€~~€~~€}~€}€}€~~~‚~€~}‚€~}~€~€€€€~€~€~~€€}€€~€€~~€~~€~~~€}€~~~€€~€~~~€~~€~~~~~}~€~€~€~€~~€~€}€}€~~€~€€~€~~~€~€€~€€~€€~€€~€~~~€~~€€~~€~~~€~~€€€€~€~€~€}€~€€~€~~€}~}~€€~€~€~€€~€~~€~€~~~~~~€}€~€~~~€€~€€}€~€~~}~€}€€€€€~~~~~~€€~€~~‚~€~€~€}€€~€~€~~~~€~€~€~~‚~}€~€}€~€}~~€~~€€€~€~~€€€~€~€~€~€€€€~€}~€~€~€~~€€~}€~~~€~€~~€~~~€€~~~€~~€~~€}€€~€~€~~€~€€€~€}€€}€~~‚~~€~€~€€€}~€~€~~€€€~€~€€}€~}€€~€~€~~~~€~€€~€~~€~€€~€~€~€~~~~€€~€~€€~€€~€~~~€~€~~€~€~~€~~~~€~~€€€€~}~~~€€~€~€~~€~~€~€~€~€€~€~‚~~€€}}€€~~€~€€~€~€~~~€~€~€~~~€~~~~~~€}€~€€€}€~~€€~€~€~€~~€~€~€}~€~~~~€~€~€€~€~~~€~€~€~~~€~~}~~€~€€€~~~€~~€€~~€~€~~€€~}€~~€~‚€€€~~€~€~€~€€~€~€€}€~€}~~~~€~€€~€~€~€~€€~€~~~€€~~~€€~‚~~‚~€‚~~€~€~€~~€€€€~€~€~~}€~€~~€~~€~€~€~~€~€€~}~~€~€€~€€~~€€~€~~~€~€€€€~}€~~€~€€€€~€~~~~€~€~~€~~~€~~€€~~~€}~€€~€~}~€€€€~€}~~~~€}~~€~€€~}~~€~€~~€~~€}€~~€~€~~}€€~~€~~€~~~~~€€~€~~€~€€~~€~€~€~€€~€€~€€~€~€€~€~~€€~~€~~€~€€€~~~~€~€~~}€~}€€~€~€~€€~€~~€€€~€}~€~€~€~~‚}~~~€~~~€~€€~€~~€~€€~€~€~€~€}€}€~~€~~~€€~€~~€}€~€€~€~~~€~€€€~}€~€€€€~€~€~~€~~~€~€€€€~€~~}€€€€~€~~~~€~€~~€}€~~~€~€~€~~€€}€€~€~~~€~€~€€€€~€}€~€~~~€~€}€}~~€~€~€~€~€}~€€€‚~~~~~€€€~~€~~~€~€~€~~~€~€~~€~~€~€~~~€~~~€~€~€~€€~€€~€}}~~€~€~~~€~~~~~€~€~€~€~€}€€~~€~~~~~€}€~~‚€~€~€~~€~€~€~~~€~€~~~€}€~€~€~€~~€~€~€€~~€~~~~~€~€€~€}€~‚~€~€~€€~}~}~~€~€~€€~~~~~€~}~~~~€~~€~€€~€€~€}€~€~€~€€€~€}~~~~€}€~€~~€}~€~€€€€~€~€~€€~€~€~~€~~~~~~~~~~}€~€}€~€€~€}€€~€€}~€~~~~€€~€~€~€~~~~~€~€€€~€~€~~}€~€~€~€€}€~~~€€~€~~~€~€€€~~~~~€€~}€~~}€~€€~€}~}€~€€€~~~~~~~€€~€~~€}~€€~€~€~~€€€~€~€}€~€~€~~~~€~~~€~€}~€}€~€~€}~€}€~€~€~~~€~€€~€~~€~€€€€}€~~€}€€~€~~~€~€€~€~€€~€€~€~~~€}€€~~€~€~€~~~~~€€€‚~€~}‚~~€€~€~~~~€}€~€~€~~€~€€~}€~€}€€~€}€€~‚€€€€~~€}€~€~~~€~‚€€€}~}€~€€€~~€~~€€~~€~~~€~€~€~€~~€}€~€~€~~‚~~€}€€€~€~~~€~€€‚~~~€~€€€€~€~~€€€}~~€€€}€}€~€}€~€~~~~€}€~€}€~~~€~€~€~€~~€~€€€~€}~~~€~€~€~€~~~~€~€€~€~~~€~‚€€~€~~~€€€~~~€~€€~~€~€€~€~~~~€~~~€€~~€~~~€~€}~€~€€~€~~~~€€€~~~~€~~€€~€}€€}€}~~}~€~€~~~~€€~€~~}€~~~~€~€~~~€€~~~€~€~€€~€~~~~~€}€~~€~€~~~~€}€€}€~~~~~€~€€~€~~~€}}€€€~€~€~€}€~~€}~~€}~€~~~€~~€€~~~€~€~€~~€~€~~€~~~€~€}€~€~~~€~€}€~€~~‚~}~€~~~~~~€}}~€€}€}~€~€€~~~~~€€~€}~~‚~~~€€~€}€€~€}~~~~~€~}€~€~€~~~~€}€€}€€~€}€~~~€}€€}~~~}€€~€~€}€~€€~~‚€~~€~€~€}€~~~~€~}~€~~€‚~€~€~~~€€€~}€~}~€€€}€~€}€€~€~~}€€~~~~€~€~~~~€}€~~€}€~~~€€~€~€~~~~~~€~€~€€~‚€~~€~€}€€}€~~~€~€€‚~€~~€~~~~€~€~€}€~€}€~~~~€~€~~~€~~‚~~~~€}€~~€~‚~€~€€~€~~~€€}€~€~~€}€~}€~€€€~€~~€~€~€}€~€}~~€~~}€€}€~~~~€~€~€€~€}€~€€€~€~~~€~€€~€~~€~€€}€€~€~€~€~€~~~~€~€}~€~€~€€€~~€}~€€€~€~~~€~~€€~~~~€~€~}€~€€€~€}~~€€~€~~~€~€€‚~€~~€~€~€~~~€~~€‚~€~~€~€‚}€€~€~€€€€~€~~}€€€~€~~€~€~€~€€~~}€}~€~€~€€~}€~~~~€~€~€~€~~‚}~€€€€~€~}€€€~€~~€~€€€}~€~~€~‚€€~~~~~€~€€~€}~€~€€~}~~€~€~€~€}~€~~~~€~€‚~~€~€~}€~~~€~€~~~€~€€€~€}~€~~€~~~€~}~~€€~~€~€~~~~€~€~~~€€€€~~~€~€€€}~€}€~€~~}€~~€~~~€~€~€€~~~~~~~€~€~€€}€~€}€€€~€~€~~~~}€}~€~€~€€~€€~€~~~~}€~€~~~~€~~~~}€€€~~~~€€€~€~~€~~‚€€}€~~~€€~~€~€}€}€~€~€~~€~€~€~€~~~~€~€€}€~€}~~€~€€~€~€}€€€~€}~€}~~~€~€€€~€~~~}€~€}€€~€‚~€~€~~€€€~€}~~€~‚~~€~€€~~€}€~~~€}€~€~€€~~~~‚€~~€~~€€‚~€~€~€€~€~~~~}€€}€~€~€~~€~€€~}~~~€~€~€~~€~~€~~~€€~~€~€~}€~€~€~~}~~}~~€}~~~€~€~€€~~€€}€~~€~~~~€}€€~€~€}~~~€~€€~~~~~€}€~~€€~€~€~€~~€}€~€~~~}€~€~~~~~~€‚}€~€€~€€~€~}}€}€~€}~€~€~~€~€€~~€€}}~€~€~€~~€~€~€~€~~~~€€~€€~€~~€~€~€‚~~€~€€~€~~~~~~€€~~~~€}€~‚€€~€~~~€~€}€}€€~€~~~~€~~€€~€}~~~€~€~}€~~€~~~}~€€~~€~€~~€}~€€~€~~€~~€~‚€~~€€~}~~€}€€~~~€‚~€€~€‚~~~~}~€€~€~~€~~€~€~€~€€~~~€~€€~}€~~€€€~~€}€~€€~€~~‚~~€~€~€}€~€~‚€~~€~€€}€~~€€~€~€~€€~~~€}€€}€~€~~€}€~€~~~~€~€~€€~‚€~~€€~}€}€~~€€~~~~~~€€~€~~~€~€~~€€~~€~€€~~~~€‚~€~€~€€~€€~€~€~~~~~~‚~€~€~€~‚}~€€€~€~€~€}€€}~€~€~€~~~€~€~}~~~~€}€~€~~~~€~€€~~€~~~€‚~€~€~€~~~€}€€}€~€~}‚~~~€~€~~~€~~€€~€~~~~€~}€€~~€~~~}}€‚~~€}~~€€~€€~~~€~~€€~~~€€~~€~~~€€~€~~€~€€~}€~~€~~€}€€~€~€€~€~€~~~~}~€‚}€~€~~~}€~€€~~~~€~€€€~~~~€~€~€~€€}€~~~€~€~€€}~~€}~€€~€€~~€€‚~€~~~€‚~~€~€~€~~~~~€~€}~~€~~€~~€~}€}€€~€~~~~~€€€~~}~€€€}€~€~€~€}~€~~~~~€~€~€€~~€}~~€€€€~~~€~€€~€~~~€~€€€~€~~€~€~€~~~~€~€€}€~~~€~~€€€€}€~~~€€~€}€~€~}~~~~€~~}~€€‚~€~€~€~€~€~€~€€€~€~~~€~‚€€~€~~~€}€€€~~~~~€€€€~€~€~~€}~~€~€}€~€~€~€~~~~€~€€~€~~€~~€}~€€‚~€}~~€~€‚~€~€~€~€~}€~~~~€~€€}€}€~~€~€}~€€~~~~~€}€€€€~€~~~~~€~~€}€~€~~€~€€€€~€~€~€~€€~~€~€~~~~‚~€~€€~€€~‚€€~~€}€~€~€~~€~€€€€~~€~~€}~€€€€~€~€~~~€~~€~~~}€~~~€~€~€€~€~~‚€€€~€€}€~€‚~~€~~~~~~€€‚}~€~€~€~€~€€~‚€~~}~€}€€~€~~~€}€~€€~€~€~~€~€~€}~~~€~€~€~~~€}€}€}€~€€‚~€~~€~~€~~~~}€~€~~~€€~€~~€€€~~}€~€€}~€~€~~~~‚‚~€~€‚}€}€~~~€~~€€~}~~€~€€€‚~€~€~€}~~€€~~~~€}}€~€}€~€~‚€~~€~~€€}€~€~~€~€~€}~}~~€~€€€~~€~~€~€~€}€~~~€~~~€}€~€‚~~€~~~€~~€~€€~‚€~~~€~~~€€€€€~€~~}~~€~€~€€~€~€~~€€~~~€~€~€€€~€}~€}€~~~~~}€~~~~€‚}€}€€~€}~~€}€€~~€}~~€~€~~~~€}€~€}€€~€€}€}~~~~€~€}~€€~€~€~~€€‚~~€~€}€€~€}€€}~~}~~~€~€~~~€~€€€€~€~€~€~€€~€~~€~~€~~€~€€~€~~~~€~€~~~€}~‚~€}€~€~€€€~}~€~}€€~€€}€~€€€~€}~}€}€~€~~~~‚~€~~€€€€€~~€~~€~€}€~~}‚}€}~}€~€~€~€~€~€~~€~~€}~€~~€~€€~€}€~€€~€~~€~€~€~~€~€€~~~€~€€~}~€~€~}€~~€~€~€}€~~~~~~€~~~€€€~~~€~‚€~~~~~}€~€~€€~€~~~€~~~~~€€~€~~~€~€€~€~~~~€~€€~€~€~€~~~~€€~€~€€~€~~~‚~€~~}€~€€€~~€~€€€~~~~€~€~}~€~~€~€€~€€~~~~€~~€€~€~€~€~€€€~~~€~€~€~~}€~~~~€€~€}€~}~€‚}€~€~€}‚~~~~~~~€}~€€~~~~€€~~€~}~€€~€}‚€~~~~~€~~~€~~€€~€€~~~~~~~€‚~€}~~}~€~~~€~~€~~€}€~‚€~~~€€€~~€~~~~€‚€€~~~}~~‚~€‚~~€~}€€}€~~~€}~€~€€€~€~~~€~~€~€}~~~€~€~~~~‚€~€~~€‚~~~~€~€€~€~€}€~~~€}€€~€‚~€~~€~€~€‚~~€~~}~€~€~€~€}€~~€~~‚€~€~~~~€}€€~€~€~~}€~€€~~~€~~€~€~‚€~€~~}~€~€~~€€~€~~~€~}~‚€€~€~~~~€~‚~~~~~€}€~€}€€~€€~~~~~€}€~~€€€~€~}€€~~~€~~€€~~~€~~~€~~€~€~€~~~€~€}~€}€~}€~€~€€~€~}€~€~€~€~€~‚~~~€~€~~€€€~€}€~~€~~€€~€~~~€~‚€~~‚~€~€~€~~€~~€€~€~€}‚~~~€€~€~€~~~€}€}‚€~€~~~€€€~~~‚}€~€~€~€€~€~~~€€~€}~€~~€~~~~~~€~€}‚€~~‚~~}~€€}€€~€€~€~~~}~€€€~€}~~€}~€~~€~€~~€~€~€~€~~€~€~€~~~€}€~€~~€~~€}€}€~€~}}€~€~€€}€~}€}€~€}~~€~€€€~€~~€~€€~€~€}€~~~~~€}€}€~~~€~‚€~~€~~}~~~~}€~~~~~€~€€~€~€~‚~~~€}~€}~~€}~€€~~~~~€~€€}€€€~~€~~}€~€€~}~€}€}~~‚€~~~‚~~~€}€~€}‚€~~~€€}€~~€~€~€~~~€~~~~€‚}€~€~€}~€~€~€~~~~€€~€~~€~€€~~~€~~~~~€~~€~€~€}€~€~~‚}€~€~€€~€~~}€~€€€~~€~€€}€~€€~~~€‚~~~€}€~~~€~€~~~€~€€~}~~€}€~€~€~€~€€}€~€}~€~~~€~~€€~€~€~~~~€~€~~€}€€~€~~~~€~€~}~~}€~€~€~~~‚~~~€€~~~€~~€€~€~~}‚€~€~€}€}€€~~~€}~€€€€~€}~€~‚~€€€~€~~€€€€~€~~€~€€~€~~€~€~~€~~~‚~}~~€}}€€~~€}€€~€~€~}~~€~€~€~~~~€~€€~~~}€}~~€~€€}€~€}~€}‚~~€~€~~€~~~~€~€€€~€~~~€€}€~}€~€€~~€‚~~‚~~~€€~€€}€~~~}€}€€~~~~}€~€€€~€~~~€~€€~€~€~~€~€€€€}~~€~€€~€~~~~~~€‚~~€€~€~€€~}‚~€~‚€€~€~~~€~€€€~€~~~€€€}€~~~€~€~}‚~~~~€}€}€€~~€~€}€~€~€~€~}€~~~€~€~~€~€~€~€}€~~~~€~€€€~€}~~~~~}€~~}~~~€€€~€~€€}€~~~~~€~~€€‚~~~~~€~€~€~~€~€~~~~€€~€}~~~€~~}€~€€}€~€~€~€~~~~~~€~€~‚€€~~~~€}€€~€}~€~€~€€~€~~}€~€~€}€€€~}€~~~€~€€~€~€~€~€€~€~~}€€~€}€~~€~~€€~€~~~~€}€~}€~€~~~}€}€€~€~€~~€}~€~€~€~~€~€~€~~€~~€~€€~~~~~€€€~€~€~~€}€~}‚~~}€€~~€}‚~~€~€€~‚€€~~€}€~~~€~€€~~~~~€€€~~~~€~€~€€€~€~~€}€€~€~€~~€€~~€‚€€€~€~€}}~€~~€~~€}€€~~~€}~~€~€~~‚~~€€~~~€€~€~~€}~~€~~‚~€~€~€~€}~~€~€~€~~€€~€~~~~~~€~€~€~~~~€~€€€~~~~€~€~€~€}€~€}~€~€}~~~€€~€€~€}€€~€~~~~~~~€~€€€~€~€~~~€~€~€€~€~~~€~€~€€}€}€~‚€~€}~~€~€~€~€€}€~~~€~€€~~~~€€~€€}}€~€~}~~€~}€~}~}~€~€~~~~~~€~€~€~}}€€€~~~~~}~€~€}€‚}~€~~~€€~€€~~~~€~€€~~€~€~€€~€}€€}€~}~}~€~~~€~~€~€€~€€~€~}~€}€~€}€~€~‚}€€‚~€}‚~~€~~€}€~€€~~~€~~~~}€€~€~€}€~~~~€~€~~~€~€~‚€~€~~~€~€€~€}€~~€~€}€~€~~~~€~€~~}~~~~€~€€~€}€~~€}€~€}€}~~~~~€€‚~}~~~~~}€}€~~~€~~€€~~~}~€€€~€~~€~€€€}€}~~€~€€€~€~€}€€~€}~~~€€€€~€~~~€~€€€}€~~~€~€}€~~€~€€~€~€~€€~€~€~‚€~~~€}€~€}~€~}€~€€€€}€~~€~€~€~}}€~~~€~}€~~€}~~~~€~€~~~€~€€‚~€~~€~~~€~~€}€€~€€~€~~~‚€~€~‚€~~~€~~€~~€~~~~€~€€~~€}€€~~€€~€~~€~€~€~€~~~€~~~‚‚~~~€}€€~~€€~€~~~}€~€€}€~€~€}€}~}}€‚€€~~€~~€~€~€€€€~€}~~€}€~€}€~€~~€~€~~~~€€€~€}€~~~~€€€‚~€~€~~~~€€~€}€~€}~}€}~~€}~€€€~~~}~€€€~€~€~~~~€~‚~€~€~~€~€~~~€~‚}€~€~€€}€~~€~€‚~€}~~€~€€€~€~€~€~~€€~€~€~~€~‚€~~~~€~‚~~}€~~~€}‚€€€~€~~}€}~€€~€~~€}€~~€~~€~~€~~~€~€€€~€~€~€~€~~~~€}€~~€~~~€~€~€~€~}€~€}€~€~~~€~~€~€€€}€~€~~~€€€~~~€~€€€~~€~€~€~€€~€~€€~€~~~€€~~~‚~~€~~~€€~}~~}€~€€~€~~€~€~€€~€~€~}€€~€~~€~~~~‚€€~€~~}~€~€~€€~~~~~€€€~€€~~~~€~€~~~€~€€~€~~€~€€‚~~~~~€‚}€~€~€}~~€~~~€~~€~€€€}€~~€~€€~~‚}~~€~€~~€~€€‚}€€~€~€€~‚€~~~~~€}€~‚€€€~~€€€}~~€~€~€~~~}€€~€}~~€}~€€}€€€}~~€€}€~~~€~€}~~~€€‚~~~€~€~~~€~€}~~€~€€~~€€~~~~€~€~€€€€~€}~~€~€~€~€€~€}€~~~~€€~~~}€‚~~€~€~€€€~€~€~}€€}€~~€~€~€~€~€~€~‚~~~~}~€~€~€€~~€~€~~€~€~€€}€~€~~~}€~€€~~€~~€~€~€~€}€~~~€~€}~~~~€~€€~€~~~€~€€€€‚~€}~€~}€}€}€~€~€~~~~€}~€}€~€~€~~€~~~~€}€€~€~€~€€}€~}€€}€~~~€~€€‚~€~~€~~~~€~€}~~€~€‚~€€~€}€~€€~~€~~€€~€~€~~€€~€~}€~€~€~~}€~~€~€~~€}~~€~~€€€~}€~~€~€€€~~~€~€~~~~€~€€~~~~€~€~~€~€~~‚~~€~€}€~~€~~€}‚~€~€~€~~~~€~~~~~‚~€€~€~€~€~~€~~€}~€}€~~€~€€€‚~€€~€~€}€~€~€~~~~€€}€~€€~~~~~}€~~~€~~~€~€‚~€~€~€~€€€€~€~€~€€~€~€~~€€~~€~€€~~€€~~€~€€~~€~~€€~€}€~€~€~‚~€}€~€}~~€~€~€}€}~€~~~}€€~€~€}€~~€}€~€~~~~€~~€~€~~~}€~€€€€€~€~€~~€~~}€~~~€€€~~~~~€~€€~~~}~€€}€~€~€~€€€}€~€~€€~€~~€€€~€}€~~}€€€~~~€~€~~€~€~~~~€~~€~€€~€~€~~€~€€€€~€~}€~~€€~€~€~€~€~€~€~€€~€~~€~€€~}€~~€~€~€~~€~€€~€~~€~~€~€~~€~}€~€€€~~€€~€~€~€~~€€~€}~~€~~€€~€~}€~€€~~~€~~~€}~€~€€~~~~}€~€~}€~€~~~~~€~~€}€‚~€€~}€€~€~~~€€~~~~~~~~~€}€~~€~€€~€€~€~€~€~~€€€~€~~~~~€~€~~€~€~~€€~€~€€}}€~~€~~~€€}~~€~€~€~€~‚~~€~€~~~~}~~~€~~~~€~€€€~}}~}€~€~€}~€~€~€~~€~€€~€~~~€€~~}~~€€€}~~€~€€€‚~€~~~~€‚€~~€~~}€€~€}€}€}~€~€~‚~~€~€~€€€~~~~~€~~~€~}€€~}~~~€~€€~€€~€~~€€~~€~~~€}~€€~€~~€~€€‚~~~~€~€‚~€€~~€~€~€~€€~~~€~€~€~~}~~€~~~~~~€~€€€€~€~~~€~€~€~€~€~}~~~~€€~€€~~~~~€~€}€~~~}€€~€~€~~€}€€~€€~€~€~€}€}€~€~~€~€~}€~€~€~~€~€€}€~€~~€~€~~€~€}€€~€}€€€~€~~€~€€€~€€~€~~€~~~€‚~~€~€|€€~~~~€~~€€~€~~~€~€€€~€€~€~~}€~€~~~€~€~€~€~~€~€~~~€~€€~€~~~~~€‚~€€~~~‚€~~~€}€~€~€~~€~€~€~~~~€~€€~~~€~~€€~}€~€€~€€~€€~€}€~~~‚~~~€~}€‚~~~€}€~€€~~~€~~€€~~€~~~~~~€~€~€~€‚~~€~~€~}‚~€~~€~€~€~€€€~~~~~€}€~€€~€~~~€~€€~€~€~~}}~€~€~~~€}~~€€~‚€~€~~~€~€€€~€~~~€€€~€}~€~‚€~€~~€~€€€€}€~€~€}€~~~€€€~~~€~€€~€~~~~€~€~~€~€€~€~~~~€~‚€€~€~€€}€~~‚€€~~€~€~~€}€~~€~~~~€~~€€~~~€~€~€}€€~~€~~~€~€€~~€~~~~€~€~€}€~~~~€€}}~~~€€~€}~€~~~~~€~~€~€~~~€~~~€~‚~~}~~€}€€~€~€}€~~€~~€€€~~~€€}€~~~~~€‚~€~€~~€~~~€~~€€~~~~~~~€~€€~€~~€€~~€~~~€}€€€~€~~~~~~€~€~~€~€€€€}€~€~€~‚€~~~‚€€~~~‚€~}€‚~~~€~€€€~~~€}~€~€~~€€~~€~€€~€~€~€~€~~~€}€~~~~€~~€€~~~‚}~€~€~~}€~€€€~€~€~€}€~~‚~~€}€~€~€~}‚€~€}~~}~}€~€‚~€}~~€}€~~~€~€~€€~€~€~~~€~€€€~€~~€}€~€}€~€}€}€~€~~~~‚~~€€~~€~~~~€~~€~€~~}€}€}~~~‚}~€~€}€~€~~~~~€~€~€~~‚~~€~€~€}€~~}€~‚€€~~~€~~€€~€~€~}~€}€~€}~~~€~€~€~~~€~€~}~~€€~~~€~€€~~~€}€~€€~€}€~~~~€}€€}€~}€~€~€€~€~~~€~€~€~€~~€~~€~€€~€~~~€}€~€€€~~€~}€~€~€}€€}€~~~€~~€}~€€~~~~€~€€}€}~€~€€€~€~€~€~€~~~€~€~~~~€~€€€~~}€~~~~‚~~€‚~€~}€€}€}~~€~~~~~€~€~€~}€~€€~~}~~€}€~€}€~~~€~~€~€~€€}~€~€~€~~€~€~€€€~}~~€~~~€~€~~~~€€‚~€~€~~€‚~€~~~€~€€~~€~~~€€€€~~€~~~€€}€~~‚~~~~€~€}€~€~~€~~~€~€~‚€~€~~€€€~€~€~~~€~€~€}€~€~€~~€~€€~€~~~~~~€€€~~~€~€~€€~€~~~~~€€€€~€~~€~€€~€~€€~€€~€}€~~€}€~€}€~€~}€€~~€~~~€~€€~€~€}~€~€€~~€~~€~€€‚~€~~~~€~€~~~€€€€~€~~~€~€~€}~}~€~€‚~~~€~~€~~}€~€€~~~€€€~~~~~€€~~€~~~€~€~€~~~~€€~€~}€‚}~~€~€~~€~€~~~€~€}~}€€}€~‚~~€}€}~€}€~}~~~~€€~€~~}€€}~€~~€~~~~€~€€~~€~~€~€~~~€€~~€€~€~€€~€€~€~€~~~€~€~€~~~€}~€€€~~~~€€€€}€~~€}€€~~€€~€~~~€~€‚~}~~~€}€~~~€~~€}~~€~€~~~€~~€~€~€~€~€€~}~€~€~€€~€~€~~€~~~€€~€~€~€}~~~€€‚}€~€}€~~€€€‚~~€~~~~~~~€}€}€~~~€~€€~€~€~€~~€~~€~~~€€~~~€~~}€~~€~~~€~~€~€~‚€€~€~~~}€~€~€~~~‚~~}€~€€€~€~€~€€~€~~€~~~€€~~€}~~€~€€€~€}~~~~~€~€‚~~~~€~€~€~€~~~€~€€€€~€~}}~€~€}‚€~€~~~~‚}~€~€~€€~~‚}€~€~€}€~~€~€}~~~}€~€~~~€~€€€€~€~€}~€€~€~~~€€~~~~~€€~€~~€~€~€€~€~€~€}€€~~~~€~€€}€~~€~€~€€~~~~€~€€~€€~€~~‚~€}~€~€~€~€~~~€‚~}€€€~€~€~€~€€~€~~}€~~~€‚~~€~€}~~€~~€€~~~~€~~€€~}~€}€€~€~~~}€~~~€~€~~~€€~~€~~~€~€€‚~~€~€~€}€€~~€~~‚~~€~€~~~€~€~€€€€~~€}~~€~}€€~~€€~€~~~€~€~~~€~€€€‚~€}€}€€~€~~~~~~}€~€~~€‚~~~~~€~}€€}€~€€~€~€~~‚‚}€~€~€}€~~€~€~~€~€€€~€~€~€~€~~~€€~€~~€~~~~€€~€~~€~~€~~~~~€€}€}€~€}€~€~~€~~~€€~€~~€~€€~~€€€€€~€~~~~€€€€~~€~~€~€€~€}€~€~‚}~~€‚~€~€~€}‚€~~€€}€~€~€~€~€€~€~~~~~~~€}€€~€~€~~~€~~€~€~}€~~€~~€€€}€~~~€~€€~~~€~~€~~‚€~€~€~€€~€~~~‚~€~~€~€}€€~€~~€~€~€~~€~~€€€€}€}€~~~€€‚~}~~~€~€~~~~€~€~~~€~~€~~€€€~€€~€~~€~€~~~~~~~€€~€~~€~~€€€~€~~€~€€~€}€~€~€~€~€€€~€~~}~€~€~~‚€€~~~€~€~€€€€‚€~€~€}€€€~€~~€~~€~€~€~€~~~~€€~€~~€}€€~~€~~€}€€~€~€~€~~~€}€€~€~~‚}€~€~~€€~~€}~€~€}€~‚~‚}€}€~€~‚€~~€~€~€~‚€€€}€~~€~~€~~}~‚~~€~€€~€~~€~~€~~€€~€~~~~€}€~€~€}}€~~€~€€€~€~€~~€~~~~~€~€~€€~~~~~€~€}€€~€~~€~~€~€€€€~}~~€~€~~}€}€~~~~~€€~€~€~~~€~~~€€€€}€~~~~~€‚~€~~~~€€€~€}€~~~~€~€€~~~~}€~€~€€~€~~€~~€~€€€~€~€~~€~€€~~€~~~€~€€€~€~~~‚~€~€€~€~~~~~~€~€€~€~~€~~€~€€~€~~€~€€€‚~~€~€~€~€~~~~€~€}€~€€~€~~~€~~€€€~€~~~~€~€€€~€~~€~€~€~~€~~~~~€}€}€~}~€~€€~}€}~€~~€€~€~€}€~~~€}€~€~€~~€~~€€~€~~€~€€€~€}~~€~€~~€~~€}€€~€}~€~€€}€~~€}~€~€~€}€}€~~~€}€€~€}~~€~€~€‚‚~€~~~€~€~€~~~~€~‚€€~€~~€~€~€~€~€€€~€}~~€€~€~~€~€~€~€~~~€€~~}€€~€~~€~~~~~€~€~~~~€~€€€~€~~~~€~€€~€~€~~~~~€~€€~€€~~€~~~€~€€}€€~€~~€}€€€~~€~~~€~€€~€~~~€~~€€~~~€}€~~€€~€~€~~‚€~~€~€~€~€€~€~€}€~~€~~}~~€€€€~€~~}~€~€~~~€€€‚}~~}~€€~~€~€€~‚~€}€~~~€~~€€~€~€~€~~€~~€}€~~~€~~€€€~€~~€}~~~~~€}€€~~€€€~€~~~}€~€~€~€~€}€}~~€~~€~}~~~€}€}€~€~~~}€~}€~~~€€€}}€~}€~}€}€€€€~€~}€~€~€}€~€~€~~€}~€~~€}€€}€~€~€~~~€}~‚€€~€~~}€~€€~€~€~}~€€~€~€}~}~€~€}€~€~€€~~€}€~~}~~€~€~€~€€~€~~€~€€}~~€~€~€~€~€~€€~~~~€~~€€€~€~~}€€~€€}€~€~€~€~~€~€~€~~~~~~€~~€}€€€}€~€}€~~€~~~€~€~}€~€€€€~€~~€~€€€~~~€~€€€~~€~€}€~€~€€}€~€~€~~}~€~€~~}€~€~€€~}€}€€~~~€€€~€~~~€~~}€~€~€€}€~~~€}~~€~€~~€}€~€~€}€~€€~€~€~€€~~~~~‚€~€}€}~~€~€€~~~~~€~€€€~~~~~~€~~€~€~€~}€€~}€~~}€~€~€}€~€€~~€€~€~€~~€}€€~€~~~~€€€}€~~~~€€~€~~~~€~~€~}~~€~€€€~~~€~~€~€~€~~~~~}€~€~€}~~~€‚~€~€~€~€€~€~€~~~€~~€€~€~}€~~€~€~~~€~€€}€~€~~~€€€}€~~~€~€~~€~~€~€€€}~€~€~€}€~€~€~€€~€~~‚~€~~€~€~€~€~€~€~€~}~€~€~€‚~€}€~‚~~€~~‚€~€~~~~€}€~€~~€}€~~~€~€~€€~~~~€}~~€~€}~€}~~€~€€}€~€~~}~~€~€€€‚}€~~~~€~~€~~~€€~~€~€~}~~~€€€~~~~€~~~€~€~€‚€~~~€}~}€~~~}}~€€€~~}€~~€~‚€€~~€~€~~€~€~~~~~€~€€€€~~~€~€~€}€~‚€€~€~~€~€€~~~~€~~~€~~€€€€‚€}~€}€€~€~€€~€~€}~~}€~€~~~€~~€~€~€€€€~~€~€~€€~~€~€€€~~~~}~€€~~~€~€~~~€~€€~€€~~€€~€~~€€~€}€~~€~€~~~~~€‚~€~~~€~€€~€}~€€~~€~€~€~€}~}€~~‚~~€~€}~~€~€€~€€~~}€~€~~~‚~€~€~~€~~~~€~~€~€~}~€~€~€~€~~~€~€€~~~€}€~~~€€~€~~€~€~~€}€€~}€}€~~€~~~€€€~€~~}~~€~€~€~~~€~€~€€}€~€~€~~~€~€€€~~~~~~~}~€~}~€~€~€€}€~€~~}~~€~€€€~€~€~~~€~€~€~€€~€€~~~€~€€~€~~‚~~€~~€€~€~~~~€~€}€~€~€€~€€€}~~~€}€€€}~‚~~~€}€~€€€€~€}~~€}€}€€~€~€~€~~~~€€~€~‚~~€~~€~€€€~€~~}€~€~€€~€€~€}€‚~€~~}€~€~~~€}~~€€~€~€~~~€€~€€~€~~~‚€~€~}}~~~~~€}~~€~~}~€~~€€~€€~~~~€~~~~€~€~~~~~~~}€~€€~~€~€~~€~€€~~€~~€~‚€~‚~~~€}€~€}€}~‚€€€€~€~€~€~~€~€~~€~€~€~~}€€~~€}€~~€~€~€€}€~~€€~~~€}~€‚~€~~€~€€€}~€}€€~€~€~~€€€€~€}~€~~}‚€~~~€€~~€~~€}€‚~€~€}€~~€€~€€~~}€€~}€}~~€~~~~€~€~€€~€~€~€€~€~~~€~€~€~}~€~€€~~€~€~}€~~~~€~~€€~€~€~€~~€}€~~€~~~~€~€~~~€~~~€~€€~€~€~€~€~€~€~~~~€~€~~€~~~€}~€~€€~~€€}€~€~€~€€~€~€~~€~~€}~€~€~~~~€~~€~€~~~~~~~€€€~€~€~~~€}€~€€~~~~€~~€€~€}€~~~~€~€€~€~~€~~~‚}€}€€~~€~~€~~€~€~~~‚~€~€~€€€}~€~~€}}€~€~~~~€~€~~€~‚€€}€‚~~~€€€~€~€~€€~€~~€€~~€}~~}~~€~~€~~€~‚}~€}~€€~}~€}€€~€€~€}€€€€~}~~~~€~€€~~~€~~€€~~~€}€}€~€~€€~~~~~€~€~~~‚€~~~€~~€€€€}~€€~€€~~€~€‚~~~~€~€~€~~€~€}€~~~~€€~€€~~€~~€~~€~€€~€~€}~~€~~~~}~~€~€~}€~€€€€}€~~€~€~€~€€€~€~~€~‚~~~€~€~€~}}€~€€€~€€}€~€}~~~~€€~}~~€~~€~€€}~€€~~~€~~€€}€}€~}‚€~~€~€€~~€~€}€~€}€~€~€~€~€~~~~~€}€€€€€€~~~€~€~€~€~~~€~~~~€~~€~€~~€}€~€~}~€€€€~€~~€~€€~€~€~}}~€~€€}€~~€~~€€~}€~~~~€~€~€}‚~€~~~}~€~€~€~‚€~~‚~~€‚~€~€€~€~~‚~~~~€~€€~€~~€~€~€~€~~~€}~€~~€}€~€}€~~~€€~€~€~~€~€€€~~~~€~‚~€€~€~€}€~‚~~€~€}~~~~€}€}€~€~€}€~~~€~€}€~}€~~‚~}€~€~}€~~~~€~€}€€}~~‚~}€~~€€~~~€}€€~€~€€€~€~€}~€€€}~~€~~~}~~€~€€€~€~€~~€}€~~€~€€~€~}~€€€‚~~~~€~}€~€~€~€~~€~€~~~€~€~€}~€}€~€~€€€€~€~~€‚€€~~€~~~€€€~~€~}€~€~€€€‚~~€€~~€~€~~~~~€~~~€~€€~€~~~€~€}€~€€~€€~€~~~~€~€~~~€~~€€~€~~~€~}€~~~€~€~€~~€~€€~€~~€~~€}€~‚~€€€~€~~€€~€}~€~‚~€}~~€~€~€~~~€~‚‚}€€~€}€}€~€~€~~€€€~€}~~~~~~€~€~~~~€}€~€€~~~€~€~~~~€~€~€~€~€~€}~~€€~€€~€€~~€€}€~€~€€€€~~€~~~€~€€~€~~~~€~€~€~~~~~}~€€}€~€}~~~~}}€€}€~€~~€‚~€~€€€}~~€~~€€}~~~~€}€€€~}€~}~€~€~~€~~€}‚€~~€~€~~€€~€~€~~~€~}€~€€€~€~€€€~€}€~~~~~~€~€~}€~~€~€}€}€€~}€~~€~~€€~~~~~€~‚~~~€~€€~€~~~€~€~}€~€~~}~~~~~~~€€€~€~€~~~€€€~~~€~~~~~€}€~€€~}€€~€€~€~~~~€€~}€~~~}€~~~~€€~~~~€}~€~~€~‚€~~€}€~€~€~€~~€~~~€}~€€~€~~€~€€€~~€~€}€€~€~€~€~~~~€~€~}€€€~€}~~€}~~~~~‚~€~~€~~€€€~€~~€€}€~€~€€}€~~~€€~~€~~~€~€€~~€~~€~€~€~~€~€€~~~}€}€‚~€€~€~€~‚€~~~~€€~~€}~~€~€~€~€~~€~€~€~~~€}€~€~€}€€~€~€~€~€€}€}~€}€~€€€~}~€~€~€~€~€~€~€~~~~€€€€€~€~}€~~€€€~~~€~€€€€}~~€~~€~€~~~~~~€}€€}€~€~~~~€}€~~~€~~€~~}€}€€€€€~~~€}~~~‚~~€‚}€~~€~~€~~€~€~€}€~€~€~€~~~~€~€~~~€~‚~€€~~~~~~€€~~€~~€~€~~~~~~~€~€€‚~~€}~€~€€~}~}~~‚~~~€~€‚~~~~€~€~€€~€}~€~€€€~~€~~€€~~€~~~‚€}€~~€}€~~~€}€~€}€~~}€€~€~€~€}€~€~€~~~‚~~€~€~~€~€~~~‚€~€~€}€~€€~~~€~€~€~€~€~~~€~€€~€~€~~€~€€€€~~}€~~€€€~~~~€€~€~€}€€}€~€~€€~€~~~~€}€~~~€~€€~€~€€~~~€€€~€~~€~‚€~~~€~€€~€~~~€~€~€~~€~~€~€~€~€~€~€}~€~€~~‚€~~€~€~€~~~€€~~~~~~~~~~~‚~€}€€~€~€~~~~€}€€~€~€€~€~€~~€~~€€€~€}~€}€~€~~€~€€~€~~~€~~€~~~~~~~€~€~~€~~€€€}€~~€~‚€~€~~€~‚~€€€~€~€~~~~€€~€~~~€€€€~~€~~€}~€}€€~€~€}€~~~€~€}€€€~€~€~~€~€€~€}€€~~€€~~€~€€~€~€~~€~€€~€~~€~}€€~€~~~€€~~~~~~~€~€~~€}~~}~~~€~~€€~}€~~~€~€~€}~~€~€~€~€~~}~~€~€€~€~~‚~~~~~€~€€~~€}~€~€€€~~~~~~‚}€~€~€~~€~€€€~}€~€~}~~€~€€~}€~€~€€~€}~€~}}€~~€~€~}€~€€€~€~~~~€‚~€}‚~€€€~€~~~€~~€}€~‚€~~~~€}€~~€~}€~€€~€~~€~~~~€}€€}~€~~~}~€~€€~€~~~~}€~€~€~~€~~~}~€~€~€~€~~‚€€€~~~~~€€€}€~~~€‚~~€~€€~€~~~€}~€~~€~~‚€€€~~~€~€~€~~~~€~€~€}€~€~~€€~€~€~€€€~‚~€}€}€~€~~~€}€~~€~€€~€~}‚~~€~€~~~€€‚~€~~€~€€~~~~€~€€~€€}€}€~€~€~}€}€€~~~€}€~~~€€~~€}~~€}€~~~€‚~€~€~€~~~€~€~~~€}€€€€~€}~€~€€~~€~~~€€€~€~~€~~€€€~€€~~€~€~~~€}€~~€~€~€€€~~~~€~~~€}€~€€}€~‚€€~‚~€~€€~€~€~€}€~€‚~~~~€~~}€}~~€}€~~~€~‚~~€~~€~~~~€€€€~~~~€€~€~~~€~€~~€~€~~~~€‚~€~€‚~€~€~~~~€~€~}€~€~€€~~€~~€~‚€~€}~~€~€~~€~€~€~~€~€€~€~~~€}~€€~}€~~}€€€€€}€~}€€~€~}€€~€~}‚‚~~~}€}€~€~~~€~€€€~€~~€~~€~~~~~€€~}€~€~€~€€~}~~€€‚€~€~~€~€€~~~€}€~€~~~€~€€€}~~€~€€~}€~~€}€€~€~€}~~€}~€~€~~€~~€}~€~€€€~}~~€~~€€~€~~~€€}€~€~€~€~€~~~€€~~~€~€~€~~~€~€~€}~~€~~~~‚~~}€}~€€~€~€~~~€€}€}€~~€~€}~~€~€~~~€~€€€€~€~~~€€‚~~~~€~€€~€~~~€€€~~~~€€~~€~~€}€~€€~€~~€~~€}€~~‚€~~}~€€~~€~~~~€‚~€~~~~€~€~~€€€~€~~€~€~~}€~‚€~~~€~€€~~~€~€€~€}~~}€~€€€€~~€~~€€‚~€€}€€~€€~€~~€~€€€~€~~~€€~~€~~€~€€~€~€~~€}~€€}€~€}€€~€~~~€~~~€~€€~~~€}€~~~€~€~~~€~~}~~~~~~€€~€~~€~~€€~€~~€~€}~}€‚€€€~€~~~€~€€~~~~~~€€~~~~~‚€€~~~~€~€~€~~~~€~€~}€~€€~~€~€}~€~€€~€~€~~€€~~~€~€~€€}€~~~€~€~€~~~~€~~€~~}~~€~€€~€~~€~€~€~€~~€}~~}€~~€~~~~~‚€€~~€~~€~€}~~€€~€}€€~~~€}€~€€~€}~~€~€~€~€~€~~€~~~€~~~€~€~€}€~}€~€~€}~€~€€~€~~~~€~~~~€€~€~~~€}€}‚~~‚~€~~~€~~€~€€~~~€~‚€~~€~€~€€~}€~€€€}€~~~€€€€~~€~€~€~~€~€€€~~}€~€~€~€~€€~~~~€~€~€~~~~€~~€~€€€~€~~~€~€€~~€~€€€€€}~€}€€~~~~€€~}€~~€~€€~}~~~€~‚€€~€~~€~€~€~~}€~€~€~~~~€€~€~~€~~~€}~~€€~~€~~~€~~~€~~~€~€~€~~€~€€€€}~€~€€~€~~€~€€~~€~€~€€€€~~~~€}€€€~~~~€€~€~~~€€‚~€~~€~€€~€~~€~€~€}~€€~€}~~€€~€~‚~~~~€}€~~€~~€~€~€~€€~€~~}~€€€~€~~€}~€€€~€~~~€€~€~~~€~~€~€~~‚€~~‚€~€}~~~€~€~~~€~~€~€}€~€€€~~~~~€~~€~~€~€~€~~~~~€~~€~€~€€~€~€~€€~€}€~~~€~~€~~€~~~‚}€~€~€€~€€~€~~~€€‚~€}}‚€~~€€~~~~€}€~‚€~€~~€~€~€~~€~€€€~€~~~~~~~‚~~~€~€}€~~}€~€}€€~}€~€}~€~€€~€}~€~~€‚~€~~~€~}€}~€~€~€~~€€~~~~€€~~~~€€~~~~~€~€‚~€€~~€}€~~~~€€€~~}~‚~~}~‚~€~~~~€~}€}€~€~~€~‚~~€~€~€~~€}€~€€}‚€~}€~~€~~€~~~~}‚‚~€}€~‚€€~€~~~€~€~€}€~€~~~~€~€}€~€~~}~~€}€€~€~€~€~€~}€~€~€~~~~€~€~€~~~€~~€~~‚€€~~~€}~€~€~€€~€~~€~~~~€}~~~€~~€€€~~~€€~€€~~}€~€}~}}€~~~‚~€}€~~€~€‚€€~}€€~€€}~€~€€~€~~~~~€~~~~~€~€~~~€~€€~}€}€}€€~€€~~€€~€~~~€}~~~~~€‚~€~~}~~€}~€~€€~~~€~€~~~€~€~~€~~€~~~€~€€€~€}€€~~€~~~€~€}~~€}‚}~~€~€~€}~~~€~~€€~€€~€~€}€~~}~€~€~~~~~€~€~}~€}~€~€€€}€}€~~~~€€~€}~~}}€~}€€~€~~~~€~€€~€~~€~~~~~€~€€~€}€~€}~€~€€~€~~~~~€~€€€}~}~~~~€~€€€€~€~~~}€~€~€~€~~~~~€€~€~~~€~}€~~€}~~~€~€~‚€~€€~€~~~€~€~€~€~€~~~‚~~€~~€~€€€‚~€~€~€}€€~€~~€~€~~€~€€€€~~~€~~€‚~€~€€~~€~~€}€€}}€~~‚€~€~~~~~~€~€~~~}€€}~~€€~€~€~€~€~€€~€~~€~€~€~€~~~~€~~~€~€~€~€~~€~~€~€}€~€~€~€~€~~~€~€~~€~~€€€~~‚~€~€~€~€~€~~~~€~€}€~~~€~€€~~€~~€~€~€~€~‚€€~~€~€~‚€~€~~~~~€~~€~~~€~€}€~€€}€~€~€~~€€€€€~~€~~€~‚~~€~~‚}€~~~€~~€~€~€€~~~~€~€€€‚€~€~~}€~~~~~~€~~~~€~€~€~€~}€~€€~€~~~€€€€~€}€}‚~~~€}~~€~~~~€~€~~€€}~~~€~€€€~}€~‚€~~~~€}~€€€~€}~€~€€}€~}€~€~~}€€~}~~~~}€~€€~~~~€~~€~€€}~€~€~}€€€~€~€~~€~€~€€~€~€~~}€~€~~~€~}€~€~€€€€~€~~‚~~~€}€€~~~~~~~~€~€€~€~~~}~~€€~€~}~€~€}€€~€~€~~€~~€~}€~~}€€~}€}€€€~€~€}€€~€~€~€€€}~€~~€€~~~~~€~€~€€‚~~~€}€~~€~€~~€}~€~~€~€~€~~~~€~~~~€}€€~}€~€~~~~€~€€~~~~~€}~€~~€€~€~€~€€~€€~~€~€~~€~€~€€~~~~~€}~~~}€€€~€~€~€€~~}~}€~~€~~~~~~€€~€~~~~€€~€~€~}€~~€€€}}~€~~~€~~€€}~~€~€€€~€~€€~~€~€~~€€€~€}~~€~‚€~€~€~€€~~~€~~€€~€~€~€~~€€~~€~~~€~€~~€~~€~~€€€€~€€~€~€~~~~‚~€€€~€~~~}~€‚}€~~€}~€~€€€~€~€~~}~~€~€€€~~€~~~€€}~‚}€~€~€~~~€~~€€€€~€}€~~‚}~€~€~~€~~}~€~€~~€}€~~}~‚€€~€~~~~‚~€~€€€~€}~~~€~€~€}€€~€€~€€~€~~€€€€~€~~€~~‚€}€~‚€~€~~}~€€~€€~€~}€~€~~€~€~€~}‚‚~~€~~~€€}€}~€~€}€€~€~~€}€~~~~€~~€~~~~‚~~~€~€~€€~€~~~€~~€€~}€~€~~~€~€~~~~}~~~€€~€€€€~€~€~€~€€~€€~€}€~}€}€~€~~€~~~€}~€€€€~€€}€~~€~~~€~~~€~~~€}~~~€~€~€~€€~}€~~€~~~€~~~€€~~~€~€€‚~~~€}~~€~~€~€~€~€~~€~€~€}€~~€~~~~~~€}€~~€}€€~€~~€~€€~€~}€~~~~~~~~€}~€~€€~€€~€€~~~€~€~~€~~~}~€~~~€}€€~€~€~€€~€€~€~~€~€€~€~~€~~~~€~€~~€~~}€€~€~€€~€€~~€~~€€~~~~€~~~}~€~}€~~€‚€~€€~€~€€}€~~~~€€€~~€€~€~~}€€~€~~~~~€~€€~€~€€}~~~~€€€~€~€~~€~€€€~€~~}€~~€}€~€~~~~€~~€€€}€~~}~~€~€€~‚~€~€~}€~~€~}~~€~~€~€€~€~~~€~~~€}€}€€~€~~~~~€~€~€~€~}~€~~€~}~€€~~~€}‚€~€~}~€~€€~€}~~~~€}€€~~~€~€~€~€~€~€}~~~€~€~~€}~~€€€~~€~€~€}~€€~€€}€}€~~€~~€€~€~~~~‚~}€~~~€~‚€€€~~€~€€~~€~€€~€~~~}€~€~€€~~€€~€~~~€~€€€€€~€~}€€~€}€~€€~€~~€~€~~~‚€~~€€}~~€~€}€~~€~€~~~€~€~~~€}~~~€~€~€€~€~~€~€€~€~€}€~€~€~~‚€€~~~€}€~~€~€~€~€~~€~€€€}€~€~€}€~~~~€€€€~€~~~€}€‚~~€~~~€~}}€€€€}€€~€~€}€~~€~€€~~€~}~‚~€~€~€€}€€~~~€~€~€€}€~€~€}~€€€€~~~~~€~€}€~€€}}€~~€€€~€~€~~~€‚~~€~€€~€~}~€~€€~€~€€~~€~€~€€€~€~~~~‚~€~€~€~~€~~€}€€}€~~~€}‚€€€}€~~€~~~~~€€€~~~€~€}~~€}€~~€~€€~€~~~~~€~€~€€~€}~~~€}€}€~€}€~€~~€~~€€~~~~€}€}€€€}€~~~€~€}€~€~€}€~€}~€€€~~~}~€~€}€€€€‚~€~€~~€}€€}€~~€€~~~€~~€~~‚}€€~€~€~~€~€~€~}€~~€~~~€}€~~~~~‚€€}~€~€~~€~€~€€€€~€~€~~€~~‚~~~~€€~~€}€‚}€~€}€€~~€~~€~€€~€~€~~~€~€~€~~€~~€~~€~€€}~~€~€~}~~€~€€€€€‚~€~€}€~~~~€~€~~€}€~~€~€}€€~}~€~€€~€}~€~~~~€~€~€~~~~~€€~€~}€€~€~€}~€~€~~~€~~~~~€~€~~~€~€~€}€~€}€€~€€~~€}€€€~~€‚~€~€~€€~€~€~~~~€~€~€}€}€~}~~€€~}€~€~~€~€~‚€€~€}~~~~‚€}€€~€€~€~~}~€~€~~~~€~€€~~~~€~€~€€~€~~€}€~~€}€~~~~~€~€~€€}~~~€}~€~€~~~€~~€~€€~~~€}€~~€€~€€€~~~~€~~~€~€~~~~€~€€~€~~€~€~}€€~€€~€~~~€~~€~~€~~€~~~€€~€~€~~€€~~€~€~€~~~~€}€~~}~~€~~€~€€€‚~~€~€~€€~~€~€~€}~~~~€~~‚~~~€~€~~€~‚€€€~~€€~€}€}€~€~~€€~}~~€~‚~€~‚~€€~€~~~€~€~€~€~€€}€€~€~€}€~~€}~~~~€~€~~€~€€~€~€~€~€~~€€€~€~~~€€~~€~€~~€~‚}~€~€}‚€~~€€€~€~~~~~€~€~€€~~~€~~€€€~€}€~€~‚€~~~€€‚~~€~~~€~~~}~}~~~‚€~~~€€~~€~~~~€€~€~€~~}~€}€~€€}€~~€~€€€€€€}€~€~~€}€~~€~}€~€~€}€€~€~~€~€~€€}€~‚€~~€}€€}€~€~~€~€~~€~€€~~~}€~€€€€‚~~‚~~€~€~€~~~}~€€~€€~‚€~€~~}€~€€~~~~€~€~‚~€‚€~€}~~~€€~€€~€~€~~€~~~€€~~~€~~€€€€~~~~~€~€€~€€~€~€~€€~€~~€~~€€~~€‚~~}€~}€€~€~€~~€~€€~€}~€~~~~€~~€€~~€~~€~€~~€€€€~€~€~€~€€~~€}€~~~~~€~~~€~€~~€~~€~~€€€~~€~€~€~€~~~€~€~~~~€~€€~€~€~€~€~€}€€€€€~€~€~~~€~€€}€~~€~€~~€€€~€€~€~€‚}€~€~~€~€}~€~~}~~~€~~~€~~€€~€~€~€€}€~€~~~€€~~~€~~~€~€~€~~~~€~€€~€}€~€€~€~€~€~€€€€~~~€~~~~€€€~€~~~~€~€}€€~€}€~€~€}~€}~€€€~€}~~€~~‚€~€~~€~€~~€~€~€€~€~€~~~€}€€‚~~€~~}€~‚€~€~~~~€~€~€~€~€€~~€~€~€~€€~~€~}~€~€}€~€€~€~€~~~€~~€}€~€~~€€~~€~€€€€}€~~~~€}€~€~}€~~}€~~€~~€~~}~~~€~€~~€~}~€~€}}~~€~~~~€~}‚€~~~~~€~€€€~€~~~€~€~€~~€€~€}~~~~€~~~~~€~€~~~}€€~~€~€~€€~€~€€~€€€€~€~~~~~€~€~‚‚~~€}~~€~€€~~€}€€~€~€~€~~~~~~€~}}~~€~€~~€~€€€‚‚~}€€}€€}€~€~€€~€~~~~€~€~~~~€~€~~~€~€€€€}€~€€~€}€~€~€€~~€~~€~~~~~€€~~~}}€€€~€}€~€€~€~€€~~€€~~€~~~}‚~~~€}€€~€~~€~€€€~€~€}~~~€€~~€~~~€~‚~~€~€~€~~~~~€~‚€€~€~€~~~~~€€€~}~~~~~€~€~‚~~~€~€€~€€}~}€€~€€~€~€~€~~~€~€~€~€~€~~~€~~€€~~€~~~~~€€~}€~~~€}€~€~€~€€~}€~~€~€€€~€}‚€~~€~€~~€~~~~}€€~€~€€~€€~~~€}€~€€~€}€€~~~€}€~€}€~~€~€‚}€~}€~€€~~~€~~€€~€~€~~~€~‚€€‚‚~~€~€~€€~~€}€€~€~~€~€€~~~€~~€~€~‚€€~€~~~}€~~€€~€~€~~€}~€€~~}~€€}~€€~~~~€~~€€~}€~€~€~~~~€€~~~~~~€~€~€~~€~}~~€}€~}€~€~~~€~€€~~~}~}€€~~€€€~~}~€~~€}~~€~€~€~€~€~~}€~~~€€‚€~~~€}‚~~€~€~€~~~€~~€€~€~~€€}€~€~€€~}€}€~€€}~~€~~~~€~€~~~€~€~€~€}€~~~€~€~€~~€~}~€~€~~~€~~~€~€~€~€}€~€~}€}€€~€~~€~€~~€~€€€~€}€~€€}~€~~€~€€~€}~€~~~~~€~~~~~~€~€‚}€~€}€€~€~€~~~€€~€~~~~~}~€~€}~€~€~€~€}€€}~~~€~€€€€~}€~~~~~~€~€~~~~€~€€~€€~€~}~~~}€€€€~€~~~~€~~€~€€€~€~€~}~€~€~€€}€‚~€~~€€~€~~€‚}€~€~}~~}~€€~€~~€}}€~~€€~€~~~~€~€}€~€~€~}€~~~€}€~€~‚~~€~€€€~~~€~€~€~€~}€~€~~~~€~}€~~~}€}~€€~€~~€~€~€~€~€~€~~~~€€€}€~~~~~~€~~~€~€~€€~€}€~€~~~~~~€~~~€~€‚~}~€€€€~€~~€~€}€}€}€}€~€~~~}€~€~~~‚€~~€}€~~~€~€€€€~€~€~€€~€~€~€€€~€~~~~€}~~‚€€‚}€€~€~~€~~€€}~€~€~€~~€~~€~~~€~~~~€~€€}€~~~€~€~€}€~€~~~~€€~~~~€~~~~~~~€~‚€‚~€€~~~€~~~€€~€}~~€}€€~€}€~~€~~€~€€‚~€~€~€}‚~~€€~€~€~~€~‚~~~€}€~€€~~~~€~~‚€€~~~~~}€}€€~€~€~~~~~~€}€€}€~~~}€~€€€}~}~}~~~€~€€€~€~~~~€}€~€~€€~€~€~€~~~€€~~~~~~€~€€~€~€~}~€€~€€~€~€€~€~€~~~€~€€€‚~€~}~~€~~€~~€€~€~~}~~€€}€}~€~~€~~€~€~~~~€}€€~€~~~~€~€€}€€~€~€~€~~}~€~€~~~‚€‚~~~}€€€~€~€~~~~€}€~€~~€~}€}€€~~‚~~€~€~~€€~}~~~~€~€~€~~€~~~€~€€~}€}€€~€~~€~€~€~€~€~€~~‚~}~~~~€}€€~€~‚~€}~€€}€~€}€€~~€~~~€~€~~€~€~€~€€‚}€}~€}€~€€€~~€}€~€~~€~~~€~~€~~~€~~€€~~€~€~€~€~~€~€€~€~€}€~€~~~~€€~€~~€~~€}€€~€€}~€~~€~€€‚~~}~~€~~€~€~~~~€~€~€~€~€}€~€~~€~€~€~€}~~€‚~€~€~€~~}~€€~€~€~€€}€~~}€~€€€~}€~~~~~€~~€}~~€~~€}€€~€~€~€€~~~€€~€~~~~~€}€€~€}~~~~~€}€€~€~€~~€~~€€€€~~~‚~~~€‚~€€~€~€~~~~€~‚~€}€~}~~~}~€~€~~~~€~€}€€~}}~~~€~€~}€~~~~~€~€€~€~~€€~~€~€‚}€}€€€~€~~}€~~€~€€~€~~~€~}€~€€€~~€~~€~}€€~€~~€~~€}~}~~}€~€~~€~€~~€~€~€}€}€€}‚~€}~~~€~~€~~~€~€~€~~€€€~}~~€~€~~€~€€€~€~~~~€~€~~~~~€~€~€~~€€€~~~€~€€}€}€~€€}}~€~€€~}~~~€~~€€€€~€€~~€€~€~€~~€€€~€~~~€}}~~~~€~~~~€~€€€~~€~€~€~~€€€}€}~~}~~€}~~€€~~}€~~€€~€}€~€~€}€€~€~~~~~€~~€~~~~€~€€€€~€~€€}~~€~€€€~~€~~€~~~€}~€}~€~€€€€}~~€~~~~~€~~~€~}~€~€€~~~~~~€€~€~€~~~~€~€€~~€~~~}€~~€~€~~~~€‚€€~€}‚€~~}~~€~€€€€~€~€~~~€~€}€‚~€~€}€~~~€~€€€~€~~~~‚~€~€€~~€~~}€€}€€~€~€~~€~~€~~€~~~~~~€~€€€~}€~~~~€~€~~€€~€~€~~€~‚€~~~}~€}~€€~€}~€€~€€}€~€~€~€~~~~€~€~€€~~€€~€€~~€€€~€}€~€~€~€}€~€~~~~~~~~~~€~€~€~~€€~‚~€~~€~€~€€~€~~€~€~~~~€~~€‚~€}€~€~~€€~~~€~€€~€~~€€~~~}€~€~~€~€}~€~€€€€€~€}}€~€}~~~€~€~€~~~€~€~€~€€~€€~~~€~€€‚~~€}}€~~~€€€~€~~€~~~€~}€~~€}€~€€}€}}~~~~~€~€~€}~€~€~€€‚~€~~€~€€~~€~€€~}~€~~‚}~~€~~~€~€€~}~€}€~€~€~€€€}~€€~~‚~‚~~€‚~€~~~€~€€}€€~}€~‚€€~€~€€€‚~€~~€€~€~€‚}€}€~€~~~~€€~~~€~€€€}}~€}~~€~€~€€€~~~~~}€~€~~‚}}}€~€~~}~€~}€~€~€~~€}~€~}~€~‚€‚~~€~€€€~~‚€~€~€}€€}€€€~€~~~€~€€~€}~~}€~}€~€€}~~€~€~€~€€}€~~~~€€€~‚€~‚~}~€~€€~~€~€~€~}€~€~~~~€~~€~€~~~~~€~~~€~€~~€~€}€€}~€~€~€~~~~€~~~€€‚~~€€~~~~‚€€~€~€}~€~~€}€~~~~~€~€€‚~~€}€~~~€€€€}€~€~€}€~}€~~€~€}~~~~~~€€~€~~~€~€€€~€~~€}~~€€~€~~~}~~‚€}~€~€~€‚~€€€}~€}~€~~~€~€€~€}~€}~}~~€~~€~€€€~€}€~~‚€~~€€~€~€~~~€~~€~€}€~€€~~~€}€€€}€€}~~€€~€~€€~€~~}~~€~~~€~~~€~€€~€~€~}€~~€€~€~€~~~~€~~€~€€~€€~~~~€~€€~€~€~~~~€~€~~~}€~~€~€~~€€}€~~~€~€€~~~€‚~}€~€~~€~~~~€~~€~€~€~~~}€~€€~€~~~~~€~€€€~€}~~~€~€€}€}€€~~€~~}€~€‚€€~€~€~€~€~~€€~~€€}€~€€~€€}€~€~}€}€~~~~~€€‚}€~€€~}~~€~€~~€€~}~€~~~~~€€~}~€€~}€~~€€‚~€~~~€~~~€~~~€~€~~€~~~€~~€~€~~€~€~€}€~€~~€~~€€~€~~~~€~€}}~~~€~~€€~€~~~€}€~~€€€~€~€~€~€~€~~€~~~€~€}€~~€~~€}~~€€~}€~~~€€~~~€}€~€~€}€~~€~€~€€€~€}~‚~~‚‚~~€€~€~~~~~€~€}€~€}€~€~€€€~€~~€~~~€~€~‚~€~}€~€€~€€~€€~€€}€~€~~€}~€€€~€~€~€~~~~€~~€~~€~€~€~€~€}€}€~€~€~€€€~€~~~€€~~~€~€~~~~}€~€€~€~€€~€~~€~€€€~€~~~~‚~€~€~~~€~€~€~€}€~€€~€~~€}~‚€€~€~~~~€~€~€~€~€~~€}€}€~€~€}€~~€~€~€}}€~‚~~€~~~}€~€€€~€€~€~~€~~~~~€~€€€~~€~~~~~€~~€}€~}€~€€~€€~€~~€~~€~€€€~€~~~€~€~€€~€€~€€~€~~€~€}€}€~~~€}~€}€~~€~€}~€~€€~€€~~€~~~€~~€~~~~~‚~~~€~€€~€~~€~~€}€~€~€€~~}€}€~€~€~~~~~€~~€~€‚€€€~€~€€~€}€€~€}€€~~€~~~~€€~~~‚~~~€~}€~~€~€}}€~€~~~€€~€~~~€~€~~‚~~€~€~~~€~~€€‚~~~~€}€€~€~€~~~€}‚‚}€‚~€~€~~~~€~€~€~€€~}€€~€€~}}~~€~~~~€}€~€€~€~~€~€€}~~€~€~~~€~€€€~€~~~€~€‚~~~~€}€~~~~}€€~€~~€~€~‚~€€‚~€~~~~~~€}€~€~~€~€~€~€~~~€~€~€~€€~}€~}}€~€}€~€€~‚~~~€~€€‚~€~€~}‚~€~€€€€~~~~~}€~€~€€}€~}~~€~€€}€~~~~~€}€€~~€~~€~€~~€~€~~~~€~€€‚~€~€~~€~€~€~€~~~~€~€€~€}€~€~}€~~~~€~~€~~~‚}~€~€~€€~€}~~}€~€€}€~€~~€~~~€~~€€~~~‚~~€~~€€~€~€~~€~€~€€~~€}~€~}~~€€~~‚~€~€~}~€€~~€~~€~~€~~~~€~~~~€~€~€€~€~~€~~~~€~~€€€~}€~~€~€€~~€~€}~€~~~€~€€~~~~~€~€~€}€€€€~~€~~€}€~€~~€~~~~}€~€~€~~€~}€}€~€~}€~}€~€}‚€‚~~€~€~€~~~€~€~~}€}~}€~~€€~€~€~€~~‚€~~~~~~~~~€~€~€}€€~€‚}€€~€€}~~€~€~€}€~€€~~‚€€~~~€~~~}~€€~€}€€}~€~€~~€~~€}€~}€}~~€~€~~~~~‚€€~€~€~€~€~~€~€~€€~}€~€~~}€~}~€~€~€€}€~€~€~€€~~€~~€€~€~~~~€~€€€~€~~~~~€€~~€~€~€~~~~€€}€~~€}~€}€~€€~€}€~~€~€~€~€~€~€€~~€€~€~}€‚~~€€~~€€‚~~€~~~~€€}€~€~~€€~~~€~€€€~€~~€}€~€~€~€€~€~~~~€~€~~€~€~~~}~€€~~~€}€}€~€€~€€€~€~~~~~~€~~~}~€}€~€~€~~~€~€~~€€~€}€~~~~~€~~€~~}€~€}€€~€~€~€€}€€~€€}€~‚€~€~€~~~€~€~}~~‚~€~~€~€~€€~~~~€~~€~€~~~~€~€~~~~€~~‚€~~€~€~€€~€€~~€~~€~~€~€~~~}~€€€~€€~€~€~€~€€~€~€€~€~~€€~~}~€~~~~}~€~€~~~€}€€€€~€€~€}€}€~~€~€€~€~~€~€€}~~€‚~€~~€~}€~€€~€€~€~€}~~~€€€~€~~~€}~~~€~€~€~~~~€~~€€€€~€~€~€}€~‚~€~€~€~~}€‚}~}€~‚€~€~~~~~€~€~~€~~~€~€€~€~€~€}€€~~€~€~€€}€~~~~~€~€€~€~~~~~€~€€€~€~}~€~}€€}€€}~~~~}€}€€€~€~~~~€~€‚~~€~€~~€}€~~€€~€}}~~€~€€€~~~‚~~€}€€€~€~~€€}€~€}€}€~€~}€~€~~~}~~~€}€~€€€~€}~~€~€~€~€€~€}€€~€~~~€~‚~€~~~}~€~}€€€€€~~~~€~€€~€~€~€~~~~~~~€~~€~€~~~€~}€€~€~€~€~€€}€}€~~~€~€~~€~€~‚€~~‚~~~€~€~}€~‚€~€~€~€~€~~~~€~€~~~~€~~€}€~~~€~€~~€€€~€~€}€~}~‚~~€~€~~}€~€€~€~€~€~€€~~}~€€~~€~~€}€~€~€~~‚€~~~~€~~}€~€~€~€~€~}€€€~€~}~~}~~€€€~€~~~~€~€€~€~€~€}€}€~~€~€€€~}~~}~~€€~€~~~~~~€~~€~€~~~€~~€€~€~€~€~~~~~€~€}~~~~~~~€€~‚€~€~~~~€~~€~€~~~~~~€~~~~~€€}€~~€~€~~~~~€~~€~~€~~~~~~€~~€€}€~€~€}€~€~€~~€~~~~~€‚~~€€~~€~~€~~€€~€~€~}~€~€€~~~€€}~~€‚~€~€€~~€~~~~~~€~~~€}~€~€€€~~}}~~€}€~€}~~~~~~~€~~~€~~}€~€€€~~€€~€€~€~€€}€€~€~~€~~€~€~~~~‚~€}€~}~€~€~€€~€€~€€~€~€~~~~€~€~}~~~€~€~~}€€€~~€~€€}€~€~€~~€~}€~€~~~~€~€~~~€~~€€~€~}€€~€~€~€~~€~~€~€€}~‚~~€~€~~€~~€€€~€~~€€}€~~~€~€~~€~~~€}}€}€~~€~}€~€}€~€€~~}€€€~~€~~~€~~€~€~~€~€~~€~€€~~€~€}€~~€€€~€~}€}~€~€~€~€~~~~€~€€€€~€~€~~~~~~€~€~~~~~€~€~€}€€€€~€~€~~‚€€€€~€}€~~}€€~~~€€€~~€~~}€}€~€~€€~€€~€~~~€~€€‚~€~~~‚~~€~€~~€~~}~€~€~€‚~€~~~~~}€~‚€€~€}~~‚~€~€€~~€~~~€~€~~€}€~~€~~€~‚€€~€~~~~€~€€€~€~~~~}€€}€~€€~~~€~~~~~€€~~~}~€}€€€€~~~€~€}€€~~€~€~~}€~€~€€~€~}~~~€~~€€€~~~~€~~€€}€~€~€€~€}~~€~}€€~~‚~€~~}~€€~}€~~€~€~€~€~€~€€}~€~€~~~‚~€~€~}~€~}~€}€~~€~}€~~~€~€~€€~~€‚~~€~€~}€~€€€~~€~€~€~€~€~~€€~~€~~~€~~€€€~~€€}€~~€~}~€~~€}€~~}‚~€~€~~€}~€~€~€~€€~}~€~€€€~€~~€~€~~~€€~~€~~~€~€~~€~}€€~€€€~~€~€€~€~€~€~~~‚~~~€~€~€~~~€~~€~€}€}€€~€€~€~~€~€€€~~~‚~~~~€~€~€~~~€}€}€€~€~€}€~~~€~~€€€€€~}‚~~~€€~€~~~~€€~€€~€~€~€~~€~€~~€~‚€~€~€€~€}~~}€~€~€~~€~€~€~€€€€€~€~~~~~€~~~~~~€~~€€~€~~€~~€~€~€~~~€}€~€€€~~€~~~€~~€~€~€~€~}~~€~€€~€~€~~€~€€}€€~€~~~~€~€~~~€~~}~~€~€€€~€~}~~~€}€~€~~€}€~~€~€~€~}~~€~€~€}~€}€~€~~~€}~~~€~€~€~‚€~€~~€}~~€~€‚~~~~€}€~}€€~€€~€~€~~~~~€~}~~~~€‚~€~~€~~€€€€€~}€~€}€€}€~}€€~}~~~~€~~€~~~€~€~~€~~€~~€~€€~€€~€~~€€~€~€~~~~€~€~€~~~~€€€~€~€~€~€~~~€~€~~~€~~~~€€~€~~€}~€€~}€}€~€~€~~€~€~~€~~~€~€~~~}€~~€}~€~~€}€~}}€~~~€~€€€~€~€~~€~~~€~€~~~}€~€}~€€~~~€~~~~~~€~€~€€~}~~~€€‚~€~€~}~~€~€~~€~€~~}€}~~€~€~€~~€~€~€€€~€€}€~~~~€~€€~€~€~~~€€~€~€~€}€~€~~~€~€€~€~~~~~€~€€€~~~~~€~€€~€€~€€€~€~~}€~€€~~€~~~~€~€€~~€~~~‚~}€~~€~€~~~€~€€€~~~~~€~€~€~~~€~€~€€~€~€€~~€~~€~€€€~~}~€}€€~€~~~€~}€€~~€~€}€~~€~~~~~€~~~€}~€€~~~€~€~€}~~€‚~€~€~~}~€~‚~~~~~€~€€€~~€~€}~~€~~}~€€~~€~€~€~~€~€€€€€~€€~€~€~‚€}€~~~~~€~€~€€}€~€~€~~€~€~€~}€~~}~~~€~~~~~€~€~€~€~€€}~€~~€~€€~~~€~€~~~~€€~}€~~€~~‚€€~~€}€€}€~€~~€~€€€€€~€~~€~~~‚€~~~€~€~~~€}€€~€€~€~€}€~€~€~€€€}~~~~€}~€~€~~~}€~€~€~~€}€~~€~€‚€€~€~€}€~~~~€€~€~€~€~€}€~€~€}€~€~€~~~~~~}€€~~~~€}€~€~€€~€~€}€~~}€~€€~}€~~€~~€~€~€€€~~~~€}€€~}€~€~€~~~}€~€~~€~~~~~€~€~‚€€~€~€~~~~€~€~€~‚€~~~€~€~‚~~~€~~€~€‚~€€~€€}€~~~€~}€~}€~~‚}}€€€~~~€~€~€~~€~€~€~~~~~~€~€~}}€~~€~}~€~€~€€~€~€~€~€~~~€~€~€~€~}€~~~~€~€~~€~€€€€~}~€~€}€€~~€~€~€~€~~~€€~}~~€~€~€~~€€~}~€~€€~€~~~€€€~€~~€~€~‚~~~€}~~€~€~~€€~~~~€~}€~~~~€}€~~~}~€~~~€€€~€}€}€}€~~€~€~~~€~~~€~€~~€~€~€~~€~€€~€~~€~€~}~€~~€~~~€~~~~€‚~~€~~€~~€€}€~€~€~~€~€€€~€~~}~~~€€}€~€~~~~~€‚}€€€~~~€~€€€~€~€~~}€~€~€€}€~€~~}€~€}€€~€~~}~~€~€€~€}~€}€~}}€€}€€~€~~~~~€~€€~€€}€~~}~€€€}€}~€€~€€~€}€}€~€~€~€€€~€~~~~€~€€€~€~~~~}€}€~}~€~~~€}€~~~€€~€}€€€~~€~€~€€}€~€}€€~€~~~€€€}€~~€~€~€€€}~~€~€~€€~€~€~€~~~~€~€€~~~~€‚}~~~€~~~~€~~€~€~~€~€~~~~~~€€~~~€~~€€~~€€‚~€~~~€~€~€~~~€€~~~~~€~€~~~€~€~€~€~}~€€~~€~€~€~€~~~~€~~~~€~€~~€}~€}~€€€~€~}€~~€~€€~€~€}€~€‚~€~~€~~€~~€~€€~€~€~€~}‚~~~€~€~€~~€~€€}~€€}€€}€~~~€~€€€~€~~~‚€€~~~~€‚~€~~€~€~€~€€~~€€~€~€~~€~€€€~~~~~~€~€~€~~~€~€~}}€€~~~~€~~€€~~€~~~~~€‚€~~~~}~€~€€~€~€€}€~~~}€€~€~€~~~~~‚~~€‚~€~~~}€€~€€}€~€~‚€~~~€~€€~~€~}~~€~€~€~€€~~€~€€~€~~€~€~~~~‚€€~€~~~}~€}~€~‚€€~€~}~€~~€€~€~€~}~~€~€€~€~~~€~~~€}€~€€~€~~€~}€}~~~~~~€~~€€~€~~€~~€~€€~€€~€~~€}~~}€~~}~~~€~€€€~€~~€~€}€€}~€~€€~~~~€~€~~~~~~€}€€€€~~€~€~€€~€~€~~€~€~~~€~€~}‚~~€~~€~€€€€~€}€~€~€}~€~€~~}€}€~~‚~~€~€~€~~}€~€€}€€~€€~€€~€~~~€‚~€~~~€}€~~~€~€€~€~~~€€€~€}€€}€}€~€~~~€€‚~~~~€~~~~~€€~€~~€~~€~~€~€€}€~~€~€€~~~~€€~}~€~€~€€~€~~~€~~€€~€€~€~}‚€~~~€~€~~~€~~€~‚~€}€~€~~}~~€€~€€}‚€€~€~~‚~€€~€}~~~€~€~€}€~€€~€~~€~‚€~€}~~~~~€€~€~}€~~€~€~‚~~~~€~€~}€~€~~~~€~~~€~~€}€~€~~€~~~}€~€€€~€~~~~}~~~€}€€~€~~€€~€~~€}€~~~~~€€‚~~‚€~~~‚~~€~€~~€~~~€~€}€~€}€~~€~~~€€~~€~~€~€}€€}€~€~~€~€}€€~~€}€}€}~€~€€€~~~~~~€€€~~~€~€~€€}€~~€~€~~~€~€~€€€~~~~~€‚}~€€~~~€~€~€}€€~€~€~€~~€€~~~€~€~€~€~}€€€~€~€~~~€~€€~€~~~€~€~~~~€~€~~~€~~€~€~€}€~€~~€~€~€€~~~~~€~~~}€€~~€~€~~€~~~€€€~€~~€~}€€‚~}€~~~€~€€~€~€~€~~~€~€€~€~}€~€~~€~~€€€€~€~~~€~€~€~€~€}€}€~€~}€~€€~~€~~~~~~~~~€‚~€€~€~€€}€~€~~€~€€€~€~~€~~€~€~~€~€~€€~€€~€~~€€}€€~€~€€~}€~€~~€~€‚}€~€~~~~€~€€}€€~€}€}€~~~~€€~~~~~~€~€€~€~~~~€~~€€}€}€~~~~€~~~€~~€~~~€~€€~~~~~~~~€}€~€}€~~€€~€~~~~€}€€~€€‚~€~~~~€~€~€~€~~€~}€~€€}€~~€~€~~€~~€~€~€~~~~€~~‚~~~€~€€~€~~€~~€€~€~€€~€~~~€~€~€~~~~‚~€~~€~€€€€€~~~€~€~~€~€~€~}~€~~~~~€€~~€}~€€€~~}€~€~€~€~€€~€~€~~€~€~€~~~€}€~~~€~~€}€}€~€~~€~€~}€}€~~~~~€€~€~~€~€€~€~€}€€~€€~€~€€€~€~~~€~~~€~€~~€~€€}€€~€~€}‚€~~€€~€~€~~~€~‚€~~~€€~~~~€~€€€€€~€~€~€~€~€€~€~~~~€~~~€~~€~€~~}€~€€}~~€~‚€€~}~€€~€}€~~~~€~€}€~€~~€~~€€~€}€~~~€~€€€€~~~~‚}~€~€~~~~€~~€€€€~€~~€~~€~€~€~€}~~€}~~€€~€~~~~~€~€€€~€~€~~€~€}€€‚~€~~}€~€}€€~~€~€~~~€€~€~€~~~~€}€€~€~~€€}€€~€€~€~€~~€~~€€~~~~€~~€}€~€~~~~€}€~€€€~€~€~~€~€~€€€~~~~~~€}€~~€€~€~~~€~€~€€}~~€~€~~€~~~~~€~~~€€~}€€~€~€~€~€~€€~€~€~~€~€€~~~€~~~€~~€€~€~€~~€}€~~€€€~~~€~€~~~€~‚}€€}€~~€€~}€~~€~€~€~€~~€~~~~€~€}€~€}€€~€~€~~€€€€~€~€}€}}~~~€~}€~~€~~€€‚~€~€}€~~€~€~€€}€~}€~~~~€~€}~~€~€€}€~€~€}€~€~}€~€€€€~}~€€€}~~~€~€~€}€~~}€€~€~€€~~~€~€€}}€~~}~~€~€~~~€~€~€~~€}€~€~€€~€€~~€~~~~~€~€~~€~€~€~€}€~€€~€€~~}~€€~€~€~}~€~€~€€~€~€~~€~€~€~€~~}€€~~~~~€€~~}~~€~~€~€~€~~~~~€~~€~€}€~€~€~€}€~€€€}€}~‚~€‚~€}€€~}~}€~€}€€}‚€}~}€~€€€€~€~~~€~€‚~~€€‚}€~~€~€~~€~€~~€~~~€€€~€~€~€}€~€~~€€€~€~~~€}€€~€~€€~~~~€~€€€~€~~€}€€}~~€€~€~~~~€~‚~~€€~~€~~~~€€€~}~€~€~€}~€€~€~€~~~}€}€€~~~€€~€~~}€~‚€€~€~€}€~€}€}€~~~~€~€~€~~~€~~€~~‚€€~€~€€~€€~€€~€~€€€~~€~~~€~~}~€}€~€~€€‚}€}€~€€~€~~~~‚~€~€~€~~€~~€~€}€~~€€€€~€}€€~€~€~€~~€€‚~~€~~~€~€~€€}€~€€~€~~~€~€€}€~~€~~~~~€€~€~~~€}€~~€€}€~}€}~€~€€~€€~€~~~€~~€€€~€}~}~€~€}€~€€~~~~€~€~~}~~~‚€€€~€~€~~~€}€‚~~~}~~€}€€~}~~~€~€~€}~~€~~€~€~€~€~~~€~€€}€~€~~~}~~€€€€~~€~~~€€~~€€~€~~€~€~€€~~~‚~~‚€}€~€€€~~€}~~€~€}€~~€~~€~€€~~~~~~€}€€~€}~~€€€~~~€€}‚€€~€~~€~~€€€~~~}~€‚~€~€~~~~€~€~€~€~€~‚€€~~~~€~€~~‚~~~~~~€€€~€~~~€€~€~€~€~~~~€~€~~~~}~€}€€}~€€~}~~~€€~€}€~~€~~~}€~‚~~€~€~€}€~€€€~~€~~€~€~~€~~~€~}€~~€~€€~€~~€~€~€}€~€€€~€~~€~€~~‚~€~€~~~~€~€~~~€}€~~€~€~€€~~€}€€}€~~€~~€~}€}€~€€~~}€~~~~€~‚€€€~~~€~~~~~€~€}~€~~€€}€~€}€}€~~~€~€~~€~~~~~~€€€€~~€~€~€~€}€€~€}€~€}~€~~€€~~~~~~€~~€~€€~€~~~~€~€~€~~~~€~€€~€~~~€}€~€~€~~~€~~€€}~€~€~~€~€€€~€~~~~~€‚~€~€€~€}€~~~~~}~€}€~~€~€€~€~~€~~€}€~€€€~~~~~~€~€€~€}~~~€~~€€~~~}}~~€~€~€~}~~~€~€~€~~~}€~€~€~€~~€}€~€}€~€~€~€~€~~~€€~€~~}€~}€~€€~€~~~~~€~€~€}€~~~~€~€~~}~~‚~~€~~€€~~~}€€}~€}€}€~€~}~€~€}~~€}€~~€}~€€€€~}€~€}€€~€}€~€€~€~~~~~€~€~~~~€}€~€}€~€€~~€}€€~€€}€~~€~~€}~~~€~~~€}€~€~€~€€€€}€~€~€~€~~~€€~~€~~€~€€~~~~€~}}€€€€€}€€~~€€~€€€~€~~€~€~€}~~€}~€~‚~€‚}~€}€~~~~€€~€~~~~~~~€}€~~€~~}€~‚€€€~€~€~€~‚~~~€}€€~~€~~~~€~}~~€~€~€~€€~€~‚€€~~€€~€~€~~}~€~€}€~~}€~€€€~€~€~~~~€~€‚~~€~~~€€~€€~€€}€~€~~€~€€~~~~€~€}€€€~€}~~€~€~€~€€~€~€~~}€~€~~~~~~€~€€~€~~~€€}€€~~€~‚~€~~~~€€~~~~~~€~€~€€€‚~}€~~€~€}€€~~€~~€~~€~~€€~~}€}€€~~~€~€}€~€}€}€}~€~€~€~~~~€~€~~€€~€~~~}~€~€~~~€~€~€~€~~€~~~€~€~€€~€~€~€€~}~~€}~€~€~~~~}~~€~€~~~€}€€~€€~€~~€€~~€~€~€~€}€~€€~€~~€~€~€~€~€€~€~€}€~€€€~~€~€}€~~‚~€~€~€~~~~€~~€€€‚~~€~€}€}€~€~~€~€€€€~€~}€~~~~~~€~~€~€~€~€~€~€€~€~~€~€€€}€~€}€€~~~€~€~}~~~€~~€~€~~€€}€~~~€}€~€€€~‚~~€~~~~~€~€~€}~}€~€€}€~€€~€~~~€~€~€€~}~‚~~€}€€€~~~~~€~€~€€}€~€€~€~}€€€€‚~€~~€~~~}~€~~~~}€~€€}€€~€~~€~€}~€}€~~€~~~€}€~€~~~~€~€~}€~}~~~€~‚€~~€~~€~~€}€~€€~~~~~~~€~~€~€~€~€‚~~€~€€~€~~€~€~€}€€~€€~~€~~~~~€~€}~€~~‚~}€~€}€~~~€}~}€€~€~~€}~~€~€~€~}€~~€~€~~€~€~€~~€€}€~€€~€~€~€~~€~€~€~~~€~€~~€~€€€€€€~~€~}€}€~€€~€€~}~~€~~~~‚~~€}€~€}€~€€~}€~~€~~€~~€~€~~~‚€~~~~~~~€~~~~€€~€~~€~~€~~€€~€~€~~~€~€‚~~}€~€~€~}€~€€€}~}€~€~€~~€~~€}~~€~€~~~‚~}~€~€~€~~~€~~~€~€~€~€~~~€€}€~~~}}€~€}€~€~~~~€€~€€€}~€~€}€~~}€~€€€~€~~~~~‚~€}€}€~~~€~€~€€}€~€~€~‚€~~~€€€~€}~€~~€}~€€~~~€}€€€~€€~€~€~~‚€~~~‚€€‚~€~€~}€€~€~€}€€~€~~~€~~€€€~€~€~~}~~~€~~€~~€}€~}€€~€~~~~~€€€~~~~€}€€€~€}~~~€}€€~}‚}€~~~€}€€€~~~~‚~€~€€~€}~}€~€~€~~€}€~}€~~€~€~€€€~~~€~€}€~€}~€~€~€€}€~€}€€~~~€~€~~~~~€~€}€€~~~~€~~€€}€~~€~}~€}€~€€~~‚~~~€}€€~~€~€~€~€~€~€~€~€~~€~~~~€€~~€~~€~€}€~€~~€~~€~€~€€~‚€~~€~}€~~€~~}€~}€~€~~€~€€€}€~~€~~~~‚€}~~€~€~~~€~€~€}€~~~‚€€€~€~~€}€~€~~~~€~~~~€~€€~€~‚~€~€~€~€€~€~~€~~~~€€~~€~~~€~~~~€~€}€€~€~~€~€€€~}~~~~~€~~€~~€~€€~€€~€~€~€~~€~€€€€~€~~‚~~~~~~~~~€~€~€}€~€}€~~~~‚€€€~}€~~€}~€~€~~~~~€~€~~€€~}€~€€~~~~}€~~‚}~€}€~€€‚~}~~~€~€~€€~‚~}€~~€~}€€~€~~€€~~~~~~~~~€~~€~€~~~}~}~€€€}€~~€~€~€~€€~€€~€}~~~~~€~€~}‚~~€~~€~€~~€~€‚~€~€~€~€€€~€~~€~~}‚~~}~€€€€~€~~€~€~}~‚€~€~~~€~~€~~‚~~~~€~€~‚€€€~~~€}€€~~€~€‚~€~~~}€~€~~€‚~~€~}~}€~€~~~~€}~€€~~€~€~~€}‚€~}€~~~€€~€~~€}~€€€~}€}€~€€}~€~~~€~~€~€~~}~€~~~~€~€€}€~€€~€~€~}€~~€~~€~€~~€~€~~€~}€~€€€~~€~~€~‚€~~€€€~€~~~~~‚~~€~~~€~~€€€~€€~€~}€~~~€~€€~€~~~€~‚€}~~€}~€~€}~€~~‚€~~‚~€~~€~~€€€€~~~€~~~~€~€}€€~€~~~€~~€~€}€€~~€~~~‚€€€~~€~~€~€~€~€~€~~~~€}€~€€~€}€~~~€~~€~€€~€~~~}}~~€€}€~~~~~€}€~~‚~~€~‚€~~€~~~~€}€~€~€~€}~~€}€~€€€~€~}~~~€~€€€~€}€~~~€~€}~€}€€~~~€~€~€€€~~~~~~~€~€~~€~~~~€€~~€€~€~€~€~~~€~~€€~‚~~~€}}€~€}~~€~€~€€}€~€~}€~~~€~~~~~€}€~~€~~~~€~~€}€~~}~~~~~€~€~~~~~€~€}~€~}€~€~~€~~~€€€~€~~€~€~‚~~€~€~€~€~€€€~€}€~€}€~~}€~~‚€~~~~€~€~€‚~€~€~€~€~€~€~€~€~~~€~~€~~~€‚~}~~€~€€‚~~€~€~€~€}€~~€}€~€~~€~~~€~~€}~€~~€}~~€}€}€~€~€€~€~}€€~}‚‚~~€~~€}~€~€€~€€~}€€}~€~~€~€~~€~~~~~~€~€~€}~~~€~€‚}€~~€€~‚€~€~~€~€€€~€~}~‚~~€~~€~€~~~~€~‚€~€€~~€~€~€~~€~€€€~~€€~€}€~€}~€~~~€~€~€~€~}€~€~€~€~€}~€‚~€~€~~~~~~~€€}€~€~€~~~~€€~~€~~~‚~~~€~€€~~}~}€~€€€~€~€€~€~}~€~€€~€€~~€~€€~€€~€~~€~~€~€~€~€~~~€~€€€€€€~~~€}€~~€~€€~}~~€~~€~}€~~}~€~€€€€~~~€~€~€~€~‚~~~~€}~€~~~€~~~€€~~€~€}€~~€~€~€~~}}€~€‚~~~€}€~~~~€€~~~€~€}€€~~€~€~€}€}~~€€~~~~~€€‚~€~~~~€€€~€~€~€~~~‚€~~€~~~€~€€‚~~€~€~€~~€~€€}€~€}€~€~€~~~€€€~€~~~€~~~€~€~€~€~~~}€~~€€}€}€}}€~~~~€€~~€}~€~€~~~€~€~€~~~~~‚€€~€~€~~‚€~~~€€~€}~~€}~~~~€~€~€~~~€~~€€~€~€~€~~€~€€€€~€}~~€}~~~~~~~€‚}€~€~~~€~~~~€~}~}~€‚}€~€€}€€~€~~~~€€~€}€~€~~‚~~€€~~€~~~~€‚~€€~€~€€}€~~}€}€€€~€~€~~~~€~€‚~}€}~~~€~€€~€}€€~€}~~~~~€€€~~~~~€}€~€€~~~~€}€}~€~€€~}~€~€€€~€~~~~€€~€~~€€€~€~~~€~€€~€€}€€~~€~€~~~~~~€€~€~}~€~€~€‚~€~~~€~€~€~‚~}€~€~~}~~€~~~€}€}€€~€~€~€~~€~€~€~~~~~€~~~~~~‚~€}€~€€}€€€€€~€~}€~€}€~~~€~~~~~€}~~€}€~€~€~€~‚€€}€~}€~€}€}}€€~€~€~~~~~~€~€}€~€~€}€~€€€~€}€}€~€~~€~~~~€~~~~€~~€~€~€}€€~€~€~~€~€€€~€~}€€~~~‚~~~€€~€}~€~~€€}€}€€~€~~€~€€~€~€}‚~~~~€~~€~~~€~€‚€~€~~€~€}~~€~‚€€€€€~~~~~~€€~€~~€~€~€}€~€~€}€~~~~€€€~~€~~~€~€€‚~€}~~€~~€~€}€}€~€}~~€€€~€~~‚~~~~€}}€~~~€~€~€~€~~€~~~€€}~~}~~~€}€€~~€~~~€~€~€~~~€~~}~€€~€~~~}~€~€}€€~~~~~~€~€€}€~}€‚~€~€~€€€~~€}€}€€€€€~€~~€}~€~€~€~~}}€~€~€€€}~~€}€~€€}€€~€~~~~}~€~~€~€€~~€~~~€~€€~€~€}€~~€~€~~~~€~€~€}€~€~‚€}~€~€€~€~€~€~€}€~~~~€~~~~€~€}~~€}€~€}}€~€}~~~€€~€}~~}€~€€}€€~€}€~‚€~~€~€~€~€~€€~~€~~~€~€~~€‚~~~€~€~~€~€~~~~€€~~€~€~€~~€~€~~~€~~€€~€~~€~€€€~€~~€~~€€‚~€~€~~‚€}‚}~€€~€~€~€}~~~€~}€€~~~€~~~€~}€~~€~€‚}€~€~€~€~~€~€~€~€~€~~€~~€}€}€€~€~~~€~€€~~‚~€~€‚~€~~€€€€~~€}~€~€~€~€~~~€€~~~}€~€‚~~€~~€}€€}€~~~‚~~~‚~€€~€€~~~‚~€~~€}€~~€€~~~~~€}€€€€}€~~~€~‚~~€‚~€~~€~~€~€~€~€€~€~€~~~~€~€~€~€~€~€~€~~}€}€€}€~€~€~~~}€€}€€~~€~‚€€‚€‚~€}~€€~€~€€}~€~€~~~€}€~~€~€€~€~‚€~€~~~€~€}€~€€~~~~~€€‚~~~~€~€~€~~~~‚€~~€~€~€€}€~€}~€~~~~€~€~~~€~~€~€€~€}€~€~~‚~€~€~€€}€~€~~~~~€~~~‚~€~€~~~‚€€~}€€~€~€}€~}€‚€~€}€~~€~‚€~~~‚~~€~€~~~€~€€~~~~~€~€~€~~€~~€~€€~€}€~~~~€~€€~€~‚€€~~€}€€~~€~~€~€€‚€~€~~€€€}€~~~€€~€€}€€}€~€~~~~€€}~€~€~€€~€~~~€~€€~~€~~€~~€}€~~~€}€~~~}~~€}€€~€~}€~~‚~€~}€~~~~€‚}€}€~~‚€~~€~€€~€~~~~€~~~€}~€€€€€‚~~~~€~~€}€~€~~€~~~€~~~}~}~€~€~~€~}€€~€}~~€~€~€~~~}~€~‚~€€€~~€~~€~€}€~~~~~€~€~€~€}€~~~~€~~€‚}€~~€~€€~€~~€~€~€~€€~~~€~~€~~€~€~€~€~€€}€~~€€€~~~~€~€€~}€~~}~€€~€~~€~~€€~€~€~~€~~€~€~€~~~€}€€~€€~€~‚€~~‚~~€~}€~‚€~~~€€~~~~‚~€~€‚~€€~€~~~€~€~~€~€~~}€~€€€~~€~~~~€~€~~~‚}~€}€~~~€€€~~€~€}~~€~€€€€~~€~~€~€~~}}~€‚}€}}€}€€~~~}€~€~€~~~~}€~€~~€~€}~€~€~€€~€}}€~€~~~~~€}~~€}~€€~€~€~€}€~€~€~~~}~€€}€~€~~~€€~€~€~€~~~€~€€~}~€}~€€}€€~€~~~€~€}€~~€~€€~~€€~€~€}~€~~~~€~~€€~~~~€~~€~~~~€~~€€~€~}~~€~€}€~€€~€~€~~~€~€€~€~~~~€}€€}€~~}€~€€~€~‚~~~€~€€~€~~}€~€€~€~~~€~€€~~~€~€€~€~~€~€~~~€~€€~€~€}€~€}€~~~~~€~€~~~}€}€€€~€~~€~€€~~€~€€~~~€€~~€~€€~€~~~~~€€~€}~~€~~€~€~€~€~€~€€€~}€~~€~‚€€~€}~~~€€~~~~€~€~€~€~€~~~€~€€‚~~€~€~~‚€}~~€}€~€€€~€~€~~~~‚€~€~~€~~~€}€~€€~€~~€~€~€€}€}~~}}€~~~}€}€€~€~}€€~€~~~€€~€}€~~~~~€~€~€€~~€€~~~~~€}~€~€~€€~€}€~€~~~~€~€~€~‚€~€~€}€~~€~‚‚€€‚~€€~€€~€€}€~€~€€€~€~~}~€€~~~€~~€~~€~€~€~€~~~€~~€~€€}€}~~€~€€~~}€€~€~€~€€€~~~~€~€~€~~~€~€€~€~€~~~€~€€~~€~~~‚~‚~~€~€~€~€~}€~~}€~€~€~€~€~€~~~€€€~€~~€€€€~€~~~~€}~~€~€~~~€~€€€}€~~~~~€}€}€‚~€~~~~~€~~€~~€~€~~}€~€~€€~€~~}~~€~€}~~~€~~€€~~€~€~€€~}€~~~€€€~€~‚€~€~~€~€~€€‚~~€~~€~€€~}€~~€~~~~}€~€~~~~€€~€~}€€~€€~€~~€~~~€~€~€}~~~€€€€~€~~€~€€€€€}~€}€~€}~~€~€€€~~~}~€€~€}~~€~€€~€€~€~€}~€~}~€~€~€~€~~€€~~€€~~€~~€~€~€~€}€~~€~~€~€€~€~~~€~~€}€~~}~~~€~~€~~~}€€~€~~€~€€€~€}€~~€~€€~€~€~~€~€~€€~€~€~~}€~€€~~~€~€~~~~€}~~~€~€€~€~~}~€€~~~‚~~€}€~}€}€~~~~}~~~€~€€~€~~€~€€}€~~€~~€~€}€€~€~~€}€€~~~~~€~~€~€~€~~€€€~€~~€}€€€€~€~€~€€}€~€~€~€}~€~€€€~}€~~€~€€~}}€~€€~~€~~~~€€~~€~€~~‚~~~~€~~€~€€‚~€}€~€}€}~~~~€€~~€~€~€~€~~~€~~~€~~~~€}~~}~~€~€€~€~€~€}~€~€€~€~€~€~€~‚€~€~~€~~€~~~€}€€~}~€}€~~~€€}€~}~€~€~€~€~~€~~€‚~~~~€~€€~~~€~€~€}~€€€€~€~~€~€~€}~~€‚~€~€~~€~~€~~€~€}€€~~~€~~~€~€~€~€}~€~~€~~€~~€€~€~~~€~€€~}~€~~‚~~€~}€~~~€~€€~}€~~~~€}~~}€~€€}€~€€}~€~~~~~€~€~~€~~~~~€€~‚~~~€~~€€‚~€~~}~€~€}€~€}~€~~~€~€~€~~~}€~€~€~€~€~€~~€€~~€~~}~€~€€~€~~€~€~~~~~€}€~€€}€~~~~~€€~€~~€}~€€~~€~~€~~€~€~}€}€€~€~€~}~~€~~€~~€~€~~~€~€~~‚€}~~€~~€~€~€~~€‚}€~€€~€~~€‚~€~€~€~€~€€€~~€~~€~€~€€~~~~€€€~€}}€}‚€~€~‚~~~~€}€~€~~}}€~€~‚€}~€€~€~~~€}~€€~~}€~€€}€~~€~~€~~€~€€€~€~~~€~€€€~~~€€~€~~~€~€€~€~~€€€~€~~~}€~€~€~}€~€€~~€~€€~€~€€~}~~~€~€~~~~~}~€~~€~}~~€~~€€€‚~€~~€~€}~~~~€}€~€~€}€~~~~~€}€~€~~€~~€€€€~€~}~~}€~€~~€~€‚~~~~€}€€€~~~~€~~~~€~€}~€€~€}€~~~~€€€~~€~~~€~€~€~€~€~€~~~~~€~~}€€€~~€~€}€~~~~~~€~€~€~~~€~€~€~~€~€€~~~€}€~~€€~€~~€€}€~€}€€~~~~€~€€€~~~~€~€€€~~~€~~€€~€~~~€€€~}€}~€~~€}~€~€}€~~~~~~€~€~€~~~€€~}~~}~€~‚€~~~~~~€~~~€~€~€~~€€€~€~~€~€~€~€~~~~~€~€~€~~~€~~€€€~€}~~~€~€€€~~~€~€€~€~€~~€~€€~€~€~~€~€€€~}€~~€}~€€~€}€~€~€}}€~€~€€~€€~~€~~€}€~~~~€~€}€~€~€~~~€~€~~€~€~€~~~€~~€~€~~~~€~€~~€~€~€~€~€~€~€€}€~~~~~~€~~€€}€~~~~€~~‚~€€~€~€~~€~€€~€~~~€~~~}~~€~~~~€~€€€~}€~~€}~€€~~€~€~€}€~€~€€~€~~~€~€€€~€~~~~€~€~~}€~~~€~~~€€~~€~~€~€€~€~€~€€~€~€~~€€~~~~}~€€~~~~€€€~}€~€€€}€~~€~}€~€~}€~~~~€~€~€~~}~€€~€}€~€~€~~€~€€~€~~€~€€€~~€~€€€€~€~~}€~€€€~}€~~€~€€~~~~€~~~~}~€~~~}€~€~~~€}}~~€~‚€~~}~€~~€~~~€~~€€~€~€~€}~€€€€~~€~~€}€~€~€~~~€~~~~€~‚~}€}€€€~€~~€~€~~€~€€~~€~~€~~€~€~~}~€‚~€~~€~€~€}€~€€~~€~}€~~€~‚€~€~€~€~~~€}~€€€}€}~€~€€€~~~€~€~€€~~~~€~€~€}€~~€~€€€€~~€~€€~€~€~€~€€}€~~‚}~€€}€~~~€€~€~€~€~€~€~€€€~€~€~~~€~~€~~~€~€~~~}€€~€~~€~~€~~‚}~€€~~€~~€~€€~~€~~~€~€~€~€~~€~€€€‚~~€~€€~‚€€~~€~~~€}€~€~~~€~€~€~€~€~~€~€€~~€}€~~~€€~€€~~€~€~€€€~~~€~~€€}€~~~€~€~€}€€~~~~€~~€€}€~€~~~~~€€€~€~€~€~€}€~€~€~€}€€~~‚€~€~‚€€~~~~€~€~€€~€~}€€€~~~~€~€~~€~~€~€~€~€~€~~‚~€€€}~~€~€€~€}~~€~~~€~~~€~€€}~~~€~€€€~€~€~€€~}€~~~€€~€~€~€€~€~€~€€~€€~~€~~~~~€~}‚€~€~€€‚~~~~~€~€~€€~€€~€~€~~~€€~}‚~~~~€~€€~€€}€~~€~€~}€}‚~~~€~€}~€~~~€€~‚~€~~~~~€€}~~€~~~~~~~€€}€€€€}€~€}€€~~€~€€~€~€~~~€~€€~€~€}€€~€~€~~€~~~~~€~€€~€~€~~€~€~€~~~€€~€~€€~€~€~‚€~€~}‚€~~‚€~€~€~~~~€~~~€~~€~€}€~~~~€~€~€~~~€~€€~€~~~~~€~€€~€€~€~}~~~€‚~€€~€~€~€~€~~€€~€~~€~€~~~€~€~~~€€€}€}~~€~€~~€~€€~~~~‚}€~€~~€€€~~€~€~€€~€~€€~€€~~~€~€~~~~~€~~€€}€~~~~~~~}~}€~~~~~€~€~€}~~€€€~}€~~~€~€€~~}€~€€~}~~€~€}€~€€}€€~}€~~~€~€€€~€~~~€~€€~€€}~~€~€~‚~~€~~€~€~€}~€~€‚}€~€~€~~€€€~€~~~€~~‚€~~~}€~€€€€€}~€€€~€~€}€~€€~€~~€}€€~€~~~€€€~~€€€~~€~€~€€~€}~€~~€~~~€~~€~€}€€€€~~€€~€~€€~~~}€€}€~~~~€~€~}~~€€~~€€€~~~~~~€€€€€~€~}€~€~€~€€€}€}~€€~€~~~€~~€€€~€~€}€~€~~€€€~€~~~}€~€€‚~~~}}€~€€}~}€~€~‚~€~€€~€}€€~€~~€~€~~~~€~~€~~€€~€€}€}€€}€€~~€€~€~~~€~~~~~€~~€~~~€~‚€~€}~~~€€~€~~~€~‚€€€~~€~‚~~~~}€~€~€}€~~}€~€€€~~~~€~€€~~€~€~€€~~}€~€~~~‚~€€‚~€~€€~~~~€‚}€}€€~€~€€~~€~~€~~€}€~~~€~€~€‚~€~€~~€~€€~~€~~~~€~~~~~~€~€~€~€~~~€€~€~~~~€€~€~€~€€~€~}~~~€~€€€~~€€€~~~€~€~€~€~~€~~~}€~€€~~~~€€€€~€~~~~~‚~~€~~~€~~~~€}€~€~~~}€~€€€~}€~~€~~€~€}€€~~~€~~€~€€€~€~~€~€€€~}~€~€€~€~~~€€€}€~~€~€~€~€~~‚~~€~€}€~€~€~€€~€€~€~~€~}€~€~€~€~}€~€~€€~~~‚~~€~€€}~€€}‚€}~}}€~€~€}~~€~~€~€~~~€~€€~€~~~~~~€~}€~}~~€~~‚€€~}€~}€~€~€~€~€~~~~€~‚~~~~€~€}€~€€}€~‚€~~~~€~€~}~‚~~€€}~€}~~~~€~€€€~€~~~€~}€~€~€~~€~€€~~~€}€€~€~€}€}}€~€~€€€‚}€}‚€~~~€~‚~~€€~€~~}~~€~€}~€}‚~}~~€~€~€€}€~€~~}€~€€~}€~}~‚~€~€~€€~~}€~€~€~€~~~~}€~€}€~~€~‚€€€~€}~~~‚~€~}€€}€€€~‚€€€}~€~~€€€€~}€~€~€€~€€~€~~~~~~~€~€~~~~€~€€~€~€~~~€~€€~€~€~~~‚€}€}}€€~€~~~€~€€€}€~~~~~€~€€}€~~€~€€€~~~~}~~~€~~}€~€}~}€~~€}€~€~~€~€}~~~€~~~~€‚}€€~~}€~~€~€~€€€~€~~~~€~~~€~‚~€~~€~~€€~~~}~€€~€}~€€}€~€~€~€~€€~~~€~€}€€~€~€~€€€€~}~~~€~€€€~€~~€~€~}€~~~€~~€~€~~€}~}~~€~~€€€~€~~~€~€~€~~~€~€€~€~€~€}€~€~€~€€‚~€~~~~€€~€}~€~€~~~~~~€~~€€~€~€~~~€}€~€~€~€€~~€~€~€€€€~~€~€~€€~~€}€€€~~€~€~~€~~}~€~€~~~~€€€~~€~~~~~~€~~€€~€~€~~~€~€~€€}€~€~~€‚~~~€}€~€€€~€€~€~€~€~~€~€€€~€}~~}€~€€‚~€~~}~~€~€~€€}€}€~~‚€~~}€€~€~~~€}‚~€~€~€~€~€~~~~€~€~€€~~~~€€~€~€~~~€~€~€~€~€~~~€~~€€~€~~‚€~~€~~€~€€}~~}€}~€~~€€~~€~~~~€€‚~€}~~~~€~€€€€~~~~~~€~€~€€}€€}~~~€€~€}~~~€}~€~€}~~€}€€~€€~€~€~€}€}~€‚~}~~~~~€€~€~~€~~~~€~€~€€~€‚~€~~~~~~~~~~}€}~€€€~€~~~€~€~€€}€~€~€€~€~~~~€~~€€~~~~~}}~€~~€~~€~€~€€~€}€~~€~~~~€~~~€~€~~€}€€~~€~€~~€~~~€~€~€~}~€~~€}€€~€~~€€~€~€}€~€€~€}€~~€~~~€}€~€~~€€}€~€~~€~€€€}€~~€~€~€~€~~~€~~~~~€~€~~€~€~€~€~€~€~€€}€~€€~€~}~€~€}€~~~€}€~€€€}~€~€‚}€€~€~€~€~€€€~€~€~}‚~~}€}}~€~€~€}€~~€€~€€}€~~€€€~}€~~~~‚€~€~~€}~~~€€€€~€~€~€~€~~€}~€€~~~€~~~~~~~€~~}€~‚€}€€~}€€~€~~€€€€}€~~~~€}~€€~€}~~}}€~€~€~€}€~~€~€€€~}€~~}~~€~~€~~€~~€~~€~€}€~€~€€}~~€€€~~~~~€~€~€€}€€~€~‚~€~~~€}~€~€€~€~~€~~€~€~€~€~~€~€~~}€}€~~‚~~~‚‚}}€~€€~~€~}€~€€}€€~~€}€~€~~~€}~~€~€‚€€‚~~€~€€~€~€~}€~~~€~€}‚€~~~}~~€~~€€€€~~~€}€~€}€€~‚~~~~~€~€~€~~~~€~€€€€€~€~€~€€|€~~‚€~~~~€~~}€~~~~~€€~}€~€~€}~€~€~~€~~€~€~~~~€~~~€~€€€‚~€~€~€~€~~~~€~~~~‚€~}~€~~~~€~~€€€~€~}€~€~€€~€~€~~€~}~~€~€~~€~€~~€€~€~€~~€~~€€~€~~€~~~€‚~}~€}~€~€€~€€}€~~€~~€~€~€~~~~€~€~~€}€~~€~~~€~€€~€~€~€€}~€}€€~€~~~}}~€~€€}~}~~€}~€}€€~€~~}~€~€€~€~~}~€~~€€}€~€~€~~€~€~~~€}~‚~~€€€~€~~€~€~~€€~~€~~}€~€€~€~~€~~~~}~€~€€‚~€€~~~€}€€~€~€€}€}€}~~€€~‚€€‚~€~~€~~‚~€~}€€€}~€~€~€~€~€}€~~€~~€€~€~~~‚~~~~€~~~~~~€~€~€€~~€~€~€}~€~€~‚€~~~~~€}}~€€€~~€~€~}€€}€~~€€~€~€~~~~‚~€}€~€~~}€~€~~€~€~€}~~€~~~~€~€~~~~}~€~€€}~€~€~}€~€}~}€~~€~~~~~€~€~~}€~~~€}~€€‚~~€~€}€€~~€~~~€~€~€~~~€}€€€~~€~€}€€}€~€€€€~€~}‚€}~~~}€}€~€}€~~~€~€€€~€~€~€~€}€€~€€~~€~~€~~€~€~€~~~~}€~€€€~€~~~€}~~€}€~€~~€~€~€~~~€~€~€}€€~€~~€~~€~€~~~€~~€}€}~€}€~}€~€}€~~€~€~~~€~€€~~~€~€~€}~€~~}€}~~~€~€}}~€~€€~~~~~€~‚~€~~€}€~~€€~€~~€~‚€~}€~€~€}€}~€}~€€€€~€~~~€~‚~~~}~€~€€}~~~€‚}€}~€~~~~€}€€~€~€~~€}~€€€~~~~~~€~€€‚~€~~~€~€€€~~~~~‚€€~€~~~}~}€~€€€€‚~€}€~~€~€~€}~~€~€~€~€~~~€€€~~€~€~€~€~‚€€}€~€~~€€~~~~~€€~€~~€~€€~}€~€‚~€€~~~€~~€~~€~‚€~~€‚~€~€€€€~~€~€~€€~€~€~~€~~€~~€~€~~~~€~€~}€~€€€~€~€€}€€}€~~€~~~€~€€~~€~~~€}~~€€~€~~€~~€€}€~~€~€€~€€~€~€~€~~~~~€~€~€~~€€€~}~€‚~~~~€~~~~€~~€~€€~}€~€~€~€~€€€~}~}‚€~~~‚~~~~~€~~~~€€~€~~€~~€€€~}~€~€€~~€~€€€~€~~~~~€€€~€}€}~~€~€€~€~€~~€~~€€}€€~€€}€}€~~~€}€~€€~€€~€~~~~€~€~€}€}€€~~€~~€€€~€~€~~€€~}~~~~~€~~€~€~~~€~~~€~€~€€€~€~€~€~€}€€~~~~€~€~€~~~€~€~€€~~€~~~€~~~~€~~~~€~~€}€~~~€}€~€€}}~~€‚€}€~~}€~€€~€~~€€~€~€}€~}~~~€~~€€€€~€~~€~€~€~~}€€~‚}€~~~~~€~€~€~}€~~€}~€~€€~€~~~€€~€~€~~~~€€€~}~~~€€€~~~€~~~~€~€~€~}€~€}~~~~‚~~€~€~€~}€~~€€€~€~€~~~~~€~€€€€~€~}€~€~€~~€~€€~}€~~€~€€€€~€~~~€~‚}€}~~€~€€€~~€~~€}‚€~~€~~€~€‚~€~€~~~~€€‚~€~€~}€}€€~}€}~€€~~€~€}€~€~€~~€~€~€~~€}€~€€€~€~~€~€€‚}}€}€€~€~~~€~€€~€~}€€~€~~}~~~€~~~€~€€~~~~~€~‚~‚~~~~€€‚~€~~€~€~~~€}€~€}€}‚€}~~€€~~~~~~€}€~‚~~~}€~€€~~~~~~€}€~}~~€€~~€~~~€~€€€~€~~~€€~‚}€~€~€~}€}€~~~~~€}~}€~~~‚€}€~~~€~~~€}€~~€€~€~}‚~~~€~~~€~€€}~€~~€€~~}~}€}~€€~€~€~~~€~€€~~~€~€}€~}€~€~~€~€~€~€€~€€~~€~~~€~~€€~€}€~~~‚~}€~~€€~€~~€~€€~~~}€€~€~€~~€~€~€€~€~~€~€~€~~€~~€~}€~~~~~€€~~~€~€€€~€~}€}€~€~€}€~€€}€~€~€~~~~€~€€~€~~~~~€€}€~€€€~~€~~€~}€€~€~€~€~€~~€~€~‚€€€~~~~~€€~~~€~€€~~€~~€~€€€~€~~€~€€}~€~€~€~€~~~€~~€~~~~‚€€~~~€~~‚€€~~~€~€~~~€~€}€€~€~€}‚~€}~~~~€~€€~~€~€~€~}~€€€€~~€~€€€€~~~~‚€€~€~~€}€~‚€~~€~}€~€€€€}€}~€}€€~~~€€~~€~~~€~~~~~€~€~~~~€~€€€~€~€~€€~‚€~~}~€~€~€}€~~€~~€€€~~~}~€~€~}~~€~€~~~€~~€~€}€~€€}€~€~~€}€€€~~~~€~€~€‚~€~~~€~€~€~~€€}~€~€€~€~€~~~€}~€€~~€~€€€~}€}€~€€~‚~€€~€~~‚~€€~~~~€€‚~€~}€~~}‚~~~~€‚}€~~€~‚~~€~€~€~€}}~€~~€€€~€~}~~€~€~~~~}~€€~~}€~€~~~€~€~€~€~~~€€~€~~~~€~~€€~€~~€}€~€~€~€~€€~€€~€~~€€€~€~€~‚€~~~~‚~€~€~€}~~~€}€€~~}€~‚}€€~€€}€~}€~€€~€~€~~~€~~€~€~~~€~€~~}~~~€}~€€~€~~€~€~€€~~~~€~€€~~€}€€~€~€~~€~€€~~~€}€€~€~~~€~~~~€~}€~~€~€~€~~€€~}€~€}€€~€€~~€~}}€~€€}€~€~~~‚~€}~€}‚~~€}~€~~~€~~€~€€}€~€~}~€~€€‚~€~€~~~~€~€€~~~~}~€~~€~€~€~~€~‚€€‚~€~€~€~€~€~~€~€€~€~~~~~€€~~€~}€~€€~~~€}~~€~€€~€~~~€~€€~€€~€~~€~~~€~€~}~~}}€‚~€~€~€€~€~}€~~~~€~€}€€~€~€~~~}€}€~€~~€~~~€~€~~~~€}€~€~€~€~€€~}€~~}€~~~€~€€~~~~~€‚~€~}€~€~~€~~~€~€~~€}~}€~€€~€}~~€~€~€~~€~~€~€‚~€~~~€~€~€~~€~€€~€€}~€~~~~~~~~~€}€€~€~€~~~~~€~€~}€€~~€~€€‚~€~~~€~~€~€}~~‚€}~€€~~~~~€~~~~€~~~€}~€€~~}€~‚~~~~~~€~~€~~}€~€~€}€~~~~~~€~€}€~€~€~~€€€~€~~~~~€€}€~€~~~~~~~€~€~€€~~~~€~€€~~~~€~€€}€~~€~€~€~~€~~€€~€~‚€~~~~~‚~€}€~€~€~€‚~€~~~€€€~~~€~~~€~€}~€€~€~~€~€€€~~~~~€€~€}€~~€€€€~~~€~~€~€~€~€~€~~~~€~~€€}€~€~€~~€~~‚~~~~€~€~€~}~€~€~~€~€€€~€~~~}€€€~€~~€~€~€€~~~~€~€}€~~€}€~~~~€€~€~€~€€~~~€~~~‚~~€‚~€}€}€~€~~€~€}€}€}€~~€}~~~~€€‚}€€~~€~€~~}€€~€}€~€~€~~~~€~€~~€~~€~‚~~~~€~€}€~~~~€€}€€~~~}€~€~€~€~~~€~€~~~~€~~€~~~~~€~~~€€}€~€~~‚~€~€€€€~€}~}~€~€~€~€~~~€~~€}€€~~~‚~~}€~€€~~~€€~€~€~€~~~€~€€~~~~€~~€€€~~~~~€~~~~€~~~€~‚}}€~~€~~~€~€~€€~~€~€~~‚~~~}~~~}€~€€~€~~€~€~€~~~~€~€~€€~€}~~€}€~€€€€~~~€~€‚~€€}€}~€~~€‚~~€~€~€€~€~€~~€}€~€€~}€~~€~€€€~€~€~~€~~€~~~€~€~€~€~~€}~~€~€~~€~‚~~~€~€€€}~€~~€€~~}~€~~€~~~€~~~~~€~€~€€~~€~~€~~€~€}€}€~€}€~}}~~€~~€‚~~€~€}€~~~~~}€~€}€~‚€~~€~€~€~€~~€€~€€~€~€}~€~~~€€~€~~€}€}~€~€~€~~~€~€€€~~€~€}€€€€~~~~€}€€~€~€€~€€}€~€~€~€~~~~~~~€~€€~€~~~€~€~~~~~~€~€~~~~€~€~~~~}~€€}~€~€~~}~~€~€€~€~~€}€~€€€~}€~~}€€‚~~~~~€~€~~}€~~~~~}€~~}~~€~€€~€}~}~€€€}}~€~€€~€}~~€~€€€~~€}€~€~€€~€~€~~€}€€€€~€~~€~‚~~~~~‚~€}~€€€€~€}~~€}€}~~€~€~~~€~~€€€~~~€~~€~€~€~€€€~~€€~~~~~€€~~~}€€~~€~~~‚~~€€‚}~~}€~~}€‚}~€~‚~~€}~~€€}€‚~~~€~‚€€~~€~€€}€€~€}€~€~€~~}~€€~€~~€~€€€~€~€~~€€€~~}€~€€~€~~~~~€}€€~~~~€~€€}~€€€‚~€~~€~€~€~~~~~~€€~€~€}€~~€€~€~~~~~€}€‚~€€~~~~€~€~}€~~~~~}€€~€}€}~~~€~€~€}~~€€~€~~€~€~€}€~‚€}}}~€}€~~~€~€€€~€~€~~€€~‚€€~€~€~~~‚~€}€~}€~€~‚‚~€~}€~~€~~€~€}}~‚}~€~~€€~~€~€~€€~€}€~€~}~~€~€~~~€€€€~€€~€~~‚~~€~€~€~€~€~~~€}€~€~~~€~€~~€~€~€~€}~€~€~~€~€~}~€~~€~~~~€€€€€~~€~€~~~~~~}€~~€€~€~~€~€€~€~~}€€€}€~~€~€~€~€~~~}~~~€~~~€~~€€~€}~€€~€~‚~€}€}~€~€~}~€€~~~€~~€~~€~€€~€~~~€~€€~€~~€~€~€€~~€~€€€~~€~‚€€€‚}~~~€~€€€~€~~~€€~€~~~€€€~~}€€~€~~€~~€€~~€~€~~‚}€~€~}~€€~}€~~€~€~€}~~~€‚~€~~~~~€~~~€~~€~€~€€€~€}~~€~}~€~~~€~~~€~}‚~~~€~€}€~€~€~~~~€~€~€~~‚~~~~€~€~€‚}€~~~€~€€~~~}€~€}€~€~€~€‚~€~€}~~~‚}€~~€}€‚~~~}€~€€~€~~~€~€€€~~~€~~}€~€~€~€€~~€~~€~~~€}€€€€~€~~~€~€€€~€~~~€€€~€~~€}‚€€~€~~€~~€~}}‚€‚}~~~~€~~€}~~~€~€}€€~€~€~~~~~€€}~~€}€~€~€~~~~€~€€~€}€~}~€€~~€~~~~€~€~€~€~€~€~€~€~€~~€€~~€~~~€~~~€‚~~~€}}€€}€€~€€~~~€~€‚€~}~€~€~€€~€€~€~~~~€~~€€}~~~~~~}€~€€~€~~~~€~€~€~€~~€~€~€€~€~€~€}€~€~~~‚€‚~~€}€~€~€}€~~€}€~€€~€~‚€~~~€~€€}~€~~~€~€~€~~~~€~€€~‚~€€~€~€}~€~€~}€€}‚~~€}€}€~€~~€€€€€~~~~~€~€~€~€~~~~€~€€~€~~€~~€~~~€~€€~€}€€€~~€~~€~€€€~€~~~€~~€}€€~‚€~€~~}€~‚€€}€~~~€€€~€~~€~€~€~~€€~€~~~€~€€~€~~€~}€~€~~€~~€~€~~€€~~~€~~€}~~~~~€~~€~€~€~~~€~€€€~~~€~€€~}€~~€~€€€~~€~~€~~€€~€~~€€~€~€~~€€€~€~}€~€}~€~€€}~~~€~€€€~~€~€~~~€€~€}~~~€€}€}~€~€€~~~€~€~€~€~€~‚€€~~€€~€~~~}€~€€€~~~}€~€€€~~€~~}€€~}€}€~‚~~~€€€~€~€~~~€~‚€€~~€~€€~€}~~€}€}€~€€~~‚€~~~~€~€}€€~~‚€}~€~€~}€~~~‚€|€~€~€~‚€~~~~€~~€~~~€~~~€€~€~‚€~~€~€~}€}~~€}€€~~€~€~€~}€~€€€~€~~€~~€~€~€}€€€~€~~~‚~‚~~€~€€~€~~€~~€~€€~€~~~€~€~€€~€~€~€~~~~‚€~~~~~€}~€~€}€~€~€}~~€~€~€~€~~€~€~~€~~€€€~€~€~}€~€€~€~~~~€€‚~€~€~€~€€~€~~~€~~~‚~~~€}~}€~€~€€€}€~~€~€~~~€€‚~€~€~€~~~~~€~€€~€~€~€~€~€~€~€~‚€~‚€~~€~€€~€~~~€€~€~€~€‚~~€~€~€~€~~€~€~€}~€€€~€~}€~‚€~€~~~€}€~€~€~€}~~‚~€~€~€~~‚~~~€~€}~€~~€~€~€}~€€~€~€€€~~~€~€~€€~€~€}€€~~€~~€}€€€‚€~~~€~~€€€€~€~~~€~~~~€~~~~€~~~~~€~€~€€€~€~~~~€€~€~~€~~€€~€}€~‚€~€~€~€~~~€‚~€~}~€~~€€~€~~~~€}}€}€}€€~~~€~~€~~€€~€~~~€~~}~€~€~€€~€~€€~€~‚~€~~~€~€€~€}~€~€€~€€~~€~~€}‚~~~€}€~€}€~}€~€€~~€‚~~~€~€~€€}€~‚€~~€~€~~€~€~€~€€~€€~€~}~€~~€€~€~€~~~€~€€~~~~€~€€~~~~€~€~~~€~~€€}~€€€~€~~~~€~€€~€~~€}€‚~~~~~€~~~€~€~~€}€~~‚‚~€~~€~~€~~~~~~€€€~€~~€~‚€€€}~~~~~€~€~€~€~€~€}~~~~€€€~€~~~€€~€~~~~€}€~€~€~€~~€~€€~€~~€~‚€€~~€~~~€~€~€~€}~€}€~€~€}~€~€~€~~~€}€~~~€€}~~€€~€}~~€~€€€~~€~€€€‚~~€~~€}€€~€~€~~€~~€~€~~€~€~€€}€€~€€}€€}~€€€€€€~~~~}~‚€~€}€~~€}€€~~~~€~€~€~€~~~€€€€~€~}~~~~€~€€}€~~}~~€~€~~€~~~€~€~~€~€~~€‚~~~€~€~~€‚}€}€~~~€~€€€}€~~~}€~€€~€€}€~~€~~~€€€€~€~~€€~€~€~~€€~~~€‚~~~€~~€€~~}}€€€~~~€~€}~€}€€}€€}€~~}~~€~€~~~~€~€~~€€}€~€~}€~~}€~€€~€~~~}€€~€~~€~€€€€~€~~€~€€~}~€~~€€~€~€}~~€~~€€€€~~~€~~~~€~€~€~€~~€}~~~€€~~€€}€€}€€~€~€~~~~€€€€€‚~€~~€~€‚~}~~~~€~~~}€€~€~‚€~~~~€~€}}€}€~€~~~~€~~€}€~€€~€~}‚‚~~~€‚~€€~€~€}~€€~~~~~‚€€~}~€~€~‚~€~~~€~~€}~€~}~~€€€€~€~~€~~€€€€}€~~€~~~~€~€}}€€€~}~~~€~~€€~€~~‚~~‚~~~€}~}€~~€€~€~€~€~€€~€€~€~~~€~~€~€~~€~€~€}~~€€~€~~€~€~€~~€~~€~€€~‚€€~~€~~~~€~€~~~~€~€~€~€€~~~€€€€~€~~~€~€~€~€}~€}€‚€}€~}€~‚€~~~€}€}€~~~€€}€~€~~~€~€}€}€}€~€~€~~€~€€€~€~~~~€~~~}~}€~€~€}~~€~€~€~€}€~€~~~€~€~~~€~€~€}€€~€€~€~€~~€€‚~€~~~~~~‚~€~€~€~}€~€€€€~€~~€}€€~~~~~~€€}€~€€~€~~~€~~€~€~€~~‚~~€~€€}€~~€~€~€~€~€~€}~~~€€~€~~~€~~~~€~}€~~€~~€~~~€~€~€~~~~€~€~€€€~€~€~~~€}€~~~~‚~€~€~€~€~~}~€~€}‚~~~€}€~€€~€~~€~€€€~€~~€€~€~€~€€}€~€~€~~~~~€}€~€}€~~€~€~~€~€~€~~~€~~€€~€~€~€~}€€~€~~€‚~€~€€~€}€~~~~€~€~€~€~€~€~~€~~€~€€€~~€}~€€~€€~€~€~€~~~€‚~€}€~~~~€~€€}‚€~€~~€~€~€~~€~~€~€~€~€~~€~~~~€}€~~€~€€~€~€~€€~€~€~~‚~€~~~€}€€~€~~€~~€€~€~~~~~€~€€~~~~€~~~€€€}€~~~€€€}€~~~~~~€~€}€~~~~€~€}€~‚€~~~€~€~€~€€~€~€~~~€~€€}€~~€~€~€~€~~~~€~~~€€~~~€~~€€~€}~~~€€~€~}€~€€~~€~€~~}€~~~}€~€~€~~€~~€}~‚€~}€~~€~€~€€€~€~~~~€~~€€~~€~~}€€€~~€~€€}€~€~€€‚~}~~}~€€~~€~~€~€€~€}€}€~~~€€~~€~~€€}€~€}€~~€€~€~~~~€~‚€~€~~€~~€~~~~~€~€~€~~€~€~~~~~€~€~€~€~€~€~€~€~}~~€~~€}€~~~€~€~~~€~€€€€}€~€~€~€~€~~€€~€}~€}€€€€~~€~~€€€~€~}~€~€~~€€~€~€~~€~~€€€~~~€~~~€}€~€}€~‚€~~~€}~~€~~~€~€€}€~€~~~€}€~€~€~~€€€€~€~€€~~~~~€~€~€€~€€~€~€€~€~€~€~€€~€~~~€€~}€~~}~€}€~~€€~‚€~~~~€€€~}‚~‚~~~~€€~€~~}€~€~}€~€~€~€€€~~~€€~€~~€~€~}€~~€~€~€}€~~~~€€~~~€~€€€€~~~€~€€~~€~~~}€€~€€~€€~€}€~~~€~€~€~€~}€€~~€~€}€}€~~€~~€~~€~~€~€~~~€€~~~~~~€~}€€~€}€€~€€~€}~€~€€~€~~}€~}~€~~~~‚€€€~€~€}€~€€}€}€~~}€~€~€€~€€~~~‚}€~€}€~€~~}€}€€~€~€~}€}~€€€~~€~~}~€}~~~~€~€~}€€~~~~}€~~€€~€€~~€€‚~€~€~~~€~€€€}~~€‚~~~~€}€}€}€~~~~€~€}~~€~€~~~}~€~€~~€€~~€~~~€€€~~~€~€€~~€~€~€~€€~€}}‚~€~~~€€~}~~€€€€€~~~€~€~€~~€~€€~€~~~~€~€€~€~~~€€~~€~€~€~€~€€~‚€~~~~€~€~€~€}~€~€€~~€~€€~~~~~}€€}€~€€}€‚~~~€€~~€~~~€~€~€}~€}‚€€~~€}€~~€~~~€€~€~€}€€~€~€€~~~~~}€€~~€~€~~~~€~~€~€€€~€~~€~€~}€~~~€}€~~}~~~€~€‚€€€€~~~€~€~€€~€}~~~€~€€~€~€~€~€~€~~€~€~€€~€€~}€~~€~€~~~€~~€~€~~~€~€~€~~€}€€~€~}~€}~€~~€~~€~€~}€~€~€~~}€~~}~€€~~~~~~~€~€‚}€}€~~~~€~€~€~€~~€~€~€~~~~€€€}~~€€~~€~€}€€~~€~€~~~€‚~€~€~~€~€~€~€}€~~~€~€~~~€~€~€€€~€~€~~€~€€~€~€~~~€~~€}€€€€~€~~€~€~€~€~€}‚€}~~€~€€€~€~~~€}€~~€}€}}€€‚~€}~€~~~~~€~€~€}~}€~€€~~€~~~€~€~}~€~€~€€~}€~~€~~~~€€~€~~€~€€€€~€~~€~€€~€}€~€€~~~€~€€€~~~€~€~€€~}~€~~~~~€~€~~~~€€~€~~€~~~€~~€~~€~€}€€€~~€~€~~€~~~~€€€~€~~€€~~~€~~‚€~~€~~~€€~~}€€}~€~~€}€~€~~~~€~€~~}~€}€~€~}‚€~~~~€~€‚}€€~€~€~€~~~~€~~€~€€€‚~€~€}}€~~€€~~~€~~€€€~~€~~€~‚~~€~€~€‚~€€~€€~€~€~~€~‚€€~€~~~~€€~€~~€}‚~~€~~€~€€~~~€}€€~€~~~~€€~€~~~€~€~~€~€€~€~~~€~€€~€~~€~€~€~~€~€€~€~~~~€}~€€€€~~€~~~~€€~~}€~€~~~€~€~€€}~€~€€~}~~€~€€€~~~€~€€€€~€~~~~€~€~~~€€~€~~~~€~€~~~€~€~}~~€‚~~~€~~€€€~}€~€}€~~€~€~~~~‚}€~‚~€€~€~~€€~~}~€€€€~~€~€~€~€€‚~~€}€~€}€~€~€~~}€~~~~€€€€~€~~~€~€€€~€~€‚~€€}€~€~€€€~€~€~~~€~~€€~€~~€~€€~€~~€€€~€~~€~€€€}€}~€~€~€~~~€~€~~~~~€€€}~~€~‚€€€~~€~~€~€€~~€~~~~~€}€‚~€~~€~€€€}€~€~€~~~‚~~€~~~€~€~~}€~~€€€}€~~~~€€€~~€~€€~}€}~€€~€€~€~‚~~~€~~€~~~~€}€~€~~€}}~~~€€€~€}~€~€}€}€~~€~€~€}€€~~‚~€~€~~€~€€~~€}~~~€~€€}€~‚€~}€~€~€~€~~€~€~~~~€€~€~~€~~~€€~€~€€~€~~~€~€}€~€€~€~€}~~€~~€~€~}€}~~€~~€€€~€~~€~~€€~€~€€~€€}€€‚~~€~~~~€€‚~€€~€}€~€~~~}~~€~€}€}€~}€~€~€~~€~€€~}~~€~€€~~~~€}€~€€€~~€~~~€€€}€~~€}€}€~€}€~‚~~~€~€€~€~~~€~€€€~~~~€~€~‚~€~~~~€~€~€~~€}~€}€~‚€~~~‚}~€}€~€}€~€~~€~€~€~~~}€~€~~~~€}~€‚~‚~€~~€}€~€~€€€€~~~}€~€~~~€}€€}~€€~€~€~€~~€}~~€€€€~~€~€~€~~~~~‚~€~€‚~€€~€€~~~€~~~€~€}€~~~€~€~~~}€~€€€~€~}€~€€€‚~€€~€€~}€~~~€~€~€~~~}€}€~~€€~~~~~}~~€~€~€~€~~~€~~€€€€}€~~€~€€~€~~~~‚}~€~€}~~~€~€~€~~€~€~~~€€€€€~~~~‚~€~~€}€~~~€~~€~€}€~€~€~~~~~€}€}€}€~}€}~~€~~~~~€~€~€~~~€€€~€~~~€~€~~}€~€€}€~~}€~~~‚€~~~‚~}€~~~€~€~€~~~~~‚~€~}€€~€~€~}€~€€~€~€~~~€~}~}€~~~€~€~€~~}€}~€€€~~~~€}~€~}€~}€}€~€~€~~‚€~~€~€€€~~€€€~€~€}€~€~~~~}~€~€~~~~~~€}}~~€~~~€~€}€€~‚€~~~€}€€~€~~~€~€€€~€~}~€~~€~€~~€}€€~~~€~~€€€}~~~~€€~€~~~~€~~~€~€€~€~~}€~€}€~}€€~€‚}~~~~€‚€€~~~~€~~€~€€~€}€~~€~€€€€~~~~~€~€~€~€~~~€~€€}€~€€~€~€~~~~€}€~€~~~~€~€€€€€~~~€~€~~~€~€~~~€€}~}€~€€}~~~~~€}€~~€~€€~€~}€€~€~€~€~€€~€~€~}~~€~~~€€€€~€}}€~‚€~~}€}€~€~‚~‚~~‚~~~€‚}€€~‚€~~~~~~}€~€~~~€~€€€~}€~~~€€~€~}€}}€~€~~€~~~~~€~€€~~}~~~~€€~~~~~~~€~€}~~~€€~~€~~~€}€€}€~€~~€~€~€~}‚~~~€~~€~€~~~€}€~€~}€~~~€€‚~€~~€~€~~€~€~€~€~~~€€€~€~~~€}~~€}~€€~€~~~~€€~~€€~€€~€~~~€~~€~€~€€~~‚~}€~€}€~~~}~€~~~}€€~~‚€~~€~~€€~}€~~€~€~~€~€~~€‚~€~€~€~~~€‚~~€~~€~~~€~~~€~€~€~~€€€~€~€~}‚~~€~~~~~€~€€€~€~€}~€€~€~~~€~€~~}~€€€€€~€}~~€~€€~€~~€~€~€~~~~€~€}€}€€~€~€~}€~~€€€€~€~~~~~~€~€}€~€~~€~€~}€~~€€}€~}~€}€}€~‚€~~€~€~~~€€~€}€}~~€~€€~~~€~€~€~€~~€‚~~}~€~€~€}~€~€~}~~~~€~€~~€~€~~~€~€€€~}€€~€‚~~€~~~€~~€~~~€~€€€~€~~~€~}~~~€~€~€~~}~€}~€~~€~}~~€}€€~€‚~€~~~€€~€~~~€€~~€}~~€~‚€~~€~~~€€~}€€~€}~~~~‚~~~~€}~€~€‚~~€~€}€~€~€~~~€}€€~‚€€~€~€~~~€~~~~‚€~~~€~€~~~‚€~~€~€~€~~€€~€~~~€~~~~€€~€~€~‚€€€~€~~€~€€~~~€€€€~€~~~€~~€~€~€~€~}‚}€~€~€}~~~€~€~~€~€~~€}€~€~~€~~€~€~€€‚~€~~~}~~~€~~€~€~€~€~€€}€~€~‚~€~‚~€}€€‚~~€~~~~€~€€€~~~€€~~~~~€€€~~€‚}~~€€€~~}€}€€}€~€€~~‚~~~€‚~€}€~€~€~~€~€~€€~€‚~€~~~€~€€~~~~€~~€€~€~~~~€~~€‚~~€}€}€~}~~~€~€~}€~~~}€}€~~€€€‚~~€~€‚~€}~€}€~~~€€~€~~~~~€~}€€~~€~€~€}~€}€€~}€~~€~~~€~€}~~‚€~€€~€€~€€~€€~€~}€~€‚~~€~€~~€€€~~€~€~€~€€}€~~~~~€}}€~€~€~€€€€€~€}€~€~~€€}€~€€~~}~~~€}€~}}~€~€€~€~}€~~€~~€~€€‚}€~~€~~~€~€~€€~€~~~€~‚€}€~€~€}‚~~€~~€€~€~~‚~~€~€~~€~€~~~~~}€~}‚€~~~~€~€~€~~€~~~€}€€~€~~}~€€~~€~~~€~€€€€€~€}~~€~€~€~~€~~€€~}€~~~~€~€~~~€€~€}~€~€~€~€}€~€~~~€~€~€~~‚€~~‚~€~€~}€~€~~€~€~~~€~€~€~€}€€}~~€}~~}€€~€~~€€€}€~€~~€~~~~€}€~€}~~€~€~€~~€~€~€~~€~€~~~~~~€‚}€~€~€~~€~€~€~~€~€€~~~€~€€€€~€~~€~~~~€~€€~€~€~€~~~€}€~€}€~€~~€~€€€~~€}€}€~‚~~‚‚~€~€~~€~€~~~~€‚~€~~~‚€~€~~~~€€€€~€~€~€~€€€~€~~~~€~~€~€€}~}€~€~€}€~~~€~€~€}~€~~€~€€~€~~€~€~€}€}~}~‚~€~}~€~~~€€~~~~~€~€€€€~€~~~~€€~€~~€~€~~~~€~€~~}~~~~~€~~€~‚~€~}€~€~€~€~€~~~~~~€€€€€€~~~€~~€}€€~}~‚€~€}€~~€€€~~~~}€~€}~€€~€~~~€~€~~~~€}~~€~~€‚}€€~‚€~€~‚‚~~~€~€~€~€~~~~~~}€~~€€~€~}~‚€~‚~}~€~~€~€€~~~~€~€~€€~€~€~~€}~€~~€€~~~~~€€€~€~~~€}€~~€~~~€€€~€~€~€€~~€~€€€~~~€~~~€~€~€~€}}€€~€~~~€~€~‚€~€~~€}~~€~€€~€~~}~~€}€~€}€}}€~€~~~€~€€€~€~~}€}€‚~€~€}€~€€~€}~~€}~€€~~~€€}€~~€€~~€~~}€~~~€~€~~~~€€~~€~~~€~€}~~€~€~~€~~€}€€~~~€~~~€~€~~~~~€~~€~}~€~€~~€~€~~€}~~}€~€~€~€~€~~€~~€€}€€~€~€}€~}‚~€‚~~~€~~€}€~~~€~€€€€~~€~€€~€}€~€}€~~~~~~€}€€~€~€€~€~~~€~€€€~~€~}~€€€€€~~~~€~€}~€~€€~€}~€~€€€}€~}€}€}€~~€}€~}€€}€~€€}€€~~€~~~€~€€~€~~€~~€€~€~€~€~~€}€€~€~~}€~~€~~}€~€~‚~~€~€~€}€~€€~~€~€~€€~€~~~€~€~€~€~€~€€}€~~€~€~~~~€€~~~~€}~€~~~~~~€~€~€~~€~~}~€~€~~~~~€~€~~~€~€~}~€~€€~€€~€€~~€}~€€}€~~~€~~€~€~~~~€~€~}‚€~}~}€~€~€€€€~€~~~~€~~}€~~~€~€€€~€}~€~€}~~€~~€€~~€~}~€}€~~€~€~€~~€}~€~€~}~~~~€~€~~~~€}€~€~~€~~€~~€€}~€€~~~‚€~}€~~~~€€~~~~€~€~€€€~~~~€}~€~€~€~}€~€}€~~€~~~~}€~€~~~~€~€~~~€€~€}}€~€€€~€~€€~€€~~}~€€€~~~€~~€€~}€~~€~~€~€~~€~~€~€~€~~€~€~~~~€}€€~€~~~~€~}€~~€~€€~~~~€~€€‚~~~~€~€€€~~~~~~€~€~~~~~€~€€€}~€~~€€~€}~€~~€€~€}€~~~~€~€~~~€~€~€~€~~~€}~~~~~~€~€~~€~€~€€}~€}€~€~€}€~~‚}€~}€~~€~~€€€€~€~~~€}€~€€~}~}~~~~~€~€€~€~~~€~€€€}€~~~}€}€~€~€~}~~~~€~€}‚€~€~~€~~~€€~€}~~€‚}€}€~~~~€~€€~~~~€~~~~~€~~€~€~~€}~€~~€~~‚~~}€}€~~€~€~~~}€~€~~€~€~~~~~€}€~~~€~€~~~~~€~€~€~€~€€€~€}~~€€~€~}~€~€€~€~€~€~~~€}}€€€~€~~~€~€€€~~~}€~€€}€~~€€~€~}~~€~€~€€€~€~€~~~€~€~‚~€}‚€~€~~~~~€}€€‚~€~€~€€}€}€~~€~€~~~~~€~€€€~~~~~€~€~~€€~€~€~€€€~€~~€~~€€~}€}~€~~€~€~€~€~€}€~~€~~~~~€€€}~€~€€€~€~~}€}}€~€}~~€}~€~‚€}~~~€~€~€~~~€~€~~~€~~€€~~~€~€~~€~~€€}€~€~€}~~~~~€~~~~~€~€}€~€~~~~~~~€€~€~}~~~~€~‚€€~~€~€~€€€~~~~~€€€~~~~€€~~€}~€~€~~~}€€€€~€~€~~€~€}€~€}~€~€}€€~€}€€~}~~~€}€€~€~~‚~€~€~€~€~~~€€~~€~~~~€~€€€~~€}~€~€~€~~~€~€€~€~~~€~€~~‚€~~~}~€}~€€€€~€~€}€€€~€~~‚~~‚~~~}€}~}~~~‚}€€~€€~€~€€~€~~~~~€€€€~~~€~€~~~€~~~~~~€~€€~€~€~€€~€€~€€€€~€}~~~€~€€~€}~€~€€~~~}€~€€~~€}€~€~€~~€€€~€~~€~€~€€~~~~~€~€~€€}€€~~~~}€~}~€~~€~~~~‚€~~~€~€~~€€€~€~~~€~~€}~~€€~€~€€~€~€~~}€~€~~~€~€~~€~€~‚€~€~~€€~€~€€~~}€~}€€}‚€~~~€‚}~}€€~€}~~‚€~~€~~~~€€~€~}€~€~~~}~€~~~€‚€~}€~~€€€~~}€}~€€~€~€€~€~€~~~€€~‚~€~€~€~€}}~~€}~€€}€~€~~~€~€€€}~~€}~‚€€~€~}€~~€~~~€}€~€€}€~€~€~€}€}€~€}€~~~€}€€€}€}}€~€€€~~€~€€~~~€‚}€~‚~€~€€~~~€~€€~~~~~€~€€~€~~€~€€~~~~~~€€€~€~€~~€~~€~~~€~€€~~~€~€~~}~~~}€~~€€~€~~€}€€€~€~~}€~€€~~~€~~‚~~~}~€}€~‚~~€}€~€~}~~€}€€€~~€~€€€~~~€}~€€€~€~€~~~~€~€~€€}€~~~‚€~~€~€€€~~€~€}€~€~€}€~€}€€~~€~~~~€~~€~€€}€~~~~~~€~~~€~€~€~~~€~~€~~€~~~€~€~€}~€€~~€~~~~€~~~~€}~€~€~€~~€~€}€~€~€~€~~~€~€}€~~}~€~€~€~‚€~€~~€~€~€€~€~€~€€€}~~€~€€~~~€~€~€~~€~~~~~~~€€~€~~€}~€€~€}~€~€~~~~~~€~€~€~~~€}~~}€~€~€}€~~€}€}~‚}~~€~€~~€€€}~~~~€~€€~€~€~~~‚~}€€~€~~~}€}€~€€}~~€~€~}~€~€~~€€€~~€~~~~€~€~€~~~€~~~€~~€~€~~~~€~~~~~€€~€~~~~€€~~‚~~~€~€€~€~€~~€~~€€€€~€~~€~€€~€~~€~~€~~~~~€~~~~~€}€~€}€~~}€~€~}~}€~€~€€~‚~~~~€~€~€~€~€~~‚~€~€€~€~~~€~~€~€€~€~~~~€~€€€~€~~~€~~€~€~~€~~~€}~€}€~€~€}€~~~€‚}€}€~~}‚~~€}€€~€~~€€~€~€~~~~~€}€€~€~}€~€~€}€}€~~~€€~~€€€~}~~}~€~€~€}€‚~€}€}€}€~~~~~€}€~€€~~€~~€€€~~€}~€€~}~~~€~€€}€~~~~€~€€}€}‚€~~~€}€}€}€~€€~€~~~‚€~~€~~}€~}€~~~€€~€~~~~€~€~~~€~‚€€~}€~~€~€€~~~~€~~€€€~€~€€~~€~~~€~€~€~}~~‚}€~€€~}~€~~€~€}~€~~€€~~~€~€~~€}€€~€}~€}~€~€~~€~€~€~~€~€€~}~~€~~€€~}€~~€}~€€€~€~€~~€~€€~€}€~~~~~€~€~€~€~€~€€~€}€€~€~~~~~€~€~~€€~~~~~~€~€~~€~€~~~€~€€‚~€~€~~€~~~~~€€~€~}~~€~~~~€~€€~~~~€~€€€€}~~~€€~€~~€~€~~~~~~~~€~€~€}~€}~~~€~€}€~~€~€€€€~€~~€~€~}~€€~~€~‚€}€~~€€}€€~~€~€€~€~€~€~~€}€~€€~€~€~~~€~€~~~€€~€~~~€}~€€~~~€~€€~~~~~€€~€~~€~~€€~€~}€~€€~€~~~€~~‚€~~~~‚}€~€~€~~€~}€}€~€~€€~€~}€~€€~€~€€~~€~~€€~€~~€~~~€€~€~~~~€~€~}€~~~€~~~€}€~€}€€}€}~~€~€€}€~}‚~€~~~€~€€€~€}€€~€~€~~~€~€~~~~~‚€€€~~€~~€~~€€~~~~~~€~€~€}€€}~}€~~€}~}€~€~€~~€~€~€~€€~~€}€€~€€~€~~€~€~~~€~€~~€~€~~~€}€€€€~€~€~€~€~~€€~}}}~€~€~~€~€~~}€~€~~€~€€€‚~€~€€~€~€~€~€}€~~~€~€~}~~€~€€€}~~~}~€~~~~~}~€€€~€~~€~€€~€}~~€~€€~€~~~€~€~~~€}‚~€~€€}~€}€~~~~~~~€~€€~€~€~~€~~~~}~€€~€~~~~~~€~€€~€~€~~€~€~€~~€€€€~€~~~~€~€~~~€~€€~€~}€€~~~~~€~€€}~}‚~€~€}€~~}€~€€€~~€~€‚~€~~~€€~€}~€€}€€~€~~€€€}€€~€~€€~€~~~}€~€~€~~€~€€~~€}€€€~€~~€~€~€~€}€€~€~~‚~~~€~~€~€~€~~€~€€€€‚~~~~€~€~€€~~~~}€~€~~€~~€~€~~€€€~~~~€}€~€~€~~€~~~€~~€~~~€~€~~€~€~€~€€~€}€~~€€€~~€~~~€~~€€~~€~‚~~~€~€~~€€~€~€~€€~€~€~~~‚€€~€~}€~€~~~}€€}€~€~~‚~€~€~€}€~~€‚~}€~~~~~€~~€~€€€~~€~~€~~€€€~}€~~€€~€~~€~€~€}~€€~€~~€~€~€~~~€~€~€~~~~~€€€}€~~~€€~~~~~€€€~~}~~€~€}€~~~~€~€~€~€€~}€~~~€~~€€€~~€~~€}€~€€~€~~€€~~~€~€~€~€€~€~~~€~~€€~~€~~~€€~~€}€}€~~€~€~€~~~€~~€~€~~~~€~€~€~€€~‚~}‚€~~}€}€€}€€~~~€~€€€~}~€‚}€}~€~€~~‚}~€~~€~€€€~~}€~~}~€€~€~€€}€~€~€~~~€}~€~€~~€}€~€€~~‚~~€~€}€~~~€}€€€~~~€~~€~€~€€}€~€}€~~~~€~€~~~~€€€~€}€~~~~~~€~€€}€€~}~~€~~€€}~~€~€€~€~~€~€€€~€~~~€€~€~~€~€€~~€~€€~€~~~~€~€~~~‚€€€~€~~€~€~€}€~€~~~€}€~€€~€~~~~€‚~€~€€€€€~€~€~€~€~€~~€}€~}€~}~€}€}~€}€~€€~~€~~€~~‚~~~}€€~€~€€~‚€~}~€‚}€~~€~‚€~~€~€~~€~~~}~€~€€~€~€~€€€~€~~~€~€€~~€~~}€~€€~€~~~~€~€}~~€€~€~~€~€€~~~~~€~~~~€~~€€~€~€~€~€~€€~‚€~€~€~€~~~€~~€~€€€‚~~~~€€~€~~~~€~€~~~€€}€~~€~‚€€~€~~€~€€€~~€~~~~€~€~€~€~€}€~~‚}‚~€~€~~€~~€€~€~‚€~~~}€~€€€€~€~~~€~€€€€~€~~~~€€€}~~~~€€~€€}€~~~~€~€‚}€~€~€€~€~~€}~~‚€€~€~~~€~‚~€~~~€~€~€€~~€€~€€~}‚€~~~€~€€~~~~€~€€€~}€~~~}€~€€~€~~€~€~~~~€€~€~€€€~~~€}€~€~€~}~}~€~€~€~€~€}€~~€~~~€€€~€}~~€~€~€€~€~€}€~€~~~}€~€€€€~}~~€~€€€~~~~€€~€~~€~€~€~€~~€~€~€~~€~€€~~€~~€~€~}~€€‚~€}~€€€€€}€~}€€}€~~‚~€~}€~~€~€~€€€€€~~~~€~€€~~‚€~~~~~€~€€€~€~~~~~€~€~€~€€}€~}€~~~€}€}€~~~€~€}€}€~~~~~€}€}€~‚€~~~€~€~~€~~‚€}€~~~€~~€€~~€‚}€€~~}€€~€~€}}€~€~~€~€€~€~€~~€~€~€~‚€~~~€€~€~}€~€~€€~€~€~~€~€~~~~~~€}€€~€~~~~~€~€€~~€~€~}‚}~€~€€~€€~€~€}€€€€~€~}}~~‚~~€~€~~~€€€~€}€€~€€}€~€~€€}€~~€}€€€~~}€~€€~€€~‚€~~‚~~~~€€~€~~~€€€~~~~€~€€€€€~~€~€€€~~~~€~€€~€~~€~€€~€~~€~€€€~€~~~€~€€~}€~~~}€~~€~€~~~€€~€€~‚€~€}€~€~~~€€~~~~€~~~€~~€~~€€€€~~~€€€€~~€~€~€~€~~€€€~€~€~~€€~~€~~~€~€€€€~~~€}€~€€~€~€}€~€~€~€€~€~~~~€~€€~€~~€~‚~~€~€€~€~€~~€€~~€~~~~€~€~€~€~€€~€~~€€~€~€~~€}€~€~~}~~~€€~€~~~€~€~€~€~€~€~~~€~€}€~€~€~~€€}‚€~~~~~~€€€~€~€~~€€€~€~€~€~€~~€~€€~€~~~~€}€}€€~}€~~~€€~~~€~€}‚~}€€}~~€}€~€~€~~~~~~€}€€~€~€~€€~~}€~€€€~€}~~€€~€~€~~€~€~€~~€~€€}€~~~€~€~€~~€~€€€~~~€~€~€}~€€~€~€~~}€€€~€~€~~}€~€~€~~~€€~€~~€~~€~€~€€~€~€}€~~~~}~}~€€~€}€}€~‚€€~€~~€~~€€~€~~~€€€€~€~~~€~€~€~€~€~~~€~€€~€~~~€~€~~€}€~€~€~~‚€~€~€~€~€~~~~~~}€~~€~~~~€~~~~€~~€€~€~~€€~€~~€~€~€€~€€~€~~~~€~~€€~€~€~~~€~~~€~€€~~€~‚~€€€~~~€~~€€}€~€}€~€~€~~~€~~€€~~€~€~€€}~~€~€€€~}€~~€~€~€€~€~€}~~€~€~~~~~€~€~€€~€~~~€€~~~~€~€~€}€~€~€~~‚~~~€~~~~€€€‚~€~€~€€}€~€~€‚~~~€~€~€}€€}~€~€~€}~€€€€~€~~~€~€€~~~~€~€}~€~€€~~€~~~€~~€€~€~~€~€€}~€€}€€~€~~~~~€}€€~€~~~€~~€~€~€€€~€~€}€€~~}~~€€~€~}~€~€€€~€~~~€~€€~~~~~€€€~~€~€~~€€€~€~~€~~€€~€~~€~~€€~}€~€~€}€~}€~~€€~€~€~~€~~€~€€}€€~~€~~€€~~€~~€~€€€€~}€~€€€~€~~€~~‚~€~€~€~~~€~€~€€}€~€€}~~€~€‚€€€~€~~~€~~€~~~€~€~€€~€~€~€}€~€~~~~€~€~~~‚~€}€€~€~€€~~~€~€~€~~~~€€~€~~~€~€~€~€€~€~~€~~~~€~~~€~‚€€€~~€~~~€~~}~€~€~€€~€‚~€~}€}€€€~~~~~~€~~€~€~€~~~€€~~€€}€~~€~€~~~}€~€~€€}€~€€}€~}~~€€~€~€€~€~~€}€}€€~~}~~~€€~€€~€~€~~~€}€~~~‚€~‚~~€~€~€€~€~~€~€~€~€€€~}~~€~€€~€~€~~~€€€~~~~€~~~~€~€~€~~€}€~~€}€~€~~~€~~~€}~~€~€~€~€€~~~~~~~~}€€~€~~€}€~€€~~~~~€~€€~€~}€~€~€}€}‚€‚~}€~€}~€~€~€€}~~~‚‚~~~€~~€~€€€~}€~~€~~€€~€}~€~€€}~~~~~‚}€~€~€~€~~€~€€~€€~~~~€~~~€~€€~€~€€~}}€}€€€~~€~~~~€}€}€€}€~€~€~€~€~€€€~€€}~~€~}€~€€~~~€~~€~€~€~~}~~~€~~€€~€~~}€}~~€~€€€~€~€~€€€€}}‚€~~}€‚~~~€~€~€}€~~€~€€‚~€~€~€~~€€~~~~€}€~€€~€~~€~€€~€~€~€€~}}~€~€€~€€}€~~~~€‚}€}€~€~€~~€~€€~€~€~}~~}~€}€€~~€}€}~€~€€€~~€~€€€€~~€~~~€~€€€~€~€~~~~~~€~€~~}€~€~€~~€~€‚~~€~€€€~€~~~€~~€~€~~€~€~€~€~€€~€~€}~~~€~€€~€~€€~~€~~~€~€€~€~~~~€~‚€€€~€~~~€~€~€~~~~~€~€€~€}€€}€€~€~€}}~€~~€}€~~~€€€~}~~€~€€~~€€~~~~‚~€~~~€}~€€~}€~~~€~€~~€~~€~€€€€~€~€€€€~~~€~~€€~}€~~€~€€€~€~€~€~€}€€~€€~€~~~€~€~~€~~~€~~€€}€}€~~€~~€~€€€€~€~~}~~€€~€~~€~€~~}€~~€~€~€~~€~€~€€~~€~~}€€€~€~~~€~€~€~€~€€~~€~~€€~€€}€}~~€~€€€€€~}€~}~~~‚~€~€~~€~€~~€}€‚}~€}€~€}}€~€€~}~~~~~€€~~€~~~€€~€}€~€~€~}~€€€~€~~~€~€€€~~~~~~~~‚~€}€~€~~~€~}€~€€~€~~~~~~€}€~€€~€~€~~€}€€€€~€~~~€~€~~€}€~~~€~€€€€~€}~~€‚€~€~~€~€€~€~€€~~~~€~~€~€€~€}€‚~~~~}€€~~€~~~~€~€~~~€~~~~~~‚€€~~~~€~€€~€~~€~~~~~~€~€€~~~€€€€~€}€~~€~}~€~~~€~€~€~€€}€~~}€~€€}€}€~€~~€}~€€~~~~€~~€€~~€~~~€‚€€}€~}€€~€~€~€~~~~€}~€~~€}€~~~€‚~~€€€€~~€~~€€~~~~€~‚€€~~~}€~~~€}~€~~~€~€€€~€~~€~€€~}€~€~~€€€~}€~~~€€€~~~~~€€€~€~~€~€~‚€}€~~~€~€€~€~~€~€€€~€~~~€~€€~€~~~€~€}€€}€~}€~~~~‚€€‚~~~~€~~‚}~€~€~€~€~~~~€~~€€‚~€€~‚€~€}€~~~‚~€~~€~€~~~€~€~~€}€~~€€~€€~€~€~~~}€~€~€~~~€~€~€€}€~€}€~€~€~€€~~€~~~€~€~€~€~~}~€~~€~~€~~€~€~~~~~~~~€~€~€€~€~€}€~~}~€€€~€~€~€~€~~}~~~€~€~€~~€~~~~‚€~€~~~~~~€~}€€}€~€~~€~€~}€}€€~€~~€~€~€~~~~}€€‚~€~~~€~~€€}€€~€~‚~~~€‚~€€~~€~‚€~~~€}€}€€}€}€~€~€€~~~€~~~~~~~€€€~~~‚€€~~€~~€~~~~€~€~€~€~€€~€~~~~~}€~€~€€~~~~€~~€€€~€~~~€€~€~€€€~€~~~‚~€€~€~~~~€~€}~~~€~€~€~€€~~~}€~}}€~€~~~~€~€€~~€}€€}€}€~€~€€€~€~~~€~€€‚~~€~€~~€€€~}~~}€€~~€}€~€~}~‚€‚~€~€~€}‚€~~~€€~~~~}~€~~~€€~€~€}~‚€~~~~~€€€~~€~~~~~€~€~~€~}€~~€~~€}~}€~€~~€}€~}€}€€€~~~€~€€~€~€~}€€~€~€}€€~~~~~€~~~€~~€~€€€~€}€~~€~}‚€}~€~~~€~€€~€~~~€~€~~~~€~€~€}€€~~€~€€€~€~€~~~€€~~~€~~€}~€‚~€€~€~~‚€~~~€~€€~€~€~~~}€~€€€€~€~~€}~€€~~€~~~€€}€~€~}€}~€~€€€~€~~€€~€~€€~€~~€~€€~}€~~€‚~~€~€~€}€}€~‚~~‚}€~€€}€~~~€~€~€~~~€~€€€€}~€~€€‚~€~~~€~€€~€~~~~~€€~}~~€~~€~€€~€~€~€~~€}€~€€~€~~~€~€€~~€}€}€~~~€~~€}~€€~~€~~~~~€~€~~~~~~~€~~€€~€~€~~€€~~~€~~~€~€€~€~~€}€~~~~~~€~€~~€}~€€€~€~€~€~€~€~€~€€~~~~~~€€€€‚~~~€~~€€~€~~~€~€}€~~~€~~€~~~~‚€€~€~~~€}€~~~~€}€~€~€€~~€~~‚}€~€~~~€~€}€€~€€}€~€~‚€~€~~€~~€~~€~~€~€€€‚~~~~€~}~€€~€~~~~€~€}€€~€~€~~~€~~€~€€~~~€~~€~‚~~~€€~€~~}€~€€~~€~~~~~~€‚~€}~€}€~~~~€~€€~~~~€~€~€€€€~}~}€~€‚~€~€~~€~€~€~€€}€~€}€~~~€~€€€}€~€}~‚~~€~€~€}~~~‚~€}}~€€~€~‚~~~€~€~€~~€~~~~€~€‚~€~€~}€~€€~}€~~€~~~€}€~}€}~~~~~€}€€~}€~~~~€€}~}€‚~€~€€~€~~}€~€€~€~}€~~~€~~€~€€€~}~~€€€€}€}€~‚}~~€~€~~~~~€€€~€~~~€€€~~~€~~€€~€€~‚€}€}~~~€~~€~€€}€}€~~~~‚€€€~€~€~€~€€€€~€~~~€}€~€}€}€~€~~~‚~~€~€}€~~~}~€~€~~~~€~€~~~€~~€~€~€~~€}~‚}~€}~€~€~€~€€€~~€~€~}€~~~~~€€~€~€~€~~~€€€€~~~}€~€€‚~}~~€~€€~€~}~€~€€}~€~€€€}}€~€~€~‚€~€~}‚~~€~€~€~~~€}€~~}~€€~€€~€~€}~~~€€~~~€‚~€~€~€~}~€~€}€~€~~‚}€~~€~~€~~€€}~€~~~}€€€~€}~~€~}€~‚€~~~~€}€~€}€~~€~€€€~~~~}€~€€~€}~€}€}€€~€~~~}~‚€~}€~~€~~€€€~€}~€~€~~}€~€€~€~€}}~‚€~€}€€}~~€~€~‚€~€~~~€~~€~‚€€€~~~~~€}€}€~€~€~~~~€€~€~~€€~~€~}€~~~€}€~~€}€€€~~~~€~€~€~~~~~~}~€€€€~~€~~~€~}€}€~€~€‚~€~~~€~~€€€~}~€~€}€€~€€~~€~}€~~€€}€‚~~~€~€~€~~€€~~€~~}~€~€~~€€~€~~€‚~~€~€~€€~}€~‚€~~~~~€}‚€€€~}€~~€~€~€€}€€}~~~€~€€}€~~€~}€~€~€€~€~~~‚~€~€~~~~~€€€€~~~€~€€€~}~€€~€~~€~€}€~€~€}€~~€~€~~~€}~€€~€~~€}€‚~€~~~€~~€~€}~~€}€€}€~€~€‚}~€~€~€€€~~~~€}€~~~‚€}~~}€}~~~€~‚€€}€~€€~€€}~~~~€€€~€~~€~~€}€}~€~€~€~€~‚~~}€~€}€~~‚~~€~€~€€~~€~~~~~}~~€~€}€~€~€€~€~~~‚~€€~€~~~€~€}€€~~€~€~€}~}€€€€~€~‚~~~€€~€€~€~€~~~€€~}€~~€€~}€~~€~€~€€~~~€~€€€~€}~€~€~~~~€}€€€€~€~€~~~~€}€~€}}€~€€~~~~~€}€~~€€~€~}~~€~€€~€~~~~€€€~}€~€€~€~~~€~€€~€~~~~€€~€~~~€€~€€}€€~€~~~~~~€~€}€€~}€~€~€~~€~~€~€€~€~~€~‚}€~€}€€€€~€~€}€€~€}~~}€~€~€~€}}~~€€~~~~~€~€~€~~}~€€€~€~~}€}~€}~€€€~€~~~€~~~€~~€€~€€~€~€€~€€~~~€}€~€€~~‚~~~€~~€€~€~~~€~€€~€~~~€€€~~€~‚‚€~~~~€}~€€‚~~~~~€~€~~~~~}€~~€~€€€~€~~€~€€}€~€~€~€~€~~€}€~~~~~~~}€}€~~~€€~€}€€~€~~€~~~~~€}~€€~€}€‚~€}~~}€~~€~€~€}€~€~~€}€~~€~€€‚}€€~€~€~€~€~~~€~€~~€}€‚~€€~€~€~€~~~€~€€~€€~~~€~~~~€€~€~~€}€~€€€~€~~€}€~~~~~€~€~}~~~€€€€~}~~~€~~€~€€}~€}€€~€~€~€}€}€~€~€}~~~€}€€~}€~~~€~~€€€€~~~~€€‚~~€}~€€~~€~~~~€~€}€}~€~€€‚~€~}€~‚€€~~~}€€~~€}~}~€~€~€~}~~€~€}€~~~~~~€~~€~€~€€€€~€~€~~}€€€‚€~€~~€~€~}€~~~€~}~€€€€~€~~~~€~€€~~€~€~~€~€}~€~~€}€~€~€€~~~€~€~}€}€~€~€~}~~€~€€}€~€~€€~~€~€~€~€}€}€€~€~‚€~€~€€~€~}€~€~~€~€~€~€}€~€}~~~~€€}€~€~~~€~~€~€~€€€€‚~~€~~€}~}~~€~€~€~€~~€~€}€~~~~~~~€}€€~~~€€~~~~€~‚€€}€~~€~€}€}€~€‚~~€~~~~~~€~€€~}~~~~€~~~€~€~€€~~€~~€}~€€~~€}€~~€~~€~€~~~€€~~€~}}€~€€€€~€~~€~~€€€~~~~€€~€~~~~€~€~€~€~€~€€}€€~~€€€~€~€~~€~~€€€€~~~€~~~€~€~~€~€€~€~€~~~‚~~~€€~€~€~~}€~€€~~€~~~€~€€~€~~~€~~€~}€~€~€~€~€€~€~€}~~}€~€€~€~‚€~~~~€}€€}€~€}€‚~~~~€~€€€~€~~€~€€~~~€~~~~€~€€‚~€~~~~€€~€€~€€€}€}€~~~~€€~€~~~€~€~€~€~€}€~~€~~€~~~~~€~€€~€}€~~€}€€‚~€}~~~}~~€~~~~~~~€€~€}€~€~€€‚}€~~€€}~~€~€‚~€~~€‚~~€~€}~€}~~~~~€}€€}~‚€‚~~~€~€~~‚~€~€}€~€€~~~€~~€~€}€€}~€~~~€~€~€~~~~€€€~~}~€€~€~~€~€~~~~€}€€}~€}€}€~€‚~€~}€~‚€~~~€~€~€€~}~~~~€}€~€}€~€€€€€~~€~€€€~}~~€~€€~€~~}€}€€€~~~€~€€~~~€~€€‚~€~~€~€~~}€~€~€€~€~€~~~~€~€~~~‚‚~~}€}€€~€€~€~~~€~€}~~€~€~€€~}€€~€~~~€~€~}€~€~~}~€~€€}€~}€~}~~~~€~€~~~}}€€~€~~€~€~~~~€€~~~‚}~€}€}€~€~~~€~~€€€~€~~€~€€€~€~~~€€~‚~‚€~€~€€~€~~~€€€~€~~€~~€€}€~~€~€€~€~~~~€~€~€€~€}~~~€~€~€€€~€}€~~~€~~~€~~~}€~~€~€~€€~‚~€~~€~‚}€~€~~~~€~€}}€€~€~€~}€€~€~~€~€~€~€~}~~~€}€~€~€€~€~~}€€}~€€€~€~€~€~€}€€}€~~€~€~~~‚€~€~€~€€~€~~~~€}€~€~€~‚~~€}€~~~€~€€€~€~}~€~€~~~~€‚~€~~€€~€~~€~~}€~€~€~€~€€~~~~€€€~€}~~€~~~~~~~€}}€~€€~€~€~€}‚€~~~€€~~~~€~~€~~€~~€~€~€~}~‚}€~€}€~€~€~~€~‚€€~€}}‚€€~~€}~‚~€}€€~}€~€‚~}~€€€~~~~€}€}€€~€€~~€~~~~€}€€€~€}~€~€~€~€€~€€~~~~~~~}€~€~}€~~€€~€~~€~€€~~€~€~~€~€~€}~€€€~€~€~~~‚~~€~€€€~‚~€~~‚}€~€~€€}€~€~~~€~€€~€€~€€~~~~€~€~~~€~~€}€~€~€~€~~€~€~~~~€}€€}€~~€~~~€}€~€~€~~~€€}€~~}‚~~€~€~€€}€€~~~}€~€~~~~€‚~€}~€}€~€~~~€~€~~~‚~‚~~€~€~}€~~€}€~~€~~€€~~~~€~~€~~€~~€}€€~€}€€~€~€~~~€€~}}€‚~~}~€~€€€~€~~~€~€€~}€~€~€€€~~~‚~€}€~~~€€€~~~}€~€€~~€~€€‚~€}€~~€}‚~~~~~~€~€~€~~€~~~~€€~~€€~~~€~~€€€€~}€~~~€~€€€~€~}€~~€~~€€~~}€€~~}€~€€€~€~~€~~~€}€~€~~~€~€~€~‚~€~€~€}~~€~~€€~€~~€~€}€~€~}€€~~~€~€€€‚~€~~€~€~~€}~}‚~~~€~€~~~€}€~€~~€~€~~€~~~€~€~~~€~€€~€€~€€~€~~~~~~€~~~~}€~€~€~€€~€~€~~€~~‚€}€}~~€}€~~~€~~€}€€~€~€}~€}~}~€€€€~}}~~~€€~€~~}€~€€~€~~~€€€~}}€~€~~~‚}~€~~~€~€€}€~~€~~~~‚€‚~~~€~€~~~~~€€~~€~€€~~}€€~€‚~}€~~~€}~‚~~~~}€~€€€~}~€~€‚~€~~€}€€~}€~€~€~€€€~€~€~~€~~~~€~€~~~~~€€}€}€€€€€~€~~~€~}€€}~€~€~€~~€}€~~€~~€~~~€}€~€€~€~€~~~€~}€~€~‚~~€~€€€~}~~€€~€~~}~€€€~€~€}€€}€~€~~~€~€~~€~~€€~~~~€~€~€€~€€}~~€€~€~~~~~€€~~‚€~€}‚~~~~€~€~€€~€€~~€€~€~€~€}}€~€~‚€€~€}€~~~~€}€€}€~€~€~~~}~€~€~€~€~€~€~~€~€€€~€}€~~€~~~~~€~€}€€}‚€€~}€~€€€~€~~~€~‚€€~~~~€~~€~€~€~~€~€~}~~€}~€~€~~€~€€€~€~~~‚~~€~€‚}€~€~€~~‚€}~€}€€}€~€~€‚€~~€~€~~~€}€~€€~€}€~~€}€~€~~~‚~~~€}‚€€~~‚~€}€~}~~€~€~~~~€~€~€~€~~~‚€‚~€~€‚~€~~€~€~€€~~€~~~€€€~€~€~~€~€€~~€~~€~€€}€~}€€€~~€~€~€~€~€~~~~~~~~€~€}}~€}€€~~~€~~~€~€€~€}~~€~€€~~€~€€~~€~€€~}~~~€€€~€~~€}€€€}€~€~€~€~~~€~€~€~€~~~}€}€€~~~~~~€~€~€~}~~€~€~~€~~€}€~€~€~€~~~~€~€~~~~€‚~~}~}€~€€~~~€€~€}}~€~€~€~€~€~€~~~~~€}€}€}€~~~~€~€~~~~~~~€}€~~~~€~~€~€~€€}€€~€~€~~€~~~~€~€~€~€~}€~€~€~‚~~~€€€€~~€~~~€~€€‚~~€~~€~~~~~~€~€~€~~~€~€€~€~€~}€~~~€€~€~~~€~~€~€~€~€~€~€~~€~€€€~~~~€€€~~~~~~€€~€}~~~€€}€€~~€~€~~}€~~€~~€€€~€~€~~€~€~‚€€~€~€~€~€~€€€~€~€~~€~€€€~€~~€~~€}~~€~€~€~~€€}€~€~€~€~‚~€~€~€€}€€~~‚~€}€€~}~~~€}~~~~€~€~~~~~€~€~€€~€€}€€~€~~~~€~€~~~~~€~€}€}‚€~‚~~€}€~}~€€~}~~~€~~€}‚~‚~‚€~~€~~€~~€~€~~€€~€~}€~€€€~€}€~€}€~~‚~€~€}€~}~~€~€€}€~€~€€~€}~~€~~€€}€~~~~€€~~~~~€}€~€}€€~€~~€~~}~€€€~€~€~~~€~~~€~€~€~~~€~€€€~€}€~}€€~~€}€~~€~~~€~~€€~€€~~€€€}€~~~€~€€~€~~~€}~€}€€~‚€~€~~~~€}~~€€~~€~€~€~€~€~~€~€}~~}€}€€€~€}€~~€~€~€€~~~~€~€~€~€~€~~€~€~~~€}€~~~€~€~€€~€}~~€€~€~€}~€~~€€€€‚~€~€}€}~~€}~€~€€}~€}~~€}€€€~~~~€~€€~€~€~€~€€}€~~~€}€~~€~€}~€~}€~~~~€~€~€~~~}€~~€~~€~‚€€€€~~€~€~}~}~€€~€~~~€~~€}€€~€~€~€~~~€~~~}€~~~~}~~~€~€~€~€~€€~~~~‚€~€~€~€€~€}~~}€~€~~~€~€€€€}€~~~€~€~€€~~~~€~~€~€~~‚~~€~€€~~}€~€€~€~€~}€~~€~€~~~€}€€€~€~~~€}€€€€~€€~~~€€~€~€}~~€~~}€~~~€~~€€~€}€~€~~€€~~€~€~€~~}€€€‚€~~~~€~€€€~€}~€~~€~€~€€}~~€€~€~€~€}€~€}€~~€~€~~~€~~~€~€}~€€~~~}€~€€€~€~~€€~~€}‚€~€~€~~}~€~~€€€~€~~~€~€€~}~€~~€~~€}€€€~€~€~~€~~~€~~€~€~€€~€~~~€~€€~€~~~€~€~€~~€~~€~€€}€~€~€~~€~~€~€~€€}€~€}~€~€€~€}~~€€~~€~~~€€~~€}~€~~€€~€}~~€~€€€~~€~~€~€~€~€~€}~€~€~~~~~~€}€~€~€}€~~€~~€}€~~}}~€€~}€~~~€~€€~€}€~€~~€~€~€}~~~€}‚€€~~€~€~~€€~€~~~€~~€~}€}€~€€~€~€~~~€€€€€}~€~~€~€~€~~€€~~€~~~~~€~€~€~~€~€~~~~~€~€~€~~€€~~~~~€~€€~€~~~‚€~€~~}~€€~€~€~€}~€~~€~€€~€}~€~€€€~~~€~€€~€~~~€~~~~€€~€}€~€}~€~€}€€€}€~~~~€€€~€~~€~€~~€~€~€€~~~~~}~€}€€€~~~€~~€~€€~€~€~~~€~€€}€~€}€‚~~€~€}€~~‚~}~€~€€~}€~€€€€~~€~€}€~€€~€~€~€}€~~~€€€~~€~~~€€~€~~~~~€~€€~€~~‚~~€~€~€~€~~~€~}€~€~~~~~€~~€€}€€}~€€~€~~€~€€€~~~~€~~~€€~€€~}~~~€~€€~~~~€~€~~~€~~€€~~€~~€~€~€€}~€€~€€~€~~~}€~~€€}€~~€~€~€~€~€~€~~~€~€~€~€~€~€}}~€~€~€~~~€~~~€~€€€~€~~€~}€}€€~€~~~€~€~€~~~€}‚€€€~€~~~~~€€€~€~€}~€}€€~~~}€~~~~~~~€~€~~€~€~~€~~~€~~~}€~€~~~€~€~€€‚~~€~~}~€~€~~€~~~~€~€€~€~€~€~~€~~€€}€~~}€~€€€~€~~~€~€€~€~~~€~~~~€}€~~~€~€~€}~~~~€‚~€€}~€~~~~~‚€~€}}€~€~~€~~~€~€~€€}~~€€~€~~~~~~€~€~€~~~~€~€€€~~‚~~€~€€~€}€~~~~€~~€~€€€€~€~~~€€~~€~~€~‚€€}€}€€~€~~€~~€€€~€~€~~€~~€}€€}€€~€€}‚€~~€~€~~€€~~~€~€~€€~€~~~~€~€}€~~~~€€~€~~€€€~€~}€~€€€~~€~~€~€~€~€~€~€~€~~€~€€€~€~~~~€~€~~}~~€~€}~€~€~~€~~~~€~‚€~~~~~‚~€~€~}€~‚€~~}€~€~~~}€~€€€€€~€~~~~€~€~~~~~€‚~}~~€~€€€€}€~€~~}‚~~€~€~~~}€~€~€~}€~€~€~~€~€€€~€}~~~‚~€}~~€~~€}€}€~€}€~~€~‚~€€~€~~~€€~€~~€~€~€~€~~~~€}€~€~€~~€}€~€}€~€~€~€€~€}€~€~€~~€‚~~}€~€~~~~€~€~~€~€~}}€~}~~~~€~€~€~€~~~€€€~€~~}~€}€~€€~~€~~~~€~€~€€~€~~~€~€~€~€~€€€~~~~€~~~}€~€}€}~~€~~€€€~€~€~~€€€~€~~€~€~}€€~€}~~~€}€~€~€}~€~€€€€‚€~}~€~€€}€€~€~~€~€~€~€~~€€~€~~}~~€€€~}~€~€~€€~€~~€~€€€~€~~~~€~~€~~~~~€~€‚~€~€~~~~~€~€}€~€~€~~~~~€€~€~~~~€€€~€~~}€~‚~€~~~€€€~€~~~€~€~€~€€~}~~€~€~€€}€~~€~~€~€€€€~€~}€~~~€}€~€€}€~€€~~€}€~~~€€~€€~€€~€~€~€~~}€~€~€~€~~€}€€~~€~~~€~~€~€€~‚€~~~€~€}€~~~~€~~€€~€~€~€€~€~€€}€~~‚}€~€~€~€~~~€~~€~~€~€~€}€~~‚~€~€~€€~‚~€~~~~€~~€~~}€€€}€~€€~€~€~~~~~€~~~~€~}€~~~€~~€€~€~~~€~}€~€€~€~~~€~€~~€~~~€€~€~~€~€€~€~}€~~~€~€€~€~€~€€~€~€~~~€}€€~~€~~~€‚€€~€~€~~~~~€}€}€~€~~€€€~€~~€€~~€~€€}~€}‚€~~€~€~€~€}~~€~€~€~~~~€~€~~‚€€}~~€~~}€~€€€~~€~~~€€€~~€~€~€€~€~€~€€~~~~~€~~€~~~€~~€~€~€~€€~~~~~€€€€~~~€~€€}€~€}€€}€~€~~~€}~~}€~€~~~€~€~€~€~€}~~€~€~~~€~~€~€~€€€€~€~}}}€~~€~~€}€~€~~€~~€~€~€€}€~}€~~€~€€€€~~~€~~€~€}}~€~~~€€~~~~€}€~}~}€~€~€~~€~€€€€€€€~~€~€~~~~~~€€}€}‚~}~~€€€€~~~€~~€~~€~~€}~€€€€~~€~€~€~€}€~~€‚~€~€~€~€~€€€~~~€~~€€~€€~~~~~€~€€€~~€~~~€~€€~€~~~€~€~~}~€~~€~€~€€‚~~~€~€~€€}€€~‚~€~€~~€~€~€€~€~~~~€€€}}€~~}€~€‚~€~€~€~€~€}€}€~~~~€~€}€~€~€~~€~€~€€~~€~~€~€€~~~€~€€€€~~~~€€~~~€~€~€~~€€~~€~€~~€~€€‚~}}€~€~€~~€~€~€~€€}€~~~€~€~€€€}€~~€~~~~€~€~€~€~€~€~€‚}€~~~~€~€~€~€~}€}€~€~€~€€}~~~~€€‚~€~~~€~}€~€~€€~€~}~~€~€~‚€€~~€~~~€}~€‚~~~}€~~€~~~~€}€€€€~~~€~€€~€~€}€€€~~~€}€~€}€~€}€€~~~~€~€€~}~~~~~€€€~~~€~€‚~‚}€~€‚}€~~~~€~~~€}€~€}~€€~~€‚~€€}€~~~~~€€€~€~~~€~€~€}~}€~€~€~~€~~~€}~~€~€€~€~~€~€~}~~€€€~}€€~€~€€~€~€€€€~~€~~€~‚€~~~~~~€~€~€~€~‚~€~€€€~€~~€~€€€~€~~}€€~€~~~€€}€~€~€~~€~~~€~€~~€~€~€}€~€}€}~~~€~€~€~€€~€}€~€€€~€~~~€€~€~~€€}€}~~€~€~~~}~€~~€~€~~~€€~€~€~}}~€}€~€}€~€~~~€€}€~€~€~~~~€~€~~~€~€~‚€}€~~€~€~~}~~€€}€€~€€~}~~~~~~€~€€~€}€~~}~~~€}€~}€€~~~}}€~€€~€~~~~€€‚~€~~~~~~€}€€‚~€~~~€~€~€~~~€~~~~€~€~~€~€~€€~€~}€~€€€~~~€~€~€}~€~€€}€}€~~~€~}~~€~€€€~}~~€~€~€~~€€~~€~~€~~€~€‚~~~€~€~€€€€~~~€~€€~€€}€€~€~~€~~€~€~€~~~}~}€~€€€~€}~~~~€~€~~€}~~~~‚€~€~~€€~~€~}~€€€~€~€~€~€}€~~€~€}~~€~€~€~~}€}~~€€€~}€~~€~~€}~~€~~~~€~~€}~€}€~€€~€~€~€€~€}€€~€~€~€~~€~€}~~~€~€€~~€}€€~€€~€~~€~€€~€~€~€~€~~~~}€~}€~€€~€~€~~~~~€~€~}~€~~~‚~€~~€~~€~~€€}€~€~€€~€~€~~€~~€~~}€€~~€~~~€~€~~~€~€}€~€~€~€€~~~~€€€~~€~~~‚~€~€~~~~€~‚€€~€€~€}€~€€}~~€€~€~~~~~€~€~€}~~~~€~€€~€}~€~~€€~~}~~~€~€}€€~€~€~~€~€~€€~€~€}€~~~€~€€€~€~~~~~€}€~€€~€}~€~~€€~€~~~~€~€€€€}~~~~~€~€~€€~€~~€}~}€~~€~€}€~€~~‚€}~~€~‚€~€~~€‚~~€}}€}~~~~~€}~~~~~€~€€€~€~~~€~~€}€€}€~€~€}~€~~‚€~~€€}~€~~€€€~~~€~€~€~€~€}~€~~~~€}€~€~~~€~€}€~~}~€€~}€€~€€~€€}€~~€~~€~~€~€~~€~€‚~€~~~€~€€~€€}€~€€}~}€~€}~~~€~€€~~~€}~€~€~€}€~€~€~~€€~€~~€€€~~€~€~~~~~€~€~€~~€~€€€}~€~€}€~~€€€~€~~~~~‚~€‚}~€~}~~}€~~€€€€‚~€}€~€~€~€~~€€€€~€~€~~}~~~€~~}~~~€~€€€}€~€~~~~~€~€€‚~~€~€~€~~€}€}€~}€~}€~€~~€~~~~~~€~~€~~€~€€~€€}~}~~~€€€€~€~€~€~~€~~€~€€~}€}~}~€~€~€}€€~€€~~€~€~€~€~€~}~~€~€~~~€~~~€|€~€}€€}€~€}~€~~€€~~€~}~~€}~€€~€}~~€€}€€}€}€€~‚~€~~~~~‚€~€~~~€‚~~€~€€€~€~~~~€~€€}‚~~€~€~~~}~‚€€~€~~~~€}~~€€}~€~€€~€€~€~€~€~~€~~€~~}~€€~}€~€€€~~~~~}€€}€~~~‚€~~~~€~€~€€~~~~~€}€~€~€~€~~€~~€€~~}€€~€}€~}€‚~‚~€~€~€}€~€€€}€}€~€~~€~~€~€~€~~~€~€~€€}€~~€~}€~€€€€~€~~€~€}~‚~€~~€~~€€}~€}€}~~€~€€€~€~~‚€~‚~~€€~~€~~~€~€€€~~€€}€€~€~~~€~€€~~}~~~~~€~€}€}~~€~€~€~€~€€~€~€~~€~€€~~€~~~~€~}~€~}€~€~~€~€€~~€~€~~~€~€€~€~‚~}€€~}~~~€~€~€~~}€}~~~€€~€~~~€~€~€~~€~}~€}~}€}~€}~~~~~€~€€‚~€~€€~~~€~€€}€~€~€~~~€~€~€€~€~~~€~€~€€~~€~~€}€€‚€€}€~~~~~€~~€€~~€~~}€~~€}€~€€~€~~~€~€€~€~€€~€}€‚~~€€‚~€~~~€~€€~€€~€~€~‚~€~~€~€€€~}~~€~}}~€~€~€}~}~€€€}~~}~}~€~~€~~€}€~€~~~~~€~‚~~~€~€~~€~~~€~~€}~€€}‚€~~‚‚~~€‚}€€~€~~€~€€~~~€~€~€}€~€~€}~~~}~€~€~€~€~~}‚€~€~}}~~~~~~€~€~}~‚}~€~€~€~~€~€~~~€~~€~€}~~€‚}€}€~€~€~€€€€}~~~€‚~~€}€€~€€~€~~~€€~€~€~~€‚~~€}€~€~€~~€~€~}~~€~€~€}~~€€~€~~~€~€€~~€~~~~€€~€~€~~€~~~€~€~€}~~€€€~}}€€~~~~€~€€~~~~€}~‚€€€~€}€~~~~€~€€~€~€~}€~€~€}€~~€~~€~~€€~€}€~~~€~~€~€€€€~~€~~~~€}~~€€~€~€~€~€~€~€}€~€~€~€~}~€~€}~€~€~€~~~~€~€~~€~€~~~~€}€}€~€}}~~~‚~~~€~€€~€}€~€}€~€~€~~~~~€€~€~€}€€}~~~~~€€~~~~‚}€~€~€€~€€€~}~~}~€~€~~}€~~~~€€€~€~~€~€~€}~€~€~~€€€~€~~~€~€€~€~~€~~€€}~}€~€€~~€~~€~~€~~€~€~€~€~~€~~~~~€~~~€~€~€~~€€}‚€~€€~~~}€~‚€~~€~€~€€€~€~€~€~€~€~€~€~~~€€‚~€}~~€~€}~€}€€‚~€~~}€€~~€€€~~~€~€€~€}~€€}€~‚~€~€~~€~€€€~~~€~}~€~€€~~€€~‚~~~~€~€~€}~~~~€~€}€~~~}€~~€~€~~~€€}€€~€€~~}~~€}~~€‚~~€~€~~~~~€€‚~€~€~~~~~€~€~~~}€~~€}€~€€~€€~€~€~~~~€€€€~~~~€~‚~}~}~~€~€€~~~~€~€€€€~€~‚~~}‚~~~€‚}€}€~€~€~€~~~~€~€~~€~€~€~€~€~€€‚~€}~~€~€€€~€~~~€~‚€€~~€~€~€€~~~~~€~€~€~€~€~~~€€~€~~~~~~€~~€}€~€~~~€}€~~~‚€€€~~~€~€€€}~~€~~€€€~€~~~€€~€~€~}€€€~€~€~~€~€~~~€~€}€~~~~€~~€€~~~~€~€~€€~~~~~~~€~€~~~}€~€€~€~~€~€~}‚€~~}€€}€~~‚€~~~€}€~~~€~€~€€€~}€~~~€€~~€~€}€€~€~€~~€~€~~~~€~€€€~~€~€~€~€~~~~€€~~€~~~~€€€~~€~€}€~~€}€~~~€~€~€}~~€~€~~€~}€}~€~€~~€~~~}€~~~€~€€~€~~~€€€€~~€~~‚€~~~€~}~~~~€€~}€~~€}€~€€~€~~€~~€~~€~€€‚~}€€}€~~€€€~~€~~€~€~‚~€~€~€~~~}~€~€€€}€~€€}~‚€€€~~~~€~€€}~~~~€€}€}}€~€~€~~~~€~€~€~€~}~~€~~€€~}€~€~~€€~~€€~}~~€€~~~~€~€‚}€€}€~€~€~~~€~€€~}€~}~€€~~~~€~€€~€~~~€~~€€~~~~€~€€~€~~€~~€€~~€~~€€€~~~~€€~€~€~€~€~€}€~}€~~~€€~~€~~€~€~~~€‚~~€~€~€€~€~€}€~~€~€€€~€~~€}}~€~‚}~~~€~€€€€~€~€~€~~~~€~€€~~~€~~€~€}€€}€€~€~€~€~€€~€~~€~€€~€~~€~€~~~~~€€}€~}€~~€~~~}~€~€~€~~~€~~€~€~~€€~€}~}€€}€~€€}€~~€}}~€~€€~~}~€~€~€}€~~~€~~€~~€~~€€~~€~~~€~€€~~€~~~€€~€~~~€~€~€~~~€€€~€~~€~€€~€~~~€~€€~~€~~~€~~‚~~€~€~€~~€~~‚~€~€€~}~€}€~~~€‚}~~}~~€~€€}€~~€~€€~€~~€~~€~~€~~€~€€€~~€~€~~‚}€~~€}~~~€}€~€~~~~€}€~~}€~€}€~~€}€€}~~~€~}€~€€~€~€~€}€~€}€~€~€~€~‚~~€~€~€~~~~€~~€€€~€~€~~€~}~€~€~~€~€~~~€~~€~€~€~~~~€~~€€~€~€~‚€€~€~~~~€€€~€~~~€~€~€~~~~~~€€€€€~€~~~€~€‚~~€~€€~€~€}‚~€~~‚€~~€~~~~€}€€~€~~€~~€~€~~€€~€}~~~~€€~€~~~€~‚~€€€~€~€~€~~€~~~€€€~€~€~}}€€~€~~}~€~~€‚}€}€~€}€~~~‚~~€}€€~€}€~~€~~~~~~}€}~~€~~€~€~~~€}~€€~€~€~~~€}~~€}€~~~€‚}€~~€~€~€~~~€~~~~~~~€€~€~~~€~€}€€}€~€~~~}~~~~~‚€~€~€~~~€~€~€~~~~}€}~€~~€€}€~~~}€~€€~€}~€~€}€~~~€}€€~€~€~~‚€~€~}€~~€€‚~€}~~€~‚€€~€~~~€~~€~~~€~~~€~€€€~€~‚~~€~€}€€~~€}€~~}~€€}~~~€€~€~~~€}€~€€~€~€~~~~€€~~€~~}€€€~~€~€~€}€~}€~€~€}€€}€€~€€~~~€~‚€€~~}€~~~~~~~€~€~€~~€~€€€~€~€~~~€}}~~~~€€~€}€~€}€~~~€~€~€€~~~~~€~€~€€~€~~€}€€}€€~€~~€}€€~}€~~~~}~€~~€~~€~€}~}€€}€~~€~€~€~~€}~~€~€~~€}€~€~}€~~}€~}~~}~‚~€~€}€~}€~€}}}~€~€€~~€~~~€~€€~€~~}€~€€€€~€~~~}€~€~€~~~€~€€€~€~~~€~~€}€€~}~€~}€~~~~~€}€~€€~~~€€€~€~~}~€€}€€~€€~€~~~~~€€€€}€~€~~‚€€€~€~~~~€€€~€~€~~€~€~€€~€~€}€~~~~~~€€}€~€~€}~~€~€~}€~€€€~}€€~~€€~€~€~€~€}~~€‚~~~~€}€~€€‚~}~~€~~€€~€}€~€€€}~€~€}€~€€~€~€€~€~~~~€~€‚~€~~€€~€€~~€€~€~~~€€€€~€~~€€€~~}€€~€~€~€~}€~~~~~~€€~~~~~€€~€~€}}~€~€~€~~€}€~~~€}€~€€~€~€~~~€}€€~€~~~~~€€~}~}~€€~€}€€~€€}€~€~~~€~~€~}}€~~}~~~€€~€}~~€~€~€€€~€~~€~~€~~€‚~~}€~~€€‚~€~~~€€~€~~~€€€€~‚}~~€~~€~€~€}~€~~}~€~€~~€~€€€~~}~~~€€~~€~~~‚€€~~€~€€~€€~~€€~€~~€}€~€~€~}€~~€~€~~€~€}€~‚€~~~~€~€~~}~€€~€}€~~}€~~€~€~~€}€~€€~€~€~~~~€~~}}€€~€~~~~~~€~€~€~~€~€€€}~}€~‚€~~€~€€}€€}€~€€~€~~~€~~~€€~~~~~~€~~€~€}€~~~‚~~€~€€€€~~~€~~€~~~€€}€~€~€€~€~~€~€~~~€€}~€~€}€~~€€‚~€~~~€~‚€€~€~€~~~~€~€~~~~~€~€~}€~€~}~€~€€€~€~€~~~€€}€~~€}~€~}€~€~~~‚~~~~€}€€~€~€~~~~~€€~€~~€~€~}~~~~€}~‚~€~~~€~€~~~~~€~€~€~~~€~~~€}€€~€~~€~€€~~~€~€€~€~~€~~€~~~€€~€~~~~€€~€~~€~€~}€~~€~€~€~€~~~€}€~~~~€€€~€~~~~€~€~~}}€‚}€€}€€€~~~~€~~~€~~€~~€~€~€}€€}€~~~€~€~~~~~~€€~€~~~€€€~~~~~~€~~€~€~€~~~}}~€~€~€€~~€~€~€~€}~€}~~~~~€~~€~€~€}~€€~~€~~€}~€~~~€~€€~~~~€~€~}€~~~‚€€€~€~€€~€}~~€}€~€~}€~~~~~~‚~}€~€~€~~~~€€~€}~~€€€€~€~~~€€~~~~~~€}€€~~€~~}€~€€€€~~€~€~€€‚~€~~~~~€}€~€~~~~€€~€~~€~€€~€~~~~€€~~}€~~~€~~€~~~~~€€€~~~~~}€€}€~€€~€~‚~€}€€~€~€~~~€~€}~~~€‚~€‚}€~€}~~~€~~€€~~€~~}€}~€€€~}€~~~€~€€}}~€}€€~€}€~~€~€~€~€~}€€~~}~€~~€}~€~€~}€}€~~~}~~€~€~~}~~€€‚~~€~~€€~~~~}€~€~~~~€}€~€€~~€~‚~~~~}€€~€~~€}~~€}€~~~€€~€€~~}€~}~€~€~€~~}€~€€€}€~~€€~‚~~~‚~€}€€~€~~~~~~€€€€€~€~~€~€€~€~€~€}~€~€€~€~~€~~~‚~€~~€€~€~~~€}~€€~€}€~~€~~~€€~}€}}€~€~€~€}€~€~€~~~}€~€€€~€~~~€~€}€~~‚~~€}€€}€€~~~€}€~€€€~€}€~~~€~~~~~€€~€~€~~~}€~€~€€~~~~~~~€€~~€~~€~€~}€~€€~€~~~€€~€~~€~€~‚€~~€}€~~~€~€€€~€~€€}€~€~~€~€€~€~~~€€~~~~~€}€~~€~‚~}~}~~€€~€~~~~€€~‚€€~~€~~€}€~~}~~}€~~~~€~€€€~€~€‚~€~}€€}€€~€~~€~€~€~~‚~~~~€~~‚€€~€~€}€}€‚~€}€€€€€~~~~~~}‚~~}~}~~€~€}~}~~~€~€€~€~~~€}€~~€~~€~€~~~~€~€}~~€~€€~}€}€~€~€~~~€~€~~€~€~€€€€}€~~~€~€€~€~~€~€‚~€~€‚~€}€~~~~~~€~€}€~€~~}~€~~~€~€}~€~~€~€~€€}€~}€~€}~}~€‚}€}€~€~~}~~€~~~€~€~~}~€€~~€~~€}€€}~}€~~}}€~}€}~€}€€~€€~~~~~~€~€€}~~~€~€~€€~~€€~~€~€}~~€}€€~€~~€~~€~€~~}€~€~€€€€~€~€~~}€~€€~~~‚€~€~€~€~€~€~~~~~~€€}€€~‚€€~~~€}€~‚~}€~~~~€€€~€~~}€€€~€~~€~~~€}€}€‚~€~€~~€~€~~€~~€~€~€~~~€~~~€€}~€€~€~~€}€~~€~€~€~~}€~€~€~~€~€~€€~€€~€~}€~~~~~€~€€~~}~~€~€€€~€~~€~€€€~€}€~€~€~~€~€€€~~~~€~~€€€~~€~~~~~€~~~€€~~€}~~€~€€€~~€~~€€~~~~~€~}€}€}€~€€~€}€}~€}~~}~~~‚€~€~€}€}~€€€~}€}~€~€€~€~~~€}€~}€~€~€~€~~~€~~~€€€~~€~}€}€€€~€~~€~€~€€~€~€~€~€~~~€~€~~}€~€€€}~€}€}€~‚€€~‚€€~~~~€~€~~‚~€~€~~€~~€~€~~}€~€~€~~~~€€~~€~~€~€€~~~~€€~~€~~‚€€€~~~~€~€~€~~~€~€€€~~~€~€€~€}~€~€~€~€~€€€~}~~~~‚€€€~~€~€~~€~€~~€~€~€~~€~~€€~€~~~€~€€~€~€~~~~€€}}€~€~~€€~~~~€}€~€}€~€€~~~€}~€~~€~~€~~€€}€~~€~€~~~~‚€€~€~~€~€~€~€~€~€~€~€}€~~~€~€€€~€~~€~~~€~€€~€~~€}€~€~~€~€€}~€~€}€}~~~€€}~~€}€}€€~€}€~~€~€~~~€~~€~€~€€~€}~€~€~€~~€~€~€~‚~~~~}~€€~~~~~€€€~€~~€~€€~~~~€~~}‚~~€}€~€€€~€}~~€~€€~~€~~‚~~€~€€~€~€~€~~~~€~€~~€~~~€~€}€€}‚~€~~~~~€~€€€‚~€~~~~€€€~€~~~~~~~€}€~€~€}€~~~‚~€~€~€~~€~€~€€€~~€~~~€~€€}€~~€~€€~€~~}‚€€€~€~€}€~€}€~~€€~~~~€}€~~~€}~€€~}€~€€€~€}€~€~€~€~€~~~€~~€~~~€‚€~~~€~€~~€€~‚€~~~~€}€€~~~~€~~~€~€€~€~€~€~€~€~~€€~€}€~~~}~~‚€‚~€~€~~€~€}€€~€~€~‚€~~~~€€~€~~~€~€~}€~€~~~€~€}€€~€€~€}€~~~‚~~€}~€~€}€~~~€~€~~~€~€€€€€‚~€~€~€~~€~~~€~€~~~€}€~€€~~~€}€~€~~~~€~~~~~€€‚~~€~€~~€~€~€~€~‚€€€€~€~~€~€~€~}~€~€€~€~€€}€~~~~€~€€~~€~~~~€~€€}€~€~€~~~~~€€~~€~~€€€‚~€~~€~€€~~€~~~~€~~€~~~}€~€€€~€~€~€~€~€€~€~€}€~€~€~~~~€€~~~~€~€€~~~€~€€~~€}€€~€~€~€€~~€~~~~~€~€€~~€~~~€‚~€~~€~€€€€~€~~€~}€~€€}€€~}€~}~~€}}€€~}~€~€€€~€~€~~~€~€~~~~€~€~~}~€€€~~~€~€~~~€€~~€~~€~~€€~€~~~~~€~}~€~~€€~€~€}€~€€€~~€}€~€}€~~€€~€~~~~€~€€€€~€~€~~€€~€}€~~}€€~€~€~€}~~~~€~~€~€~€€€~}€~~~€~€€~~€~€~}~~~€€~~~€}€€}€~~€€~~€~}€~€€€~~}€€~~~~‚~€}€~€€~€~~}€~‚~€~~€€€~€~~€~~€€~}~€~~€~~~€~€~€~€~€~€~~}~€€‚~€}€€}~‚~‚}~€~€~€~~~~€~€€€~€~~€~‚€~~~~€~€~€€~€€€€~€~€~€~€~€}€~€~}€~~€}€~€€~€~€~€€€€~~~~~€}€~€~€~}€~‚€€~€~~€~€~~€~€€€~€~~~€~€€~~€€}€€~}€~~~~€}€}~~€~~€€€‚~€~}‚~~}€~~€}~}€€~€~€~€~€€€~€}~~€~€~€~~}€~€~€€~€~€~~~€~~€€~€€}€~€}~~‚~€~€}~€}€~}€~~€~~€€€~}~~€~€~~}€~€~€~€~€€~~€~€€~€€}€}€~€~~~€~~€€~€~~‚~~€€€€~~~€~~€~€}~€~~~~€~€€}€~€~~€~€€~€€~€~€~~~~~}~‚€~€~~~~€€~€~€~€~~€~€€~€~~}€~€€€~€~~}€~‚~~€~€~€€~~€~€€€~~~€~~€~}~€~~€}~~€~~€€€~€~}€~‚€~~~~€~€~€}€€~€~~~~~€~~€€~~~€~€€~€~~}€€}~‚~~~‚€~€~€~~~~~~€~€}~~€~~€~€~~~€€€~~~€}€~€~€€~€~~~~€~~~}~€€}}€}~€~~‚~~€}€€~€~~~~€~~€~~€~~€€€€‚~~~~~~~~€€~€~€~~~‚€}~~€~}~€}€€}~~~~~€}€€~€~~~~~€~~€~~~~€~€~€€~~~~~€€€~~€~~€€€€~€~~}~€~€~€~}~€~€}€~€€~€~~‚~}€~€~€€€~€~~€~€€~~€~~€~€}€}€~€}€~~~~€}}€~~~~€~€€~€~€~}€€~€~€~~~€}€}€~€€~}~~€~€€~~~€~~€€~€~~~~€~~~€~~€~~~~~€~€}~€€€€}€~~~€~€€}€€}€€~~~~€~€~~~€~€}€~€~€~~~€~~€~‚~~~~€~€~€€~€€~€~€~~€}€~€~~~€~€~€€€~€}€~~~€€~€~~€~€€€~€~~€~~~}~~€}€~}€~€~€~~~€~~}€~€€€€~~~€~€€~€~~€~€~€~€€~€~~€~~~€~~€~~€€€~€~~~€~€€€~€~~€~€~€~€~€~€~€~~‚~€~~~~€~~€€~€}€}~‚€~€€€~~}€~~€~‚€€~~€~€~€~€€€€~€~~€€€~~}€€€~~~}€€~~~~€€~~€~€}€~~€~~~‚~~€~~~~€~€~€}€~€~~~~€€~~~~€~€~~~~€~€}~€~€~€€~€~}€~€~€€€~~€~~€€‚~€~€€~~€~~‚€~€~€~~€~‚~~€~€~}€~€~~‚~~‚~~~~~€~~€€~~€~‚€~~}€~~€}~€~~~~€€€~~€~}€~€~€~€~~‚}€~~€€€~}~~€~~€‚~}~€~~‚€~~€~€~~€~€~~€~€~€~~€~€~€€}~~~€~‚~~€}€€~~€~€~~~€}€~~€~~€~€~€}€€~‚€€~€~~~~€€~€~€~~€€~€~€~~~~~~€~~~€~~}~€~€€~~€~~€~€~~~€€€€~€~~€€~€~~~€‚~~€~~€}€~~€~€~€~~€€€€~€€~€}€}~}€~~~€~~€~}€~~~~}€~€~~€~~€~€~€~~€~€~€~~~~€€€}€~~}€~€€€~€~~€~€~~~~€~~~~€~€~€~€~€€€~~€~€€€}~}~~~~~~€€~€~~~~~€~~€~€~~€~~~€~€€€€~€~~€~~‚~€€€~€~€~~~~€€}~€~€~€~€~€~~€~~€~}‚€~~~€€~€~~~~}€~€~~~€~€€€€}~€~}~€~~~€€~€€€~~~~~€‚~€~€€~€}€~€€€€~€~}€}€€€~€~~~~€~~~~€~€~~€~€~~~€~€€~€~€~~~~€}€~~€~~~€}€~~~€}~€~€~€~€~~€~€€~€~~€~€€€‚}€~€€}€€~€~€~~~~€~€}€€~€~€~‚€~~€~€~‚€~~~~€}‚€€~€~~~€~~€€~€~~€€~~‚€}€~€~€€€€~€~~}~€~€~~~‚~€€~~€~~~€€~€~~~~~€~~~}~€~~€€~~€~~€~€€€~~~€~€~€~~~~~~~~€~€~€~~}€~€€€}€~€~€}€~€~€~~~~~€€€~~~€~€€€~~€~~~~€~~€}€~€~€€~€~€~€~~€~€}~€~~€~€~~€€€~~€€~€}€~€~~~€€€~€~~~€~€~~€~€€}€}~‚€€€~€~€~€~€€~~€€~€~€~~€}€~~€~€}€€}€~~~~~€~€€~~~~~~~€~~~~€€~€€~€~€~}€‚~€€}€€~€~~€~}€~€€€€~~€~€€€~~€~€€~€}€~~~~}€~€~~~~~~€~€~€~~€~€}€~€~€}€€~€€~€~€~~€~€€€€~€~~~€€€~€~~€~€~}~~€~€€~~€~~€€€€~€~~~€}€~~~€~€~€~~~~€~~}~~~~€~€€€}~~€~€}€~€~€~‚}€~~€~‚€€~~~€~€€}€~€€€~€~~€~€€~~€}€}€€}}€~~€~~€~~~‚€~~€~€€~€~~€~€~€€~€€}€~€~~€€~€~€~}€€~~€~€~€~~€~€~~€~€~€~€}~~€~~€€~~€€~€~~~€}€€€}€~~~~~~~‚€~~~~€~€€~}~€~€~€€~€~~}~€€~€~~~€~€€}~~€€}€~€}€€~~€~~~}€~~€€~~}~€€~€~~~€~~€€}€€}~~~€€€~€~~~€~€€€€~}~€€}€~}€€}€~}‚€~~€€~€~~€~~‚~}€~€€}€€~~~~~€€~€€~€~€}€~~~‚€~~‚}~€€~~€~~€~~€€~€~~€~€€}€~€~€~€~~~~~€}€~‚€~€~~~€~€~~€~‚~~€~€~€€~€~~€~~~€~€~€€}€~€~}~€}€~~~}€~€~}€~~€}€~~€}€~€~€~~~~€}€€~€~~€~€~€~~}~~€~€~~€~~}€€~€~~~~~€€~~€~~‚~~~€}~€~€}~~€}~€€~€~~~~€}€€~€~€~€}€€~€~}€~€~~‚‚~€}€}~€~€€}~~€}€€~~}~€‚}€~~€€€€€~€~~~€~€~€€~€~~€~€~€~~€~€~€~~~€€~~~€~~€€‚~~~~€€€€~€~‚~~~~~€}€€}~€€~~~€~€~€€~€€~~~~€~€}€€}‚€€~€}~~€~~€€€~~‚~~~~€~€}€~€‚~~€}~€€€€€~}€~€€~~~€~€€~~~~€~€€~€€~€~€€}€~€~~~€‚~€~€~€~€€~€~€~~~€~~~~€~€~€~~~~€€~~€}~}~~~€€~€}€~~}~€~~€~~€~~€€~€~€~~~€~€€~~~~€}€€‚~}€~€~~~~~€~~~€}€~€}€~~€}~~~€€~€~€~~€~~€€€~€~~}€~€~~}}~€~~~€~€}€~~}}~€€}‚€~~~~€~~~€~~€€~}€€~€€}€~~€~€€~€~€~~‚~€~~~€€~~€~~}€~€€~€~~~€~~~€€~~€~}€~€~~~~‚~~€~€~€€‚~€}~~€~~€~€€~~~€}€€~€€~}~~€~}~~€~€~€€~‚€~€~~€~€~€~€~~€~€€~~€}€~€~~~}~€~€~€€~€~~~€~€€~€€~€~€~€~€~~€~~~~€}~€~€}~€~}€‚~€~€}‚€~€~~‚~~~€€~‚}~~~€€€}~}€~€€~€~€~~~~€~€€~€~~€~€~€~~~€}‚€}~€}€}€}€}~~~€~~€€~~~€~‚€~~~€~€€€~€~€~€~€~€}~€€~€~~~~€~€~€€~€}€~€€}€}€~~~€€~€}~~€~€~€~~€~€€}~€~€~~€~~€€€~€}~~€~€~€~~~€€~€~~~€~€€~€€}€~€~€~~€~€~€~~~€~€~€~€}€~~€~€~€€}€~€~€}€~~~€~€~~~~€~}€€~€~€~~}~€€~~~~€~€~€~€~~€~€€~€~€~€~€~~€~‚€€€~~~~€~€~}~€~€}€~~~€~~€}€}€~~€~~~€€€‚€~€~~~€~~€~€~€~€€~€~~~€~~~€}€~€~‚€}€}€~€~}~~‚~€€~€~~~€€€~€~}~}~€~}€€~€€~€~~~€~~€}€€€€~€~~~~€€€~}~~€~€~€€~€~€~~~~€~€~~}~~~€}€~€~€}}~€~€~€~~~€~€€‚€~€~~~€~€~~€€}€}€~~~€€~~~}€~€~€~~~€€~~~€~€~€€~~~€}~€€€~}~~~€€€~~~~€~€~€}~€~~~}~€€~€~€~~€}€€€€~€~}€~€€~€~~€~€~€~~}~}€~~€~€~€€€~~}€~€€~€€}€~€~€~~~€~€~€~~~~~€}~€~€}‚€~~~~~€~€~€}€~€~~~€~€~€€}~~~€~~€~‚~~€}€~~€~€~~€~~€~€}~€~€€€~€~~~€~€~€~~€~€€~€~~~€}€€€~€~~‚~~‚~€~€~€€~€~~~€~~€€}€~€~€~€~~€€}€~~€~€~€~€~~€~~€€~~~~~€~€~€~€~€€~€~€~~€~~~€~€€~€}€~€~~€~€~~~€}€~€~€~€~€~€~€~€€~~~~~~~~€}€~€~€}€~~~€}€}€~~~€~‚€€~€~~~~€~€€~€~~~€~€€~~~€€~€€~€~€€~~~€€€~€~~~€~~€~€€~~~~~€~~€€€€~~}~€€€€~€~~}€}€~€~‚~~€}~€}~€€~~}~€~€~~€€~€~~~~~€~€~€~~~}~€~€€}€~~€‚}€~€€~~~€~€€~€}~~€~€€}€€~€~€~€~~~€€~€~€}~€~€~~~~€~€€~~~~€€€~€~~€€€€~€~~€€~€~~~€€~€~~€~~}~~}~€}€€€~~~€}€€~€~€€~€€~~€~€~€€~~~€}~€}€€€€~~€~~€~€€€~€~}~€~€}~~€~~~‚~~€€~~~€€}€~€~~€~€~~€~~€}~~€~€~€~€~€}€€~€€}€~€~~‚‚~€~€~€~€~~~€~~€€~~€~~€€€}€~~}~€~~~€~€~~€~€€€~~~~‚€€~~~€~~~€~~€€€~€~~~€~~€~~€~~€~~€~€~~~€~€~~~€€€~~~€~~€~€~€€~~~€~€}€~€~~~€}€~€€~~€~~~~}~‚€€€~€~~€~€~€}€~€~€~~€~€~€€€€~~~~~~€~~~€}€€}€~€~~}~~€~€€€~€~~~€~‚~€~~~~€~€~~€~€~€~}€~€}€€~~~~~€}€€~€~€~€~€~€€~€~~~€~€€~~€~€~}~€~€€€~~€}~~€~}~~~~}~€~€€~~~€~€~€~~€}~€~~€~~~~€~€€€~~}€~€~€~‚~}~~€~€€~}~~€~€€~~€~~}~€~€~€~€~€~}€~€~~~~€~€~~~~}~€€~€~~~€‚~~~~}~‚€€€~~~~€~€€~~€€~€€~~€~€~€~€~~~€~€~~~}~€}€~€~€€€€~~~€~€€~~~€€~~~€€~€}€~~~€€~€~~~~}‚‚€~~€~€}€~€}€€~€~€~‚~~~€‚~€€}€~€~}€~€~€~~~€€~€€}€€~€~€~~~€€~€~€~~~}€€~€~~€~}~~€€~~~~€~€€~€}~~€~~~~€~€~€~€~€~}~~~€}€}€~~}‚€~~€~€~€€}~€~€~€€~~€~~€}€€€€€~€~~€~~€~~€~€€~€€}€~€~€~€~~~~€~~~}€~€€}€€~€~€~€~~~€}€~~~~~€~€~€~~€€~€~}~€~€~€€€~~€~~~~~~€}€~~€~}‚€~~€~~€€€~€~~}€~€~~~~€~€‚~}€~€€~~~€~~~~€}~€}~~€€~}€~~~~€~€}€}~~€~€~€~€~€~€~~~~€}€}€~}€€~~€~€~}€~~€~€€€}€~~~~€~€~€~€~€€}€~~€~€€‚~€~}€~€~}~~€~€~€~€~€€~€~€~€€€~€~~~€}€~€}~€~€~€€~‚}~€~€~}€~€€€~€~~€~€~}€~~€~€~€€~~€~~~~€€~€~€~~€€}€€}€€~€~€~~€}€~~~~€~~~€€~}€~~~~€~€}~€~~~~~}€~€~€~€€€~€~~~~~}~~~€~~€}}€~€€~€~~€~~€~~~€~~€~~~}€€}~~~€€~€~~~}€~~€€~~€}€~}€€}‚~~~~~€€~~€}~€~€~€~€~€~~}€~€€}€}€€€~~€~~~~€~€~€€~€~~~€€€~~~€~~€~€~€}~€~~€~€€€~~~€~~€€€~€~€~~}€~€€}~€~€~€€€~€~~€~€~~€~€~€€}}€~€~~€~~~€}€~€€~€~~}€~€€~€}}€‚}€~€}€€~€€~~~€€€~€~~€€~~€~€}~~€~€~~‚‚}€~€}~~€}€~€€€€}~~~€~€~€~~€~€€~}€€~€~~~€~€€€~€~~~€€~€~€€}€€}€~~~~~€}‚€€~€}~~‚~~~€~~€~‚~€}~~€~€€€~~~€~}€~€~~€~€€~€~€}€€}€~€~‚~€€~€}€~€€~~~~€~€~~‚~~€~~€}€€€€~~€}~€~€~€~€€~€~~~~~€}€€~€~€}‚~~~€}€}€}€~}~~€~€~~€~~~€~€€€~€}~€~€€~€~}€~~}~€~€~}€~€€~€}~€}~~€}~~~~~~~€~€~€}~~€~€~€€}€€~€~~€~€€€~€~€~~~~€~~~€~}€~~€‚~€}~~~€€~€€~~€~€}€€€‚~~€~~~‚€~~}€}€€~}~~€~€~~€~~€€~€~~€~~€~‚€€~~€~}}€€€€~}}~€~€~~~€~‚€€~~€~€€‚~~€~€~~}~~~€~~€~~€~€~€~~~€~~~~~~~~€~€~€~€~~~€~~~~€~~€€€~€€~€~€~€}€~~‚~~€~€~€~‚~~€‚}€~€~€~~~}€€~~€€€~€}~€~€~€}€~~€€}€~~~~‚~~~€~€€~€€‚~€}~~}€~€~~€~~€~~€~€€~€~€~~~€€€}}~~~€€~~~€~€~}~~€~€~€€}~€}‚€~~~~€€~~€~~~~~~€~~~~~€~€€~€~~€~€}~€~€}€}€€~€~€~€}~~€~~€~~€~~€~€€‚~€~€~€€€~€}€~€~€€~€~~€~~~€~~€~€~~}€~€€~€~~~€~~~~~~}€~€€~€~~~€~€}~€~€~€}~~€}€~€~~€~‚€~€~~€€€€~€}€~€~€€}€~€~‚€~~~~}€~€€€~€~~~€~€€€~~€}€~€€}€~~€}~€€~~~~€€~~€~~€~~€~~~~€~€€€~€~~€~€€€~}~~€~€~€€~€~€~‚~€~}~~~~€}€~€€~€~€~~€~€~‚~€~~~~~€~~€~€~~€€~}€~€€~€€€~€~€~€€€~~~€~~€~€€}~€}€~~~~~€~€}~€€‚~€~€~~~€~~€}~~~€}}~~‚~€€~}€~}€€}€~€~€€~~~€~€~~€}~€~€}€~€}€~~€~€€~}~~€~€~€€€€€~~~€~€€~€~~~€€€€~€~~~€~€‚}€€~}€~~~~€~€€€~€~~€~~~€‚~~~€~€}~€~€~€}€~‚~€~€~€~~~~‚}€~~~‚€~~€~€~€€~€~~€}~€€~~€~~€~€~€~~~€~~€~€~€}€~~€~€~~~}€€~€~}€~€~~~~~€~~~€€€€€~€~€~~~€€~~€~~~~€€€~~~€~€€}~~~~~~}€€~€~~€}€~€€~}€~~~~€~€€~~€~~€~€€~€€~€}€~‚€~€~}‚~~~€~€}~€~~~~€}~~€€€‚~~~~€~€€~€~€~€~€€~~€}€~~€‚~€~€~€}€~}~€~~€€€~€~~~~€~€}~~~~~€‚~€€~~}€€€€~€~~~€}€~€~€~~~€~€~€~~‚€~~€}~€€~€}€~€~}‚~~~€~€~€~‚€~€~~~~€~€€~~€~~€~€~€}~€€~~€~~~~‚~€~~€}}€€}€€}€~~~~€~€~€€€~€}€~~~€~~~€~€~~€~~~~}~€€€€~~~€~€€€~}~~~~~~€~€~}€~€}€~}€~€€~€~€~€~€}€€~}~€~€€~€€~~~~~€~€€~€~€~€~€€€€~€~~~€€€€~~~}~~€~€~€~€~~~€€~€~~~}€€~~€~€€~}€~~~‚€~~€~€}~~~€}€~€€€€~€~‚~€~~€~€~€~€~€€~~€~~€~~~€}€~€€€~€~~~€~€~~~~~}~€~€~€~€~€~€~€~~~~~€~€~~~€~€~~~~~~€~~€~€€}€~€~€€~~~~~€~€~€~~€€}€~~€~~€~€€~€~~€~‚€~€€~~€~€~€~}~‚~~€}€~€}~~~€~€€~€~~~€€~€}~€}~€~€~~~€~€€}}€~€}}~€~~~€~€€€}€~€}~€}€~€~~~€}€~~€}€~~~€~€~~~}~€~‚€~€}~~€~€~€€~€~€~€€~~~€~€}€€€~€~€~€~€€~€~~€~~€~}€~~€€~~€}€~~€~~€~~€}€€~€~~~~€€~~€~€~€€~~€~€€~€~~~~~€~~~~€~€~~€~~€€€€}€~~€~€€~€}~€}‚€€~~€~€~‚€€~~€~~€~€€€€~~~~~~~€~~~€~€~~~~€}~€~€€~€~€~~}€~~~€~~€€€~~~€~€€~~~€~‚~€€~€~€~‚€~~€~€€~~~~€}~~~‚~~€}€€~€~~~~€€~‚~€~~~€~€~€~~}€‚}€}€~€~€~~}€~€~~€€~€~€~~}€€~€~~~€~~€€~~~€~€€~€}€~€~~‚~~~€~€~€€~‚}€~€~€‚€€~€~~~€€€~€}~~~€~~€}~~€~~~€}€~€~€}~~€~€~€€€}€~~}~€}€}€}€€~€~€~~€€€~}}€~€~~€~~€~€~~}€~€€€~}€~€~€€}€~€~€€€~~~~~~~~~}€}€€~}€~~~€€~~€~~€€~~€~~€€~€~~~~€€~~~~~€~€€~~~‚~~€~€€~€€~~~~€~€€~}~~€~~€€‚~€}~€€~€~€}~€~€~€€~€}€~~~€~€~~€~~€~€}€~€}€€~~€~€‚}€~€~€}€~}€~€~€~€~€~~€€~€~€~~~~€~~~~~€€~€}~~€~€~€~€~€~€€~~~~‚~€€~€€~€~~~~€~€~€~€}~~€€}€~~€~~€}}€€~€}€~€~~€~€~€~€~~€~€€}~€~~€€‚~~€~€~€€~€~€~~~~€}€}€}€~~~€€~€~~~€~€~€~€}€~€~~€€€€~~~~}€~‚€~€~~~€~€€~€~}€~€€~€~~€~€~~€~€~€€~€~€~€}€€€~~€~€}~€}€€~€~}€€~‚}~€~€~€}}~~€€~}~€~€€~€~~€€}€~€€~€~€}€~~€~~~€~€€~~~~€~€€~€~~€~€~€€~€~€~€~€}~€~€€~€€}€~€~€~~~€€}~~~€€€‚~€~~~€~‚€€~€~~~€€€~€}~€~€€~~~~~~€€€~~~~€~€~€~€}€~€~€}‚€~~~}}~}}~€~€€~~€~}~€~€€~~€}€~~~€€}€~~~€€~€~€~~€~~€~€~~~€~~€€~€~~~~€€~~€~~‚€~€~€~~~‚~€‚~€~€~~€~‚~~€~€~‚€~~~~€~~~}€‚~~~€~~€€~~~€~~€}~€~‚€~~~}€~€€}~€€~~€~€~~~€~~~€~€~}~€€€~€~~€~€€€~}€~€~€~~€}€~€€~€}~~~€~€~~~~~~€~€~~€~~€€~€~~~€~€~~~€~~€€~~€~€~~€~~‚€€~€~€~~€€~€€~~}€~}€}€~~~}€~€}~€~~~€‚~€~~€€€}~€~€~€}€~€}~~~€}€€€~€~~€~€~~~~~€~~€~€~€~~~€~€~€~~€~~€€~€~€~~~~~~€‚~€~‚€€~~~~€~~€~€~~€~}€}€~~€~€~€€€~}~~~€~€€~€~€}€~€€~€~~~€~€~~~~€~€€€€}€~~€~€~€€}~~~€~€€~€~€~€~€€}€~~~€~€€~€~~€~€€€~€~}~~€~€~€€~~~~~€~€~‚€€~€~~~€€~~~}~€~€~~€~€}€€~€~}€~€€~}~~€~~~€€~€~€}~~€~€~€€€~~€~€~~€€~€~~~€~€€}€~}€€‚~€~~~€~€€€~~~~€~~€}€}€~~€~~~~€€~€~~~~‚€~~~€~~€€€~€~~€~~~€€~~€~€~~€}€€~~~~€}€}~~€}~~€€~€€‚~€~~€~€€€€€~}€}€€~€~~€}~€€~~~~€€~€€~~~~~~~€‚~~€€~€€}}~}€~€€€€€~~~€~€~}~}€~€~€~€}€€€€}€€~~€~€}~~}€~~~~€~~€}€~€€~€~€~~~~~€~~~~€}€€~€~€}€~€€~€~~~€~€€~€}‚}~~~€}€~}€~~€~~€~€~€€~€€~~}~~€~€~€~~€~~~}€~~€€~}~}€~€~~~~€~€~€}€}€€~}€~€~~~€€‚~€~€~€€~‚~~~€~}€~€~~~€€~€}~~~€~€€~€~~€~~€~€~€~~€~~€€~~€~}€~€~€‚~}~~€~€€€€~€~€~€~~~~€~€€~€€~€~€€}€~€~}~~~€}€€~€~~}€~€€€~€~~}€~€€€}€~~}~~€~€€€~€~€~~~€~€€€~€~~~€}€}€~~~€€}€~~€}~~€~~€~€~€~€€€~€~~€€€€€~€~€~€€~€~€€~€€~€~€~}~€~~€~~~€~€€~€~~€}~€€€~€~~~~€€~€~~}€~€~€~€~€~€‚~€~~€~€€‚~€}~}€~~~~€€€}~~}€~€~~~€~€~~€~€€~€€~€~€}€€~€~~~~€€€€‚~~~~€~~€€~~€~~€~€€~~€~€~€€~€~‚~~‚~€~€~€€~€~€}~~€~~‚€€€~~€~~~‚€~~€~~€€~€~€~€~€}€€}€~~€~~~€€€~~~~~€€€~€~~~€~€€€~€~~€~€€~€}€~~~€}~€~€€}€~~~€~~€}~~€€~~€~€~~€~~€}€€~~~~€~€~~€€~~~}€~~~€€€}€}~€~€~~~€~€~€~€~€~€}~~€~€}~€€€~€~~~~~~€€~€~€~~~~~€€~€~€~€~}€~€€~€€~€~~~€~€~€~‚€~~~~€~€~~~€~~€€€}€~€~€~€~~~~€€~€~~~~€~€~€~€~~~€~~~~‚}~~~€€~€~€~~€‚~€~~€€}€€}~~~€~€~€~~~‚~~€~€~€}€~€~~€~~€~~~~€~€}€€~€~€€}€~~€}}€€€€~€~€~€~~€~€€~€€~€~~}€~€€€~~~€€€~€~~~~~€}~€~€}€~€~~~~€~~€}€~~€~€€~~€~~~€€€~€~€~€€}€~~~~€~€€€~€~~€~~€‚~€~€€~€~€~~€€€€~~€~€~~€~~€~€~~~~€€~€~~€~€~€€~~~€~~~€€~€~€~~~€~€~~~~€~~€€€~}€~~€~€~€~€~}~~}€}~€~€~€€~€‚~~€€€€~~~€~€€~€}~€~€‚~€~~€}€~€~€~€~€~~~}€~~~~~€€~€}€~€}~~~€€~€}€~€}~~€}~€€~€~}~‚€~€~~€~}€}‚€~~€~~€~~€€~~~~}€~€~~€~€~~€~€~€€~€~~~€~~€~~~€~~€€~€~€~~€~~~€‚~€~€}€}‚}~€~€€~€}~€~~€€€€~€~~~€~€~€~~€~~€~~}}€~€~€~€€~}~€€~~€~~~~€~~~€}€~€~€~€~}€~€~€€€~~€~~~€~€}~~~€~€~€~€~€~€~~~€~€€€~€~~€~~€~~~€~€~€}€}~€}€~~~€€~€~~~~€~€~~€~~€€~~€}~|€~€}€}}~€~€}€~€~~‚€~~€€~€}€~~€€€€~~~€}€€~~€}€~€€~~~‚‚}~€€‚~€~€~€~€~~€~€€‚~~€~~~€}€~€~€~€€€~~€~~~€€~}€~~~~~€~€€€}€~~€‚~€~€~~€~~~~~€€€~€~~~€~‚~~€~€~€}€€~€~~€~€~€~~~~~~€~~€~€~~~~~~~~~‚€~~€~€~~€€€~€~~~€~~~€~€~€€~~€~€~€~€~~€}€~€~€€€~~~~~€€€~€~~€~€€~}€}€€~€~€~€€€~~~~€~€‚~~~~€~€€~~€~~€~€€~€~~€~€€~~~€~€€~€~€}€}~€~€€~€~~€~€€~}€~~€~€€~€~€~€~€~~~~€~€~€~}~~~~~€€€~~~€~~€~}€~~€€€~}€~~€~~~~~€€€~}~~€~‚~€~~€€}€~€~€~€€~}€~~€~~€€~€~€~}€~~€~€~€~~€~~€~~~~~€€€~€~~€~€~~€}~~€~€~€~€~€~~~€}€€~‚€~€}~~~€~~~€~~~~~€~€~~€~€€€~~€~~~€~~~€}€~~}~~~€€}€~~€}~€€€~€~~~€~€€€~€~~~~€~€~€~€~€~~~€}€€~€€~~€€€~€~€~€~€~€€~€~€~€}~~€}€}€~~~€~~€~€~€}~€~€€~~~~~~€~€€~€~€}€~€~€~~~€€€€~}€~~}€~~~~€€~€~€~€~€~~€€€~~~~€~€€€~}€€~~}€€~€}~€~~€€€~€~~~€~€€‚~~€~~€~€€~€~~~€€~€€~~€~€~~€~€€€}€~~~€€€~€~~~€~€€~~~€~€€~€~~~€~€€~€~~€~~€€~€~€~~€~~€~~~~‚~€~~€}~€€€~~~€€~€€~€~€~€~€~~€}€~€~~€~~~€€~~€~~~€~€€~€~€~€€}€~€~~€€€~€~€~}€~~€~~~~€~€~~~€~€€€~€~~~€€~€}}€~€€~€~}€~~€€~~€~~~€~€€€}}€~~}~~~€~€~~€€€}€~~~€~€~~~~~~}€~€~€~~~€~~€~€~‚€~~€~~~~~€~~~€~€}~~€}~€€€}~~€€~~~~~€~€~€€}€~~~~€~€~~~~€}€€~~~€~~€€€€~~~€~€€~€~~~€~€~€€€~€}~~€~€~~€~€~€~€€~~~~€~€}€~~~~~€}€€~~~€}}€€€~~€~€~€~~€~~~~‚}€€~€€~€~~€~~€€~~~€~€~~~~~}~€~€~~€~€€~€}€€€€€~€~~~€€~~~~€~~~~~€}€~~~€~€€€~€~€}€€~‚€~~~~€~€€~€~~~‚~~€~€}€~~}~€~€€~€~~~~€~~€€~~€~‚~€}}€€~€~€~~€~€€€~€~~~~~€~€~~€~€€€}~~€~€~€~‚~~~€~€}~€€€~~€~}€}~€~~~€~€~~€}~€€~€}~~€€~€€~~€}~~€~€€}€~~~€€~€~€~~€~}€~~€~~€€€€~~}€~€~€~~€~€~~}~€~€~€~~€~€}€~~€€~€~~~~€~~€€~~~€~~€~€€}€~~~€~~€~€€~~~~€~€€~€~~€~€~~~€~€}~~€~~€€~~‚‚~~~‚~}€~€~€~€~€}~~€~€€~€~€}€}€~€~~€~€€€~}€~~€~€~€~€~€~€€~€€~€~~€€~€~}~€~€~~~~€€~€}€~€}~~}€€~€}€‚~~€‚~€~€~€~~€~~€€€~€~~€~~}€~€}€€}~€~~}€~€~€€~€~€~€€~€€~€€~~€~~~€~€~~}~€~€~~€~€€€~~€~~~€~€€~€~~~€~‚}€~€€~€}~}~€}€~€~~€~~~~~~€€~€~~}~~€~€~€~~~€~€~€~~}€}€€~~~€~~€€~~}€}€~€}€}€~€~~~~€€~€~€~€~‚~€~€‚~€~~~€€€~€~~~}~~€}€~€~€~€~~€~€~€€}‚€~~~€~~~€}€~€}€}}€~€~‚~~~€~€€}€€€~€~~~~€€~~~€}~}~€€~€~~~€~€~€~~€~€~€}€~€~€~€€~~~€€~}~~€~~€~}€‚~€~~€~€~€€~~€~~€~}‚€~~~‚~~€~€}€~~€~€~€€}€~€~~€~~~€}€}~}€}~€~~~€~€‚€€~€~€~€€~‚€~~€€}~~~€€~€~~~~~€~~~€~~€~~~€~€€~~€~~~}€~€~€}€‚~€}€~~~~€€~~€~€}€€~€~~€€€~€~~€€~€}€~€~€~€~}€€~€~~~~€~€}€€€€}€~€~~~~€€~€~~~€~~~€~€€}~~~~€€}}€~€~€~~€~€€~€~}~~€~€}€~€}~~~€}€€~~~~€~~€~~€}€}€‚~€~~~~€~~~€~€€€~€~~€~€~€~}€€~~€~€~~€~€~~~€~€~~€~€€~€~~€~~~€}€€~€~€~€‚~~~€}€~€~‚~€€~€~~€~~‚€~€~~€€}€~~~€€}€~€~€}€~~€~}€}€€}~~~€~~€€€~€}€~~}€€€€€~~~~~€€~€}€~~€~~€}€~~~~~€€~~€~€€}~€}~€}~~€~~€‚€~~€~€~€~~~€‚~~}~}€€}€~~~€~~~~~~~~€~€€~€~€~~€€~€}€}€}€~€}€~~~€~€~€~~~‚}~€~€~€~~~~€~€€~€€~€~~~~~~}€~€‚~€}€~~€€~€~€~€~~~~€}€~~€€€‚~€~~~~€~€€~}€~~}€‚€€~€~~€€~€~~~€€~~€~~~}~~€~€‚€€~~~~€~~€€€}~~~~~€€~€~~€~~€€~€~‚}€~€~€~~€~~€€€€~€}€~~~~€~€€~€~~~€~~€~€}~€~€~~~~~€~~€€€~~~~€~~€~~~}~€~~€}€~~~~~€}€€~~~~~€€~~~~~€~€€~~€~~~~€~€~~~~~~€}‚€€~~€~~€~€€~€~~€}€~€€~€~€~~€€€}€~~~€€~€~}€~~~~~€~€€‚~€~~€~€}€~€€}€~€~}€}€€€~€~~€~€~€~€~€~€€~~~~~€}€}€€~~€~€~€~€}€€€€€}}~€~€€€~€~~€~€€}€€}}€~~~€‚~€~}}€~~~~€~€}€€€}€~~~€~€~€€€€~€~~€~€€€~~€~€~€€~€~€~~€~€€~€~€~}~~~€}€~€~€€}€~€~~~~€€€~~~~€~€€~€}~}€~€~~€~€}€€~€€~€}~€€€~€}€~~}€~‚~~~~€‚~~~€~€~€~€~~€~€~€}~€}€~~€}~~}€€€€~€~€~€~€€€€€~€~~~€~~€}€~€}€~‚~~€~€}€}€‚€}~€}€~€€~€~€~~~€~€~€}€~}‚~~~€~~€€~~€~€€~€~€~~~~~~€‚~€~}€~€~~€}€~~€~~~~€~€}€~~~~~€~€€~~€~€€€~€}~~~€~€€~€~~€}~€€}‚€~~€~~~€~€~€~€€~€~~~€~€~~~~€~}~}€~€~€~~€€~~€~~~€}€~€~}€~€}€~~‚~€~~~~~~€€~~~~}€}€‚~€~~~~€}€~~}~€~€~€~€€}~€~~~~€~€~€€~€~€~€~~~€~}€~€~€}€~~€~~~€~€~~€}€€~€~~~€~~€~€~€~€~~€~~€€€~€~}€~~€~~€~€~€~~~€€~~~~€~€€~~€~~~~~~€~~~€~€€~€~~€~~€~€~~~€~€~~~~~€~~€~€~~~€~~~~~€~€}~~€~~€~~~~€~€~€~~€~~€~~~€~~€€~‚~€€~€}€~}~€~€~~~€~€~}~~~€~€~€}€~€€~~‚~€~€~€~€€}€~~~€~€~~€~€~~~~€~€~€€~~€}~€~€}€~~~€~‚~€~€~~~€~~~€~€~€~~~€~€€~€~€}€~€€~~~~€~€~€~€}€~~€€~€~€~~~€€€~€~~~€~€~~~€~€€~}~€}€€~~~€}~}~€€~€~~~€€€€~€}~€‚€€~~€}~~€~~€~~€€~€~~€~~‚}~€~~€~~}€~€~€€€‚~€~~~€}€~~~~€~€~~€€~€}€~~~€€~~~€~€~}€~}}€~~€~€€~€}€~€~~~€~‚€~~}~~~€~€~~€~€~}~~€~€€€~€€~€~€€}€~€~€€~~€}€€~~€~~}€~~~~~€~€~~€~€~€~€~€}~~~~}€€~~€~~€~€~€€~€€~€€~~€€€}€}~€~}€€~€}~~~€~€€€~~€~~€~€€~~€}~~€~€~€~€~}~~~~€}€€~€~€}}~€~~€€€~~€~~~€€€~€~~~€~}€€€~€}€~}~€~€~~}~€}€~}€€~€~‚~~€€€€}€~~€}€~€~€~€~€}€}~€~€‚~~€~€~€~€~~~~~€~€~~~~~~€~~€€~€~}€~~€€~€~~€€€~€~~~€€~~~~€~~€~€~~€~€€€€~€~€~~€‚~~~~~~~~€~€€~~€}~€€~€€~€~€~€~~€~~~€~~€€€~~~€~~~~~€~€~~~€~~}€~€}€€~~€~€~~~€~€~~}€~~~€~€~~€~~€€€~~€~~€~€‚}€~~~€~~~~~~€~€~€}~~}€~€€~€~~€}~€€~€~€~~~€~€~~~~~}€~}€~€~€~€~€~~€}€~€}€~€~~‚}~€€€~~~€€~€~€~~~~~~~€}€~~~€~€€€€€~€~~}€~€~~€€~~€~~~€~€€‚~€~~~€~‚€€‚~~€~€}€€~€~€~~€~€€~~~€}€€~€~~~€}€}€~€€~€~€~‚~~~€~€€~€~~}~~€~~~~€~~€‚~€~~€~€€~€~€}€€}€~€~€~€~€~€~€~‚€~~€~~~€€~~€~~€€€~~€~€~€}€€~€€}€~~€~~~€~~€~~}}~€€~€~€}~~€~€€~€~~~€€~€}~~~€€~~€~€~~‚€€~€~€~~€€}€€}~~~~€€}€€}€~~€~~~€~€€~~€~~~€€}€€}€~€}€€~~€€~€~~~€~€~~€~€€}~}}~€}€}}~€€}~~€~~€~€€~~~€~‚€~~‚}€~€~€~}€~~~€~€~€~€~~~€~€~€}€~~~€€~€~~~~€~€~€~~€~~~€~~€~~~~~€€~€~}€€~€~€~€€~€~}~}~€~~~~~~~~}€€€€~€~€~~~€~€}~~~~}€}€€€~~~~€~~€}€€}€~€~~‚~~€~€€~€~~~~~~€€~~~~€€}€~~~€~€~€}~€~€€~€~~}€~€~~~€~€~}€~~€}€~€€}~€~€~~~€€}€~~€~€‚}€~}€€}€~€~}€€€~€}~~€~€€~€~€}~~€~€~~}~€}€€~€~~€~€~€€}~€~~~~~~}€~€}€~‚€~}~€‚€€~}~~}€~€~€~€€~€~~€}€€€‚~€~~€~€~€}~€}€~€~~€~~€€~}~€~}‚€€€~€~}€~€€~€~}€~€€‚~~€~‚€€~~€~~~€~~}€}~€}€}}}€€~~€~€~~~~}~~~€~~€€}~€~€~€€~€~~€~€~€~€~~~€~€~€~€€}€€~~}€~€}€}‚€~~~€}€~€~€~€~€~€~~~€~€~€~€}€~€€~€~~€~€~€€~€~~€~€€€~~~~~‚€€€~~€€~~~~~€~€}~~~€~€€‚~}€~~€~€€€~€~~~€~€~€~€~}€~€~}~€~~~~€~~€€€‚~€~€~€~}~€~~~~€~~~€~~~€€~‚€~~~‚€}~~€}€~€€€~~€~€~€€~€~€~~~~€}€€}‚€~€~~~~€~€€~~~~~€~€~~~~€~€~€~}}~€~~€~€‚~€~~~‚~~€}€€~€~€~~€~€~€€€~}€~}€~~€~~~€~~~€}€~€€~~~~~~€~~~~~€~€~€€}~~~€€€~~~€~€~€}~~~€}€€}€€~€€~€~€~~~~~€}€~‚€~~‚€€~~~€~€~€€~~~€~€~~~€€~€}~€~€€~~~€~€~~€€}€€~€~~~~~€€~~~€~~~€€~~}€~€€€~~€~~~€€‚~~~~~€€}€~~€~€~~€~€~€~~}~€~~~€~€~€€~€~€~€}~~€~€€~€~€~€~~€}€~€€~~~~€~~€~€€~}€~€~~€‚~~~€}€€}€~~~~€~~~}€€~€~~€~€~€~~~€~€~~~€‚~~€}~€}€}~~~~~€~~€~~€€€~€~~~€~€}€~~€€}~€~}~€~€~~€~€~~€}~~~~€}€}~}€~€~~~~€€~€~€}}€€~€~€~~~~€~€~€~~~‚~~~€}~~~€‚€€~}~€~~€~~~€~€~€~€~‚€€~€~~~~€~~€}‚€€~€~~€~€€€€~~€~€€€~~~€~~€€~€~€~€~€€}€~€~~~‚}~~~~€}€~€€~€~~€€~€~~€~‚€€€~€~~~~€€€~€~~~€~€€~}~€}€€~€}~€~€€~~~€~€~€~€~~€~€‚}€~€~€}€€}~‚~~~~€~€~~~€~~€€€~€~~~€€€~€~€}€€~€}€~}€~€~}}€~~~~~~‚}~€~~€~€}€~€€€~€~~~~€~~€€~~~~€~€€~€~€~~~€~€€~€}€€}€~€~}€~~€€€€€}~~€~}€~€~€~€~€~~€~€€~€}~€}‚€}~~€}}€~€~€~~‚~~~‚~€€~€~~€}€~~€~}~€~€€€~€~~€~€€~€~€~‚€€€}€~€~€~€~‚~~~€}€~€~€}‚~~~~€}€}€~‚€~€~~~~€~~€~~€~€~€~}€~€~€~~~€€€~~~~€~€~€~€~€~~~€}€~}~~€€~~€}~€~~~€~~€~€}~~~€~€€~~€}€€~~€}€~~~~€}€~€~~}~€~€~~€~€€~€}~~~€~~‚€~~~}€~€}€}€~~€€~~~~~€}€~€€‚~~€€~€~€€~~}€~€€~}€~~€~~€€€~€~~€~€~€€~€~€~€~~€~€~€~€~€~~€‚}€€}€~€}€~~€~€~€~~€~~€€€}€~~€~€~~~~€~‚€€€~€~€}~~~€€~~~€€}~€}€~~~~}~€~€~‚€~~€~€~~~€~~~~€€€€~}€~~€€}€~~~€~~~€~€~€~€~€~€~~€€~€~~~~‚€~€~~€‚~€~~}€~~€~€€~€~€~~~~€~~€~~}~~~~€~€€€~€~€~~~€}€~€}€€}‚}~~~~€~~~€~~~€~€~€€~€}€~~€~€~~€}€‚~~€~~€€€~€~~~€€~€~€~€}€~€~}‚~~~€~€~~€}~€€€~€~€~€€‚}€~~~€€€~€~~‚€~‚~€~€€~€~~~€~~€€~€~€~€~€~€~€€~€€~€~€~€~€}€~€€~~€~~~€}€~~€~€€~~}€€~€~€~~~€~€~~~€~~€€€~€~~€~~€~~€~€€~€~€}€€~€~€}€~‚€€€~}€€~€~~~‚€~~€~}~~~~~€~~€€~~~€}€~€~~€~€€€~~~~€~€~€}€~€}€~~~€}€}~~~€}€}€}€~~~~€~€}~}€~€~€~€~€~€€}€~~‚~€~~~~~~€‚~~€‚}€€~€~~~€~}}€~€€~€~~€~€€~~€}~€~~~}}€€~}~~}€~€€€}€~~€~€~~}~€~}€€~€€~~~~~~€~€~~~~~€~~€}€€~€~€}€~€~~€}€}€€‚~€~~~€~~~}~€~€~€~€~€€}€~~€~€~€~€~~~~€~€}€~~~~}€€~€~~~~€~€€~~~~~€~€~€€~€}~}€~€~€€}€~~}~~~‚~~€~€€}}€~~‚~€~€~€~~~€~€~€~€}€€€~€}~~€‚}€~~}€~~€~~€~‚€~~~~€~€€~~~€~€~€€~€~€~~~~~~€}}€~€}‚~€~€~€€~€~~‚~€}~~€~~~€~~€€€~€~~~~€€}€~~~€~€€}€~~€~~~€‚~€€~€~€~~‚€~~~€~~~€~~€€~€~~~~€€~€~~€~€€€~€~€}~~€~~€~€~€~€€~€€}€~~€‚~~€€}~~€€€~€~~€~~‚~~~€€€~€~~€~€€~€~~€€}€~€~~}€€~€~~€~€€~€~~€~€~€€~€~€}€~€~~~€€€‚~~~~€~€~€~~€~~~€~€}~~}€~~€}~€~€~~€‚~€}€€€~~€~€~~~~€~€€€€~€}}~€~€~}‚~~~~€~€~~€~~€€~€~€~€€~€~€~€~~~~€}~~€}€~€€€~€~€~~}€~€€€€~€~~~€€€~~~€~€~€~€~€~~~~€~€€~~€~~~~€~‚‚~~€~€~€~€~~~€€€~€}~€~€€~~€~~~~€€~€~}€€~~~~€€}€~€~€~~~~€~€€€~€~~€~€~€€}€~€~€~€~~~€}~€€~~~}€}~€€€€~~€~~€~~€}}~~€~€€}€~~~€~€~€~~‚€~~~€}€~~€}~~€~}€}€~~~~~~~‚~~~‚}€~€~€~€€‚~€~~}€~€€~~~~~€~€~~~~€~€}~~~}€~€€}€€}€~~}~€~~€~~~€~€~€€~~~~€€€~}}€~€‚~~~€€~€~}~€~~}€~€€€~€~~€~€~‚€~~~€~€€€~~~€~€€~~~€‚~€€~€~}~~~€~€~€~€~~€~~€~€~}~€€~~€~~~€~€‚~~€~}€€~}€~~€€€~€~€~€~‚€~€~‚‚~~€~€}€~~}€~~€~€~~€~€~~€~~~~€€~€~~€~€~€}€~~~~~~€~~~~}}€~€~‚~~~~}€~~€}€~€~€~€~€~€~~~€€€~€~~~~~€~€~€€~~€~~~€~€~~~}€~€€€€~€~~€~~~}€€~€€~€€~~}‚~€}€~~€}€~~~€~€€€~€~~€~‚€€}€~~€~€}~~~~~€}€~€~€}~~~€~€€~€~~~~~~~€}€€€~€~~~€~€‚~~‚~€~€€~€~€}€~~~}~~€~€~~~€~€‚~~~~~€€€~~~€~€~€~€~€~€€~€€}€~~~€~€~~€}~€€~~~~}~~€}€€}~‚€€€~}€~~€}€€~€}‚~~€~€}~~€~‚€~€}€~€~€~~‚€€}€~~€€~€~}€~€~~€~€~€€~}€~~€~€€€~€~€~€~}€~€~€}€~€~€~~€}~‚~~~~~€~€€€€‚~€}€€€€}€~€}~€€‚~€~€~~€~€~€€€}€}€~€€~€~€~€€~~~€~€~~€~~€~‚€~}€~€~~~~~~~~€~€€~€€~€~~€~€~€€~€€~~€~}€~~€}€‚~€€}€~€~€}~}€}~€€€€~€€~€}€}€~~€~‚€€~€~~~€~~~€~€}€€€~~~€}€~€€~€}€~}€‚~~€€~~}€~~€~€€~~€~€~~~~€~€~€~‚€~~~€~€~~€~€}€~€~~}€~~}~~€~€}€€~€~~~€~~€€}}~~~€~‚}€}€€~€~€~~}‚~~~~~€~€€~~€€}€~~~}€~€~€~~~~€~~€€~~~€~€€~~€}~€~€~~€~~~~€~€~€~~~€}~€~~€€~€~~€€~€}~€€~€~~€~~~€~}~~‚~~€€~€}~€~~€€~€~~€‚~€}~~~€‚€€€~~€~~€€}€}~}€~~~€€~€~€~~~~€~~€~~€}€€~~~~~‚~€~€~~€~€~€€~~€~~~€~€€€~€~~€~€€~€~~~€~€~~€€€~~€~€~€€~~€~€~€~~~~€~~€~~~€~~€€~€€}~}€~~~~€‚~€~~€}‚€~€~€~~~~~~~‚}~€~€‚~€~~~€~€~€€€~€~€~€~€~€~€~~~~€€~~~~€~€~€~€~~~~€~€€~~€~~~~~~~€€~€~€€~€€~€~€~~€~€€€€}~~~€€~€~~€~€€~€€~€~€~€~~~€~€~€}€~~~€€~€~‚~~~€~~~~~}€~€€€~€}€~~€}~€€~~~€}€~€~€~€~€~~~~€€~~~~€~€€€}€~~€~~€~~€~~€~~€}€~€~~}~€~~€~~~~~€€}€~€}€~~€€~~~~€€~‚~~~‚~€~€}€}~€€}~~€~€€~~~€}~€€€~~~€~~€€}€~€€}€~}€~~€€}€}€~~€}€~€€~€}€~~~~~€~€€~~~~€~€€~‚~€~~}€~€~~€~~~€€~€~~~€~€~~~~€€€~€€~€€~€€~€~~~€~€€€~€~~€€~€~~€}€€~€€}‚€~~€~€~€~~~€~€€~}€~~~€€€~€~}~~€€€~€~€~€~€}}€€}€~€~~~~€~€~€}€}~~€~€€~€}€}€~~€~~~€~€~~€~‚€€~€~~€~€€€~€~€~~~€~€€~€~~€~€€~€~€~€€~€~€€}~€~~~~€}€€~€}€~~€~€~~~€~€€~€~€~~€~€€}~€~€€~~~€~~‚~~€~~~~~~~€€~~~€~~~€~~€€~~€€~€~~‚~~~€~~€}€}~€€€~~~~€~€€~€~€~‚€€}~~€~€€€~€~€~~€~‚}€}~€€~€~~~}€€€~~~~~€‚}€~€~~~~€~}€€€~~€~€~€€~€}€~~€€~€~~€}‚€€~€~€~~~~€~€~€~}~~€~€~~€~~~~~€~€~€€}€~€~€~€~€~€~~€~~~€~€€€€~~~€~€~~€~~~€€€€~€}~~}€~}€~€€~~~€~€€€~~€~~€€~~€~€~~~~~}€~}€~~}€}€€€~~~€~€€~€~€~€~~~~~~€€~~~~€~€€~€~€}€~€~€}€€~~€~~}~€~~}‚€~€~}~€~}€~€~€€~}€~‚€€~€~~~€~€~€~~€~~~€€~€~~€}€~‚€€~€~~~€€~~€~€~}~€~€€~}~~}€€~~~~€~~€~~€~€€~€~~€~€‚€€~€~€}~€~~~€€€€~€}~~€~~~~€~€~€~~€}~€~~~~~€€~~€~}~~€~~€~€}€~~€‚~€€~}€€~~~€€}€~~~~~€~€}€€~‚~€~€~€€€€~}€~~~~‚~~€~€€~€€}~‚~~~€~}€€~€‚~€~€~€}~€~~€~€~€€~€~€~€€}€~}€€€€‚€~€~~€~~€~~~€~€}~€}~€~€~~}~€€€~€}€~~‚~~€}€~~€}~~€~€~}€~€~€~€€€~€}~~€~€€~~€~€~~~€~€€}€~€€}€~€}~~€~€€~~~~~€~€~~€€€~€~~~~€€€~€~€~~~~€~€~~€~~€}€€€~€~~€~€€€~}~~€~~~€}€€~~€~~~€€‚€~€~~~€€~€}~~€~€~~€~‚~~€€}€~€€~}€~~~€~€€~€~~€~~€~€~€€~~~€~~€~€~~~~€€€~€~€~€~‚€€~€~~~~~€}€~€~€~~€~€€~€~~~~€~~€~€~€‚~€~~~€~€~€‚~~€~€~~€~€~€€~€~~€~~€€~~~€}€}~}€~€~~~€~€~€€~€~‚€~~~~~€€~€€~~€}€~€~~~~~€~€€‚~€~€~€€~€~€~~€~~€~~~}€}€€~€~~~€€~~~€€~~€~~~€€~€€~€~~}€€€}€~€~€~~€€‚}€~~~~€~€~}~€€}€~~~€€€€}}€~~}€€€~€~~~€€~€~€~~€~€€~€~€~~€~~€€}€~€€~}~~€~~~€~€€~€€~€~€~€€~€}€}~€~}€~€€~€~€~€~€~€~€~~~}~€~€~€~€~~€€€~~€}~€~€€€‚€~~€~€€~~~~€~€~€~}€€~€~}€~}€~€~€~~~~€€~€~€~€~~~€~~€}€~~€~€~~€€}~~€~€~€~}€~~€€~€}€~€~€€€~€~€~€~~~~€~€~~€€~~~~~~~€€~€~€~~~~‚~€€~}€~€~~€€~€}€~€~~~~~~~~€~~~€€~€~~~€€~€~~~~~€‚~€~~€~}‚~~€~€}€~}€~€€€€€~€~€~~~~€~€€€€~€~~€€~~~€~~€€~€€}€~€~€~~~~~€}~€~~€}~~~€~€~€~~€~~€~€~€~€€~€~~‚€€~~€}~€~€~~€~~~€€}€~~}€~€€€‚~€~€~€~‚€~~~€€~~€~}€}~€‚~€~€~~~~€~~€~€~€~}€~~}~}€€~€~€~~~~€~~~~~€~€€~€~€~€~~~€~~€€~}~€~€€€~€~~}€€€€€~€~~~~€€€~€~~~€€€€€€~~}~€€€~€~~€~€~€€~€~~€~~~€~€~€}€~}~~~~€~€~~€€}€}~€~~€€€~€}~€€~€~~‚}€~~€€}€€~~€~€€€~€~~~~€}~€~€~€~~€€}€}~€€}~~~€~€€~€~€~€€~€}€~~€~~€€~€~~€€}€~€~€~~€€€€~€~€~€~€~€€~€~~€~€€~€€~€€}€€~~~€~€~€€~~~~~€}~€€€~€}€~€~€~€€}€€~€€~€~~~~€~€~~~}€€~€€}€~€~~~€~€‚}€}€~€}€€~€~~€~€~}~~€€~€~~€€~}€}~~~€€€€€~€~~~~€€~~€}~€~€~~€}€~€}}€~~}~~€~€}~~€~€~€€~€~~‚€~~€~€€~€~€}‚€€~~}€~€~€~€~~~€€~€~€€€~€~~~€€€€~€~~€~€~~€~~~~~€~€~€~€€~€~~~~€€€~€~€~~€}~€~€€~€~€~€€~€~€~~~~€€}€~€}€~€€€~€}~~}~~€}€~~€}€~€~€~€€~~€~~~€€~€~~~€~€~€~~€~€€~€~~~~€~~€~€€~€~€~€‚~€~~~~~€~}€~€~€~}€~~~€€~€}€~~~€~~€~€€€~€~~~€~€€€€~€}~€~€€€~~€~€~€€~~~~€€~€~~€~€~€~~~€€€~~€~€~~€~€~~€~}€€€€€~~~€}~‚€~~€}€~€~€€€~€~}€~€~€~~€}€€€~~~€~€€€€€~€~~~‚€€~~~~}€€~€~€~€~€~~€~~~~€~~€€}€~~€~€~€€~€~~~~€€~€~~€~€~}€}€~€~~~€€€~~~€€~~~€~~€~€€~€}€€~~€€~€~€~~~}~€~€€~~€~~~€~~€~~€‚~€~~€~€€~€~€~}~€€~~~~€~€~€}€€~€~€~~~~€€~€~~€~~~~~€~€~€€~€~€~~~~~€~€~~€~€~€€~€~~€~€€€~€~}€~}€~~~€~~€~~~€~~‚€~~~€~€~€~~€~€€€~€~~€}€€~~~€€€~€~~~€~€€€~€~~~€€~€~~€~€€€€~€~~€~€€€~~~€~€€~€~€~}~~€~~~€}€€~€~€}~€~€~~}€~€~€~~€~~~~€€~}€~~€}~€€~€€~€~€~€~~~€~€~€}€€€~€~~~~€~€€€~~~}~€~€€~~€€}€~€~€€€€~€~€~~€~‚€€~€~~~€}€€€}~~€~€~~€}€~€~~~~€~~~€}€~€}€‚~~~€~€~€~~‚~~€~€~€~~€~€€€€~}~~~€~€~€€}~€~~~}€~€€~€~~€~‚~€~€~€~€~~€‚~~€~~~~€~€~~~€~€~}~~€~€€‚~~~~€~~€€~€~~~€~~€}€~}€~~~~~€~€~~~‚~€~€€~€~~~~€€}€€~€~~~~~~~€~~~~~€€}€€€‚~€}€€~€~~€~}‚~~~€~€~€~~~€}€~~}~~€~€~€€}€~~~~~€~€~~}~€€~€~~~€~€~~~€~€€‚~€}~~€~€€~~~~€~€€€~~~~€}€~~€€~~~~€~}}~€~€~~~€~€€~~€~~€€~€~€~€€€€}€~~€~~€~~€~~~~€}€€‚~~€~~€~€~~€€€}~€~}‚~~~€€~€~~~€}~€~€~€~~~€~€€€~€~~~~~~~€~€~~~€}~€~€€}€~€€~‚~~~€€~€~~~~€~€€~€~~~€~€~~~}€~~€~€€€}~~~~~€~€~}~~€}€€~€}}}€~€~~~‚€€€~€}€~€~‚€~~€~~~€}~€€~€~€€~~~~€€~€~~‚~~€€~€~€~~€~~€~~€~€~~€~€€}€~~€€~€~~~€~€~€€~€€~€~~~~€~€~€}€€~€~€~~€€~€~~€~€~€~€€}€€~€}~~~€~€€~}€~‚~}~~€~€€~~€€}€~€~€~~~€~~~~€~€~}~~}€~~€~€~€€€~~~€~€~~~€~‚€€~€~€~~€~€~~}‚~~~€‚}€~~€€~}€~€€~€~€~€~~~}~€~~€~‚~€~€~€~€€€}€}€~€€}€~€~~~€~~€~‚~~‚~~€~€}€~~€}€~€€€~~€~~€€}€~€~~€€‚~€~~~€~~}~}~}~~€~€€‚~€}€~€}€~~€~€€~€~~~~~~~€€~~€~€€€€}~€~€~€~~€~€~€~~}€~~€}€}€€~€~~~~~€}€~€~‚€~~~€€€~€€~~€‚~€~}€~~~€~€~€~‚€€~€~€~€~~€~~€~€€~€~}€~€~€~€~€~~~€}€~€€~€~€~~~~€~€€~€~€~~€~€~€~€€~€€}~~€€€~€~€~~€~€}€€~€~~~€~€}~€~€~}~€}€~€~~~~~~}~€€€€~€~~~€~€~€€~€~€~}€~~€}~€€~€~~‚~~€~}~€€~€~~~~€~€€~}€~~€~~€~€~€~~‚~~~~}€€€~‚~~€~~€~€~€~~€~€€~~~~~~€~‚€~~‚}~€}~~€€~~~~€~€~€~~~€€}~€}~~€~€~~~}~€}€~~€€€~~~~€~€~€~€~~€~~~~~€~€‚~~~~€}€~€}€€€~€}€~~~€~~~€€€~€~~€~€}€~}€~€~€~~€~€€~~~~€~‚€~~€}€~~~€~~€~€~~€~€~~~€~€€€~~}€~€~€~}~~~€}}€~~€~}€€~€~~€~€~~€~~~~~}€~~~~€~‚~€~€~€~~~€~€€~}€}~~~‚~~€~~~€~}€}€€~€~€~€~~~€~~€€~~€~~~~~€~€~€}~~~€€~€€~€}€~€~€~€€€~}€~~~€~‚~€~€~€~~~~€~€€}}€~€~€~~~€~€~~€€~~~€~€~€€~€~~€~~€€~€~€€~~~€~~€€~~~~€}€~€€‚}€}~~~~€~‚€~~€~€~€€€~€~~~~~€€}€€}€€€~€~}}~~€~€~}~}~€}~€€€€~~~€~€}€~€}€~€~€~~~€~€~€~‚~€~€}€€€€~€~~€~€}~€~€€}‚~€~~~}€~€~~~‚~~~}~~~€~€€€}~€~}€~~€~€€€~}€~~}€~€~~~~€~€~~€~€~‚€~~€~€~€€~~€€€}€~~€~€~~~€~~€€€~€~€~€~€~€~€€~~€~~~€~€~~}~€}€}€~€}€~~~}}€~€~€~€‚}€}€~€€}~€~~~€~‚€€~~~~€~€}€~€}€~~~€}€~€~€}~~~~€~€~€~€€~€}€}~~‚~~~€~~~~~~‚€}€€~}€~€€~€}~~€~€~€€€~€}~€}~€~~~~€}€€~€~~€~~~€€~~€€~€}~~~~€~€~~~€~€€~€~€€€~}€€~€~€~~€~€~~~}€€~~~~€~€~€~€~‚€€€~€~~~}€~~~~€‚}€~~€~~~€}€€~~~€~~~~€}€€}€~~}€~€€€€~~~€~~€~€~€€}€}~~}€~€~€}~~€~~€~~~€}€~~~~€~€~€~~~€~€€€~€~~€}€€~€~}~€€~€~~€~€€~~€~€}€~€~~~~€~~~~€~€~€€~~€~€~€~€~€~~‚~€~~€~~‚~~~~~~€~~~€€~}~€~€~€~€€~€€~€~~€~€~~}€~€~~€€~€~~€}€~€€}~~}~€}€€}~~~~€€€‚~€€~‚~€}€~~€~€€€~€~€~€~€~€~€}~~~~€}€~~€~~}~~~€~~~~~€€~€~€~~€~~€€‚~€~~€€~€~~€€~~~€}~~~€~~€~}€~€€~~~~~€€~€}~€~~€€€~€~~€~€€~~~€~~€€~€~~~€€~€~~~~~~~€€€€~€~€~€~€~~~~~€€~€‚~€~~€~€~€‚~€~€~~}€€~~~€~~€~~€~~€~€€€~€~€~~€~~~~€~€~€~~~€}~€~€~€~~~€}~€€}€~~~~€€~€}€€~€}€€€~€~~~€~~€~}~}€~€}€€~€~~~€}~€~‚€~~~~€}€~€~€~€~~~€~€€~€~~}~€~~€~}€~€€€€~}~~€~€~€€~~€~~€~€~~~€€~€€}€~}~~€€~~€~‚~~€‚~€~€}€~€~~€€~€~~~€~~€€~€~~€~‚€~~~€~~€‚~~~€~€~~€‚~€}€€~€€~~~~€~}€€}€~€~~€~}€}‚~~~~~€~~~}€~€‚€~~~€€~€~~~€€€~~€~~€€~}€~€~€}€~€~€~€~~€~€~~~~~€€~€~~€€~€~~~~‚€€~~~~€~~€~~~~€€~€~~€~€€€~~~}€~€~€~~}~~€~~}€~‚€}~€€}€}~}€€~~}~~€~€~~~~~~~€‚~€~~€~~~€~€~~~~€}€~€~€~€~~€~~~€~€€~€~€~€~€~€~€}~~~~€}~€€€~€~~~€~~€~€~€~~€~~€€€~~€~~~€~€~€~~€€€~€~~€~~~~€~€~~~~~€‚~€€~€~€~€}~€~€~€}‚~~€~~~€~~€~€~€€~}€~~~€~~€~€~€~~~~€~€~~~~€}~€~€~~~~€€~€~~~~~~€€~}~~€~‚~€}€}~‚€~~~~~€€~€~€~~~}~€€€~€~~~~~€~€~€€~~€~~~}~€€~€~€~€~€€€~€}~€~€€~€~~~€€~}~~€€€~~€~~€~€}€€~~~~~€~~€€€~~~~€~€€}~~€~€€~~~~~€€~€~~~€~€~€€~~€~€~€~‚~~€€~~~€~~€~}€~~~~~€~€~€~€~€~~~€}€€~€~€~~€~€€€~€~€~€~€€~€~~€~€~~€~€~‚€~}€~€}€~€€~~€~~€~€€}}€~~~~€~€~~€~€}€~~~~€€~~~}~€~€}~€€~€~~€~€€€€~~€~€€~€~€~~€}€~~~~~€~€€€€€}€}€~€€}~~~€€~€~~~€}~~}~€~~~€~€€~€}~~~€~€€€}€~~~~€€}€~‚€~~~}~~€~€}€~€€~€~~}€~~€~€€~}€~~~~€~~€~~~€}}‚€}‚}~€~~€~€~€~~€€~~~~€~€€€~€~~€~€€~€~~€~}€€~€~~€€~€~~€}€~€}~}}€€~~~~€~€~€}€€~€~€~~€~~€€€€~€~~~~€~€€~€}€~€}€~~~~~~~€~~€€€~€~~€~~€~€~}~~€~€~€€~€~~€~€~}€€}€€~~~}€}€€~~~~~€~~~€~~€€~~~€}€€~€€€€}~~~~€~€€€~€~~€~~~~€~€€~€~~~€‚}~~€~~€€~€~~~€~€~€}€€~€€€~€~~~~€~~}€~~~~€~~€€€~~~€}~€€}}~€}~~€~€~~€~~~€~€~€~€€~~~~‚~~€}€€}€~€~~~€~€~€€~~~~€~~€~~}€€~~~~€~€€~€€~€~~}~~~€‚}€€~€}~~~€}~€€~€~~~~~~‚~~~€~€~€~~€~€~~~€}€~€~€~‚~~~€}€€~€~~~~}€~€€}€€~€~€~~~~€€€~€~~~~€~€~€~~~~~~€~€~€~~€€€~€~~~€}~‚€~€~~~€~€~€~~~~~~~€~€€€~€~~~€~€~€€~€~~~}~€~€~~~}~€~€~~~€€€~~~~€~€€€}€~€~~~~€€~~~~~€~€€~~€~€~~~~€~€€~}€~~~€}€~~€~~€‚~~~€~€}€~€~}€~€~~€~~€}€~€~~~~~~~~~€~€~€~€~}~~€}€~}€~€€~~~~€~€€~€~€~}}}€~€€€~~€}}€~~~€~~~€~€~~€~€~~~~‚€€€~~€~}€€‚}€~~~~~€~‚~€}~€}€~€}~}€~~€~~€~€€‚~}~€~~€€~~}~€€€€~€}~€~~€€~€~~€~€~€€}‚~~~~€}€~~€€€~€~~~€~€€}€~€~~~~€€€~€~~~~€€~€~~}€~~€€~€~~~€~€€€~~~~~€€~~€~~~~€€€~€~€~€~~~€}€~~€€}€~€~~~€~€€€€~€~~€~€€~~~€~~€~€~€€~}~~€~‚~€~~€}€~~~~€}€€~€~~~€€~~€~€~~€€~~€€~€}€~€~€~€€~€~~~€‚€€~~~€}€~€~~€~~~~~€}€€~€~~€}~€€~~€~}€~€€€‚~~€~~~€€~€~~€~€‚~€~€~€}€~~~~~~€€}€~~~~}~€}€~~€~€~~~~€€~€}~€~€~~~~€€~~€~~€~~€~€~€}€€~€~€~~€~~€€~€~€~~~€~~~~€~€€€~~€~~€}~€~€€‚~€~‚€~~‚~~~€€€~€~~€~~€~€~€~€€~}~~~~€€€~€~~€~€€€~€}~}€€}~~~€}€~€~€€}€€~}€~~~€~€~€€€~€~~~€~~€~~~‚~~€~€~€€€~~€~~}~€€‚~€~~~€~€}€~€~€€}}€~€}‚~~€~€~€€}€~~€~€~~}€~‚~€~~~€~~€€€~~~€}~€~~€~€€~€}~~€~~€~€}~~~}~~€€}~~}~€~~€~~€~€~€€~~~~~€€~€~~}~~€~€€~~€~~~~~€~€~€~€€~}€€€~€~~}€~~€€~€~~~‚€}€~~€~€~~€~€€€€‚~€~}€~‚€€~}€}€€~€~~~€}€~~€~~€€~€€~~€}~~~~~€~€€}€€}~~}€~€~~€~~€}€~€€€€~€~€~€€~~€~~€~€~€~€~€€€~€~~~€~‚~~€~€~€€~~€~~~€€~€~~~~€~€~€~~€€€}}~~€~~€}~€~€€€~~€~€~€~~€}~‚€€~‚~}€~~~~~€~€~~~€~€~€~~~€~€}~€~~€~~}~€~€~~€€~€}}~~~~‚~€~€~€€~€~€~~€€}€~€}~~€~€~~€~~€}~€}€€}€~~~~€€€€‚~€~‚~}€€~€~~€~€~€~€}~€}€~€~~~€~€€~€€€~€~~~~~€€€~~~~€}€~€~~~~~~€€€}€~~~~}€~€~~€~~€~€~€}~~~~~~€}~~€~€~€~}~~~‚~€}€~€‚~€}€~}~~~~€€}~€~}€~€€~€~~}~€~€€}~~~€~€~€~~€~~~€~€~€~~€€~€~€~~€}‚€~}~€~~}~€~€~~€€}€~€~€}~€}~~~€‚}€}~€~~~€~€~€€~€}€~€}€€€~}€~~}€€€}€~€~€~~€~€€€~€~~€}€~~~€~€~€}€~€~€~€€€~~}~€~€‚~€}~~€~€€~~€‚~~~€‚~€€‚~€~€~~~~€€€~~~€~~€€}€~€}~~~~€~€}€~~~€~€€€~€~}€~‚€}€~~}€~€~€~‚€€~}~~€~~~€}€~~~~~€~€€~€~~€}€€‚~€}~~€~€€~~~€€~€~€€}€}€~}€~€‚~€~€~€€€€~€~€}€~~~~~~€~€~€~€€}€~~~~€~€~~€~~~€}€€~€€}~~~€~€~€~~€~€€‚~€~€~}~€~~€€~€~}~~~€~€~€~~€~~€€€~~€~~€~~€€€~€~€~~€€}~€~€~€~~~€~€~€~~€~€}€~€~€~€~~~~€€}~€~~€€‚~€€~€~€~}‚‚}~~€}€}€~~~~€}~€€~€~~~€}€}€€~€~€~€~}~€~€€~€~~~€~€€€~~~€€~~~€‚~~~€~€~€€~~~‚~~€~€€~~€~€€}€~€~€~€€~~€~€~€}€~~~€~}€~€€€~€€~~€€}€€~~}€~~€€}€~~~~€~€€~€~~~€}~€€~}€~~€}€€~~€~‚€~~€€}€~€€~€~~€~€~€€}~~~€~~€|}~~€~~€~€~}~~‚}~€~€}€~~~€~€€~€~~~€}€€~€€~€~~~~€~€€}€~}}~€}‚~~~}€~€~€~€~~€~€~€~~~‚€~€~~~€~€€~€~~€€~~~~€€}~~~€}}~~~€~€~~~~€~~€~€}€~€€~€~~~€€€~€~~~€~€€€~€~~}~€~€€~~~~~€~€€}€~€~}€€~~€~~}~€~‚~€~€~€~€€~~€}€~~~~€~€~€~~€~~€€~~€~~€~~€€€~€~~}~€}€}~~€~~€}€€}€~€}~~~€}€€}€~€~~€€~€~~~~€~€}€~€~}€~‚€~~‚~~€~€€~€}~€~~€~~~~}€~€€€}}~~€~€€~€}~€}€}€~€~€€€~€~~~€~€€}€~€€~€€~€€}~€~€€~€~~€~€~~~€~€€}€}~€~~‚~~€~€}€~}~€€~~~~~~€~€~~~~€€~€~~}€~€€~€~€~~~~~~~€}€€€‚~€~€~€~€~€€~}~€~~~~~~~~€€€~}€€~€~~~€~€~€}€~€~‚~€‚~€~€~€~~€~€~~€€€~€}~~€~€€~~~€~€~~~~€€€~~€~€~~€}€€~~~~€~~~~‚~~€}€~€~€~~~~€}€~€~€~€}~~~€~~€€€}€}€~€€}~~€~€€~€~~€~~~~€~€~~€~~~~~€~€~~~~€€€€~~~~€€€~€~~~€~€€€‚~~~€~€~€€€€}€}~~€~€€~€~~~~~€}€~~€~~€~~‚€€€~€€~~~~~~€~€€€€~€~~~~~€~€€~€~~~}~€€~€}~}~~~~~}~€€~€~€~~€}€€€~~~~€~€~€~€~€€~~~~€€}€~€~€€~€~~€~~€~~€~€~~‚€~~~~€~€€€~~€~~€~€€€~€~~}~€€€~€~~€~€}€~~}€~€€~€~~~~€~~~‚~~€~€€~€~~€}€€}€}€~€~€~~~€~€~€€~~€~}€‚~~€}€}€€~€~€~~€~€~€~~€~~€~€€~€~~€}€€€~€~€~~~~~~€}€}}€}€~~‚}€€}€€~€}‚~~~€€}€€~€~€~~~€~€€€€‚~}~~}€€€}€~€~€~~~~€~€~€}~~}€}€€~€~€~~~€}}€~€}~}€~‚€~}€~~~€€€€~~€~~‚€~~~~~€}€~€€€~~€~~~~€~‚€~~~~~€€~}~~€~€~~~~~€~~~€~€€€€~~€€~€€~€~€~€~€~~~€~€}€}€~~~€‚~€€~‚€~~‚~€~€~€~€~~€~€~}€~€~€€}€~€~‚€~~~~€€‚~}€~~~€‚€~€}~€~~€‚~€}~~€~€‚~€~~€€~€~~‚~~€~~~~€~~~~€~€~€~~~€~€€}€~€~~~~~€€~€~~€~€~€~€€~€~~~~~€~€~€~€~~~€~~€~€~~€~~‚~~€~€~€€~€~€~}€~€€~€~~€~€€€}€~~€€}€~€}€€~~€~€~€€~~~~€~€€~~~~€~‚~~€€~€€~€~€~~~€~€€~€~€~~€~€~€~}}€~€}~€~~~}€}€~€}€}€~‚~~~~}~‚€~~€~~€€~€~~€}€€~€~€~~~€~€~~€}~~~~€~€~€~€~~~€~~€~€€~€~€~~€~~~~~€~€€€~€~€~~€~€€~€€~€~~~~~€~€~~€€~€~~~~€~€€~~€~€~€€}~€~~€~€}€€~€~~~€~€~€~€~€~~€}€€~€~€~~€€~€~€~€~€}~~~~~€}~~€~~€~€~~~€~~€€€€~€~€~€~€~~€~~€}€}€~€~€~€~~€€~~~~€~€€~€€}‚€~~€~~~~€€€~€~~~€~€~~~€‚~€~~€}~~€~€€€€€}~€~~~~~€€€~€~~~€}~~€}€~€~€€}~€~~~}€€}‚~~€~~€~€~~€}€~‚€€~€€~~€~€€~‚~~~€~€€~€€~}€~€~€}€~~~‚}~€~€~~~€~~~~€~€~€~€}€~€}€~~€~‚€€‚~€~~€€€~€~~€~~€}€~~~~€€€~€~~€~~‚€€~~~€€€~€}~~€~~~€}€}€~}€~‚~~€€~€~€€€~}€~~~€~€€~€~~€}~€~~€~€~}€~~~€~€~}€~~€~~~~€~~~€}~€€€~~€}~~€~~€~€~€~€}€€~€}~~~~€~€}€€}€~~~€}€€€~€~~~€~€€~~€~~}€~€~€~~~€~~~€~€~~€~€~€~€€}€€}€~~}~~~~€~€€~~~€~€~€~~~~€€€€~~}~~~€}€~€~€~€}€~€€€~~~~}€~€€€€~~~~~€€€~}€~~~~€~~€~€‚}€}~~€~€~€~~€~€}~~~€€‚~}€~€~~€‚~€~€€~~~~€~€€~}}~€~€~}€~€€€~€~~€€~}‚~~€~€~~~€~€~€~€}€}€}€~€~~€~~€€‚~€~€~~~~€€~€~€~€€~€~€~~€~€~~~}€~€~~€~~~~€~~€~~€~~~~€}}~€€€~~€~€~€~€€~~}€€€~€~€~€€~€~€}€~€€€~€~€}~€~€~€}€~€~€~€~~€~}€~€~€}~~€~€€~}~~}€~€€~€~€~€~€~~~€€€~€~~~€€€~€~~~€~€~€~~~}€~€~€~~€~~~€~€~€~~€~€€€~€~€~~€~~~}~~€~€~€€~€~~€~~€~€€~€~~~}~€~~~~~€~~€~€~€~‚€~~€}€~€~~€~}~€}~€~}€~€€~}€~‚~~€~€~~€€~€~~~€~€~€~~~~~€€~~~~~~€€}~€}€}~€}~~€~~~€€~~‚~~~€~~~€~€€~~€~~€~~€~€~}~€~}€~~€~€€~€~€~~}~€€}€~~~€~€€~~€~~~€~€~~€}~€~~€~~€~€~€~€~~~~€~~€~}€~~~€}€~€~€}‚~~~€}€~€~~}~€€€~€}~€~€€€€~}€}~€~~€~€~€}}€~~}€}~€~€}€~€~~~€~~~€~€~€‚~}€~€~~€}€}€}€~~€€}€}~}}€€€€~~€~€~~€~~~€‚~€€~€€~€}€€~~€~€~€€}‚~~€€~€€~€~~~€~€€~€~€~~~~€~€~~~~€€~~€~~€~~€€€~~€}~€~~€}€~}€~~€~€€€€~‚~€~~~~€~€€~~~~€~€}€~€€}€~€~~€~€€~~€~€€€~~~€~€~~~~~~€€~~€~€~~~~~€~€}€}€~~€~~€‚~€}€~€~}~~€~€€~~€~~€}€~~€~‚€~~~€€}€~€~€~~€~~€€€~€~~~~}€€~€~~~}€~€€~€~~€~€~€}~€~€€‚~~~~€€~~€~€~€}~€~€€€~~€~€~~~~€~~€}€€~~€~~~~€}~€~€~~~€~~€~€€~€~~~~€~€~}}~~‚€€~}€~~~‚€€~}€~~€~€~€~€}}~€}€€}€€~~}~‚€~€~‚€~~~€‚~€~€~€~}‚€€~€}€~€€}~~€~€}€€}€~~~€}€~€~€~€€€€~€~~€~€~~€€~€}€~€€~€~~~}~€~€~~€~~~€~€€~~€~~~€~€}€€~€~€~€‚}€~€~€}€~€~~~~€~~~‚€~~€~€~~}€~€~€~~€~€~€~~€€~€€}€~€~€}€~~€~~~€~€~€~~‚€~~~€~~€~€~€~~~€~€~€~€€~€~~~~€~€€}€~~}€~€€~~€~~~~}~€~~€~€~€~€~€~€~~~€~€€~€~~}~‚€~€~~€~€~€~~~~~€}€~€€€~€~~~‚~€€~€€~€~~€~~€~€€~€~~€~~€~€€}€€~€~~€}~€~€~~€~‚€€€~€~~€}€€~~~‚~~€}€€~€~€~€~~~‚}€~€~€~€€}~€~~€€‚~€~~~~€€~~~€~~~~~€~€~€€}€}€~~~€~€€€~€~~~€€€~€~~~~€€~€~}€~€€~€~€~~€~€€€~€}~~€~€~~~~€~~~€~€~€€~€~~~€€€~€~~~~~€}€~€~€~‚€~~€~~€€€~€~~€~€€~~€}~€}€~€€€~€~€~€~~€~€}€~€~~~€~€~€€~€~€~~~€~€~€€~~€~~~~~€~~~~€~€~~~€€}‚€~€~€€~€}~~€}€~~~€~~€~~€~€~‚~~€}€~€~~~€~~~€}€~€€~€~~~~€~~~~€~~~€~€~~~~€~€~‚~€~~€~€~~€~~€~€€€~€~~~€~€~€}€€~~~€~~€~€~€€~€~€~~~~~~~€~€€~~€~€~~~€~€~€~~‚~~€~€€~€‚~€}~~~€~€~~~~€~€}€}€~~~€~€€€~~€~€€}€‚€€€~€~~€}€~€~~~€~€~€~€~~€~‚€€~~€~€~~€~~~~~~~€€~~~~€~€€~€~~€~~€~~~€‚~€€~€~€€~€€€~€~~~€~€~~€}~€~€~€~€€€~~~~€€~€~€~€~~}~€~€}~€~~~~~€€~€~~€~€€~€~~€~€~€‚~€~€}€~~€~}€~~~~€}€€~~~~~‚~€€}€~€€~}€‚€€~€~~~€~€€~€~~}}€€~€~€~~€~€€€~~€~~~~€€~€~€~~~€€€~€}€~~~~~€~€‚~€}€~~€~~€~~€}~€€~~€€}~€~€~~€~€€€~~€~€}~€€~€~€~€~~€€~€}~~€~€€~~~~€€€}~~~‚€€~€~~€~€~~~~~~~€~~}€~€€~€~~}€~€~€~~~~~‚€€‚~€}€~~€€~€~€€€~€~€~~€~€€€}€~~€~€€€‚~€}~€}~€~~~€~€€~}~€~€‚~€€~~€~€~~~~~€}€}~}‚~€~€~~€~€€€~€€~~€~€~~}€~€~€€~€~~€~€€}€~€~~€~~€~~€~~~€€~€~€~~€~~€€~~€}~~~~€~€€~~€‚}€}€€}€}~~€‚~~€~~€~~€~~€~€~~€~}€~~€~‚~‚€€€}€~~~€}~€}€}~}~}~€~~€}~€€~€~€~€€~~€~‚~€€}~€}~€~€}~€}€€}~€~€}€€}€‚~~~~~€~€€~~~€~€€€€‚~€~~~€€‚~€~~€}~€~€~~~€€~~}€}€€€~~~€~€€~€~€~€€€€~~~€€€€~~€~~~~‚€}~}€~€~}~€€~~~~~~~€~~~€€~~€~€~€€~~~}€~€‚€~~~}€~~€~€€~~€~€~€€€~~~~€~€€~~~~€~€~€~€}~~~~€~€~€~€~}~~~}€~€~€~€~~€~€€~€~~€~€€~€~€~€€~}€~~~€€€~€}~€~~}~~~~~}€}€€~€}€~~~~€~}€~€~~€~~~~‚~}€~~~€~€~}€~~€€~€~€~€}~~‚}~€~€€}€‚€~~~€~€€€~~€~€~€€€~€~€~~~~~~‚~€~‚~€~€€~€~~€~‚€~}€~~~~€~€}‚~€~€~~~€~~~€~~€€~€~€}€€~~~~€~~€}€€~€}€~€€~~}€~€€~~€~~~~~€~}€€€~~~~€~~€€~€€~€~~€~~~~~€~€}€}€€~~~€€}€~€~}€}€~€€€~€€~~~€~€}€}€~~~€~€€~€~~€}€€~~~~€~€€~€~€~~‚}~}€}€€~€~€}€}€€}}~~€€~€~~~€~€~€~€~€~~~€~€~€€€~€}~~€~~€~€}}€~€~~~}~‚€€€€~€}~~~~~€}€~€~~€~‚}~~€~€~~€}~~€€€~€}}€~€€~€~~€~}€}‚€~€~~~~€~€€€~€~~~~€€~}€~}‚~~€~€€~€~}€}€€~€}€~~€€~‚~€~~€~~€~€~~~€€€~~€}€~€~€~€~€€~€~}€~€}~~€~€~~€}~€€~~€~~~~~‚~}€€~€~~~~€~€~€€}€~€~€~~€~€~€~~~€~€€€~€€~}€~‚€~~~~€€€€~~~€€~~€~€~~~€~€€€~€~€~€}‚€~~~€~~€~~}}~~~~€~€~€~~€~€€~~€~~~€€~€~€~€€~€~€€~~~~~€}€~~€~~~€~~€~}€~€~~€}~}€~~~~~€~€€€~€}~~~~‚€}€}€€~€~~~€~‚}€}€€~~~€~~€€€~€~~€}€€€~~~~€~€€€€~€~~€~~€€~~€~€~€~~~€~€€~€~€~}~~~€€~€~~‚~€~€~€€~€~‚~~~}€~€~~€~~€~€€€€~€}~€€~€€}€~€€}~~~~~~€€~€~~€~~€€~€~~€~}}~€~€}€€~~~}€~€~€€€}~~~€~€~€~‚~~~~~€~~~}€~€€~€€~€}€€~€~~€~~€~€€~€€~€~~}~€~€~€€~~€~~€~€~~€€~€~~~€~€~€~~€~~€~~€~€~~€}€~€}€~€~~~€~~€~€}€~~~~€~~€~~€€€€~~~€€€€~~~€~€€€€~~~€~~€€€}~~~‚€€~€~~€~~~€~€~€~~}€~€~€~€~~€~€€}€~€€€~~€~~~~€€€€~~€~€€}€~€}~€~~€~~€~~€~~~~€~€~€€~€~~~~€€~€~~€~€€€}~€}€~€~~€}~€€€~~€~~~}~€~€~~~€~€€€~~~€~~~~€}~}}~€€~~€}€~€~€~€~€~~~€~€~€~~‚‚~€~€€~€~~}€~€~~~~~~€~€‚~‚€€~}€~€€€€~~€}~~€~€~€‚~€~~~€€€~€~~}€~€€~€~~~€€€~~~€~€€€~€~}€}€~€~~€€~€~€~~~~€}€€~}€~~~€~~€~~€~€€}€}€~~€€~€€€~€}~€~~~~~~~~~€€€~~~~€~€€€€€~~~€}~€}€€~€~€~~~~~}~~~€~€}€€}~€~€~€~€}€€}€~€~}€~~€~~€~~~€}}€€}€~~~~€€‚}€~~~€~€~€~~}€~€€~€€}€~~~~€}€~€~€~~~€~€€~‚€~}~€€~~~~€~€€~€~€~€~€~€~~~~€~€~~~€~~~~~}~€~~€}€€~~€~~}€~~€~€~}€~€~~~€~€~€~€~€~~~€€~€~€~~€~€~~~€~€€~€€~€€~€~‚€~~~~€€~€~~~~~€}€~€€~€~~~€€~€}€~~€~€€€}€}€€~~€~~€~€€~€~~~~€}€}~€~~~€~€~€~~~€}~€~€€}€~~€~}~€}~}€~~€~~~~€~€€~~€~~~€€~}€~~~€€€}€~~~€€~€~~€}€€~€}€}€}€~€~~~~~€€~€}€~€~~€~~€~~€}€~€€~€~€~~€~~}~~~~~~~€~~~~~~€€~€~€~~~€}€€}~~~€~~€~€~~€~~~€‚~~~‚}€~€~~~€€~€~€~~€~€€‚~~€~€~€€~€~~}~€€~~€}~~€~€€~}€~~~€€}€~~€~€~€~~~€~€~~~€}€€€€~~~~€€~€}€~€~~~€~€~€}€€~€~}~~€€~€}~~€~€€€~}€~~~€€}€}~€€~€~~~€~€~€~€}€~~~~€~€~~~~~€€~~~~€~~€}€}~€~€€~€~€~€}€~€~~~€~~€~€€~~€~~~€~€~€~~€€~~~€~€€~€~~€~€~€~~€~€€€€~~~€~€}~€~€~€~~~€}€~~~~~€~€}€~€€~}€~€~€~€€}€~€~€~€~~~~~€~€€~€}€~~~€~~~~~~‚~€}€~€~€€~€€~~}~€~€}~€~~€}€}~~€~~~~€€€~~€}€‚~~~~~€~~~~€~€€~€€€€~€€}€€~~€~~€~€~€~€~~~~€~€}}~~~€€€€~~€~€~}€}€~~}~~~€‚~€€~~€~~~€}€€~€~€~~}€~€~~€~€~~€€~€~~~~~~€€~€€€~€~~~~€~€~€~€}€~€~~}€~€~~~~~~~~€~€~~~‚}~~€}€}~€~~}€~€€~€~~~}~€~€}€€~€}€~}€}€~~€}~€~€€~€}~~€~€~}~~~€~€~€€€~~~~~€~€~}‚€€~~~€~€€~~~}€~‚€~€~€}~€~~~€~€~€}€~€~€~~~}€~‚€~~~~€~~€€€~€~}}€~~€}€€€€}€~~~€~€~€~~~€~~~~~~€}€~€~€~~€~€~€~€€~~}~}~€~€€}€~}~€~~}~‚€€~€~~€€~~€~~~~}€~€}€~~~€}€€~€~~€€~€~~€~~~~~€~€€~€~€~}‚~€~}€€~€~~~~€~~€}€~~~~€~€~~€€~€}~€~~€€€~~~~€~€}}€~~}~~€~€}€~€~}€}€~€~€€~€~~€‚~€~~~~€€€~~€~}~~€€~~€~~€~€~€€~€~€€~~€€~€~~}€~€}€~€€~€~€~~~~~€~€~€~~~€}€~€€~}~~~~€€~~€~~€~€~€}~}€~€€~~~€~€€€~~~~~€€~~€~~€~€~€}~€}€}~~~€~~€‚~~~€~~~~€~‚~€€~~€~~~~€}€€}~€~€~€}€~€~~€~€€~€~~€~€~€€~~~~€€~€~~€~€~}~~~~€~€€‚‚}~€~€€~~€}~~€~~€~~€}~~~~€}€~~€€~~€~~€}€~€€€~€~~~€€~~~~~~€~~~€~€€~€~€~}€~€~~~~€~~~€~~€€€~€~€}€€}€~€~€‚~€~€~~~€~~€€~~~}€~~€€}~€~~€~€~~€~~~~~~€~€€€~€}€~}€€~~~€€~€~~€~€€€~~€~}~€~~€~~€~~€}~€€~~~~~€€‚~~€~~~~~~€‚}€~~€~€~~~~€~~€~€~€}~€€}€~}~€~€~~€€~~€~~~€€~€~€~€~€~€}~}€~€€‚~~~€~~€~~~~~€€~€~~€}€€~~~€~}€}~€€~€€}~~~€~€~€}~~~~€€}~€}~€~~€~~€~€~€~~~}€~~}~€~~€€}€~~}}~€}~~€€‚~€~~~~€~€€~~~€€~€~~€~€~€~}€~€~~~~~~€~€~€~}~~€}€~€€~€~}€€‚~~~€~€}€€~€~~~€~€~}€€}€~}€~€}€€~€~~~~€}€~€€}€~~~~~€~~~€~~€€‚~€€~€~€~€~~‚‚~~€~€€~€~€}~~€~~€~€~~~~€€}€~€€€€~}}€€}€}‚€€~~~€~‚€~€~€~~€~€€~€~~~€€~}€}€€~~€~€€~}€~~€~€~~~~~€~€~~~€~€~€~€~}€~€€~€~‚~~~~~}€}€€~~€~€}}€€~~~€~€}~~€~€}€~€~€~~€}~€~€€€€€~€~~~€}~€€~€~}€~~€~~~~€~~€}~€~~€‚~~€‚}€}€~€}€~}‚~€~€€~~~~}€}€~€~€~~€~‚€}~€~~€€€€~€~~~€~~€€~€~€~€€€~€~~~~‚~€€~€~~~€~€~€~~~}~€€~~€~}€€€~€~~€~€€€~€~€~€€~€~€~}€€~~€}€€~€}~~~~~~~~€~€~€~~~€~~~€}€~~~€~~~€}€~~~~€~€€~~€~~}~€}€~€}€~€~‚~~~€~~€~€~~~~~€~€~€~~~€~€€~~€~}~€€}~}€~€~€~~€~€~~~€~€€~~‚~€~€~€€~€€€~~~~~€~€~€}~~€€€}~~€~€€€~~~~€}~}~€~~€€~~~~~~€}€~€~€~‚~~}€€}~€~€~~€~€~€~~~€~€€~€~€~€€~}~~~~~~€~€€€~~~~€}€~~€~~}~€€€~€~€~~}€~€€~€~~~~€~‚€~€~€~€~€~~€}€€€~~~~~€~€€~€~~€}€}€~~~€~€~~}€~€€‚~~~~€€€}€~~€~€€~}€~}€€€€}€~~~€~€~€~€~€~€~~~€~~~~~€~€€~~~~~}~~~~€}€~€~€~~€~}€€~~€~~~€~~€€€~€~~~~€}€~~€~€~~€}~€~€~€}€}~€~~€~€€€~€~~~~€€~€~~€~€}€~€~€€~~€€~‚€~~}~~€~€€}€~~~€~€~~}~~€€~€~~€€~€~~}~~€~€€~‚€~€~~}€~~€€~€~€~}€~€€€€~€~~~€~€€~}€~~}‚€€~~}€~€€~€~€~€~‚‚}~€~~~€~€~€~~€€}€~€~}~~~~€‚~€}€~~~‚~~€€~€€~‚€~}~€~€~€~~€~~€€~~~~€~€~€€€€~€~~€~~€~€~€~€~€}~€}€~~~€}€€~}~~€}~€€}€~~€~€€~€~~~~€~€~€~~€}~€~€~€~}€~~~€}~€€}~€}€}~€~€€€~€}~~€~~€€‚€~€~€~~‚~~‚~€‚}~€~€}€€~~~~~‚€€~~~€~~€€€€~€~~~~€~~€~€€~€€~€~€~€~€~~€~~€~€~~~€~€€~€~€}€}~~~‚~~~~}€€}€~~~~~~€~€~‚~~~€~€}€€~€~€~}€~€~€~~~~}~€~€~~€~€€€~€~€~~~~€€€~€~~€~€€~€~€~~€}€~€}€~~~~‚~€~€}€}€~~}~€~€‚}€€~‚€~~~}€}€€€€~~€~€}€€~€~€‚€~€~~~~€~€~‚~~~~€~€~€~€€€~€}~~~‚€€~~€~~~€~€€~€~€}}€~€~~€€~~~~}€€~€€}€}~~~}~~~€~€~€€€~€~}€~€~€~€~~~~€~€}€~€~~~€}€~~€~€~~€~~~€~€€~~~~€‚~~~€~€€~€~~~~€~€€~}~€~€€~€€~€~~€~‚~€~€€~}~€~€€~€~~~€~€€€~~€~€€~€}€~~€~~€~~€‚}~€~€€}~€}€~~~~}€}~~~€~€~~~}~~€€~}~~~€~€€~€~~~~~~€}€~~~~~~€~€€~~€~€€}€~~~€}€~€€€€~€~~€~€}€~}~~€~€€}€~~~~€~€~€~€~~€‚}€€~€~€~€~~€~€}€~‚€~~~‚€~€~€~~€~~~~~€~~~€~€€~€~~€~€€~€}~~~€€€~~~~~€€~~€~€~€}~‚~~€‚~~€~€}~~~€~€€}€€~€~€€~€~}~~€~€~€‚~~~€~€~€~~~~€€~~~}~~~~~~}€~€€}€~€~~~€}€}€~€~}‚€}€~€~€€~€~~}€~~€|~~€~€~€~€~‚~~}€~€~~}€~€€€~~€~€}€€~€~€~~€~€€€‚~€~~€~‚€~~~~€€~€~~~~~~€‚~~€€~€~~€}€€}€}€~€}€~~€€€~~€}€~‚~~~~€~€~€~~~€~€€€~€~~~€~~~€~~~€€~~€~~~~€‚~€~~€~~}€~€~€~~~~€~~‚€€~~€~}~€€}~€~€~€~~}~€€~€€~€~~~‚~€}€~€~~~~}€~~~€~~~€~€}~~}€}€€~€~€~€€~€~€~~‚}~€€~~€~}~~~€~~~~~€~€}€~}€€~€~€~~€€‚~€~}€~~}~~€~€€}€~€~~~€~€€€~€~~~€~€~€€€~€~€€~~}€~~€€~~~€~€€~€~}€~€€~€~~€~‚€€~}~~€~€€~€~~}€~~~~~€~€~€~~~~€~€€}~~~€~~€~~€}~~€~€€~~~~€~€€~~€~~€~~€~€}€~~€~€~~~‚€~€~‚€~~€~~~€~€€‚~€~~€}€~€}€~€}€}~€}}~€~€~€~~€~~}€~~~€~~~~~€~€~€€~€~~€€~~~~~~~€}€€~€~€}~~€~~€~€~~€~~‚~~~€‚~€~€~€~‚~€~€~€€~€~€~€~€~€~‚€€~~~~€€~}~~€~~}€€}€~€~~~€~~~€~€~€~}~~€~€€€€~~}~€€€~~€~€~~~~€~€€~€~€~~~~€€‚~€~~€~~€€€€~~~~~~€€~~€~€~€~€€|€~~~~€}~€€€~~~~~~~€€€‚~€~~~~~}€~€}€~€~~~~‚}€}~€€€~€~~~~€€~~~€~~€~€~€~€}€~~~€~€€~€~€€~~€~~~€}€~~}€~~~}€}~~~~~€‚~~€~~~~~€~€~€€~~~~€~~~€€~€~~€~€~€~~~~~€}€~~€~}€~€~€~€~~~€~€~€€€~€}~~~€~€€~~€}€€~~~}€~€~€€}€~~~€}€}€€~€~€~~~~€~~~~€~€~€~~~€€€~~€~~~€}€~€€€~€~}€}€€}~€€~~~~~€€€~~~€~~~€€~}€~€€~~€~~~€~€€€~€~~€~~€~~~~~€~€~~~~~€}€~~~~€€€~~€~€~€€}€}‚~€~€~}€~€€€€~~€€~~~}~€€€~€}~}€~€€~~~~€~}€~€€€~~~€~~€€‚~}~~€~€€~€~~}€€~}€~~~‚~~~‚~~€~€~~~€~€~~~€~~€€~~~€‚~~€~€~€~€€‚~€~~~~~€€~€€~€~~~~~€€‚~€~~€€}€~€~€€€€~€~~~~€~€~~€~€~€~€€}€€~€~~~€~€€€€~€~}~~}~~~€€~~~~€~~~~~~€~€€~€~~~‚~€€€~€~~€~~€€~~€~~~€~€€€~~€~~~€€€€~~€~€€~€~€~~~~~~~~€~~€~~€~~€€€~€}€~~~~}€~€€~~~€~~€€~~€~~~€~€~}€~}€~€€~~}~~€€‚~~~~€€€€~~‚~~~}€~~€~€~€~~}~€~€€}‚~~~€€€~€~€~~~€~€€}€~~€~€~~~~~€}€}~~€~~‚~€~€~€~€~€~~~~€}~€€~€~~€~€€€€~‚~~~€~~~€~~€~€~~€~~~€~€€~€€~~€€€~€~~~~€~}~€€}~€}~~€~€}€~€~‚€}~€~€€}€~~~€~~~~~~~~~~~€~~~‚}€€~}~~€~€}€~€~€~}€~~€€~~€~~~~~~~€~€€~€~~€€€~€~€~€}€~~~~€}€€}€~~€~~~€~€€~€€~~€~€~~~~~€~€€€~€~‚€~~‚~€~€~€}€}€~}€~€}€~~€~~€~~~€€€~€}~€~€€~~~~€~€~€~~€~€~€}€~€}€~~}€~€~€€}~~~€~€€~~~€~~€€‚}€~€€~~~~€~€~€~~€~~€~~}€~€~~~~€}€€~€~€~€~€~€€~~~~~€€€~~}~~‚~~€~€€~€~€}€~~€~€€~€~~€€€}~~€~~€~€}€€}€~~~~€}€~€€~}‚}~}~}€}€‚~~~~~€~€€‚~~~€~€~€~€€~€}~~~€€~}~~~€~€~~€~€~}€‚~~~€~€~€€~€~€~€~~€~€€~~€~€~~~€~€}€~€~}~€~€~~€~€€~€~~~€~~€€~~€~}€~~€~~~~~~€~~€€~}~~~€~€€~~€~€~~€‚~~}€~~€~€}€}~€~~~€~€~€~€~‚€~€~~~€~€€}€€€~€~~€~€~€€}€~~€~€~~€~~€~~€~€~€~€€~€~~~~~~€~€€~€~~~~~~€€~€€}~€}~~€€€~€~~€~€~~€€~€€~~€~~~€~~€~~~€~€~€~~€~~€~~€~~~~€~€~€€~€}~~~~~€~€€~€~~~€~€~€~€~~€€~€~€~€€€~}€~~€€~~~€~€}€}€~€~€€€~€~~€~€~€~~~~~~}€€~~€€€~€~€~~€~€~~‚~~~€~€~~~~€}€€€€~€€}€~~‚€~~€€~~€~~~‚}~€~€~€~€€~€}~€~€€€€~€~~~€€~€}~€~€~€~}~}~€~€~€€}€~€~‚}~~€~~€€€~€~€~~€~}~~~€€~€~€€~€~€~~~€~€~€~€~€~~~~€€~€~€~€€€}~~€~~€€~~~~€~~€}€~~€~€€€~~€}€~€€~€~€~~~~~~€‚~€€~€€€~€~~~~€~€~€~€~}€~€~€€€€~€}~~€~€}€€~~€€}€~~€€~€~~€}~~‚~€~€€~€~~€~~€€}€€}€~~€~~~~€~‚€~€~~~€}€}€~€~€}~~€~€€~€~€~~}}~€~€~~‚~€}€}€~€€~€~~~€~€€~~}~~€~€~€~~~}€}€€‚~~~€~€€~~~~€€€~€~~~~€}~~~€~~~€€~€~~~€~€~~€~~}~€~~€~€~~~~‚~~€~€€~€~~~~€~€~€~~€~€~‚€€~~~~~~€~~€~€~€~€€~~€‚}~€~}€~~~€}€€~~€~€€€~€~~}~€€~€~}€~€€€~~~€~€€€~~€}€~~~~~~€~}€~€€€~€~~~}€€~€~€~~€~~~~‚~€~€€~€~€€~€~€~~~~€~€~~€~€~€~~~~~€€€}€~~~€~€€€~~€~~}€‚~€~~€~€~€}}€~€€~€~€}€~€}€~~}~€~~€€}~~€~€€€}€~~}~~~€€€~~€~~€~~€€€~~€}~€€~€}€~€€€€~~~}€~‚}€€€~€€~~€}‚€€~~~€~€}€~€}~}~~€€}€~~}€}€~€€~}~~~~€~~~€€~‚€~€~~}~€~€€~~~€€~€~€~€€~~€~~€~€~€}~€~‚€~€~~€~€€~€~€~~~€€~€~~€}€€€~~€~€~€~~€€}€~~~€€}€€~€~~‚€~€~€€~€~~‚€€~€~~€~~~~€~€€€~}€~~€~€~€€~€~€~€~}~~€€€~~€~~~~€€~€~€~€~€}€~~~€~~€~€~€€~€€~~~~€~€€~~~~€~~€~€~}€~~€}~€~€~~~~~€€~}~~€~€€~~€~~}~€€~€~~~~€~€~~€}~~~€‚~€~€~€}~~~~~€~€~€~~~~€~}~€€~~~~~€€€~€€}€~€€€~€~~~~~~€~~€~€~€}‚€€~€~}~‚€~~~€€€~€~€~~~€~€~€~€€€~~~€}€}€€~€}€€~~€~~~€~~€~~€~€€~€~~€~€€~€~}~€}~€~€}}€}€~~~€~€€€~~€}~~€~€~€~~~~€€€~~~€~~€~~€€~€~€~€}€€~~€~€€~€~~€~€€~€~€~€~€~‚€€~~€~€}€~~€~€€~€~€~~€~€€€€~€~€~~€~}€~€€~€~~~~€~€~€}€€‚~€}~€~~€}€}€~~}~€~€€~€~~~€~€~€~€€~€€€~€}~€€€€~€~~~€~€~~€~€€}€~~~€~€~€~€€~€€~€~~€~€~€~~€€~€~€~~~~€~~€~€~€~~€€€€~}~€~~€~~€~~€~~€€€~€~~~€€~€~}€~~€€~€~€~€~~€~€~€€~€~~~~~€€~~€}€~€€~€€}€~€~~€~€~€‚~€€}~~~~€~€€~€}€}€€~€}€~}€€~~~€}~€€~~~~€~€€}€~‚~€~}€~~~~€~~€~€~~~€~€€~~€~~~~€~€€~~~€~€~€~~€~€€~€~€~~€~€€€~€~€}€~~~~‚€~€~~€€~€~}~€€~€~~~~€~€€~€}~~~€~€~€}€~~}€~~~€}~€€~€~~~~€~~€~~€~€~€€~~€~~€~~€€€~~€€~‚€}€€~~~€€~€€~~~}€€~~~€~€~€€~€~€}~€}€~~€~€~€~~‚€‚~€~~€~€€€~~€~€~€}€~€€~€~~‚€~~€~~}€~€€€€€~€~~~€€~€~~}€~€‚~~~€~€~€~€€~€~~~€~‚~€€~€~~~}€~€€~€~~~€~€€€~€~~€}€€~~~~€}€€~€~€}‚~€~€~€€€~~€~€€~€~€~€€€€~€~~€€}~€~~€€€~€}€~~€~~~~}~}€~~~€~€~€~~€~€~€~€~~~}~~€}‚€~~€€}€~€~€€~~~~€~~€‚~€~~€~~€~~€~€€~~~~~€~€€€~~~~€€~~~~€~€€~}€€~€~€~~€}€€€~€~~~€~€€€~~~€~€~~‚~~€~€}~~~€~~€€€€~~~~€~€~~~~~~~€~€~€~~~€~~€~€~~€~€~~€}€~€~€€~€~€~~}€~€}€€~~~‚}€~€~€~€€}€~~€~€~~~€€}€~~~~€€}~~€~‚€€~€~~~€€~€€~~€€~€€~€~€~~~€‚~~€€~€}€~~~‚€~€~~€~~€€~€}€}~€~~~~€~€~€~€~~~€~€‚~€~€~€~€€€~~~}~€~€~€~€~€}€~€~~€~€~~~~€~€~~€€~~~}~~€}~€~€~€~~~}€~€€~€~~€~€€~€~€~~€€~~~~~}€~€~€~€€~~~~~€€~€~€~~‚}€}€€~~~€~€~€€€~~~€~€~€~~~€~€€}€~€~‚~}€~~€€~€~~~€~€‚~€~€€~€€~‚~~€‚}~}€~~~€~€€~€}~~€}€€}€~€~€~~~€}~~€€€~€~~~~€~€~~~~€~~~~€~€€~€}€~€€~€}~€~€~€€}€€~€}€~€~€~€€€~€~€€~€~~€~€~€~}~‚~~~~€~~€~€~€€€€€~€~}€~€€€~€~‚~~~~€~€€€~€~€~~~€~€€~~€~~~~€€‚~~~~~€~€‚~€€~€~€~}~~€~€~}€€€~~€€€}€~~€~~€€€~~€}~€€~€~€~‚€~~€}€~€~€~€~~€~€€€~€}~€~€€~}~~€}€€~€~~~~€‚}€}~€~€~~~€‚}~€~€~€~~€~~~€}€}€~€~~€~~~€~~€}~€~€~}~~€~€€€~~€~~€~€€~€~~}‚~€€€‚}€€~}~€~~~€~€~€~€~€~€~€€~~}~€~~€~€~}~~~€~€~€~~€~~~€~€€€€~~€~~€€~~€~€~€~€€~€~€~~~€~€~‚~~€~~~}~€€~}€~€~}}~€~}~€~~€~€}€~€~~€}€~€~€~~~€~€~~~}€~€~€€~‚€~}~€}€~€€€}€~~~~~~€}€~~€~~~€€~~~€~€€~€}€~~€~€~€€€€€~€~€~€~~€€€€~€~€~€€~€€~€€}€}€~€~~~~€€~~~€~€~€}€~€~‚€~~€~€€€€~€}~~€~~~~€~~}€~€~€€€~€}~~€~€€€~~~€~€~€€~~~}~€€~€~~€~€~€€~€~~€€~€~}~€€~}€~~€~€€~~~€~~€€~~€~€~€~€~€}€€~~~~~€~€~~~~~€~€}}€}~~}~}€€~€~~~~}€~~}€~~~€}€}€~€~€~€~€€~€€}~€€~€~~~€~€~€~~~€€€~€~~€~€}€~~}€~€€€~~~~€~€€€~€}}€~~‚~~~‚~~€~}€~€~~~}~€€~€~~€~~€~~€~€~€€~€~~~€~€€~€~~€~~~~€~~~~~€}~€~€}€}~}}~~~€}€~~€~€~~€~€€}}€~~€€~~~€~€€€~€~}~~~}~~~~€~€}€~€€€~€€~€~}€~~~~}}~~€€~~~€~~€~~‚~€~}€~~€~~€~€}€€~~€~~~€~€€}€~~~€€}~~€~€€€~€}~€~~}€‚~~€~€}}€~~‚~~~€}€€~€}€~~€~~~€~€~€~~~~€~€~~‚€~~€~~~€€}€~€}€~‚~~€~€}€€}€€~€~~~€~€€€€€~~~~€~€€}~€}€~~~~€~€~~~~€€€~€~~}€~€€€~€~~~€~€~~€€}€€~}€~~€~€€~€~~‚~}€€~€}€~~~€~€~€~€~}€~€~~~€~}~€~€€€~€~~~€€~~€~}~€€~€~~~~€€€}€~€~€~€€~€}~€~€€€€~~€~€€~~~~~€~€~~~€€€~~~€~}€}€~€}€~~€~~~~€~€€€€~~~€}€~€€~€~€}€~~~~€€€~€~}~€€~€}€€~~€~~~~~€~€€~€~~~€€~~~}€€~€~}€~€€~€~€~€~€~€€~€~~~€~~~€~€~€~€~~€~‚}€‚~€€~€€~€~~~€~€€}€~~€€~€~~~€~~€€~€~~~~€‚~~~€~~~~€~€}€~}€~€~~~€~~€€€~}€~~€}€~€~€}}~€€~~~~€~~~€~€}€~€~~~~€~€~€}€~~~€~€}~~€~€€~€€~€~~€~}€~€€~€~€~~~€~€€~~€~€~~~€~€€€~~~}€~}~€~€~€€~€}€€~€~~‚€~~€~€}~€€~~~‚~~~~}€€~€}~€~€€~€}€~€~€€~~€€~‚~~~~~~€~€}€€~~~€~€€€}~~~~€€~€}€€€~€~~~€~€~€~€~€~€~~€}~€€~€~€€~}€~~~‚€~~~~€}€}~€€~€‚~€}~~€~€~~}€~€~€~~~~€€~}~€‚}€~€}€€~€~~€~~€~~€~€~~~~€~€~€}€€~~€€€}€~~~~‚€~~}€~€~€~€~€~~€~~€~€€~~~€~~~€}€€}€~~~‚€~€~~€~€€~€}~~€€~~€~€~€€~~~~€~~‚€€~~~~€~€€~~€~€}€~~~€~€€‚~€}~~€~€~~€}€~~~€€€}~~€~~~~~~€}€~}€}~€€~€€}€}€~‚€~~~~~€}€~€~€~~~~€}€~~€€‚~€~€€~€}~}€~€~~€~~~€~~€~€~~~€}€€~~€~€}‚€€‚~€~€~€~€~~~~€~€~€~~~€~€‚~€~~€~‚€€~~€~€}~€}€€~€€~€€~~~‚~~€}€€~€€~€~€~€~~~€~€~~~~}€~~€~€~~~~~~€~€~€~€~}€~~~~~~€€}€~}€€~€}€~€€~€~€~}~€}€~€€~~~~~~€€~€~€~€€‚~€~}~€€~€~}‚€‚~~€~€}€~€~~~~~€€}€~€~€~~~€~€~€~~€~~€~€}~~‚€€~~€~~€~€}€€}€~~€~~~~€~€~€€~€~~~€~€€~~~~}€~~~€~~~‚~~€~~€~~~‚~~€}~€~€€€}€}~€}~€€€€~~~€~~€€€}~~€~~‚€}€~€}€}€}€~‚€~~~€~€~€~€~~}~}~€€€~€~~~€~‚€€~€}~~~€€~€~~€~€~‚~€~€~}€~€€€~€~~~€~~€€~€}~~€~€~€~~~~€€€€~€~€~}€€‚~~~€}~‚€‚~~€}€}€€~€~~€~~€~€~~~€~€~~~€}€~€‚}€~~€~€€~€~~€~€€~€~~~~}~~~€€}€}~€}€~~€~€}€~€~€~€}€€~€‚~€~~~€~~€~~~€}€~€}€~~€~€~€€~€~€~~~~€~€~~€€~€~}~~€~}€€~€~~€~€~€~~€~~€}€€€~€~€~~~~€~€~~~~€~~~~€~€€€~€~€~€€}~€}~‚~~~~€~€}€~~~€€€€‚~€~~€~~~€~‚€€€~€~~~€~€~€~~€€~€€~~~€~€}~~~~€}~€€€€}~~€~€~€~~~€~€~}€~~‚~~~~‚€~€~~€€~€~€~~€~€€~~~€~€~€~~~~€~~€~€~~~~€~~}€}€~~€~~€€~€~~~~~€~€€€€‚~€~€~€~€€€~€~~~~~}€~€€~€~~~~€~€€€}~~€}~€~~~€}€~€~€~€~€€~~~~€~€€‚~€~~}€}~}€~€~~~€~€€~€~€}€~~€~~~€}€}€€~~~}€~‚~€~~€~~€~€~€~~~€}€€}€~€~}€~€€€~~~€~€€‚~~~~€~€€~~€~~~€~‚~~~~€~~~€~~€€~€~~€~€€€€~~€~~€~~€€~€~€}~~~€~~€~~€~€~€~~€€~€~~~€~€~€}~€}€€~€~~€€€~€}~€~€€€~€~~}€~€}~€~€~}€~€}‚~€~€~€~€€€~€~€}€~~€€~€~~€~€€~€}€~€~~€~€~€€~~~~€€~€~~~~€~€~~€€}€~~€}‚~~~€~€}~~~€~€€~€~~~€~€~~~€~€~}~~€~€~~~€}€~€~~€}€}~€~~}~€}~€€~€~~€~~€}€~€€‚~€~~€~~€~€~€~€~€€~}~€€€€~€~~€~~€€~€}~€~€€~€}~~€}~~~}€}€~~~~~~€€~€€~€~~~~€~~€€~€~~€~€‚~~€~€}€}€~€}~~~~~€~€~€~~}€~€€~~~~€~€~~€}€~~~~~€~€}€~€~€~~€~€}€~€~~~~€~€~€}€‚~}€~€€€~€~~~~~€~~€~€~~~€}€}€~~}€€~€~€~~~~~€€€~€~~~~€€~€}‚€~~~€~~€€~~€}~~€~€€€}€~€~€~‚€~~€~~~€€‚~€~~~€~€€~~€~~~~€~~€~€~‚€~€~€~€~€~~~€~€€€‚}€~€~€€~~~~~~€~€~€~€~~€}€€}€€~~}‚~~~€~€~~~€}€~}€€€~€~€~}€~~~€€~~€~}~€€~€~~€~€€~~~€~€€~€~€~~€~€~€~~€~€~€}€~}€€~~‚~~~}€€~‚~~~~~€~€€~€~~€}€€€‚}€~~€~€€~€~~€€~~~€~~~~~€~€~~~‚~~€~~~€€~€~~€~~€~€~€~€~€~~€€‚~€~~€~€€~~~~~~~€€~€~~}€~~€€~€~€~~€~€€~~€}€~€~~€}€~~~€~€~€€~€€~~€~€}€~€~~€~€}€€}€€‚~~€~~~€}~€€€~}~~€€~€€~€~~€~~€~€€€‚~}~~€~~€€~}€}€}~€~€~€€~€~€€~~€~€€~~€~~~~€€~~‚€~~~~~€~€~€~€~~€~‚}€}~€€~€~~~~~€}€~€€~€~~~~€}€~~~€~~€€~~}~~~€‚~€~~~~€€€~~€~}€~€€€~€~~~€€~€~~€~€€€~€~~€~€€~€}~~€~€~€}€€~€~~~}~}€~€€€€€~€~~€~€€~~€~~~€€€€~~€~€~}‚€~~~€~~€~}€~€~€}€~€~€~}€~~~~~€~€~~€~~~‚€~}~~€~€€~€€~~€~€€~€€€~€~~~~€~~€}~‚~~~~€~€~€~€~€~€~~~~~€~~€€}€€}~}€~€}~€~€~~~€}€~€~€~€~~~€€}€~~~€€€‚~€}€~~~€~~€~€€~€}~€~€€~€~~~~~~~~~~~€}€~€~~~~‚}€~€~€€~€~}~~~~€€€€~€~~~€€~~}€~€€‚~€€~€~€€~€~€~€~~~€‚~€~~~~~~€~~€€~€~~€~€€~€}€~€~~€€€~€~~‚~~‚~€~€€~€}~~€~€€€~€~~€~€€‚~€~~€~€€~}~~‚‚~€}~€~€}€~~~~~~€}~~€€~~~€~~€€}€}€~~~~€~€€~~€}€~~€~€€~€~~~€~€€€~€~~~~~~€~€~€~~~‚~}€~€~€}€~~~}€~€~€~€~~~~€€€~€~~~€~€~~€~‚€€€~€}€~€~€~€~€~~€~~~€~€€€~~~~€~€€~€~~€~~‚€~~€~}€~~€~~~€~~}~~€~€€~€€€€~}€~~~€~~‚~‚~~€~€~~}~€€~~€~€~€}~~~€‚~~€‚~€~~€~€~€€€€~~~}€~€~€~~€~~~~€~~€~€~€€‚~€~~€~~€€~~€~~~~~~€~~€~€€}€~~~€~€€~€€~€~‚€~€}~~€~€~~€~~€~~‚~~€}~€€~€~~~~~~€~€~€€~~~€€~~€~~~€}€~€}€€}€€}~~~€~€€€~€~~~€€€~€€~€€~€}€~€~~€€€~€~~}€~~~~€~€~€~€~€~~~€~€~~€~€~€}~~€~~€€€~}~~€~€~}€~~~€€~€~~€~€~€}€~€~€€~€}~€~~€~€~~‚~~~~€~€€€~~~~€}€€€€~€~~€~€~~~~€~€€~~}€~‚€€~€~€~€€~}€~~€~~€~~€€€~‚}€~~~~€~€~€€~‚€~€~€~€€~~‚}~€~€~€~€~~~~~€}€}€~€~€}€~€}~}}€~€~~}~}}€€}€~€~€€~}€~€€~~~~€~€€~€~~€}~€€~€~~~~€~~€~}€~~€~€€€~~}~~~~~€~€~€~~€~~€€~~~}€~€€~€~~~~€€€‚~€}€~€€}€~~~€~€€}€~~~~€~€~}~€~~~~€~‚~€}€~€}€}€~€~}€€~€~€~€}~~€}€}~€~~€~~€~~€~€€}€~~~€€€~~~~~~€€~€}~~}~€€~€~~~€~€~~~‚~€~€~€€~€}€~€~€€~}~~~~€~€~}€~€€~~~€~€~€€€~€~€~~~~~€€~€~€~€~€}€~~€€}~~€~€~€~€~~€~‚€€~€~~€~~€~~€~€€~~~~€~€€€~~€}~~€}€~~€}€}€€~€}€~€~~~€~€~~~~€~~€~€~€~~~€}€~€~~€~~~€‚~€}€~~~~~~€€~€~~~€}€€~~~~~€~€}€~~~€}€€~€€~€~~~~~~‚€~~‚~~€‚~€~€~€~~€~€~~~~~€~€~€~€}€~€~~~€~€~€~~~€~€~€~€~€~€~~~€~€~~€€}~~€}€€~~~€~~~}€}€~~~~€}}€€€€~€~~}€€~€~€~~~€~}€€~€€}€~€~€~~~}}€€~~~~}‚€€}€~~~~€~€€~~€~€~~~€~€~€€~€~€~~~~€}€€€~€}€~~}€~€€}€~~~€~€€~€~€~~~€}€~~€~€}€€}€€~~~~€~€€€~~~~€~€€€€~~~€~€~€€}€~€}€~~~€}€~€~~€~‚€€~~€}~€€€~€~~~€~€€€~€~~~~~€~€~€~€~~~~€€~€}€~~~}€~€~~€~€~~€€~~~€~~€~~~€}€}}€~€~€~~€~€}€~~}€}~€€~~~}€~€~~~}€€}€€}€}~}€~~€~€~€~~€~‚€‚~~€~€~€~~~~€€€€€~€~~~€€}~~}‚~~€}~‚€}€~~€}€~~~€~€€~€~~~~€}€~~€€}€}~‚}~€~~€~€~€~€€~~~€~~~}€~€}€~€€€~~~€€€€}€~~€~‚~€€~~~~}‚~~€~~€~€€~~~~€}€~€~~~€€€~€~~~}€~~~‚}€€~€~~€}~€€€~€~~~}€€€€~~€~~€~€~€~‚€~€}€~~€~€€}~‚}€~~€}€~€€~~~~€€~€}€~€}‚€~~~€‚~€~€€~€}€~~€~~€~€€~~}~~~€~€€~}~€€~€~€~€}€~€~~~~~€~€}~€€€~€}~~‚€~~€~~~}~€~€€~€~€~~~€~€€~€~€~~€}€~~~€~~€~€~€~~€€~~~~€~€€~~€~€~€~€€~}€~€~~‚€~€~~€~€€~}€~€~~€€~}~€~€}€~€}€€}~€~€‚~€~€~~~~~€~~~€~~€~~€€€}~€~€~€~€~€~~€~~~€~€~€~~~~~€‚}~€~~€~€~~~€~€€~~€~~€}€€~~~~~€€€~~€~~~€~€~€}€~€~€~~~€€€~~~~€~~€~~~€~~€~~€€€~€~€~€~‚€€~~€}€~€~€€~}~€~€€}~€~€~€~~€~€~€~~~€‚~~€€~€}~~‚}~~€}~€~~€~~~~€€€€~~€€~€~€~€}~~€~~€~~€~€~~€~~~~}€~€€~€~~~~€€€~~€~~~~€‚~€~€}€~~€~‚}~~€}~€~~~~}~~~}~~~~€€~~~~~€~€~€~€}€}€€~€~}}~€€~~~~€~~€~~}€~€~€~€~€}~~}€~€~~€€~~~~€€€~€~€~€}€€€~€~€~€}~€~€~~€~~€€€~€~~~€~~}€~€}€~€~€€~€€~€€~~~€~~€}~€~~€~€€€}€~}€~~€~€~€€~~€}~~}‚~~~€~€~€~€~€~~~€€~~~~€~~€€~€€}€~~€~€~€~~€~€€~€€~€~€}€~~~~~€~€€~€€€~€}~€€€~€~~~~€}€~~~~~€€~€~~€~~~€~€~€}~€~~~‚~~~€~~~€€€~~~~~€~€€€~~€~~€~~~~}‚}~€~€~€€~‚€€~€~~~€~€€~~~~€~€~}€~€€~€€~€~~€€}€~~~‚}~~€}€€~€~~~€€‚~~~~~€‚~€~€}~~~€}€~~€~€}€~‚€€€‚~€~~€~€€€€~€~~~~€~~~€}€€~€~~}~€~~~~€~€~~€~€}€~€€~€}~€~~}~€€€~€~~~}€€~~€€~€~~~€~€~€~~~~€~~€}€~€~€}‚€~~~€~€~€€€~}€~€~€~€€}}~~~€~}~~}€~€‚~~€~€~~€€€~€}€~~€~€~~€~}~~~~€~€~€€}€~~~€~€~€~€~~~~€}€~€~€~€~€~~~~€~€€~~~}€~€}€~~€~€€~€}~€~€~€€€€~€}~€~~~~€}€~}€}€‚~}€~~~€~€~€~~~}€~€~€}‚~~€}€~€~~€~~€~€~~‚€€€~€~~~€~€~~€‚~~~€€}~~€~€~~~€€~~~}€~€}€~€€~€€~€~€~}~~~~€}€~€€~~~~~€~€€‚~€~~~€~€~€€~~€~€~~€~~€€}}€€~€€~~€~~}~€~€}}€}€~€~~~~€~‚~€}€~~~€~€€~€~~€~€€€€~~€~~€~~~€~‚€~~€~~€~€€€~~~€~€‚€}~}~€€~~~€~€€~€~€}}~}~€~€€~€€~}~~~~€€€~€~~€~~€€~~~~~€~~€~€~€}~~€~~~~~€~€€€~~€~€€~€€~~€}€~~~}€}€€~€€}€~}~~}€}€€~~€~~€~€€~~~~~€~‚~}€~~€~€€€~€~€~€~~~}€~}~~€~€€~~}€~€~~~~€~€€~~~~~€}€€~~~€~~‚~~€~~€~~}€~~~€~~‚€~~€~€~€}~‚€~~€~€~~~~~~€}€€}€~~~}~€€~€}€€€‚~~€~~~€}~~~~~€}€€~€}€~~~~€€}€~€~€~~€~€~}€~€€~€~~€}€€~~~€~~€€€~~~~€~~€}~~~€~~€~€~€~€~€~}€‚~~€~~€~€~€~~€€~~€~~~€~€~€~}€~€}€€~~~€~~€€}€}~}€~€~~€~€€~€~€~~~€~€}€~~~€~€€€~~~€~~~€~€€~~€~}€~€~~€~~‚~~€}€€~~€€~~€~€€~~€~€‚~~~~~~€~€~€}€~€}€~~€}€€€~~~€€~~~€~€~€€€~€}~~~€~€~€~~€~~}~‚~~€}€€~€~~}~‚~~€~€€~~~~~€~~€}€~€~€~~~€~€~~€€~€~€~}~~€}€€~€~€~€}€~€€~€~~~€~€~€~€~€€~€~€~~€~€~€~€€€~€~€~~~€~€~~€}~€}€~~€~~€€~~€~€~}}€~€€}€~~~}€~~~~€‚}~€€}€€}~~~€~~€~~~~€}€~€€}€€~€~€}~~~€}€€}€~‚~~~€€~~~€~~~€€~€}€~~~~~€}€~€~€€}€‚~€~~~€~~~~}€~€~€~~€~€~}€~}€~€~€€~€~~€~€~€~~~€~€~€~~~€~€~€~~€~€€~~~~~~€}€}~€}€~€~~€~€~~~~€~€~~€€}€€~€~~~€}~~€~~€}€~~€~€~€€~~~~~€~~€€}€€~€~~~€€€}~~~€~€€~~€~~‚€€€~~€~~€}~€~€€}€~€€~€~~~~€~€€€~€~~€€~}~€~‚€€€~~~€~€~€~€~€€~€~~}~€~€}~€~€€€~~~~€~€~~€~~€~€~€€~~€~}~€€~€~~~~€€~‚€~~‚~~€~‚€€~€~~€~€€€~}€~‚€~~~€€~~€€~€~}€}~}€}€€€€}~~€~€~€€~}€~€~‚€~~‚}€~€~€~€‚~~~€}€~~€~~~~€}€}€}€~~~€~€~~~~€~€~€~€€~‚€~~€~€~€}€}~~~~}€€€~~~~~€€~€~~€‚~~~€‚~~~€~€}€~~}~~€~~€€€‚~€~€~€€~~€~€~€~~~€~‚‚~‚€~~€~€~€}€~€~~€~€~€~~~€~€~}€~€~~~~€}€~€€€€~€~€}~€~~~~~€~~~~~€~€}€€~€€}€~€~~€~~€€~€}~€~~~~‚~€~€~~€}~~~€}€~€}~}‚}~~€~€~€~~~~€€~~~€}~€€‚~~€~}€~€}~€~€€~~~€~~€‚~€}}~}~~€€€~€}€~~€~~‚€€~}€}€€~€€~€€~€~€~~~€~€~~~~~~€€~€~~€}€€€~€~~€~€€€€~~~€~€€~€~~€~€€‚~€}€~~~€€~€~}€~€~~~}€~€~~}€~}~~€~€€~€~~~€~€~€~~€€~~~~€~~~€~€~€€€€~€}€~€~€€€~~~}€~€€~~€~~~~€€€~€~~~€€~€~€}~}~€~€~€~~}€~~€~~€~~~~~€€~€~€~€}€~€~~~€~€}€€~€~€€~~~~€~€€~€}~~€€~}€~~€~~~~~€€€~~€~~€~€}}‚€‚~€~~~}~‚€€~‚~~}~€~€~€~€~~}~€~€~~€~€~~€~€~~€}€~~€}~~€}~€~€~€~€~€~€€€€~€~€}€~~€~€€€~~€~~€~€€~}~~~}€~~€~€€~~€~€€~€~~~€}€€~~~€~€€~€~~€~€}€€~€}€~~~~}€€~€~€~~€~~€~€}‚~~€~~~}€~€€~€~~€~€€€~€~€~~~€~€€~~€~€~~€~~~€€~€~~~~~~€~€~€€~€€~}~~~€~€~€~€}€~~€€~~~€~€€€~€€}€~~€~~}€€€~~€~~€~~€~~€~€}€~~~€~€€~~‚€~€~€~€~€~€~~~~~€~}€}€~€~~~€€~€~€~~‚~~€}€}~€~~€~€€}€~~~~~~€€‚€~}~~€~€~€}€~€}‚}~€~€€€€}~€~€~€}€~€~€~~~€~€}€~€~€~€~€€~€~~~€~~€€~~€~~~€~~€}€€~‚€~€~‚~€~‚~€€~~~~€~€~€~~~‚~€}€}€€~~~~€~~€€~€}~€~~~~~~~€€~€~~}~€€~~~€}€€}€~€~€€~~€€}€€~€~€~~~~~~~€~~€~~~‚~€€~€~€~€}€~~~~€}€~€€~€~€~€€€~€}€~€€~}~~€}€}€~€€~€~€~~~€~~€€€~€~~€~€€}€€~€€~€~€~€~}€€~€~~~€~€€~€~~~€}€~€}~~~~€}~€~€~€€~€~~~€}~~}~€~~~€~~~~€~€€€~}~~~€~€€~€~€}€€~€~~€~~€~€~€~€~~€~€~~}~€€~€~€~~~€~€€~€}}€~€~€~€~~€~€€}€€~~€~~~~€}€€€~€~€~~€€~~~€~€€€~€~~~€~€}€~€~~€~€€~€~~~~€~€~€~€~€€~€~€~}~~€€~~€}€~€~~}~€}€}€~€~€}€~€~€~€~~€~€€‚~~~~~~€€~€~~~€€~~€~~€~€€~~~€‚~~}€€€~€~}€€~€€~€}€~~~~€~€~€~€~€€€‚‚~~~€~~}€~~€}~~€~~€~~~€}€€€~~~~€~€€€~€~~}‚€~€~~~~}€~€€~€~€~~€~~~~~€~€€~~€~~}€~€€~€}€}€~~‚€~~~~€~€~~€~€~~€~€~€€€~€~~~‚~€}€~~~~€~€}€€~€~~€€~€~~€~~€€~}~€~€€~€€}€~€~€€~€~€~~€~€€~€~~}~€€~€~~€}~€~€€‚~€~~€~€€~€~~€~€~~~~€~€€~€€}~€~~~~€€~€~€~€€€~€~~€~€€~€~~~€~€}€~~~€~€~€~~€~€€€~€}~€~~~}€€~€€~€}€~~€~~~€~~~€~€~€€~€€~€~~€}€~€€~~€~€€€€~~€~~~‚~~~€‚}€€}~€~~€~~€}€€~~~~~€~€~€}‚~~€~€~€~€~~~~€}~~€}}€€~€~~~}~~€‚~~~€}€}‚€~~~€}~€€~€~~}€~€~€}~~€~€~€~~~€}€€~€~~€~~~€~€€~€~~~€}€~~€~~~~~~€~€~€~~~~€€€~€~~~€€~€~~€}€~€~~~}€~€€~~~~~‚€‚}€~€~~~~~€~~~~~€}€€~€~~~€}€~€€€~€~~~~~€€‚}€~€€~€~€~€~€~€~~~~~€}€€~~~~€~€}€~€€~€~€~~~€~€~€~~€~€€€~~~}~€€€~€~~~€~€~€~~~€€€~€~~€~€~€~€~}~~€€€~~€~~~€}€~~~~~~~~€~~~~~~€~€€€}€€~€~€€~€~€~~€€€~~€~~€~€~~€~~~€~~€~€~€€~€}}€€}€~€~~€€}€~~~~~~~€~€~€~}€~~€€~€}€}€~€~~€€€~}~~€~~~€~€~~~~~€~€€~~}€~€}€~€~~~€€~~€}~~~€€€~~~~~~}€~€€~~~~~€~€€€~€~~}~€}~€~}~~~€€~€~€~€~€~}~€~€€~}€~~~~€~€~€~€~€~~~}€~€€~€~€}~~~~€~~€}€~~}~€~€~€~€€~€~~~}€}€€~€}€~~~€~‚€€~€~~~~€~€€~~€~€€~€~}€}€~~~~~~€~€€~~~~€~~€~€€~€}€~€}}€~€€~~‚~~€~~€~€€€}~~€€~€€}€~~~~~€€~~~€~~€}€~~€€€~~~€~€€~€~€~~€~€~~~~€~€~}~~~~€~€}~~€€€€~~€}€}€}€~}€~~€~~~~~‚~}€€}~€~€‚~€~~€~~€€~€~€~€~~~~€~€€~~~}~~€~€€~€~€~€~~€~~}€~~€~~~€~€€}~€~€}€~€}€~€~~€~~€~~~€‚~€€~€~}€~€€€}~€~€€~€€~€~€}€~€~€~~€~€~‚~~€~€~~~€~~€~}€~~~~€~€€€}~€~€~~€~€~~~€~}€~€~~€}~~€~€€€€‚€}€~~~~€~€~~~~€~€~€}€}€~€€~€~€~€~~‚€€€€~€~‚~€~€~~~~}}€~€€~~€}~€~~€€~}€~~~€~€€~~€~~~}€~€€~€~€~€‚}~€~€~~‚~~€~€~€}€€~~€~~€~~€€~€~€~€~~€~~€€~€~€~~€~€€}€€~€~~~}~€€~€~~}€~€~€~€€€~~€~~€~€~€~€~~€€~~€~~~€~€€~€}€~~~€~~~}~€€€€~€~~}€~~€~‚€~}€~~€~~~~}~€~€~€€€€~~€~}€~€~€~€€€~€~~~~€~€~~~~€~~~~€€~~€}€~€€}€€~€~~€}}€~~~~~~~~€~€€~€~€€}€~€~~€€~€~~~~€~~~€~€~~€~€~€~}€~€~~€~€~€~€}€~~~~€~€}€~~€~€~€€~€€}€€~€~~€€€~~€~~~~~€~}~€~€~~~€~€~€~€€~€~€}~€~~€~€€~€}€~~€€~~€~~€~~~}€~~€€~€€~€~€~~~~€€€€~~}~€~€‚~€€~€~~~~}€‚€€~€€~€~~~€~€€}€~~}~€}€~€~~~~~€€€‚~€~€~~€~~~€}€€~~€~~~€~~€‚~€€}}~~}€~€~~~~~~€~€€~~~€~~€~€€}€~€~€~€~~€~€~~~~~‚}~€~€€~€}~~€}€~€€~€}€~€~~€~~€~~~€}}~€€€~€~~~~€~€€~€€~~€€€~€~~€~~€€~~€~~~~}€€€€€~~~€~€~€€~€~}€~€~~~~€~~~~~€~€}~~€€€€~~~~€€~€~~‚€~~€~~~€~€€~€~~€~~€€~€~€€€€~}~~€~~€~~~€€}~}€~€~~~€}~€€€}€~~€€€~€~€~€~}‚~~~~€}€}€~€~~~€€€}~~~~€~€~€~€€~€~€~~~~€~€€~€~€~€~}€~€€€}€~~~~~€}€~€€~€}€€~‚€~€}€~€~€~}€}€~€~€€€~€~~€~€}~~€}~€~}€~€~€~~€~€~€~~~€€€~~€~}€~~€~€~€~~€~€~~‚~~€€~€€~€~~~€}€~~~~€~€~€€~€}~}~‚}€~€~}€€}~~€€}€}€~~}~~€€€~€€~€~€€~~€~~‚}~~€~~€~€~~~~€~€€}~~~}€€~~~€~€~€~€~€~~}~~€~€€€‚€~€~~~~€€~€~€}€€€€‚~~~€~€€€~€~~€~€~€~€~~€€~~~~€~€~€~~€~€€~~~€}~€~€€~‚€€}~~~~€~€€~€~‚~~€~€€~€~~€~}€€~€~€€€}~~€~€~~€}~~~~€€~€~~€~€~€~€€~~~€~~~~€€}‚~~~~~}~~€~~€~€}€~~€€}€~~}}~~€~€}~~€~€}~€€€~}€~~}€~€€~€}~~~€~~€}€€~€~€~‚€~~€~€~~€~~€~€~€~€~€~~€€~€~~~€~€~€~€}€~~~€~€€~~~€~~€~€~€~~~~€~~€~€~~~€~~}€~~€€}€~€€€~~~€€€}€~€~~}~~€~€€~€}~~~€~€~€~€€~~€~~}~~~‚~€}€€~~€~~~€}€€~€~~€€€~}€~}€~€€~€}~~~€~€~~~€~€€€~~€~~€€€~€~~~~}€€~€~€~~€~€€~~€~€~€~~~~€~~~€}€~~€~~€~€~€~~€~€~€~~€~€~€€~€~}€~€}€}~~~‚~~€~€}‚€~~~~€~€~€‚~€~€€~€}~~€€~€~€~~‚~~€~}€~€~~~~‚~~€~€~€~}€~~~€~~~€}€~~}€~~€}~€~€~€~‚€€~~~€~€€€~€~}€~€~€~€€~}~~~€~~€~€~~€~€~€~€~}€}~€~€~~€}~‚€~€~~€}€~~~€€~~€~~~€~€€‚~~~~€€~~~€}€~~~~}‚~}~€}€}~‚€€~~€}~€}€€}}~}€~~~€‚}€~~€~~~~€€~~€~~€~€€€~~}€~~€€~€~€~€~}~}€~~€€~€~~~€~€}€~~€~~~~€}€~€~€~~~€€€~€~}€€€€~€~~~~€~~€~~}‚~~€~€~€~€~€~}~}~€~~€~~~~€}€€}€~~~~€~€€~€}~€}€€€‚}~‚€~~‚~~~€€~~~€~~€€€~~~€~€€~~~€~€~~~~~~€€~~€~€~}€~‚~}‚~~}€~~€}~~€~€~€~~~€}€~~}~€~€~~€}€}€~~€€~~€~~~€~€€€~€~~€~~€~€~}~€~~€~€‚~€~€~~~€~€€€~€~~~~~~~~€~~€~~~€}€€~~€~~~€~€~€€~~€~€~~~€€~~~€~€€~€~~~€~€€}~~~€€€~€~~~~€~~~~€~€~€~€~~}~~~~‚€€‚}€~€~~€~~€€€~~€~}~~€€€~€~~€~}€~€~€~€~€~~~~€~€~€~~}€~€€~€~€}€}€~€€€€~€~~~€€€€~~€~~~~~~€}€~€~€~~~€}€~‚€€€€~}€~~~€~€€€~~}~€€~€}~€~€€~€~~~€€~~€~~~€~~€€~~€~~~€€~€~€~‚~~~~}~}€€~‚€~€~~~~~€~€€~~~€~~€€€€€‚~~€~}~€€~€~~~€~€€€~~€~€€~‚€~€~~~}€~€€€~~~~€~‚€€€~€~~€~~€~€~€~€}~~}~€}€~~~~~€~€~€~€~€~€~€~~€~~~~‚~€~€}€~€€~}‚~~~€~€~€€€~€€}~~~€~€€}€~€€}€€}‚€~€~€~~~~€~€€~~€}~~}€€}€~‚~~~~~€~~‚~~~€€}€€}€}~~~€€€}}~~€€}€~€~~~~€~€~~€~~‚}€~€}€€~~€~€~~~€~€€~~€€~€}~~€}€€~~~}€}€~€€€~~€~€~€~~€€~€}~€€~‚€~~~‚€€€~€}~€~€~€~€~€€~‚€}€~~~~€~€}~€~€~}~~€~€~€~~‚}~€}€}€€€~€~~€~~€~€€~€~~€~~}€~~~~~€~~€€€~~€~‚€€€~~~€~~€~€}€~€€~~~~€~€~~~€‚~~€~}}€~€~€~~~€~€~€~~~€~€~€~}€~€~€~~}€~€~~€~€~~}~~~~~~€‚~€~€}€}~~€}€~€}~~~~€~€~~~~~€~€€}€~€€}€~~~‚~~€~€€~€~~~}€}€€~~~~€~€~€€€~€~}€‚€~€~~€}€~€~~~}€~€~€‚}~€€}€~~}~€}€~~€~€~€~~~€~€€~~€~€}~€~~}‚~~€€}~}€€~‚€~~€~~€€~€~~€€~€~€~~~~€€~€}}~€€}€~€~~‚€}~~€~€€~~€~‚€€€}€~~~}‚~~~€~€~}~~€~€~€€€~~€~~~~‚€€€}€~~}€~€€~€~~~€~€€~€}€~~~~~€~~€~€~€€€~€~~€~€}€~€~€€~€~~}~€€€€€~€}~~~€€€~}€~€~€~€~~}€~~~~~}€~~€‚~€~€~€~€€€~€~~€~~€~‚€~}€}€~€~€}~~~€~€~~€€~~~€~}~~}€~€€~}€~~~~~€~€~€€~€~~~€~€~}€}~‚€~~~}~~€~€~~€‚€€€€~~~~}~€€€~€~~€€~€€~€~€~~€}~€~~~~~~€}€~~€~€~€€~€€~€~~€~‚€~€~~~€~€€~~€~€}€~~€~€~€~~€€~€~€~€}~~€~~~€~€€€~~€~~€€€€~~~~~‚~~‚~€‚~~~€~~€~€€€}€~~€~€~€~€~~~€~€}€€}~~~~€~€€€~€~~}€~€€~~€~€~€€~€~~~€~~€~}€~~€~~€€~€~~~~€€€~€}€}~}€~€~€€~€~€~~€€~€}€~~€~€~€€~~~~€€~€€~~€}€‚~€~~€}€€€€~€~~€~€~€€}€~€}€~}}~~€~€}~~~~€€~€~€~€~}~€~€~~€€~~~~€~€~~€~~~€~€~~~~~~~€~€€}~‚€€€~€~€~~€~~€}€~€}€€~‚}€~€}€~~~}€~€€}~~~~~~~€}~~~~€€~€~~€~€‚~€~€€~€~~~~€~~€}€}€}~€~~€€}€~~€~~~~€}€}€~€~€~~~~€}€~~€‚}}€~€~~~~€~€~‚€~€~~€}€~}€~~€~~€‚~€~€~~~~€~€~€€~~~€~€~~~€~~€€~~~~€~€€~€}~~~~€~€~~€~~~€~~~€}€~€~~€}€€~€~€~€~€€~~~€~€~€~€~€~€~~~~€~€~€}€~~~~~€€€~~~€}€~~€€~€~~~‚~€}€~€~€~}€~~€€€€€~~€~~€~~€€€~€~~€}€€~€~~€}€~~}‚~~~€~~~€€€~€~€~€€~~€~}€€‚~~€~~€~~€€€€~€~€~€~€~€~€~€}€~€}~~€~~€€~€~~‚}~€€~€~€€~€~~~~}~€~€}€}€}€€~€}€}€}‚€€~€~~~€~€~~~~}€~~~€~~€€€~~~€~€~}~~~€~€~~€~€‚~~€~€~€~€}€€~€~€€~€~~~~€~€€~€~}~€‚~€~~~~~€~€€€~€~~}€€~}€~~€~€~€€€~€~~~~€€~€~~~}~~~€~€€€~~~~€€~€~~~~€~~~~~€€}~~~€€}€~€~~~~€}€€€~€~~~~€~€€€‚~~~€~~€€~~€~}~€~€€~~€}€~€~~~€€~€~~~~€€‚~€~€€~€~~€~~~~‚~~€~€}€€~€€~~}€€~€~€~~~€}€~€€~~€~~€~€€€~~~~€~€~€}€~€~~€~€~~~~€~‚‚€€~€}~~€~~€~€~€~~}~~~€~€€~‚~~€~€~€~€€}€~}€~€€~€~€~~€~€€€€~}~~~€€}€€~€~~~~~~€}}€}€~~€~~~€~~~€~€~€}~€€}~~~~€€~}€€~€~}€}‚€~~~}€~€~}€~~€}~}€~€€€€~€~~~€€€~~}~}~€}€€}~}~~~€}€€~€~€~€~~€~€~€€~}€~~~€~€}~€}€}~‚~€}€}€~€€~€~~€~€~€€~~~€~~~~€€€~~~€~€~€~~€~€~€~~~€~€€‚~~~~€‚~~€~~€~~€€}€~~~~€~~~~~€~€~~~€~€€~€~~~€~~}€~~~~~€€~€~~~~‚~~~€~€€~€€}}}€~€€~~}~~€~€~€~€}~~€}€~€~€}~~~€~€€}€~€}~€~€~€~€~~~€€~€~€}~€}€~€€€~€~~~€~€~€~€~€~‚€~€~}‚~~€~~€~€~€~€~~~~€~~€€~€~~€~€~€~€~~~~€~€}€~€}~~~€€~€~€~~~~~~~€~~€~€}~~€€‚~}~€}~€}€~€~~~~~~~}€~~€~~€~€~~~‚~~€}€}€~€}€~~~~€~~~}€~€~€}~€~€~~€~~~~}~€~~~}~~~~€~€€~€~~~€€~€~€~€~€€€€~€~€~~‚€}~}~€~€~€~€~€~€~~~~€~€~€€~~}~~€~€~€€~}€~€}€€~€~€}~€€€~€~€~€~€€~~€~~}€~€€}€€€}€~~~€~€€~€~~~€€~€~€~€}~~~~}€~€~~~€~~~€}€~~~~€}€€€~€~€~€€~€€}€~€~~€~€~€€~€~€~~€€‚~}€~~}~€}~€~~€~~~€~€€€‚~~€~€}€€~~~~}€}€€~€~€~~~~‚~€}€~~€~€}€~€~}~~€~€~€~~€~€€}~€~€~€€~€~€~~€~~€€~€~€€~€~€~~€~~~~€€€~~~~~~€€€}~€€~€~€~€~€€~~€~~€~€~~~~}€~€~€}€~}~~€€~€~}~~~€~€}€€~~€~~€~‚€€~€~~€~€€€~~~}~€€€~€~~~€~€€‚~€~~~€€€~}€~~€~€~€~€}€€}~~~~~€~€~€€~€~€~~€~~~€~~€~~~~~€~~€~‚~~€|€€~~€}~~~€}€~€~€~€‚}~€~€~~€~€€€~}}~~€~€~~~€~€~€}}€~~€~€}€~€}€~~€~€€~€~}~}~€~€€~~~~~~~~€€~€~€€~~€~~~€€€~€~€~~€~€€~}~€}~€~~€~~€€€€~~€~~~~‚€€~€~~~€~€~€}~€~~€€‚~€~~€~~~~~€~€~€~€~€~€€~€~~€~€€~}~~~€€}€~~~~€~~€~~}~~~€~€€€‚~~€~€~€€}~€~~‚€~~€~€~~~~€~€~€€}}€~€€}€~~€€‚~€~€~~}€€€€~€~€}€~€€~€~~€~€~€~~~€~€~~~}€~€~€€€~}~~~€~€~€~€~‚~~~€~~€}~€€€~€~~€‚~~€~~€~€€~€~~~€€~€~~€~€€€€~~€~€~~€~€~‚€€}~~~~~€~€~}€~‚€€~~€~€}}€}€€~€~€~~~~‚~€~~~~~~€~€~~}~€~€~~~€~€~~}€~€€€€~~~~€€~~~}€}€€}~~€~‚~~~~€~€}€€}€}€~‚}~}€~~€~‚~‚~}€€~~€~}€~€€~~€~€~€~€€€€~€~€~~€€€~~€~~€}~€~~€~}€~€‚~€~~~~€~~€~~~~€~€~€}€~~~€}€€~€~}€~~€~€~€~€~~~€}€~€€~~~~}~€€~}~~~€~€}€€~€~~€}€~€~~€~~~~€}~€€~€~~~€€}€~}}€€~€~€~~€}€~‚~~€~~~}€~~€‚~‚€‚}~~€~~€€~~~€~€}€~~~‚~~€€}€~~~€€~€~€~~€‚~€~€~€~~€~~€€}~€~€€}€€~€~€~~~€€‚~€~~~~€€}€€~€€~€}€~~~~€~€~€€~€~€€~€~~}€~}‚€}~€~€~€~}€~~~~€~€}~€€€~€~~~~€}€‚~€~~~€~€€‚~€}€~€~€€~€~~~€}€€€~€~€~~€€~€}~€~~~~~€~€€~}€~~~€‚~~€~€‚}~€~~€~~~€~~€}}€~~~~}~}€~€~~}€~€~€~~€~}~€~€~‚~€~}~€€€~€~~~€~€€}~~~€€‚~€~€~€~~~~‚€~€~~€~€‚~€~~€€€€~€~€~~€~€€~€~€€}€€~€€€~~~€~€~€€~€}€€~€€€‚~}€~~€~€~€~~~~~€€~‚~~€~€~€~~€~~€~€}€~~€~€~€~~~€}‚~€~~~~~€~€~~~€‚~€~~~~€~€€}}€~€~~~~‚}€}~€~€~€€~€~}€~~~~€€‚~€~~€~~~~~}€€~~~~~~€~€~~€~~~€}€~‚‚~~}~€}€~€~€}€~~€€~€~~~€~€€~~€~~}~€€~€~~~~€~~‚€~~}~~€~€€€~€}~~~€}€€~~~~€~~~~~~€~€~€~€~}€~€~€~€~~€~~€~~€€~~€~€~€€€~€~~~~€€€~€~€~€~€~~~€~€~€~€}~~€~€€~~~€~€€~~€}€~~~~€€€}~~€~~‚€€€~~~€~‚~~~~€~~€}~~€€}€~~~~~~~€}€€}€~}€}€~€€}~~€€€~€~~€€~€~€}€€}€€}€}€~~~~‚€~€~~€~~€~€€}€~‚€~~~~€~€}}}€~€€~~€~€~~€€}€~€~€}€~}~}~~€~~€~€~€€~€~~~€~~€€~~~~~~€€~€~€~~~€~€€€~€~~~€~€}€~€~€€~~}€~~€~~~~€~€€€€€~€~~~€~€€~~~€~€€~~}}€~€}€~~€~~~~€~‚€~~€}€}€~€~~}€~~€€~~~~€€~€~~€~€€~€~€€~€€~€~€~~~~€~~€~~~€~€€‚~€~~€~€}~~€~~€€€~€~}€€~~€}~€~€~€}€~€~~~~€€~~~€~~~€~}€€€€~~€~€~€~€€~€}€~~~~€~€~~~€~~€€~€~~~~~€€~€~~€~€€€~€~~~~€~€~€~€€~€~~~~~~~€€€~~€~~~€~€~~~€}~€€~€~€€~€€~€~~~€}~€~~€~€}~€~€€~~~€~€€~}~€~€~€~~~~~}€}€€}€~€~~€~~€~€~€€~€}~~€~~€~€~~~~€~€~~~‚€‚~~€~€~€~€~€€~€}€~~}€€~€~}€~€~€}~~€~€~€~€~€}€~€~~}€€€€~€~€€~~~€~€‚~~~~~€~€~~€~~€~~€€~€~~~€€€~~€~~€~~€€~€~€~~€€€~€~~~~€~‚€~€~~€}€€€€~€~~~€~€~€~€€~}~~~€~‚‚€}€~€~€~~€€~€~€€~€~€~~~€~€~€~€€~~~€~~~~€€~€~~€~€~€}€€~€~€~€~~~€}€~€}€~€~~~~}€€€€~€}~~€}€€~€~€~~€~€}€~€€~}~€~~€~€~€~~~~~}~€~~€€~€~~~€~€~€~~}€~€~€~~€~€€}~€~~€€~€€}€~€}€~€~~~€€‚~€~€~~~€~~€}€€}€€~~}~€€~€}€~~~€~€€~€~€€~€~€~~€~€‚€€~~~€€~€~€~€~€€€~~}€€€~€~‚€~~~€~~€€€€~~€~~€~€€~€~€}€}‚€~}}€~€‚~€}~~€€}€}€~~€~~€}€€~€€~~€~~~~€~€€~€~€~‚€~~~~€~~~€€€}€}~~€~€}~€~€~~€~~~~~~€}€~€~~~~€~~~€€~€~€~€€}€€~~€~€~~~€€€~€~~€~‚~~~€~€~€€~}€~~€}‚€€~~‚~€~€~€~€}~~~~€€€~€~~€~~€~€~~€~€~€~€~~~~~~}~~~€~~~€}~€~€~~~€~~€€~~~~€€€~€~~~€€€~€~~~€~€€~€~~~€~€€€~~€~€~}€}~~~~~€~€~~€~€~€€€~€}€~~€~€€€~€}€}€~}€~~~€~~~€‚}€€~}€~~~€~€~€€~~€~~€~€~~€~~~~€€~€€}€~~~€‚~~€~~€~~~~~~€~€~€€~€~~~€~€€~€~}€~€~~€~€~~~~~~€~€}€€}€~€}~~€~~~€~€€€€~~~€~€~~€~€~€€€~~~€~€€‚~}€~€~€~€~€€€~~€~~€~~~~€~€}~€}~€~~~~€~€€~}~~~€~€€~€~~€~€€€~~~~~~‚€€€~€~€~€~€~~~~€~~€~€}€}€€~€~€€€~€~€~~€€€€~€~€€~~~}€€~€~€~~€€~~€~~~€~€~~~€~~}~€€~~€~€~€€€~~~€~€~€~€~~~€~~€}€~€€~€~€~€~€~~~~€€~€~~€~€}€~}€}€~€~~~~~€~€~~€€€€~~€~~~€}€€€~~€~€~€€€~‚~€~~~€~~‚~~~€‚~€~€~}€~~~~€~€€}€~€~~€~~~}€~€~€‚~€~€}€€~€~~€~€‚€€}€€~€€~~~~~€~€€~~~~~€~€~€~~‚~~~€‚~€~~~~€~€~€€~€~~~€€€€~€}~~~€€€€~~~€~~€~€€~€~€€}€~~€€~€~~~€€€~€}€~€}~~~~€€~€~€~€~€€~~~€~~€€}€~€}~~€~~~€~~~€~~~€€}~€~~€€~~€~€~€~€€~€~€€~€~~~~~€~€}€~~€}~€~€€€~€~~~~€€€}€~~~€~‚}€~€~~~€~~€~~€€~€~€}€€~}~~€}€~€~€}}}€~€€~~~€€}€~€€~€}€~€~~€‚~~}€~}€~€€€€~~€}~~~‚~~€~€~€€~~€~€~‚€€€€}€€~€~€€~€~~}€~€€€}€~€~€~€}€~~}€~~~~€~€~~~~~~€~~~€€~€~~~€~€~~~~€€€€€~~€~~€€€}~~€~€€€~€~€}~~~€‚~€~~~~€€€~}€~€~€€~~€~~€€~€~~}€~~€~~~}€€€~€}~~~€€€~~~€}€~€~~‚~~~€}€~€~~~}~€~~~~€€€~€~~~€~~€€}€~~~~~~€~~}€€‚~€~€€}€}€~~~~€€€}~~~~~~€~€~€€~€~~~€~~€~€€~~€€~~~~€~}€}~€€~€~~~€~€€~}€~~~€€~€~~~~€~€€€€~€~€~~~~€€~~~€€~~€}€}€~~~~~~~€~€~€~€~€‚}~€€~€~€~~€~€€€‚€~~~€~€€€~€~‚~~~€~~~€~~€€~~}€~€€€}~~€~~€€~€~~€~€€€~~~~€~~€~€~€€~~~€}€~€€~}~~€}€}€€}€~~~€~€~€€~€~~~€~€~~€~}€€~~€~~€~}€~~~€~~€~~~€~€€}€~~€~€€€~~€~€€€~~€~€}€€}€~~€~€€~€~~~~€~€~~€~€~€~€~~€~‚~~~€~€€}€~~€€~€~~€€~€~~~~€~‚~~}€~€~€}€}€}€~~~~€€}€~€~€~€~~€€}€€}€~~€~~€~~~€~€~€}€~€~€~~~}€~€~~€€€~~€~~€~€‚~€}~~€~~€~€~~}~€~€}€€~€~~€}~€~~€~~€}}€~€€€€€~~~}~€~€€~€}~~~€~€~€~~€€~€€~€~~€~~~€~€€~€~€~€~€€€~€~~~‚€~~‚~~€}~€}€€~€€~€~}€~€}€~€~€~~}~€€~~~€~€~€~€€~€}~~~€€~~~}€~€€}€€~€€~€€}~~~€~~€€€€~~€~€€€€~€}}€~€~~€~€€€}~~€~€€~~~~~€~€~~}€~€~}€~€€~}~~€~~€}~~€~€€€~€}€~~~~€€~~€~€€~€~~}€~€‚€~~~€~~~~~€€~€~}~~~}€€~€€~}‚€~€~~€}€~€€~€~~~€~€€~€~~€~€€~€}~€€~~€~€€~€}€~~€~€~~~~€‚~~€€€~~€~}€~€~€~€~€€‚~~~€~~€€€~€}~€~€€~€~€~~€~~€~~}~~~‚~~€~€~€~€~€~€~€€~}€~~€~€€}~€~€}€€~}€}‚~€~~~~€~€~~€~€€~€~~€~€~€~}~~€~€€}€~€~€~~€~€€~~~}}€€~€}€€€~€}~~€}€~~~€~€€~~€~~€}€~‚~~€~~€~~~€~€~€€}€~~€~€~€~~~€€€~€}}€~~€~~~€~€~~€~~€~€~€}€€~~€~€~€~€€€}~~€~~€€}€~€~€~€}~€}~~}~~€~}€~~€~€}€~~€~€~~}€~~€~~~€€~€}~~€~€€€€€~€~~~€€~~~€~€~}~€~‚~€€~€€~~€€~€~~€~€€€}€~}€~}}~€~€~~€~~~€~~€~€~€~€€~€~~~€~~€~€~€~}€~€€~€}~€€~€}~~€~~€}€~€€~~€~€}~€€€~}€~~~€~€€~€~~€~€€~€~~‚~~~~€}€~€~~€~~~€€€~€}€€~~€€€~€~~~€~€~€}€~~~~~€~€~€~€~€~€~€~€~€€~€€~~~~€€€~~~€~~€€~~~€~€~€~~€~€~€~€~€~€~€}~€€€€~€~~€€~~€}€€~~€~€€~~~€~}}€€~€~~€~€€~~€‚}€~€}€€~€~€~~~€~€}€~€}‚~~~€}€€}€~~€~~€~€}€}€€~€~€€€}~~€~€€€~~€~~~€~€~€~~~~€~€~€~~€}€~~~~~~€}€€~€€€~€~~~~}€~€~~~~~€€}~€~€~€}€~~~}€~€€~€}~€~~~~€~€€€~€€}€~€}€€~€~}~€~€~€~€~~€~€~€€~€~~~}~€€~~€~~€€~~~~~~€€~~~€~~€~~€}€~~~€~~~€~€~~~€~}~€}‚~~~€~€~~~~€~€~€~€~€€~€~€~~€}€~€€}~€~~~‚}~~€~€~~~€~€~€€€~~~€~€~€€€~€~~}€€~€€}€~~~~~€€€€~}€~~~~‚~~€}€~€~~~€~€}€€~€~€~~}€~€€~€~€}€€~€€}€}€~~~€}€~~€~€€~€~~€}~€~~€~€}€~~~€~€€€}€~€~€~~~€€€‚~€~~~€€~€~€~€~€~~~€~~€€~€~~€~€€€~~€~~}~€€‚€~~€~€~€~~~~€~€~€~~~€~€€€~~~€~€€€‚~~~€~€}€~€€~€~~~€~€~€~~~€~€~€}€~€~€€~€€€~€}€~~€~€~€€~~€}~~€€~€~~~€€~~}€~€~€~~€}€}€~}€}€~}‚€~~€~€}~€~€€~~~~€~€~‚€}~~€}€€~€}~~}~€~~€~€~€~€€~€€~‚€~~‚€‚~~€~€€€€€~€~~~€~€~€~€}~~~€~~€~€~~~}~€€€}€~}€€}€~€~€€€~~€~~~€~€~~}‚~~~€~€~~~€~€}~~€€~€~€~€€~€~~~€~€€€~€~~}€€~€~€~~~~~€~~€}‚~~‚}€~€€~€~‚~~€~~~€€~€~€~€€~}‚~~~~€€~€~~}€~~~~€~~‚€~~~~~~}}~€€~}~~~€~~~~~~€}€~€~~~€~~€€~~€~€~€~~~€€~~~~~€~~€~~~€}~€~}~~~€~€}€~€~€~~~~€~€~€€~€~€}€~~€}~€€~€~~€~€~€~€€~€~~~€~€~€€~€~€~~€~€~€~}€€€€~~€~~~~€~€~€€}€~€~~~~€~€}€~~}~€€€}€~~€~~~€~€€}€~~~~~€~~€}~~~€~€€~~~~~~€~€~€~~~€€~€~~€€~~}€}€€}€€~€~}€~€‚~€}€}€~€~~~€‚~€}€~~~~~€~€~~€~~€€€~~~~~€~€~~€€~~€€~~€€€~€~€}~~€~€~~€‚~~~€~~€~€~€€€~€~€~€€~€~€~€€~~~€}‚€€€~€~~€~~€~€~~€~~€€€€~€~}~€~~~~€€~~€~€~€~€}€}~€~~€~~€~~~€~€€~€~~€~€€~€~~~€}€€€~€~~~~€€~€~€~~€~€~€~€}€~€~€}~€}€€~€}}€~€€~}~~€~~€}€€~~€€}€~~~€‚~~~~~~~€~€}€~€~€~€~€~€€~}~~€}€~€€~€~€~~€}~€€~~€~~~€~€€~€~~}}€~€~€~~~~}~€€~€~~~~€‚€€~}€}~~€€~€~~€~€€~~~€~~‚~€~€€~~~~~€~€~€€~€€€}€~€~~€~~‚€€~€~~€~€€~~€~~€~~€~}€~~€€~~~€~~€€~€~~‚~~€~}€~}€~~~}€~‚€~€~~}~€€€~~~~~€~€~€€~€€€€}~~~€€€€~€~~}~~~~€~~~~€~~€}€~€~€~}€~~~€~€€~€~~~~€€~~~~~~~€~€€~€~€~€~€€€}€~€~‚}€~~~~€~€}€~}€€~€~€~€~€~~~€‚}~~€~€~~€~}€‚~€~~~~€~€€~}€~€~€~€€~€~€~}€~€~€~€€~€}€~~€}€~€€~~€‚~€€~~~€}€~~~~€~€€‚€~~€€}~€~€~€~€~€~~€~€~€€€€~€~~~€~€~€€€~€~}€€~}~€~~}}~€~~€~~~€€€€~~€~~€~€€‚~~~~€~€~~~€~~~€~€~~€~€~~~€}€~€‚~~€~€€~€~€}~€~‚€~€}€€}€~€€~€~€€~~€~‚~~~€‚~€€}~~€~€~~~~€€~€~~€~€€€~€}~€~€€€~~€~~€~~~€€€~€~~}€}€~€~€}}€€~‚~~~~~€~€}~€~€}€~€}~~€~€}€~~€~}~€}~€€‚€~€~€~‚€€‚~€~€~~~~€~~€~~€~~€~€~~~~~€~~€€}€~€~€€}€}~€~€~€~~~€~‚~€~~‚}~€}~~€}€}~~€}€€~€}€~€~€~}€€}€~}~~~€~€~€~~~}€~€~€~€~~~€€~~~€~~€}€~€~€~€€~~€~€~€~€}€~~~~€~€~€~}€~~~~€~~€~~~€€~€€}€~€}€~~€‚~~€~€~~€~€~€~€~~~~€€~~€~€~€~~~€€~€~~}€~€€~€~€~€~€€~€~€~~€~~~€}€~€~€€€~}~~~€~€€~€~~€€~~€}€~€€~€~€}€~~~‚}~€~€~€~~~€€}€~€~€~~€~~€~~€~€~~~€~€€~€~€}€~€~€~}€€~~‚~~}~~€€€~€}~~€~€~~~€€~~€~€€}€€}€~~~€}‚~€}€€}~€~~€}€~€~€}€~~~€}€€~€€~€~~€~~€~€~~€€~~}€~~€~~€~€~€~~€~€~~~~€~€~~~€~}€~€~~€~€~€€€~€~~}~€~€~€~€}~~~}~€}€~€~~‚~€~~€~~€}€~€€~€}€~€~€~~€€€€~€}~€~€€€~€}~€‚€€~~€~€~€€€~~~~~€}‚~€~€~€}~€€~€~~€~€€~€~€€~€~€~}€~€~~€€~~~€€}€~€}~~~€~€€€€~~€~€€~~~~€}€~~€~~~€€€€~€~~~€~€~€~~‚~€~}€~€€‚~~€}}~€~€~~€€~€}~~€}€~~€€~€}€€~€~€}‚~€~~~€~~~€~~~~~}€~€€~€}~~€~€~€~~~€‚~~~~€€~€~€~~€}€~~€}~~€~€€~€~€~~~~€}€~€‚~~‚}~~~€~€€~}€~~~€~€~~~~€€~€~~~€}€~€~€~~~~~~€}€€~~~}€~~€~€~€~€~~~~€~€€€‚~€~~~~~€~€}€~~‚~~~}€}€€~€}~~€~~~€~~€€~€}€~~€€~}€}~€~€€~€}}€~€€~~~€~~€~~€~€~€~~‚€~~€~€~€~~€€}}€€~€€}€~~€~€~~~~~€€~€~€~~€€~€~~~€~~}€~~~€~€€~~~~€~€~~€~~€~€~~}~€€~€~€~€~~~~~€€}€€~€}~~~~€~~€~€€€~€~€~~€~€~~€~~~€~€~€~~~~€~~€~~~~€~~€~€€~€~~€€~~~€~€~~~~~~€€€‚~€~~~€~€~€€~€€~€~€€€~~€~€~~€€~}~€~€~€~€€~€€~€~€~~€~~‚€~€~~~~~~€~~~€~~€€~€~€~}€~~€€€~€~~}€~€~€~~~~€~~€}€€€€~~€~€€~~~~€~~€}€~~€€}~€~€~~€~€€€€€}€~~~€}€€~€~~~~€~€~}~~~€€~}€€~€~€~~~€€€€~€~€~}~€€~€~~€~€~~€~€~~~~€~~€}~€~~€‚€€€€‚~€~€}€~€~~€~~€~~‚€~€}~€~€€€~€}€}~~€~~€~~~€~€~€~~€~€~€~€~€~~~}€€€~€~~}€~‚€€€~€~}€}}~€~€}€~~~€~~~€~~~€~~€~~€~}€~~€~~~€~~}€~€€€~€~~€~€€€~~€~‚~‚~~€~~~}~€~}€~~€~~€€~~€}€~€~€~}€~€€€~€~€~~€~~~€~€}~€€~€~~€~€}€€€~€}~~€}€€~€€}~€€~€~~~~~€€}€~~~~~~~€€€€~~~€~€€~~~~€~~€~€€~€~€}~~~€~€€~€~€~~~~~€€€~€~~~€~€~€~€€~~€~€~~~~€}~€~}€~~}~~€~~€€~~€~~~~€€~€~€~€€~€€~€~}€~~~€}€~€~€~~€~€€€}~€€~€~€~€€}€€~~€~~€~~~~~€~€€}~€~€}€}~€€~€~€~~~€}€~€~€~~€‚~€~~~€~€€~€~€~€~€~‚~€~€~€€~€€~€~~€~€~€€€~€}~}€€~€~€~€€€~€~~~€}€~€~~~€~€€}}~€~€~€}~€€~~~~~€~~€‚~€€~€~~€€€~~~~€~€€~~€~€€€~~~~~€€~}€~~€}€~€€~~~}€~€}€~}€~€€}€~~€~€~~~€€~~€~}~~~€~€}~~~~€€~€~~~€~~€€~}€~€~€~~€~~~€~~€€~~~€~€€~€~~€~€€~€~~€~€€~~~€~~€€~~€~~€~€~~~~€€~€~€~€~~~~€~€~€~~~~€~€€}€€}€~~~~€~~€~€€€}~€~€€€€~}€~€~~€€~€~~~‚~~€€‚~€~~€~€~€~€~€}€~€~€~~~€€‚~€€}€~€~~~~€~€~~~€~~€~}€}€~~~€}€€~€~€€€~€~~~}~€€€}€~~€~€~€~€~~~€}€~~€€}~€~€~~‚€~€~‚}~~€~€~‚€€~~€~~~€~~€~~~~~€€~€}€~€~~~~€~€}€}~~€~~€€~€}€~€€~~~~€~€~~‚~~~€~€}€€~~€~€}~~~€~€~~~~~€~€~~~€~€€~~~~€~€~€~~~~~~~€~~~€}~~€~€€~€€}€~}€~€~~~€}}€€€€~~€~~€~~€€}€~~~€~€~~~€~€~€~~~€~~€~€~€}€€~€~~~~~~€~€~€~~€~€~€€~€€~€~~~€~€€~€~~~€~€~~€~€€€~€~~€~~~~€‚~~~}€}€~€€~€~~~~€}€~~€~~€~€‚~~€}~~€}€~~€€~€~~€‚}€}€}€~€€~€~~}€}€€€€~}€~~€}€~€~~~€~‚~~~~€~€~}€~€€€}€~~}€~~}~€€~}~~~€€~~~~€~€€€€~~~€~€~€~€~€€~€~~€}€~€~~€~~~~~~€€€~€}~~~~€~€}€€~€~€€~€~~€~€}€}€}€}~~€€~~~~€~~€€}€~€~€~~€}€~€~€~~€~~€}~€€~~~}~€€~~~ \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..8523f5c --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,64 @@ +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +set(horus_srcs + fsk.c + kiss_fft.c + kiss_fftr.c + mpdecode_core.c + H_256_768_22.c + golay23.c + phi0.c + horus_api.c + horus_l2.c +) + +add_library(horus SHARED ${horus_srcs}) +target_link_libraries(horus m) +set_target_properties(horus PROPERTIES + PUBLIC_HEADER horus_api.h +) +target_include_directories(horus INTERFACE + $ + $ +) +install(TARGETS horus EXPORT horus-config + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/horus +) + +install(EXPORT horus-config + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/horus +) +# Export libhab target for import into build trees of other projects. +export(TARGETS horus + FILE ${CMAKE_BINARY_DIR}/horus.cmake +) + +add_executable(fsk_mod fsk_mod.c) +target_link_libraries(fsk_mod m horus ${CMAKE_REQUIRED_LIBRARIES}) + +add_executable(fsk_demod fsk_demod.c modem_probe.c octave.c) +target_link_libraries(fsk_demod m horus ${CMAKE_REQUIRED_LIBRARIES}) + +add_executable(fsk_get_test_bits fsk_get_test_bits.c) +target_link_libraries(fsk_get_test_bits) + +add_executable(fsk_put_test_bits fsk_put_test_bits.c) +target_link_libraries(fsk_put_test_bits ${CMAKE_REQUIRED_LIBRARIES}) + +add_executable(drs232 drs232.c) +target_link_libraries(drs232 m horus ${CMAKE_REQUIRED_LIBRARIES}) + +add_executable(drs232_ldpc drs232_ldpc.c) +target_link_libraries(drs232_ldpc m horus ${CMAKE_REQUIRED_LIBRARIES}) + +add_definitions(-DINTERLEAVER -DSCRAMBLER -DRUN_TIME_TABLES) +add_executable(horus_gen_test_bits horus_gen_test_bits.c) +target_link_libraries(horus_gen_test_bits m horus) + +add_definitions(-DHORUS_L2_RX -DINTERLEAVER -DSCRAMBLER -DRUN_TIME_TABLES) +add_executable(horus_demod horus_demod.c horus_api.c horus_l2.c golay23.c fsk.c kiss_fft.c) +target_link_libraries(horus_demod m horus ${CMAKE_REQUIRED_LIBRARIES}) + diff --git a/src/H2064_516_sparse.h b/src/H2064_516_sparse.h new file mode 100644 index 0000000..d3d4797 --- /dev/null +++ b/src/H2064_516_sparse.h @@ -0,0 +1,33 @@ +/* + FILE....: ../src/H2064_516_sparse.h + + Static arrays for CML LDPC codec, generated + by test_ldpc_fsk.m:simple_ut(). + +*/ + +#define NUMBERPARITYBITS 516 +#define MAX_ROW_WEIGHT 12 +#define CODELENGTH 2580 +#define NUMBERROWSHCOLS 2064 +#define MAX_COL_WEIGHT 3 +#define DEC_TYPE 0 +#define MAX_ITER 10 + +#include + +uint16_t H_rows[] = { +870, 276, 110, 54, 226, 85, 59, 153, 31, 60, 46, 75, 139, 239, 56, 13, 30, 45, 63, 34, 54, 21, 77, 204, 441, 11, 297, 126, 148, 104, 269, 57, 369, 213, 117, 479, 53, 124, 405, 97, 42, 132, 67, 103, 389, 156, 237, 105, 418, 11, 60, 12, 195, 32, 11, 21, 10, 191, 176, 237, 140, 376, 115, 9, 149, 304, 129, 308, 234, 129, 453, 215, 176, 213, 151, 169, 41, 106, 421, 103, 83, 62, 124, 3, 574, 39, 31, 472, 69, 8, 40, 352, 62, 275, 74, 121, 125, 35, 83, 52, 21, 422, 229, 233, 62, 125, 181, 175, 28, 43, 113, 340, 71, 4, 40, 249, 134, 168, 97, 15, 26, 135, 104, 80, 206, 108, 307, 494, 358, 82, 159, 137, 19, 210, 6, 19, 65, 285, 45, 154, 276, 14, 137, 79, 241, 235, 116, 129, 84, 3, 122, 370, 132, 451, 77, 89, 262, 79, 170, 469, 24, 163, 128, 18, 120, 244, 8, 153, 151, 441, 95, 327, 284, 96, 84, 35, 61, 286, 20, 22, 68, 131, 106, 30, 280, 343, 99, 124, 262, 208, 277, 44, 349, 41, 10, 761, 39, 445, 165, 81, 393, 194, 18, 250, 589, 70, 307, 1, 365, 47, 4, 9, 283, 133, 90, 601, 117, 228, 212, 58, 420, 230, 142, 25, 57, 518, 88, 180, 24, 122, 379, 143, 33, 30, 140, 68, 150, 320, 55, 33, 132, 2, 22, 16, 272, 44, 264, 49, 174, 234, 86, 39, 10, 278, 177, 178, 20, 126, 18, 90, 6, 184, 158, 111, 246, 229, 221, 48, 267, 6, 172, 49, 291, 185, 67, 50, 157, 66, 32, 525, 257, 196, 260, 92, 72, 163, 144, 329, 134, 156, 47, 82, 49, 391, 26, 1, 88, 52, 56, 8, 111, 138, 219, 57, 447, 182, 263, 38, 98, 75, 36, 83, 245, 5, 419, 63, 12, 287, 603, 58, 507, 37, 2, 214, 539, 55, 53, 81, 186, 73, 85, 97, 91, 332, 123, 66, 188, 591, 158, 324, 88, 53, 214, 84, 389, 104, 271, 211, 7, 393, 281, 242, 119, 848, 705, 428, 50, 28, 52, 15, 5, 2, 230, 38, 76, 295, 217, 1, 56, 170, 145, 5, 72, 460, 203, 145, 211, 121, 68, 538, 44, 133, 87, 494, 325, 161, 781, 370, 51, 115, 262, 106, 614, 29, 220, 189, 224, 165, 17, 72, 46, 17, 64, 19, 447, 13, 9, 270, 4, 91, 471, 35, 23, 407, 34, 38, 82, 321, 112, 195, 651, 7, 43, 431, 249, 171, 196, 311, 15, 66, 16, 633, 37, 94, 102, 23, 3, 214, 252, 256, 173, 316, 125, 96, 341, 71, 73, 338, 256, 165, 140, 108, 471, 434, 137, 642, 172, 51, 113, 67, 172, 93, 23, 318, 514, 50, 118, 245, 169, 14, 64, 40, 859, 95, 308, 65, 93, 42, 339, 46, 7, 96, 142, 36, 131, 60, 13, 12, 25, 31, 183, 94, 43, 241, 162, 26, 232, 120, 128, 118, 89, 164, 51, 29, 127, 177, 180, 95, 332, 284, 32, 802, 452, 25, 382, 187, 892, 432, 162, 126, 587, 342, 205, 170, 255, 73, 605, 579, 398, 305, 58, 110, 178, 244, 306, 178, 166, 28, 368, 224, 582, 135, 420, 618, 264, 234, 346, 223, 439, 399, 150, 655, 242, 248, 750, 199, 242, 277, 112, 163, 545, 359, 487, 322, 570, 64, 402, 412, 252, 116, 147, 109, 27, 197, 204, 251, 282, 455, 118, 390, 225, 382, 215, 373, 554, 371, 568, 289, 225, 405, 160, 414, 290, 109, 524, 406, 344, 188, 385, 33, 791, 261, 171, 475, 100, 183, 156, 564, 78, 395, 144, 497, 334, 45, 167, 79, 27, 520, 239, 449, 138, 347, 667, 572, 61, 278, 136, 375, 231, 320, 167, 304, 389, 185, 171, 109, 468, 243, 206, 210, 305, 160, 682, 514, 433, 152, 375, 1064, 48, 522, 139, 98, 191, 557, 127, 189, 372, 54, 515, 406, 370, 950, 549, 352, 319, 27, 489, 440, 636, 941, 153, 102, 268, 120, 190, 719, 451, 175, 539, 477, 279, 474, 17, 232, 221, 476, 174, 415, 545, 357, 368, 149, 94, 409, 218, 76, 87, 136, 114, 245, 596, 408, 335, 246, 511, 560, 438, 298, 351, 91, 22, 813, 108, 546, 248, 218, 629, 212, 223, 569, 611, 93, 399, 185, 427, 260, 20, 111, 354, 187, 150, 702, 316, 666, 541, 227, 558, 486, 207, 450, 224, 568, 222, 341, 81, 222, 386, 441, 484, 159, 289, 142, 372, 534, 157, 78, 337, 522, 70, 293, 318, 161, 325, 74, 194, 797, 130, 128, 70, 386, 657, 611, 105, 456, 230, 100, 61, 274, 358, 135, 249, 236, 247, 264, 279, 123, 345, 59, 397, 645, 448, 80, 192, 149, 190, 564, 292, 508, 359, 202, 152, 459, 200, 446, 293, 512, 103, 154, 229, 492, 145, 256, 828, 55, 296, 133, 147, 314, 220, 190, 481, 208, 290, 198, 146, 100, 202, 259, 295, 16, 505, 251, 86, 375, 618, 266, 891, 166, 159, 269, 850, 127, 397, 759, 494, 141, 567, 339, 119, 336, 162, 98, 265, 770, 423, 380, 346, 116, 402, 101, 628, 623, 286, 309, 107, 453, 406, 496, 200, 865, 720, 429, 187, 107, 609, 439, 90, 48, 330, 59, 87, 632, 323, 219, 101, 865, 203, 14, 74, 466, 462, 160, 448, 168, 474, 980, 396, 148, 244, 904, 438, 198, 982, 601, 199, 119, 300, 240, 702, 241, 258, 192, 291, 227, 34, 698, 78, 107, 123, 89, 704, 114, 274, 461, 151, 115, 576, 323, 201, 468, 271, 231, 92, 592, 220, 909, 829, 243, 480, 466, 345, 763, 404, 356, 86, 110, 210, 688, 353, 271, 740, 226, 352, 247, 288, 758, 338, 426, 235, 405, 625, 155, 146, 475, 491, 189, 177, 216, 962, 503, 216, 726, 381, 219, 183, 102, 332, 113, 155, 440, 922, 450, 379, 294, 301, 36, 80, 75, 875, 462, 547, 69, 330, 186, 527, 92, 138, 157, 169, 69, 143, 401, 24, 283, 41, 37, 472, 309, 117, 747, 342, 251, 300, 182, 216, 202, 266, 192, 217, 302, 660, 360, 663, 130, 355, 367, 47, 1103, 519, 811, 586, 488, 983, 652, 303, 201, 759, 860, 416, 585, 268, 428, 928, 819, 821, 379, 340, 493, 260, 752, 599, 314, 182, 444, 612, 369, 692, 311, 523, 622, 335, 259, 499, 225, 526, 409, 188, 709, 356, 606, 777, 222, 541, 327, 201, 176, 551, 544, 1008, 372, 628, 181, 523, 549, 476, 464, 240, 593, 181, 254, 223, 305, 285, 595, 217, 887, 550, 552, 278, 381, 621, 517, 953, 538, 265, 581, 313, 540, 366, 626, 647, 511, 467, 508, 890, 63, 976, 275, 312, 885, 598, 254, 180, 687, 196, 398, 146, 675, 380, 101, 443, 122, 85, 531, 347, 463, 167, 536, 724, 710, 288, 351, 232, 387, 424, 650, 363, 544, 540, 248, 279, 121, 479, 267, 218, 445, 485, 240, 737, 692, 1017, 331, 716, 1130, 207, 602, 274, 750, 261, 572, 131, 435, 672, 253, 729, 542, 739, 1062, 731, 619, 328, 65, 769, 502, 898, 966, 158, 211, 289, 193, 314, 784, 533, 396, 567, 497, 280, 696, 348, 290, 383, 636, 526, 470, 622, 541, 411, 286, 378, 561, 374, 194, 349, 166, 143, 390, 697, 533, 570, 304, 615, 709, 476, 679, 454, 287, 114, 904, 535, 786, 270, 308, 828, 302, 506, 732, 626, 533, 584, 186, 456, 495, 350, 317, 672, 343, 315, 919, 367, 820, 548, 296, 614, 635, 209, 543, 350, 733, 239, 376, 287, 344, 470, 563, 607, 319, 323, 473, 428, 677, 212, 263, 386, 567, 435, 328, 616, 255, 729, 147, 320, 855, 267, 426, 261, 458, 977, 670, 173, 478, 366, 112, 71, 419, 968, 139, 606, 292, 275, 463, 344, 671, 810, 77, 465, 755, 579, 179, 353, 357, 442, 599, 354, 805, 453, 407, 193, 510, 285, 513, 583, 645, 325, 173, 621, 573, 423, 479, 912, 130, 300, 227, 184, 391, 293, 204, 673, 282, 371, 324, 313, 228, 334, 343, 655, 42, 532, 559, 658, 484, 921, 373, 944, 329, 184, 302, 861, 205, 414, 771, 606, 312, 652, 503, 413, 415, 238, 449, 781, 874, 586, 544, 402, 468, 525, 155, 845, 714, 295, 564, 197, 509, 863, 640, 209, 986, 808, 691, 317, 355, 789, 779, 281, 141, 594, 336, 105, 682, 360, 299, 559, 876, 608, 315, 401, 632, 480, 161, 577, 284, 657, 1012, 481, 330, 388, 1011, 524, 423, 1019, 812, 416, 168, 322, 258, 710, 703, 1027, 195, 447, 259, 633, 990, 710, 215, 410, 458, 760, 174, 312, 605, 269, 206, 617, 534, 554, 497, 296, 393, 236, 784, 483, 1189, 892, 602, 788, 709, 382, 831, 537, 695, 99, 563, 424, 759, 432, 281, 795, 319, 422, 684, 331, 866, 377, 638, 247, 501, 711, 463, 475, 631, 507, 310, 298, 252, 1059, 757, 364, 785, 410, 233, 411, 236, 487, 339, 341, 473, 1022, 527, 515, 700, 380, 388, 414, 253, 913, 466, 773, 238, 638, 335, 896, 298, 310, 658, 461, 207, 205, 550, 29, 425, 141, 76, 649, 442, 322, 832, 730, 307, 385, 401, 268, 301, 311, 306, 291, 364, 864, 560, 840, 199, 358, 385, 179, 1142, 520, 986, 600, 712, 1018, 661, 365, 237, 769, 953, 517, 605, 396, 459, 991, 867, 899, 415, 700, 556, 324, 788, 639, 778, 226, 743, 685, 706, 883, 362, 970, 785, 387, 376, 734, 392, 730, 448, 250, 731, 387, 665, 1015, 243, 812, 391, 795, 346, 588, 737, 1077, 874, 933, 412, 817, 585, 550, 491, 273, 640, 208, 542, 338, 436, 895, 694, 257, 899, 583, 629, 327, 815, 744, 573, 1226, 727, 272, 607, 331, 1050, 594, 754, 716, 515, 524, 695, 1086, 297, 1177, 400, 678, 1004, 648, 294, 555, 780, 316, 486, 689, 679, 430, 136, 717, 233, 400, 646, 383, 530, 263, 574, 749, 790, 336, 377, 409, 609, 499, 686, 518, 595, 601, 334, 531, 197, 485, 348, 424, 701, 579, 500, 1147, 797, 1085, 404, 738, 1200, 253, 714, 427, 756, 303, 610, 313, 1399, 770, 455, 732, 796, 824, 1230, 927, 929, 397, 276, 794, 741, 957, 1052, 1002, 213, 392, 566, 461, 832, 798, 433, 590, 723, 718, 755, 878, 446, 615, 669, 776, 608, 659, 565, 443, 457, 407, 577, 631, 255, 365, 399, 152, 766, 814, 556, 640, 1137, 1000, 767, 745, 733, 1194, 529, 238, 1034, 789, 1314, 436, 493, 853, 492, 654, 809, 885, 636, 596, 270, 848, 774, 364, 512, 832, 411, 516, 927, 700, 857, 588, 703, 756, 758, 315, 574, 810, 885, 416, 600, 690, 417, 501, 626, 707, 581, 377, 916, 660, 808, 587, 265, 395, 613, 906, 381, 661, 310, 799, 148, 632, 941, 750, 578, 277, 1065, 1242, 1018, 326, 551, 459, 134, 99, 510, 1097, 198, 673, 531, 450, 697, 394, 749, 948, 193, 664, 965, 818, 454, 419, 556, 721, 742, 473, 886, 647, 694, 209, 906, 433, 674, 620, 666, 464, 446, 634, 728, 430, 630, 990, 435, 371, 534, 394, 467, 928, 326, 723, 490, 816, 699, 490, 530, 384, 361, 772, 374, 554, 619, 672, 613, 924, 677, 1079, 404, 367, 337, 898, 228, 418, 844, 766, 317, 680, 690, 566, 680, 333, 726, 960, 942, 637, 607, 452, 664, 698, 235, 942, 736, 368, 584, 362, 650, 871, 683, 328, 1141, 988, 715, 915, 495, 1084, 919, 613, 179, 888, 355, 144, 1243, 655, 551, 582, 993, 730, 340, 548, 774, 643, 469, 651, 392, 843, 1196, 590, 573, 545, 1211, 593, 439, 1027, 869, 586, 442, 762, 502, 758, 822, 1048, 254, 628, 417, 683, 996, 752, 384, 725, 676, 842, 360, 374, 688, 353, 549, 661, 648, 584, 624, 348, 530, 250, 1135, 667, 1298, 1033, 623, 1102, 715, 594, 888, 871, 833, 321, 634, 491, 766, 505, 297, 1024, 388, 460, 707, 735, 1023, 444, 1098, 629, 505, 807, 581, 543, 687, 598, 337, 434, 806, 1111, 761, 521, 826, 547, 257, 434, 412, 688, 577, 363, 839, 1187, 1306, 648, 808, 504, 760, 429, 309, 916, 503, 777, 403, 1076, 512, 1127, 592, 351, 692, 711, 474, 587, 558, 487, 498, 326, 164, 902, 456, 471, 836, 748, 469, 480, 537, 553, 507, 347, 490, 498, 420, 1010, 598, 1022, 283, 362, 958, 553, 1156, 712, 1108, 718, 753, 1067, 681, 398, 483, 903, 956, 698, 612, 578, 489, 1294, 990, 920, 592, 1113, 862, 464, 1435, 835, 788, 280, 957, 795, 743, 1108, 425, 1026, 879, 488, 701, 931, 610, 741, 1061, 282, 830, 413, 983, 1159, 1067, 1071, 437, 843, 506, 610, 890, 1133, 1034, 954, 452, 925, 785, 836, 620, 597, 722, 258, 858, 342, 455, 927, 706, 299, 1104, 660, 811, 333, 1173, 878, 858, 1336, 816, 457, 948, 563, 1054, 678, 764, 733, 565, 555, 873, 1150, 485, 1303, 496, 796, 1218, 823, 634, 624, 878, 686, 684, 879, 1100, 454, 154, 1002, 357, 822, 676, 740, 578, 350, 1124, 834, 876, 500, 486, 426, 663, 529, 947, 656, 621, 823, 361, 615, 421, 585, 417, 538, 707, 656, 861, 1236, 831, 1087, 508, 768, 1269, 292, 786, 478, 1043, 593, 765, 408, 1439, 806, 528, 801, 912, 882, 1348, 1050, 1077, 528, 349, 996, 799, 976, 1265, 1100, 674, 470, 617, 540, 847, 862, 457, 757, 841, 973, 921, 969, 539, 646, 699, 959, 654, 670, 787, 872, 559, 744, 1276, 666, 273, 569, 833, 191, 775, 896, 576, 935, 1231, 1046, 923, 804, 949, 1201, 572, 303, 1162, 827, 1346, 897, 612, 937, 599, 675, 992, 930, 644, 1151, 301, 1103, 1086, 482, 831, 1130, 472, 753, 1007, 852, 1054, 635, 705, 955, 823, 425, 596, 962, 908, 445, 880, 867, 478, 509, 653, 775, 591, 510, 1055, 798, 1021, 740, 294, 427, 679, 973, 484, 686, 369, 836, 410, 802, 1245, 883, 649, 431, 1102, 1267, 1262, 557, 1092, 837, 164, 881, 726, 1120, 273, 697, 1097, 609, 708, 663, 838, 985, 552, 968, 1042, 1044, 483, 520, 691, 736, 756, 521, 895, 779, 914, 266, 1356, 548, 742, 964, 888, 481, 877, 685, 791, 437, 696, 991, 825, 643, 708, 969, 683, 1080, 1001, 1012, 617, 1030, 734, 792, 1069, 504, 394, 864, 595, 676, 782, 695, 837, 1154, 819, 1104, 437, 413, 383, 913, 627, 624, 987, 1394, 449, 839, 825, 1054, 1180, 378, 1211, 1090, 1114, 804, 897, 558, 1032, 746, 246, 1051, 870, 958, 725, 536, 702, 1035, 971, 356, 1195, 1061, 827, 1090, 526, 1092, 1250, 1025, 231, 947, 659, 272, 1284, 802, 826, 902, 1040, 870, 345, 658, 822, 715, 1012, 872, 575, 945, 1232, 805, 720, 580, 1215, 854, 603, 1074, 1056, 991, 528, 1218, 642, 1060, 1010, 1203, 288, 978, 884, 762, 1118, 763, 430, 786, 922, 928, 886, 529, 706, 403, 1104, 693, 868, 815, 670, 366, 546, 378, 1151, 901, 1522, 1107, 671, 1333, 745, 724, 1230, 1073, 911, 429, 646, 611, 889, 746, 403, 1032, 616, 637, 1382, 767, 1083, 451, 1212, 803, 1318, 849, 662, 955, 712, 971, 571, 496, 977, 1145, 1160, 931, 830, 580, 359, 805, 668, 770, 771, 390, 882, 1329, 1572, 851, 829, 535, 944, 535, 373, 930, 669, 828, 565, 1219, 620, 1308, 793, 361, 938, 859, 482, 946, 1186, 742, 591, 846, 221, 906, 641, 631, 1068, 780, 536, 517, 844, 652, 721, 552, 523, 627, 525, 1186, 944, 1039, 794, 498, 1076, 654, 1167, 856, 1264, 890, 768, 1225, 691, 729, 543, 936, 1016, 1210, 656, 604, 608, 1324, 1035, 1095, 639, 1311, 1281, 877, 1519, 923, 974, 431, 1057, 903, 809, 1137, 569, 1243, 1118, 880, 720, 1102, 1168, 821, 1193, 432, 999, 555, 1013, 1375, 1200, 1080, 495, 982, 519, 630, 1066, 1164, 1091, 1006, 1039, 943, 1195, 1103, 665, 894, 908, 329, 1081, 951, 641, 1060, 793, 719, 1232, 713, 847, 395, 1213, 1038, 1041, 1587, 984, 752, 1125, 929, 1095, 988, 940, 845, 603, 623, 875, 1158, 772, 1503, 506, 816, 1500, 1007, 638, 633, 936, 703, 704, 1173, 1171, 724, 175, 1051, 604, 1174, 682, 819, 854, 384, 1196, 1249, 1029, 509, 504, 537, 722, 571, 1121, 739, 838, 1027, 363, 743, 570, 818, 546, 721, 736, 842, 905, 1372, 932, 1178, 863, 840, 1334, 299, 855, 499, 1293, 1202, 1061, 689, 1516, 866, 614, 862, 955, 981, 1511, 1153, 1256, 768, 501, 1044, 1282, 985, 1455, 1235, 711, 1001, 627, 641, 889, 914, 644, 877, 913, 1149, 1138, 1188, 557, 871, 787, 1015, 727, 731, 868, 892, 560, 778, 1331, 1025, 318, 619, 864, 203, 911, 1052, 705, 1079, 1461, 1090, 994, 1023, 1050, 1535, 625, 999, 1344, 933, 1498, 1045, 939, 1249, 650, 910, 1294, 951, 649, 1163, 418, 1133, 1089, 493, 1116, 1309, 561, 857, 1073, 1112, 1223, 909, 807, 989, 1053, 997, 813, 976, 1074, 527, 1070, 966, 775, 511, 1004, 800, 717, 933, 1120, 900, 1389, 922, 684, 440, 704, 1106, 668, 767, 757, 847, 936, 835, 1293, 893, 895, 647, 1269, 1480, 1304, 782, 1166, 952, 566, 1124, 846, 1203, 354, 893, 1200, 952, 792, 667, 1164, 1003, 718, 1002, 1139, 1163, 1096, 685, 769, 1003, 977, 532, 1128, 905, 926, 443, 1405, 576, 835, 1116, 1145, 562, 1063, 737, 883, 639, 790, 1021, 967, 772, 995, 1165, 754, 1422, 1583, 1075, 997, 1082, 748, 827, 1197, 516, 465, 1451, 645, 879, 809, 739, 855, 1155, 948, 1117, 460, 465, 791, 1098, 693, 673, 1087, 1400, 532, 910, 829, 1171, 1214, 400, 1221, 1603, 1323, 834, 965, 787, 1045, 918, 589, 1074, 1171, 1116, 744, 905, 931, 1176, 1005, 589, 1238, 1107, 972, 1115, 600, 1181, 1609, 1105, 521, 1158, 1049, 306, 1389, 804, 963, 971, 1199, 917, 716, 668, 973, 998, 1174, 903, 590, 1130, 1472, 841, 811, 597, 1399, 956, 719, 1301, 1083, 1044, 622, 1446, 1097, 1206, 1119, 1345, 604, 1324, 920, 1129, 1340, 798, 444, 980, 997, 1232, 1087, 884, 1093, 422, 1135, 909, 1026, 1055, 824, 462, 678, 945, 1234, 1149, 1542, 1177, 675, 1421, 779, 1013, 1486, 1388, 1191, 514, 1219, 760, 974, 773, 477, 1190, 784, 674, 1428, 778, 1257, 477, 1252, 901, 1352, 1037, 1224, 970, 813, 1009, 1162, 519, 1088, 1157, 1409, 1182, 1089, 755, 438, 1076, 725, 869, 900, 436, 1148, 1421, 1588, 956, 978, 749, 950, 932, 516, 1046, 814, 865, 588, 1303, 713, 1614, 1024, 421, 959, 897, 518, 987, 1275, 765, 887, 893, 333, 925, 732, 635, 1169, 910, 1434, 575, 959, 653, 850, 728, 583, 1093, 542, 1316, 1031, 1059, 1122, 642, 1121, 891, 1209, 925, 1299, 896, 932, 1288, 934, 984, 580, 1113, 1413, 1224, 964, 643, 773, 1337, 1663, 1341, 657, 1357, 1473, 1292, 1551, 970, 1209, 792, 1339, 1141, 1140, 1320, 616, 1383, 1126, 980, 1014, 1146, 1245, 859, 1298, 513, 1182, 662, 1014, 1562, 1297, 1151, 502, 1139, 874, 1259, 1645, 1169, 1242, 1072, 1412, 1115, 1275, 1466, 1239, 1038, 1184, 458, 1094, 1440, 810, 1352, 1339, 830, 1354, 801, 848, 671, 1300, 1147, 1047, 1625, 1117, 1046, 1327, 1047, 1237, 1101, 1018, 1016, 745, 1066, 1132, 1221, 841, 1512, 522, 853, 1535, 1248, 975, 694, 1143, 824, 1009, 1185, 1288, 908, 200, 1308, 904, 1665, 687, 843, 943, 1199, 1198, 1379, 1168, 571, 789, 630, 846, 602, 1342, 1350, 995, 1114, 408, 1043, 1304, 945, 751, 793, 741, 1072, 1006, 1401, 1331, 1296, 1152, 856, 1337, 321, 881, 937, 1318, 1535, 1560, 806, 1696, 924, 625, 994, 1058, 996, 1649, 1183, 1442, 1118, 901, 1094, 1408, 1016, 1653, 1259, 800, 1317, 677, 815, 894, 1017, 1278, 957, 1109, 1284, 1321, 1220, 947, 1383, 860, 1220, 783, 873, 979, 1025, 1228, 1007, 1417, 1231, 735, 783, 872, 492, 1028, 1244, 852, 1144, 1645, 1172, 1088, 1110, 1204, 1622, 738, 1146, 1513, 1106, 1564, 1079, 1021, 1436, 776, 917, 1467, 1051, 814, 1217, 812, 1174, 1271, 863, 1187, 1461, 644, 1308, 1154, 1263, 1225, 1121, 867, 1110, 1157, 1139, 989, 1033, 1270, 1163, 1170, 1037, 880, 803, 1098, 807, 968, 1446, 1235, 1064, 1547, 979, 842, 500, 838, 1398, 939, 916, 953, 920, 946, 851, 1428, 1210, 960, 762, 1456, 1519, 1384, 898, 1361, 995, 1100, 1508, 856, 1284, 553, 1330, 1249, 1258, 1020, 764, 1165, 1179, 1047, 1056, 1285, 1266, 1286, 853, 1397, 1515, 987, 547, 1296, 1215, 965, 489, 1444, 800, 849, 1300, 1242, 662, 1085, 818, 918, 748, 954, 1024, 1022, 954, 1109, 1218, 821, 1431, 1587, 1315, 1081, 1140, 754, 943, 1371, 1003, 840, 1475, 722, 1081, 1033, 1216, 1254, 1175, 1122, 1203, 728, 488, 1189, 1377, 1136, 907, 1267, 1416, 751, 1169, 1101, 1289, 1241, 597, 1322, 1625, 1332, 961, 985, 915, 1128, 1069, 764, 1175, 1177, 1156, 889, 1075, 1088, 1251, 1031, 738, 1523, 1229, 994, 1489, 637, 1185, 1651, 1112, 680, 1608, 1197, 513, 1538, 978, 1040, 1000, 1432, 1030, 887, 833, 1057, 1094, 1565, 1190, 696, 1178, 1556, 1045, 1307, 1294, 1436, 1096, 747, 1485, 1128, 1430, 664, 1653, 1180, 1597, 1167, 1452, 776, 1341, 1305, 1142, 1418, 849, 562, 1247, 998, 1391, 1161, 941, 1387, 912, 1149, 1078, 1029, 1141, 1197, 582, 701, 961, 1423, 1195, 1674, 1205, 964, 1633, 929, 1127, 1571, 1581, 1291, 681, 1272, 781, 981, 783, 765, 1295, 974, 1015, 1516, 873, 1324, 482, 1262, 1371, 1648, 1101, 1240, 1115, 837, 1048, 1301, 763, 1260, 1229, 1426, 1316, 1208, 963, 1083, 1125, 992, 882, 1034, 467, 1176, 1429, 1610, 1452, 1376, 753, 1184, 1239, 777, 1291, 1264, 1223, 659, 1378, 797, 1632, 1071, 575, 1099, 926, 801, 1042, 1322, 1111, 1234, 1112, 979, 962, 993, 713, 1271, 1008, 1533, 653, 999, 746, 876, 751, 1123, 1319, 693, 1354, 1209, 1207, 1159, 1250, 1192, 1385, 1350, 952, 1543, 1020, 1067, 1632, 1119, 1635, 1165, 1161, 1483, 1347, 983, 669, 796, 1412, 1684, 1374, 886, 1468, 1479, 1594, 1781, 1113, 1274, 969, 1343, 1403, 1261, 1440, 681, 1424, 1216, 1207, 1210, 1172, 1325, 935, 1414, 1123, 1287, 1158, 1032, 1589, 1554, 1326, 562, 1313, 949, 1296, 1760, 1260, 1552, 1129, 1422, 1258, 1542, 1525, 1253, 1089, 1255, 1131, 1220, 1652, 869, 1410, 1351, 1266, 1518, 868, 884, 1302, 1486, 1362, 1185, 1652, 1172, 1205, 1388, 1479, 1270, 1224, 1297, 1138, 817, 1170, 1214, 1240, 1153, 1551, 817, 915, 1553, 1319, 1496, 717, 1194, 850, 1091, 1256, 1541, 1039, 561, 1358, 938, 1707, 1557, 1368, 1160, 1342, 1404, 1515, 1435, 727, 790, 1396, 854, 891, 1783, 1365, 1271, 1183, 1400, 1205, 1367, 1068, 794, 1006, 803, 1485, 1164, 1422, 1502, 1334, 1359, 1215, 1698, 1042, 1204, 1028, 1458, 1550, 1600, 1111, 1700, 1132, 992, 1134, 1430, 1049, 1731, 1323, 1555, 1228, 1456, 1099, 1545, 1091, 1685, 1445, 857, 1612, 735, 1126, 946, 1168, 1399, 1222, 1192, 1373, 1575, 1317, 1073, 1506, 1143, 1440, 1438, 1263, 1105, 1327, 1256, 1126, 1619, 1265, 924, 961, 1023, 866, 1070, 1437, 1132, 1487, 1675, 1333, 1423, 1182, 1295, 1683, 939, 1154, 1617, 1212, 1665, 1414, 1107, 1534, 1282, 1402, 1485, 1096, 1059, 1495, 981, 1235, 1381, 1017, 1240, 1534, 875, 1561, 1279, 1354, 1353, 1396, 1243, 1547, 1356, 1166, 1181, 1343, 1285, 1247, 1255, 1357, 975, 919, 1318, 988, 1477, 1521, 1358, 1206, 1549, 1146, 1117, 1305, 1019, 1406, 982, 942, 1014, 1075, 1004, 860, 1512, 1241, 1053, 858, 1620, 1527, 1415, 1251, 1497, 1108, 1166, 1667, 967, 1434, 665, 1335, 1313, 1406, 1283, 902, 1362, 1358, 1501, 1222, 1427, 1280, 1309, 984, 1647, 1573, 1449, 618, 1328, 1310, 1120, 844, 1739, 1424, 1246, 1474, 1561, 699, 1277, 826, 1386, 1257, 1227, 1056, 1189, 975, 1125, 1329, 917, 1464, 1784, 1405, 1152, 1153, 935, 1092, 1464, 1040, 907, 1592, 1428, 1136, 1063, 1420, 1390, 1251, 1217, 1268, 1143, 708, 1603, 1407, 1160, 1207, 1340, 1488, 998, 1315, 1344, 1300, 1365, 1134, 1401, 1629, 1366, 1008, 1013, 1211, 1179, 1188, 825, 1262, 1393, 1469, 1173, 1077, 1248, 1417, 1095, 907, 1654, 1320, 1065, 1598, 799, 1601, 1656, 1190, 714, 1754, 1595, 651, 1647, 1063, 1397, 1157, 1481, 1237, 1060, 1482, 1287, 1192, 1618, 1394, 1259, 1558, 1635, 1162, 1377, 1803, 1492, 1476, 774, 1626, 1420, 1504, 689, 1687, 1372, 1616, 1199, 1471, 934, 1342, 1351, 1261, 1442, 923, 723, 1361, 1084, 1450, 1233, 1011, 1389, 1338, 1186, 1340, 1110, 1327, 1225, 690, 1483, 1064, 1443, 1258, 1697, 1213, 966, 1687, 1161, 1314, 1605, 1877, 1477, 747, 1280, 1028, 1138, 820, 782, 1560, 1038, 1592, 1517, 894, 1586, 568, 1276, 1379, 1753, 1230, 1749, 1122, 1458, 1080, 1526, 1411, 1309, 1332, 1430, 1381, 1255, 1648, 1248, 1267, 1459, 914, 1085, 1184, 1180, 1459, 1629, 1463, 1378, 845, 1343, 1415, 1037, 1292, 1336, 1431, 734, 1426, 1193, 1688, 1279, 940, 1313, 1036, 1155, 1099, 1406, 1490, 1326, 1556, 1069, 1005, 1142, 1010, 1273, 1312, 1546, 761, 1624, 1065, 921, 1055, 1134, 1518, 839, 1435, 1234, 1244, 1238, 1297, 1254, 1494, 1484, 1145, 1604, 1404, 1289, 1645, 1131, 1658, 1198, 1392, 1557, 1667, 1082, 972, 918, 1432, 1701, 1637, 1312, 1579, 1680, 1864, 1825, 1194, 1457, 1370, 1411, 1479, 1398, 1510, 1049, 1447, 1576, 1252, 1290, 1360, 1679, 1070, 1506, 1699, 1359, 1204, 1222, 1818, 1596, 1363, 834, 1383, 1513, 1499, 1766, 1646, 1629, 1328, 1423, 1460, 1640, 1923, 1302, 1216, 1364, 1369, 1233, 1739, 1031, 1624, 1505, 1434, 1630, 1451, 1196, 1548, 1527, 1454, 1520, 1707, 1407, 1467, 1561, 1604, 1319, 1543, 1456, 1374, 881, 1453, 1323, 1735, 1246, 1660, 1381, 1188, 1709, 1391, 1532, 771, 1264, 851, 1219, 1322, 1639, 1144, 960, 1615, 1136, 1732, 1690, 1371, 1433, 1377, 1459, 1571, 1447, 1058, 1245, 1451, 1053, 949, 1894, 1531, 1305, 1253, 1493, 1303, 1380, 1581, 1330, 1082, 1036, 1541, 1520, 1437, 1585, 1359, 1425, 1410, 1857, 1465, 1239, 1208, 1585, 1642, 1807, 1743, 1710, 1167, 1135, 1465, 1513, 1175, 1759, 1524, 1655, 1348, 1471, 1150, 1581, 1917, 1694, 1545, 911, 1622, 852, 1348, 1191, 1261, 1410, 1491, 1237, 1401, 1822, 1325, 1457, 1668, 1236, 1449, 1698, 1270, 1392, 1418, 1486, 1133, 1797, 1503, 1041, 1198, 1392, 1041, 1632, 1621, 1311, 1638, 1832, 1364, 1452, 1499, 1472, 1913, 1295, 1208, 1766, 1369, 1780, 1541, 1462, 1545, 1336, 1569, 1693, 1385, 1276, 1547, 1266, 1338, 1505, 1029, 1493, 1670, 958, 1572, 1607, 1446, 1634, 1530, 1414, 1704, 1552, 1441, 1653, 1480, 1310, 1712, 1347, 1403, 1408, 951, 1360, 1213, 1562, 1710, 1419, 1528, 1589, 1443, 1345, 1636, 1071, 1637, 1026, 1644, 1030, 1638, 1221, 1119, 1570, 1712, 1253, 989, 1742, 1790, 1537, 1619, 1508, 1150, 1326, 1926, 1470, 1702, 940, 1733, 1362, 1429, 1299, 938, 1606, 1453, 1568, 1335, 1738, 1564, 1312, 1275, 1718, 1575, 1528, 937, 1491, 1415, 1179, 900, 1843, 1471, 1345, 1536, 1573, 930, 1301, 1020, 1482, 1412, 1274, 1105, 1347, 1344, 1764, 1729, 1062, 1563, 1843, 1532, 1228, 1302, 1273, 1397, 1591, 1391, 1052, 1662, 1470, 1181, 1425, 1427, 1578, 1263, 1395, 1292, 1317, 899, 1808, 1539, 1650, 1231, 1376, 1515, 1001, 1330, 1603, 1331, 1419, 1369, 1444, 1709, 1374, 1068, 1019, 1306, 1298, 1293, 1011, 1831, 1502, 1590, 1238, 1148, 1269, 1555, 1114, 1036, 1740, 1325, 1405, 1670, 1062, 1773, 1688, 1335, 1476, 1827, 1723, 820, 1748, 1072, 1536, 1398, 1732, 1587, 1400, 1529, 1355, 1304, 1651, 1722, 1268, 1673, 1800, 1178, 1503, 1847, 1656, 1497, 1595, 1689, 1576, 1740, 963, 1822, 1393, 1743, 1246, 1499, 1106, 1356, 1387, 1367, 1745, 1009, 780, 1458, 1206, 1673, 1250, 1662, 1611, 1555, 1193, 1353, 1597, 1559, 1445, 1187, 1677, 1155, 1464, 1497, 1713, 1357, 1450, 1696, 1257, 1339, 1685, 1894, 1615, 1733, 1315, 1364, 1363, 1418, 1123, 1738, 1445, 1620, 1660, 1156, 1599, 926, 1507, 1640, 1763, 1289, 1791, 1648, 1601, 1321, 1544, 1577, 1683, 1376, 1543, 1540, 1361, 1666, 1273, 1433, 1504, 993, 1265, 1288, 1454, 1482, 1736, 1481, 1439, 1286, 1467, 1461, 1474, 1510, 1489, 1681, 934, 1643, 1606, 1791, 1491, 1341, 1429, 1127, 1227, 1299, 1600, 1904, 1395, 1588, 1084, 1057, 1183, 1252, 1283, 1478, 1611, 1320, 1851, 1355, 1223, 1147, 1403, 1576, 1035, 1460, 1260, 1641, 1538, 1368, 1475, 1511, 1672, 1329, 1764, 1426, 1353, 1691, 1214, 1915, 1247, 1538, 1658, 1716, 1689, 1000, 986, 1884, 1975, 1730, 1899, 1623, 1834, 1981, 1952, 1473, 1490, 1529, 1557, 1748, 1544, 1617, 1720, 1690, 1667, 1630, 1641, 1678, 1750, 1367, 1525, 1786, 1447, 1395, 1390, 1826, 1598, 1427, 861, 1582, 1658, 1878, 1768, 1651, 1699, 1532, 1498, 1529, 1765, 1939, 1384, 1723, 1872, 1758, 1438, 1742, 1093, 1657, 1759, 1650, 1634, 1519, 1290, 1569, 1573, 1591, 1643, 1928, 1411, 1786, 1582, 1661, 1521, 1657, 1609, 1633, 972, 1468, 1644, 1776, 1388, 1692, 1409, 1278, 1812, 1631, 1873, 1310, 1272, 1109, 1333, 1522, 1722, 1612, 1048, 1741, 1674, 1755, 1711, 1568, 1437, 1484, 1567, 1746, 1583, 1148, 1307, 1570, 1314, 950, 1906, 1654, 1379, 1494, 1518, 1455, 1393, 1703, 1390, 1606, 1226, 1669, 1580, 1692, 1719, 1366, 1438, 1433, 1982, 1514, 1676, 1609, 1742, 1690, 1819, 1763, 1730, 1321, 1566, 2031, 1680, 1741, 1839, 1762, 1925, 1536, 1524, 1283, 1723, 1924, 1706, 1558, 1375, 1758, 1417, 1691, 1350, 1727, 1475, 1537, 1457, 1506, 1917, 1386, 1695, 1753, 1355, 1756, 1775, 1613, 1563, 1425, 1488, 1176, 1827, 1556, 1131, 1349, 1448, 1281, 1749, 1664, 1572, 1744, 1860, 1813, 1762, 1642, 1689, 1928, 1570, 1878, 1890, 1739, 1809, 1799, 1663, 1591, 1495, 1695, 1762, 1580, 1306, 1879, 1462, 1413, 1637, 1078, 1567, 1785, 1078, 1659, 1801, 1530, 1769, 1579, 1549, 1747, 1682, 1796, 1668, 1727, 1822, 1836, 1378, 1551, 1501, 1810, 1478, 1278, 1574, 1764, 1533, 1627, 1714, 1489, 1480, 1726, 1584, 1643, 1387, 1655, 1058, 1720, 1370, 1595, 1795, 1832, 1843, 1212, 1871, 1840, 1886, 1831, 1720, 1272, 1765, 1956, 1496, 1855, 1144, 1830, 1404, 1593, 1507, 967, 1768, 1671, 1842, 1469, 1829, 1593, 1621, 1516, 1763, 1612, 1982, 1124, 1613, 1715, 1375, 1311, 1844, 1509, 1448, 1542, 1660, 1005, 1490, 1408, 1620, 1707, 1277, 1568, 1373, 1887, 1827, 1778, 1510, 1782, 1886, 1537, 1424, 1402, 1282, 1496, 1681, 1649, 1286, 1858, 1566, 1622, 1972, 1562, 1868, 1316, 1754, 1725, 1559, 1086, 1873, 1594, 1792, 1351, 1579, 1889, 1043, 1380, 1789, 1588, 1481, 1487, 1650, 1717, 1602, 1413, 1226, 1370, 1368, 1346, 1493, 1902, 1554, 1713, 1564, 1244, 1432, 1597, 1328, 1285, 1828, 1484, 1466, 1719, 1550, 1909, 1854, 1582, 1596, 1903, 1751, 1530, 1905, 1227, 1771, 1605, 1807, 1777, 1738, 1592, 1460, 1507, 1708, 1745, 1385, 1686, 1869, 1277, 1517, 1867, 1776, 1846, 1809, 1803, 1674, 1748, 1191, 1837, 1420, 1754, 1274, 1644, 1201, 1366, 1450, 1402, 1757, 1140, 1500, 1465, 1509, 1793, 1352, 1804, 1702, 1560, 1431, 1549, 1679, 1769, 1615, 1229, 1740, 1775, 1534, 1498, 1757, 1416, 1567, 1711, 1360, 1472, 1705, 1923, 1782, 1746, 1767, 1575, 1531, 1628, 1772, 1868, 1771, 1628, 1719, 1287, 1623, 1900, 1709, 1703, 1840, 1382, 1841, 1808, 1860, 1788, 1652, 1687, 1810, 1488, 1661, 1867, 1476, 1785, 1646, 1468, 1611, 1159, 1492, 1291, 1463, 1716, 1778, 1669, 1448, 1539, 1633, 1511, 1523, 1672, 1821, 1718, 1349, 1875, 1659, 1835, 1558, 1520, 1670, 1639, 1540, 1885, 1779, 1972, 1531, 1874, 1627, 1202, 1639, 1553, 1540, 1539, 1646, 1439, 1856, 1444, 1279, 1241, 1952, 1701, 1280, 1616, 1332, 1692, 1664, 1373, 1781, 1733, 1995, 1571, 1777, 1593, 1578, 1869, 1233, 1916, 1504, 1849, 1704, 1729, 1896, 1953, 1449, 1899, 2007, 1744, 2003, 1875, 1935, 2016, 1993, 1527, 1788, 1734, 1726, 1823, 1636, 1619, 1734, 1755, 1829, 1773, 1799, 1700, 1947, 1938, 1647, 1789, 1550, 1396, 1590, 1964, 1951, 1634, 1066, 1856, 1717, 1988, 1791, 1664, 1977, 1544, 1715, 1563, 1801, 1988, 1725, 1815, 1921, 1897, 1442, 1831, 1217, 1752, 1866, 1861, 1659, 1706, 1724, 1678, 1714, 1724, 1958, 2036, 1487, 1978, 1657, 1997, 1800, 1895, 1708, 1811, 1678, 1705, 1962, 1927, 1699, 1694, 1625, 1501, 1844, 1686, 1958, 1614, 1307, 1129, 1407, 1683, 1835, 1800, 1152, 1793, 1879, 1820, 1747, 1598, 1922, 1553, 1768, 1811, 1838, 1290, 1953, 1781, 1610, 1626, 1936, 1751, 1665, 1584, 1823, 1816, 1758, 1932, 1454, 1793, 1436, 1817, 1675, 1697, 1927, 1655, 1546, 1677, 2003, 1666, 1735, 1811, 1808, 1813, 1834, 1850, 1821, 1565, 1975, 2045, 1816, 1809, 1951, 1862, 2048, 1911, 1686, 1441, 1878, 1976, 1865, 1906, 1608, 1871, 1469, 1803, 1932, 1798, 1862, 1881, 1577, 1802, 1979, 1455, 1977, 1820, 1495, 1816, 1907, 1784, 1774, 1789, 1743, 1533, 1830, 1684, 1201, 1548, 1566, 1334, 1776, 1724, 1752, 1880, 1908, 1863, 1898, 1925, 1693, 2033, 1799, 1910, 1893, 1928, 1833, 1841, 1706, 1801, 1599, 1737, 1934, 1688, 2035, 1885, 1796, 1807, 1881, 1419, 1901, 1948, 1137, 1685, 1848, 1624, 1829, 1868, 1630, 1819, 1772, 1946, 1787, 1805, 1941, 1854, 1554, 1722, 1729, 1877, 1863, 1736, 1626, 1918, 1631, 1628, 1986, 1616, 1679, 1820, 1869, 1756, 1662, 1876, 1380, 1815, 1914, 1680, 1956, 1870, 1947, 1421, 1886, 1936, 1911, 1918, 1728, 1346, 1769, 2021, 1601, 1912, 1548, 1835, 1502, 1605, 1927, 1372, 1865, 1673, 1891, 1494, 1882, 1779, 1814, 1940, 1806, 1759, 2011, 1441, 1623, 1846, 1514, 1663, 2033, 1552, 1819, 1574, 1850, 1671, 1702, 1757, 1756, 1836, 1384, 1980, 1640, 2038, 2006, 1794, 1805, 1785, 1955, 1580, 1930, 1583, 1526, 1523, 1833, 1725, 1462, 1883, 1682, 1794, 1995, 1892, 1874, 1349, 1818, 1730, 1604, 1170, 1890, 1777, 1806, 1701, 1589, 1911, 1254, 1526, 1942, 1825, 1514, 1966, 1780, 1864, 1671, 1817, 1677, 1443, 1855, 1569, 1922, 1934, 1712, 1931, 1765, 1888, 1463, 1627, 1505, 1492, 1870, 1590, 1565, 1922, 1698, 1956, 1985, 2006, 1635, 1931, 1899, 1600, 1973, 1268, 1823, 1710, 1867, 1916, 1804, 1642, 1466, 1767, 1832, 1996, 1672, 1824, 1921, 1924, 1838, 1904, 1908, 1861, 1960, 1998, 1728, 1760, 1394, 1993, 1546, 1974, 1525, 1847, 1202, 1613, 1453, 1602, 1826, 1875, 1594, 1596, 1753, 1970, 1478, 2055, 1853, 1713, 1474, 1797, 1682, 1943, 1745, 1830, 1814, 1897, 1621, 1817, 1802, 1617, 1649, 1978, 1500, 1483, 1804, 2040, 1983, 1775, 1893, 1636, 1896, 1774, 1784, 1903, 1782, 1783, 1852, 1894, 1770, 1924, 2020, 1926, 1929, 1714, 2009, 1989, 1865, 1898, 1737, 1945, 1847, 1696, 1767, 1907, 1715, 1849, 1967, 1694, 1747, 1337, 1608, 1363, 1676, 1734, 1859, 1755, 1470, 1584, 1957, 1919, 1528, 1788, 1900, 1741, 1508, 1971, 1749, 1937, 1970, 1941, 1794, 1693, 1721, 1991, 1915, 1997, 1824, 1942, 1996, 1236, 1669, 1887, 1654, 1982, 1898, 1761, 1883, 1700, 1521, 1681, 2011, 1751, 1281, 1684, 1607, 1845, 1860, 1524, 1844, 1901, 1999, 1760, 1940, 1705, 1736, 1987, 1721, 2033, 2024, 1990, 2047, 1965, 2018, 2044, 1473, 1920, 2030, 1968, 2045, 2025, 1995, 2054, 2017, 1559, 1876, 1891, 1871, 2013, 1949, 1821, 1892, 1834, 1946, 1778, 1880, 1864, 2042, 2016, 2026, 1945, 2031, 1574, 1853, 1980, 2034, 2056, 2012, 1912, 1812, 2031, 1836, 1992, 2058, 1941, 1814, 2007, 2051, 2048, 2044, 1880, 1926, 2047, 1761, 1839, 1365, 1772, 1986, 1985, 1905, 2060, 1909, 1857, 1944, 1826, 2000, 2050, 2023, 2020, 1931, 2023, 2043, 2005, 1967, 1872, 1907, 1944, 1981, 1965, 1999, 1711, 1916, 1517, 1958, 1954, 2023, 1961, 2064, 1798, 1577, 1930, 1896, 1859, 1382, 1987, 2039, 2037, 1787, 1666, 1984, 1602, 1933, 2008, 2057, 1338, 1976, 2038, 1971, 1950, 1954, 1991, 1828, 1695, 1845, 1873, 1889, 2037, 1641, 1961, 1731, 1884, 1881, 1914, 1978, 1783, 1925, 1882, 2010, 2062, 1846, 1921, 2029, 2046, 1910, 2026, 1953, 1607, 2063, 2059, 2000, 1884, 2008, 2014, 2052, 2015, 1848, 1716, 2003, 2036, 2006, 1932, 1973, 1976, 1522, 2028, 2059, 1917, 1947, 2027, 1954, 1964, 2059, 2035, 1999, 1910, 1893, 1877, 1933, 1934, 2019, 1858, 1990, 2037, 1876, 1903, 1792, 1966, 2025, 1509, 1853, 1908, 1837, 2044, 1914, 1938, 1913, 2004, 1824, 2047, 1856, 1938, 2032, 2022, 1870, 1912, 1779, 2039, 2049, 1761, 1983, 1950, 2054, 2002, 1959, 1848, 1919, 1790, 1993, 1967, 1900, 1718, 1897, 2019, 2051, 2053, 1838, 1930, 1918, 2015, 2036, 1904, 1962, 1890, 1852, 1845, 2009, 2050, 2004, 2032, 1883, 2057, 2028, 2040, 2056, 1851, 1737, 1939, 1872, 1939, 1975, 1988, 1676, 1919, 1994, 2019, 1984, 1885, 2005, 1812, 2008, 2040, 1957, 2028, 1842, 2032, 2039, 2062, 1828, 1992, 1746, 1841, 1980, 1940, 1994, 1416, 1937, 1866, 1996, 1866, 1929, 2013, 1815, 2064, 1959, 2012, 2022, 1735, 1727, 1950, 1981, 1991, 2043, 1929, 1920, 1578, 1859, 1960, 1949, 1852, 1955, 1966, 2018, 2063, 1656, 2055, 2041, 1969, 2046, 1905, 2017, 1726, 1943, 1717, 2009, 1802, 2062, 1750, 1675, 1990, 1963, 1795, 2061, 1998, 2042, 1770, 2049, 1862, 1668, 2056, 2000, 1987, 2002, 1797, 1882, 1963, 1512, 1708, 1949, 1901, 1935, 1997, 1971, 2017, 2054, 1920, 1691, 1585, 2001, 2005, 1963, 2015, 1933, 2026, 1909, 1913, 1704, 1798, 1962, 1610, 2024, 1969, 1810, 1994, 1703, 2055, 2021, 2030, 2024, 1986, 1906, 1825, 2002, 1770, 1855, 1837, 2014, 2010, 1849, 1697, 1661, 1863, 1935, 2052, 1957, 2058, 1937, 2061, 2035, 2045, 1984, 1888, 1965, 2058, 1854, 2007, 1842, 2060, 1888, 1989, 1599, 2014, 1638, 2027, 1731, 2012, 1891, 1936, 1614, 1618, 1806, 2030, 1586, 2057, 1968, 1974, 1477, 1959, 1840, 1973, 1970, 1955, 1951, 1998, 1985, 1892, 1818, 1874, 1961, 2046, 1989, 1960, 2041, 2049, 2001, 1948, 2048, 1983, 1944, 1790, 2042, 2051, 1992, 1923, 2041, 1952, 1972, 1945, 2029, 1948, 1974, 1943, 2038, 2050, 1942, 1968, 1805, 1977, 2004, 1752, 1787, 1915, 1732, 2063, 2021, 1766, 1946, 1618, 1858, 2025, 1857, 1773, 1895, 1833, 1887, 1744, 1979, 2010, 1850, 2061, 2016, 1780, 1586, 2027, 1969, 2034, 1979, 2018, 1813, 1839, 1902, 2013, 2011, 2052, 1851, 2029, 2064, 1386, 1750, 1902, 1771, 2034, 2001, 1795, 2053, 1792, 1631, 1964, 2053, 1796, 1409, 1774, 1721, 1889, 1879, 1728, 2020, 2043, 2060, 1895, 2022, 1861, 1786 +}; + +uint16_t H_cols[] = { +208, 242, 84, 114, 314, 135, 349, 90, 64, 57, 26, 52, 16, 142, 120, 244, 167, 164, 133, 179, 22, 180, 413, 161, 224, 121, 57, 22, 394, 17, 9, 54, 84, 20, 98, 311, 322, 308, 86, 91, 77, 41, 110, 192, 18, 11, 210, 133, 248, 276, 389, 100, 37, 4, 239, 15, 32, 15, 7, 10, 109, 82, 19, 50, 137, 278, 43, 181, 89, 206, 113, 285, 10, 95, 12, 180, 23, 93, 100, 124, 200, 130, 81, 149, 6, 251, 181, 227, 156, 215, 194, 284, 206, 177, 171, 174, 40, 136, 187, 89, 98, 156, 44, 30, 48, 78, 349, 126, 56, 3, 212, 43, 111, 183, 63, 54, 35, 63, 333, 158, 96, 100, 270, 38, 97, 4, 139, 163, 67, 251, 139, 42, 214, 117, 26, 98, 132, 105, 13, 61, 330, 223, 183, 95, 295, 95, 55, 29, 65, 35, 75, 130, 8, 98, 344, 46, 239, 155, 131, 75, 246, 3, 44, 260, 199, 21, 99, 118, 76, 8, 87, 271, 257, 171, 98, 44, 255, 17, 276, 91, 50, 21, 90, 262, 118, 208, 214, 35, 140, 159, 58, 277, 158, 180, 53, 93, 58, 264, 40, 98, 4, 284, 183, 24, 7, 123, 133, 57, 223, 124, 156, 202, 34, 324, 67, 452, 63, 123, 303, 303, 169, 40, 32, 24, 32, 5, 220, 218, 103, 222, 113, 111, 100, 30, 146, 266, 4, 195, 14, 55, 145, 37, 40, 18, 184, 188, 267, 38, 116, 35, 60, 53, 133, 58, 9, 296, 63, 57, 30, 17, 86, 157, 105, 29, 73, 285, 122, 9, 31, 199, 347, 73, 55, 135, 86, 2, 42, 67, 119, 21, 351, 35, 213, 173, 61, 176, 194, 109, 72, 77, 273, 133, 244, 90, 313, 220, 27, 192, 63, 299, 208, 202, 3, 66, 14, 19, 127, 68, 348, 246, 26, 87, 75, 20, 215, 93, 212, 180, 149, 114, 133, 48, 235, 17, 247, 257, 42, 149, 57, 363, 75, 334, 67, 97, 29, 109, 241, 59, 332, 15, 228, 6, 186, 81, 271, 31, 103, 122, 150, 105, 110, 92, 277, 213, 358, 37, 100, 129, 46, 367, 118, 26, 115, 211, 3, 77, 217, 23, 24, 145, 70, 48, 68, 179, 112, 30, 110, 177, 14, 97, 68, 66, 103, 105, 83, 231, 29, 383, 45, 64, 42, 32, 201, 269, 67, 9, 149, 3, 34, 86, 373, 51, 409, 130, 39, 80, 177, 118, 34, 248, 175, 50, 37, 76, 14, 7, 122, 49, 262, 27, 79, 102, 295, 113, 26, 111, 135, 10, 356, 97, 21, 2, 129, 451, 140, 60, 42, 191, 33, 152, 25, 279, 99, 22, 124, 168, 305, 34, 104, 224, 154, 50, 71, 97, 60, 209, 73, 57, 10, 322, 159, 375, 104, 17, 273, 374, 81, 121, 160, 157, 411, 88, 236, 166, 88, 53, 164, 135, 36, 375, 291, 211, 4, 233, 84, 94, 47, 29, 10, 306, 54, 183, 16, 128, 42, 86, 96, 488, 31, 109, 150, 42, 332, 110, 315, 44, 321, 82, 109, 235, 80, 212, 35, 128, 80, 215, 7, 115, 44, 102, 281, 86, 27, 79, 280, 33, 227, 142, 113, 104, 102, 281, 161, 238, 197, 106, 111, 72, 163, 76, 41, 58, 4, 46, 45, 122, 281, 219, 52, 53, 45, 66, 264, 69, 37, 16, 138, 221, 176, 176, 98, 42, 75, 92, 80, 158, 163, 71, 26, 49, 109, 108, 70, 85, 378, 186, 178, 9, 12, 4, 74, 25, 65, 207, 8, 339, 5, 45, 205, 163, 234, 14, 56, 77, 62, 185, 55, 89, 19, 228, 117, 113, 80, 9, 8, 38, 74, 10, 112, 32, 205, 8, 242, 142, 119, 26, 158, 28, 148, 54, 69, 28, 81, 91, 142, 78, 158, 49, 66, 45, 179, 249, 91, 90, 219, 153, 339, 90, 14, 56, 60, 392, 9, 162, 274, 102, 79, 89, 206, 114, 365, 2, 232, 172, 36, 8, 14, 317, 173, 65, 2, 37, 112, 273, 38, 179, 107, 244, 9, 173, 67, 141, 265, 156, 96, 102, 158, 77, 96, 331, 2, 102, 302, 94, 23, 93, 92, 408, 95, 229, 2, 25, 326, 62, 82, 166, 185, 7, 170, 15, 30, 216, 93, 94, 186, 24, 124, 268, 36, 108, 156, 448, 65, 134, 356, 79, 91, 165, 63, 30, 123, 56, 164, 97, 348, 262, 72, 294, 3, 33, 36, 143, 79, 31, 158, 124, 46, 131, 115, 103, 33, 280, 22, 69, 80, 343, 386, 295, 107, 39, 122, 18, 215, 78, 166, 136, 163, 222, 5, 405, 196, 253, 401, 78, 138, 184, 190, 131, 5, 141, 91, 84, 10, 210, 184, 171, 39, 20, 283, 92, 337, 257, 172, 160, 28, 134, 170, 18, 110, 108, 85, 21, 62, 122, 23, 10, 128, 161, 152, 156, 65, 249, 124, 191, 282, 139, 220, 238, 24, 60, 66, 41, 196, 185, 68, 72, 51, 121, 12, 218, 13, 101, 89, 93, 298, 293, 197, 201, 332, 36, 128, 160, 182, 42, 19, 53, 259, 116, 331, 131, 84, 125, 43, 285, 79, 112, 66, 66, 288, 93, 93, 158, 87, 104, 134, 131, 156, 58, 33, 6, 42, 16, 130, 182, 354, 141, 12, 65, 60, 1, 169, 175, 82, 44, 82, 108, 17, 69, 28, 29, 80, 145, 25, 66, 88, 14, 64, 290, 160, 46, 113, 1, 251, 55, 61, 185, 199, 153, 13, 237, 150, 269, 5, 100, 126, 243, 312, 56, 219, 203, 156, 144, 164, 161, 87, 236, 203, 10, 216, 13, 166, 239, 19, 141, 51, 284, 61, 11, 75, 205, 31, 128, 49, 2, 33, 5, 135, 100, 194, 78, 154, 245, 51, 321, 121, 160, 114, 74, 44, 113, 59, 259, 6, 49, 144, 6, 22, 214, 171, 98, 181, 225, 368, 8, 274, 154, 262, 234, 21, 19, 352, 9, 165, 20, 90, 85, 255, 367, 174, 29, 145, 43, 1, 3, 153, 10, 280, 77, 221, 12, 11, 142, 370, 143, 116, 145, 223, 330, 36, 9, 157, 99, 271, 88, 291, 49, 89, 47, 94, 394, 344, 305, 38, 30, 39, 6, 129, 1, 242, 268, 200, 298, 182, 297, 175, 27, 117, 135, 108, 246, 60, 38, 225, 48, 12, 124, 229, 55, 50, 311, 70, 133, 119, 151, 199, 73, 70, 98, 26, 76, 99, 154, 112, 76, 236, 273, 22, 109, 206, 61, 34, 146, 292, 132, 254, 42, 1, 121, 310, 33, 41, 49, 168, 226, 247, 459, 47, 211, 187, 41, 58, 8, 388, 359, 129, 83, 129, 190, 55, 189, 48, 258, 60, 58, 13, 205, 263, 232, 151, 96, 77, 31, 53, 64, 174, 197, 200, 25, 93, 191, 139, 217, 5, 117, 51, 212, 72, 28, 2, 236, 114, 320, 35, 106, 74, 28, 425, 282, 49, 132, 2, 82, 47, 143, 142, 100, 25, 79, 43, 24, 23, 399, 92, 97, 290, 31, 69, 109, 165, 83, 41, 98, 84, 195, 319, 347, 222, 37, 39, 104, 5, 196, 207, 47, 4, 223, 141, 32, 47, 81, 96, 31, 68, 101, 145, 177, 85, 129, 271, 334, 224, 36, 117, 56, 70, 410, 212, 87, 298, 361, 160, 164, 34, 19, 52, 66, 310, 4, 105, 40, 180, 137, 263, 37, 73, 237, 29, 135, 20, 7, 336, 197, 68, 2, 131, 28, 60, 88, 94, 58, 83, 38, 218, 7, 1, 71, 296, 149, 355, 146, 179, 64, 2, 418, 155, 127, 76, 348, 54, 83, 251, 48, 27, 185, 32, 84, 4, 89, 107, 360, 257, 29, 54, 318, 56, 95, 295, 51, 45, 47, 24, 256, 173, 92, 154, 63, 255, 321, 132, 76, 116, 92, 308, 20, 52, 178, 292, 87, 216, 275, 16, 152, 151, 165, 226, 276, 36, 1, 333, 30, 428, 17, 136, 11, 192, 45, 40, 34, 268, 68, 292, 54, 85, 120, 116, 206, 92, 99, 213, 91, 15, 14, 43, 112, 305, 319, 157, 136, 76, 25, 141, 95, 82, 11, 32, 41, 74, 49, 301, 122, 128, 338, 94, 129, 265, 71, 11, 109, 22, 328, 13, 105, 22, 196, 240, 198, 7, 146, 181, 115, 62, 61, 218, 64, 170, 222, 15, 99, 36, 31, 258, 69, 41, 56, 60, 129, 33, 103, 57, 21, 103, 127, 165, 13, 39, 328, 105, 228, 107, 120, 86, 98, 27, 54, 205, 167, 244, 74, 238, 38, 89, 5, 120, 329, 37, 37, 278, 24, 140, 118, 127, 203, 23, 106, 286, 243, 72, 152, 86, 61, 22, 11, 6, 34, 256, 269, 158, 175, 211, 317, 253, 50, 50, 27, 130, 454, 41, 250, 267, 144, 303, 11, 104, 63, 18, 124, 104, 58, 140, 25, 151, 58, 239, 286, 155, 217, 27, 182, 10, 398, 65, 190, 81, 69, 119, 78, 20, 136, 106, 51, 188, 200, 350, 303, 133, 53, 73, 15, 158, 262, 150, 192, 10, 289, 162, 362, 234, 232, 16, 225, 334, 294, 6, 105, 125, 68, 72, 176, 239, 20, 163, 353, 118, 117, 170, 90, 258, 50, 45, 88, 87, 128, 85, 4, 62, 34, 268, 258, 183, 25, 146, 85, 44, 133, 107, 140, 87, 64, 18, 70, 76, 95, 309, 147, 34, 308, 19, 237, 21, 217, 115, 49, 177, 201, 88, 149, 163, 5, 325, 455, 96, 52, 77, 24, 152, 130, 207, 67, 220, 36, 18, 48, 88, 40, 148, 179, 6, 155, 19, 138, 74, 39, 51, 198, 141, 142, 106, 103, 67, 111, 107, 186, 68, 37, 166, 28, 94, 289, 15, 126, 121, 43, 108, 117, 128, 406, 71, 333, 39, 38, 69, 313, 267, 17, 249, 40, 351, 40, 202, 138, 262, 105, 324, 75, 267, 123, 141, 156, 78, 112, 408, 97, 173, 91, 99, 239, 25, 376, 25, 254, 185, 157, 15, 61, 71, 113, 237, 237, 48, 29, 89, 1, 79, 41, 3, 24, 13, 187, 96, 52, 30, 137, 70, 82, 1, 47, 34, 444, 146, 63, 47, 59, 154, 115, 129, 298, 61, 3, 64, 85, 75, 244, 12, 47, 101, 103, 7, 169, 125, 213, 271, 378, 271, 100, 126, 134, 131, 31, 32, 16, 310, 222, 95, 12, 154, 89, 391, 205, 8, 27, 1, 85, 192, 85, 117, 140, 127, 132, 35, 31, 12, 263, 121, 6, 81, 65, 71, 78, 88, 140, 85, 227, 347, 68, 50, 7, 44, 215, 128, 26, 2, 96, 55, 66, 54, 22, 161, 258, 7, 13, 124, 101, 265, 21, 83, 233, 203, 274, 59, 354, 99, 59, 139, 13, 377, 107, 102, 23, 184, 32, 115, 61, 169, 320, 27, 171, 293, 57, 62, 46, 58, 147, 139, 235, 52, 46, 375, 46, 218, 319, 368, 61, 29, 174, 172, 83, 325, 29, 200, 198, 18, 303, 114, 173, 213, 35, 102, 20, 35, 211, 46, 180, 99, 301, 250, 208, 178, 93, 30, 76, 52, 165, 159, 372, 225, 278, 138, 136, 145, 231, 79, 44, 137, 50, 55, 119, 125, 39, 138, 101, 25, 166, 23, 192, 18, 39, 178, 116, 28, 178, 59, 188, 198, 16, 96, 46, 186, 108, 59, 255, 199, 258, 252, 88, 118, 134, 383, 150, 5, 139, 239, 228, 38, 227, 263, 43, 67, 175, 97, 188, 63, 147, 189, 17, 154, 62, 370, 219, 1, 198, 22, 56, 90, 318, 15, 20, 171, 45, 100, 30, 126, 131, 234, 11, 207, 254, 299, 349, 120, 196, 21, 26, 170, 114, 77, 8, 57, 190, 11, 214, 212, 345, 179, 225, 64, 114, 80, 185, 66, 138, 149, 43, 190, 127, 3, 3, 153, 222, 210, 11, 56, 104, 53, 153, 130, 56, 83, 71, 274, 95, 74, 121, 106, 173, 16, 114, 270, 33, 53, 267, 49, 332, 306, 68, 35, 28, 32, 213, 24, 113, 40, 18, 9, 89, 294, 250, 256, 70, 208, 291, 91, 82, 314, 39, 7, 181, 78, 13, 301, 405, 112, 316, 156, 393, 12, 110, 48, 73, 166, 39, 17, 132, 204, 104, 63, 62, 1, 45, 393, 5, 115, 47, 18, 248, 16, 272, 75, 317, 84, 70, 342, 207, 14, 191, 77, 154, 12, 107, 230, 132, 280, 42, 23, 147, 149, 17, 18, 8, 174, 73, 261, 197, 72, 4, 15, 34, 163, 159, 136, 12, 36, 196, 3, 40, 167, 71, 101, 111, 100, 237, 300, 32, 76, 9, 14, 137, 6, 53, 202, 71, 52, 148, 219, 17, 299, 41, 108, 48, 143, 65, 316, 133, 142, 92, 296, 323, 150, 211, 361, 261, 422, 167, 212, 195, 50, 317, 406, 372, 360, 314, 399, 203, 136, 211, 56, 195, 436, 229, 489, 295, 101, 109, 487, 184, 87, 279, 233, 399, 176, 470, 433, 364, 197, 115, 194, 314, 423, 246, 98, 401, 291, 268, 272, 357, 458, 298, 327, 21, 298, 299, 225, 220, 272, 51, 177, 93, 84, 403, 150, 336, 275, 236, 476, 243, 261, 373, 330, 248, 310, 365, 155, 240, 144, 276, 229, 292, 99, 175, 101, 317, 365, 297, 404, 260, 333, 417, 462, 434, 474, 444, 119, 309, 261, 260, 344, 435, 80, 123, 257, 183, 358, 197, 78, 16, 264, 260, 459, 195, 390, 147, 217, 467, 353, 165, 120, 151, 335, 83, 106, 28, 326, 252, 70, 298, 182, 153, 300, 260, 122, 111, 143, 302, 135, 235, 362, 236, 232, 287, 371, 309, 248, 248, 176, 215, 169, 183, 155, 140, 446, 91, 277, 263, 234, 126, 376, 335, 162, 490, 398, 182, 105, 378, 469, 159, 119, 457, 292, 249, 108, 59, 451, 20, 362, 228, 57, 306, 459, 301, 208, 329, 357, 82, 396, 279, 137, 396, 272, 202, 396, 282, 120, 308, 389, 287, 43, 311, 371, 59, 326, 125, 223, 190, 285, 134, 348, 219, 74, 343, 72, 455, 367, 179, 368, 395, 267, 227, 59, 225, 65, 21, 300, 310, 266, 259, 362, 168, 104, 69, 344, 417, 47, 335, 103, 126, 394, 41, 122, 166, 313, 265, 438, 118, 265, 204, 316, 439, 142, 90, 180, 440, 281, 392, 312, 210, 137, 189, 240, 247, 240, 320, 251, 157, 324, 208, 415, 245, 180, 262, 94, 141, 191, 110, 165, 165, 361, 61, 488, 378, 138, 178, 229, 396, 157, 168, 397, 266, 289, 240, 347, 299, 84, 451, 133, 391, 469, 324, 137, 116, 60, 365, 207, 200, 472, 450, 428, 330, 139, 159, 223, 217, 330, 245, 234, 238, 418, 391, 367, 308, 291, 304, 67, 244, 288, 382, 130, 461, 335, 118, 187, 334, 324, 441, 462, 112, 445, 59, 214, 230, 372, 44, 106, 167, 181, 211, 193, 148, 409, 264, 364, 353, 174, 263, 283, 406, 312, 349, 118, 455, 181, 259, 323, 175, 33, 152, 299, 141, 320, 314, 131, 62, 235, 335, 231, 340, 244, 425, 169, 311, 497, 241, 37, 436, 117, 184, 294, 157, 350, 301, 94, 162, 273, 13, 182, 101, 486, 341, 434, 322, 74, 144, 284, 139, 111, 403, 214, 52, 323, 327, 172, 227, 230, 208, 277, 221, 120, 409, 339, 123, 223, 252, 209, 237, 429, 295, 253, 35, 162, 454, 243, 199, 295, 385, 360, 241, 170, 390, 175, 402, 198, 288, 397, 275, 330, 267, 161, 341, 283, 193, 62, 258, 162, 254, 259, 374, 408, 415, 268, 54, 312, 424, 302, 342, 376, 172, 453, 214, 281, 379, 447, 170, 434, 230, 121, 423, 305, 441, 276, 244, 121, 110, 461, 323, 151, 309, 431, 202, 200, 329, 210, 352, 164, 503, 113, 126, 231, 152, 454, 311, 433, 86, 449, 130, 231, 262, 189, 290, 288, 429, 143, 311, 70, 226, 451, 277, 362, 134, 51, 81, 343, 171, 466, 149, 194, 310, 119, 315, 186, 300, 469, 349, 427, 123, 168, 117, 174, 144, 224, 116, 173, 198, 457, 287, 147, 65, 258, 272, 499, 315, 81, 186, 168, 341, 316, 190, 178, 291, 232, 280, 174, 260, 242, 226, 181, 120, 113, 138, 294, 106, 481, 287, 377, 104, 125, 383, 234, 369, 289, 348, 52, 389, 239, 219, 344, 378, 338, 418, 137, 363, 116, 207, 335, 449, 202, 358, 216, 134, 319, 100, 11, 265, 233, 172, 267, 45, 256, 23, 318, 221, 169, 245, 306, 281, 181, 289, 116, 173, 346, 327, 194, 205, 326, 345, 201, 111, 448, 366, 399, 293, 222, 170, 358, 442, 19, 187, 159, 456, 299, 206, 290, 169, 253, 412, 252, 202, 377, 331, 497, 203, 313, 115, 255, 373, 364, 237, 245, 291, 269, 342, 54, 218, 269, 373, 170, 256, 270, 213, 305, 288, 203, 315, 238, 87, 192, 334, 26, 127, 352, 240, 277, 114, 102, 432, 139, 332, 278, 128, 411, 91, 317, 296, 265, 343, 291, 217, 124, 350, 220, 242, 220, 62, 233, 300, 190, 393, 445, 513, 478, 346, 375, 131, 99, 272, 160, 355, 279, 112, 305, 107, 403, 336, 109, 322, 143, 371, 147, 204, 192, 308, 180, 279, 127, 194, 145, 239, 124, 288, 24, 177, 191, 433, 429, 308, 270, 136, 330, 73, 469, 302, 274, 221, 246, 393, 328, 431, 454, 391, 426, 269, 434, 329, 245, 149, 151, 338, 328, 299, 433, 374, 230, 202, 472, 177, 360, 402, 387, 316, 181, 418, 52, 198, 174, 20, 197, 110, 294, 268, 123, 151, 43, 87, 250, 237, 247, 233, 143, 367, 231, 339, 381, 141, 233, 355, 204, 225, 382, 208, 224, 206, 159, 87, 80, 275, 103, 365, 33, 374, 117, 145, 332, 368, 309, 297, 421, 63, 212, 213, 373, 107, 249, 247, 318, 242, 464, 312, 164, 240, 103, 328, 345, 262, 160, 209, 401, 325, 249, 186, 201, 112, 250, 262, 215, 70, 473, 170, 126, 143, 211, 313, 370, 183, 220, 174, 388, 346, 351, 182, 173, 48, 214, 370, 163, 92, 95, 228, 134, 461, 251, 398, 205, 282, 372, 363, 348, 83, 321, 175, 265, 160, 252, 479, 340, 257, 64, 285, 419, 369, 23, 196, 283, 286, 327, 97, 411, 331, 184, 297, 325, 284, 341, 245, 302, 294, 231, 247, 319, 404, 190, 180, 491, 441, 147, 303, 148, 291, 350, 471, 197, 396, 187, 92, 201, 269, 200, 264, 250, 338, 104, 470, 379, 248, 168, 271, 113, 146, 205, 267, 71, 296, 221, 385, 153, 347, 482, 252, 339, 453, 390, 289, 284, 229, 269, 263, 167, 27, 369, 80, 243, 432, 230, 153, 280, 397, 239, 380, 208, 244, 8, 72, 271, 354, 328, 233, 224, 297, 297, 204, 461, 190, 259, 151, 306, 375, 195, 189, 304, 155, 279, 232, 352, 123, 177, 339, 401, 493, 384, 376, 340, 38, 171, 79, 161, 78, 340, 293, 238, 465, 191, 435, 179, 244, 387, 184, 211, 307, 352, 342, 316, 196, 351, 353, 445, 69, 97, 368, 180, 274, 136, 275, 342, 189, 75, 395, 145, 147, 205, 185, 222, 218, 413, 297, 374, 144, 453, 372, 138, 302, 316, 237, 356, 46, 40, 339, 343, 184, 242, 125, 216, 345, 305, 477, 148, 214, 199, 303, 306, 123, 440, 404, 292, 210, 328, 350, 210, 337, 94, 309, 408, 151, 76, 276, 266, 325, 482, 155, 332, 254, 209, 321, 297, 243, 355, 259, 164, 221, 453, 361, 15, 338, 357, 289, 240, 149, 249, 263, 219, 447, 434, 261, 300, 159, 479, 342, 93, 213, 57, 141, 177, 335, 410, 315, 188, 166, 223, 307, 354, 492, 170, 187, 453, 195, 127, 349, 410, 151, 207, 130, 147, 216, 417, 439, 369, 83, 461, 326, 406, 381, 227, 126, 270, 258, 394, 108, 331, 228, 333, 72, 95, 209, 319, 351, 346, 379, 284, 392, 315, 191, 147, 463, 95, 486, 415, 167, 324, 377, 390, 375, 410, 92, 354, 106, 364, 106, 370, 132, 193, 396, 321, 134, 119, 393, 327, 195, 506, 30, 341, 253, 233, 82, 283, 55, 207, 301, 430, 167, 248, 163, 475, 77, 218, 124, 367, 176, 415, 426, 188, 380, 58, 488, 209, 170, 164, 354, 134, 212, 334, 255, 220, 349, 110, 288, 227, 350, 201, 406, 319, 442, 117, 330, 228, 148, 424, 267, 155, 452, 161, 345, 217, 474, 179, 208, 328, 367, 254, 173, 210, 259, 458, 296, 277, 206, 296, 162, 480, 430, 183, 202, 268, 263, 274, 312, 374, 96, 445, 66, 463, 321, 250, 204, 194, 129, 78, 342, 485, 289, 387, 67, 119, 256, 241, 341, 110, 215, 276, 226, 186, 276, 266, 198, 331, 455, 167, 232, 89, 355, 166, 336, 147, 397, 167, 260, 175, 282, 465, 265, 178, 453, 189, 132, 273, 202, 132, 209, 62, 400, 397, 114, 225, 299, 288, 259, 228, 149, 319, 160, 327, 406, 411, 217, 374, 286, 229, 236, 129, 232, 403, 266, 432, 189, 115, 338, 120, 342, 197, 248, 310, 269, 298, 79, 156, 453, 325, 468, 116, 246, 210, 438, 43, 256, 378, 294, 398, 84, 366, 122, 311, 174, 346, 377, 320, 111, 309, 243, 162, 329, 165, 307, 229, 266, 305, 267, 94, 230, 454, 131, 72, 50, 209, 199, 283, 329, 178, 400, 236, 388, 423, 127, 190, 287, 175, 477, 274, 314, 465, 389, 410, 350, 131, 263, 108, 201, 127, 130, 468, 59, 223, 148, 341, 336, 414, 235, 36, 288, 171, 405, 111, 395, 271, 122, 154, 150, 164, 403, 460, 374, 213, 208, 464, 310, 143, 356, 204, 81, 273, 314, 287, 380, 16, 410, 313, 385, 410, 406, 23, 240, 370, 373, 416, 355, 204, 176, 187, 329, 357, 292, 282, 384, 212, 273, 202, 262, 385, 198, 191, 402, 230, 266, 179, 389, 210, 165, 375, 261, 287, 302, 471, 250, 144, 284, 279, 277, 382, 118, 65, 126, 235, 158, 354, 150, 53, 331, 68, 280, 51, 219, 432, 90, 236, 213, 137, 289, 256, 366, 469, 484, 125, 289, 454, 49, 155, 392, 221, 181, 238, 137, 85, 222, 105, 228, 351, 380, 22, 379, 322, 409, 215, 234, 174, 275, 356, 182, 212, 272, 203, 194, 426, 215, 279, 234, 279, 388, 164, 318, 219, 205, 152, 74, 304, 242, 136, 440, 304, 466, 238, 347, 201, 373, 275, 325, 364, 362, 393, 103, 394, 365, 359, 338, 332, 322, 369, 270, 216, 363, 135, 353, 460, 157, 282, 402, 414, 393, 196, 403, 178, 294, 276, 193, 282, 217, 86, 234, 351, 433, 337, 64, 236, 184, 423, 64, 362, 241, 210, 247, 483, 298, 122, 191, 243, 245, 46, 458, 278, 447, 311, 326, 360, 71, 224, 354, 148, 360, 74, 6, 215, 290, 374, 313, 200, 185, 116, 133, 28, 224, 467, 357, 291, 473, 379, 388, 188, 246, 340, 67, 240, 144, 475, 314, 193, 179, 215, 150, 423, 360, 192, 102, 159, 127, 204, 154, 168, 423, 373, 172, 48, 140, 327, 292, 358, 221, 426, 154, 101, 331, 337, 235, 102, 251, 409, 238, 283, 151, 307, 278, 357, 247, 484, 229, 152, 69, 311, 241, 225, 388, 230, 140, 146, 370, 429, 26, 134, 466, 240, 372, 197, 389, 145, 136, 176, 187, 400, 264, 221, 366, 446, 311, 364, 186, 404, 363, 101, 243, 400, 120, 146, 389, 203, 190, 278, 300, 260, 196, 430, 106, 260, 367, 436, 222, 359, 433, 417, 184, 371, 301, 275, 336, 111, 428, 129, 304, 303, 73, 224, 449, 175, 255, 446, 326, 123, 315, 315, 223, 327, 161, 194, 97, 201, 309, 383, 407, 302, 326, 209, 324, 198, 356, 107, 88, 189, 276, 247, 144, 339, 320, 221, 169, 140, 226, 118, 379, 333, 69, 300, 262, 218, 265, 257, 251, 310, 27, 265, 227, 369, 220, 146, 412, 265, 272, 286, 286, 229, 283, 395, 209, 372, 290, 488, 293, 184, 360, 342, 194, 132, 313, 290, 448, 385, 162, 232, 31, 270, 271, 383, 318, 242, 251, 157, 79, 119, 421, 401, 178, 231, 152, 207, 55, 163, 274, 313, 125, 251, 256, 468, 385, 329, 227, 272, 317, 196, 427, 466, 96, 216, 449, 14, 441, 333, 484, 363, 383, 303, 155, 172, 188, 348, 169, 256, 199, 193, 188, 455, 86, 161, 235, 247, 288, 135, 344, 427, 381, 148, 261, 128, 193, 287, 221, 347, 155, 172, 204, 334, 255, 380, 189, 241, 277, 226, 448, 413, 81, 441, 223, 162, 429, 292, 205, 146, 439, 110, 114, 304, 261, 378, 88, 278, 386, 123, 226, 329, 165, 83, 295, 213, 408, 355, 414, 336, 440, 366, 409, 142, 153, 168, 128, 470, 266, 82, 280, 428, 250, 360, 238, 99, 53, 424, 176, 285, 263, 212, 268, 316, 377, 335, 387, 168, 144, 428, 326, 132, 232, 252, 300, 51, 146, 308, 371, 486, 279, 275, 370, 223, 33, 304, 296, 217, 442, 360, 280, 75, 354, 182, 139, 397, 236, 442, 361, 45, 233, 193, 479, 206, 153, 121, 299, 201, 255, 426, 318, 286, 54, 143, 302, 57, 148, 320, 231, 218, 377, 498, 206, 359, 238, 235, 379, 160, 391, 381, 261, 297, 277, 368, 362, 437, 409, 372, 270, 481, 300, 407, 253, 55, 488, 487, 470, 429, 431, 402, 259, 404, 257, 101, 243, 463, 487, 514, 496, 150, 358, 504, 234, 490, 511, 240, 415, 412, 484, 490, 416, 252, 472, 489, 478, 493, 381, 139, 480, 511, 362, 293, 466, 503, 359, 342, 142, 326, 369, 304, 320, 364, 486, 261, 105, 316, 471, 476, 430, 460, 379, 484, 253, 446, 400, 447, 373, 472, 490, 272, 401, 158, 471, 328, 417, 312, 344, 331, 429, 383, 341, 501, 361, 410, 480, 477, 492, 508, 482, 332, 336, 429, 310, 369, 460, 291, 346, 365, 392, 402, 452, 120, 430, 301, 419, 462, 406, 410, 342, 493, 500, 390, 498, 378, 230, 403, 188, 443, 258, 505, 499, 148, 508, 485, 241, 382, 289, 264, 182, 455, 481, 264, 451, 489, 483, 485, 365, 376, 447, 301, 382, 278, 237, 409, 285, 168, 292, 463, 290, 482, 339, 323, 376, 386, 495, 286, 502, 450, 322, 115, 390, 483, 370, 426, 461, 441, 406, 162, 73, 506, 256, 511, 507, 107, 498, 491, 323, 274, 478, 516, 337, 450, 304, 183, 502, 285, 249, 420, 427, 349, 386, 508, 353, 413, 500, 375, 304, 485, 410, 484, 306, 353, 431, 377, 239, 156, 438, 402, 499, 503, 200, 458, 419, 490, 230, 203, 397, 73, 436, 398, 326, 293, 363, 416, 497, 458, 250, 443, 460, 60, 476, 227, 392, 494, 352, 422, 383, 468, 344, 443, 199, 425, 417, 496, 452, 472, 396, 246, 449, 458, 395, 398, 283, 253, 391, 307, 268, 337, 501, 269, 499, 409, 408, 434, 365, 264, 407, 267, 150, 253, 254, 269, 185, 434, 306, 508, 510, 287, 347, 318, 439, 235, 307, 503, 281, 303, 468, 366, 415, 434, 480, 368, 497, 500, 504, 195, 188, 125, 502, 496, 475, 492, 481, 501, 407, 309, 302, 372, 442, 357, 464, 436, 249, 429, 493, 412, 340, 385, 489, 172, 353, 322, 477, 439, 509, 490, 311, 478, 364, 450, 448, 479, 372, 463, 495, 312, 269, 425, 341, 501, 415, 193, 225, 481, 437, 433, 281, 509, 428, 278, 509, 458, 506, 481, 509, 463, 504, 209, 415, 510, 347, 246, 388, 307, 237, 472, 407, 318, 228, 441, 417, 467, 469, 457, 515, 324, 402, 510, 254, 112, 470, 345, 463, 302, 378, 416, 312, 241, 381, 327, 94, 207, 335, 498, 343, 476, 427, 444, 351, 414, 186, 178, 457, 459, 460, 333, 471, 334, 389, 398, 327, 315, 504, 481, 437, 386, 431, 488, 442, 241, 356, 471, 402, 424, 433, 287, 459, 298, 463, 322, 458, 386, 464, 232, 492, 285, 441, 227, 292, 405, 377, 336, 466, 441, 513, 350, 276, 142, 492, 176, 404, 286, 437, 483, 474, 446, 291, 323, 474, 463, 414, 496, 231, 493, 491, 464, 484, 448, 191, 441, 258, 296, 497, 381, 484, 419, 318, 125, 222, 487, 516, 285, 502, 449, 294, 211, 384, 358, 451, 414, 509, 135, 241, 444, 392, 474, 469, 444, 203, 500, 282, 350, 286, 231, 478, 365, 465, 467, 472, 497, 484, 513, 513, 455, 242, 502, 385, 504, 358, 479, 390, 407, 416, 266, 330, 206, 412, 471, 496, 498, 380, 325, 159, 219, 504, 447, 340, 383, 416, 475, 373, 410, 486, 368, 501, 511, 413, 91, 278, 257, 486, 369, 506, 214, 402, 430, 348, 476, 333, 331, 441, 204, 187, 450, 194, 382, 224, 497, 411, 462, 252, 275, 457, 446, 415, 502, 413, 121, 515, 485, 476, 353, 381, 488, 480, 385, 425, 314, 224, 383, 506, 280, 515, 388, 422, 386, 396, 408, 329, 340, 371, 359, 138, 431, 200, 361, 393, 189, 436, 411, 319, 316, 478, 293, 390, 422, 414, 445, 232, 503, 397, 443, 296, 493, 374, 432, 430, 493, 206, 437, 477, 295, 352, 492, 509, 375, 214, 314, 430, 283, 467, 491, 350, 421, 499, 499, 511, 367, 125, 379, 482, 476, 505, 411, 446, 507, 390, 264, 290, 419, 460, 474, 414, 422, 317, 327, 437, 422, 404, 320, 416, 242, 362, 429, 366, 399, 438, 293, 245, 448, 461, 390, 415, 356, 482, 504, 284, 428, 378, 268, 400, 308, 468, 416, 393, 394, 405, 355, 408, 438, 323, 424, 401, 483, 516, 493, 362, 424, 372, 234, 515, 386, 382, 500, 314, 402, 425, 460, 456, 172, 501, 247, 495, 173, 492, 226, 476, 439, 346, 293, 353, 317, 435, 152, 487, 119, 348, 424, 499, 494, 495, 469, 251, 501, 401, 516, 308, 457, 280, 454, 440, 432, 470, 497, 399, 451, 344, 487, 432, 439, 516, 278, 461, 462, 313, 475, 386, 233, 396, 475, 439, 424, 495, 431, 434, 433, 436, 456, 403, 341, 423, 359, 296, 324, 309, 480, 508, 435, 144, 478, 401, 358, 287, 484, 512, 443, 367, 459, 452, 445, 468, 316, 271, 514, 388, 448, 474, 413, 307, 86, 293, 320, 433, 302, 394, 222, 414, 344, 456, 356, 475, 468, 456, 426, 494, 428, 339, 288, 494, 448, 270, 504, 507, 381, 405, 379, 498, 469, 489, 247, 354, 445, 500, 467, 217, 277, 385, 318, 513, 218, 253, 483, 249, 325, 161, 351, 505, 475, 440, 229, 412, 461, 371, 427, 377, 439, 338, 473, 500, 292, 167, 315, 230, 261, 464, 294, 407, 226, 406, 488, 426, 432, 515, 511, 421, 489, 439, 282, 515, 483, 325, 323, 462, 443, 491, 377, 384, 349, 491, 353, 226, 420, 495, 428, 409, 473, 461, 357, 473, 371, 343, 360, 398, 500, 465, 401, 319, 513, 483, 216, 405, 424, 473, 455, 516, 235, 476, 308, 248, 281, 482, 244, 481, 407, 345, 309, 506, 417, 485, 363, 320, 192, 470, 231, 513, 246, 299, 447, 467, 163, 510, 498, 337, 417, 491, 457, 422, 340, 422, 298, 273, 301, 447, 449, 356, 374, 436, 299, 225, 452, 468, 490, 403, 432, 387, 38, 277, 340, 514, 485, 355, 253, 400, 389, 460, 492, 356, 300, 400, 404, 404, 498, 369, 330, 273, 311, 248, 491, 126, 216, 495, 449, 505, 407, 380, 425, 246, 437, 153, 211, 256, 387, 515, 297, 507, 440, 480, 361, 412, 395, 431, 412, 371, 506, 435, 421, 462, 504, 483, 472, 436, 507, 370, 183, 485, 330, 389, 381, 473, 272, 449, 364, 192, 345, 312, 252, 333, 501, 388, 491, 246, 507, 393, 355, 358, 367, 417, 499, 81, 516, 494, 490, 228, 480, 367, 427, 387, 349, 510, 349, 411, 321, 449, 315, 307, 458, 490, 462, 323, 406, 452, 456, 357, 153, 359, 503, 375, 352, 385, 392, 442, 485, 260, 445, 423, 512, 410, 361, 396, 421, 514, 300, 412, 487, 489, 19, 352, 447, 347, 321, 400, 394, 284, 510, 508, 502, 281, 459, 177, 483, 388, 399, 379, 180, 186, 209, 502, 418, 326, 214, 432, 274, 401, 413, 512, 322, 264, 513, 239, 501, 464, 419, 259, 418, 306, 307, 319, 484, 512, 453, 363, 508, 454, 424, 450, 275, 270, 301, 260, 512, 161, 494, 323, 346, 189, 348, 376, 345, 464, 421, 381, 342, 464, 359, 455, 492, 470, 359, 505, 465, 343, 420, 435, 428, 510, 478, 193, 419, 380, 414, 181, 394, 266, 396, 491, 395, 192, 421, 404, 507, 456, 512, 251, 384, 442, 421, 334, 384, 317, 320, 391, 477, 171, 336, 273, 500, 446, 414, 340, 484, 306, 453, 445, 327, 405, 406, 506, 236, 491, 371, 508, 471, 446, 501, 290, 366, 507, 250, 394, 403, 458, 266, 509, 351, 493, 252, 510, 456, 176, 440, 419, 378, 506, 399, 442, 319, 514, 462, 275, 459, 378, 350, 226, 494, 430, 494, 394, 486, 442, 381, 233, 500, 504, 504, 308, 494, 366, 353, 469, 439, 463, 516, 109, 473, 473, 343, 383, 435, 282, 509, 420, 514, 333, 450, 307, 477, 375, 398, 466, 382, 479, 452, 283, 285, 495, 482, 425, 430, 505, 322, 444, 503, 497, 449, 486, 338, 440, 355, 488, 413, 352, 513, 331, 333, 506, 423, 183, 361, 474, 461, 409, 425, 411, 481, 397, 470, 332, 395, 343, 298, 159, 476, 512, 398, 444, 516, 505, 499, 397, 421, 271, 130, 424, 456, 270, 463, 431, 334, 397, 399, 509, 335, 341, 443, 392, 509, 338, 284, 468, 382, 477, 443, 331, 455, 445, 169, 296, 511, 491, 408, 427, 408, 318, 405, 182, 392, 390, 488, 219, 368, 369, 384, 372, 336, 399, 502, 515, 356, 486, 325, 293, 504, 162, 451, 295, 339, 220, 471, 421, 351, 433, 334, 392, 465, 303, 418, 306, 316, 515, 317, 438, 482, 454, 475, 370, 459, 496, 505, 384, 185, 172, 497, 171, 281, 400, 418, 499, 436, 391, 108, 468, 280, 422, 313, 467, 398, 464, 167, 254, 168, 448, 465, 505, 471, 312, 467, 418, 403, 374, 470, 459, 347, 468, 395, 425, 19, 472, 510, 456, 428, 495, 75, 255, 467, 465, 425, 512, 387, 426, 335, 453, 474, 487, 480, 462, 344, 511, 207, 309, 419, 419, 395, 424, 272, 346, 382, 460, 352, 169, 442, 476, 404, 473, 511, 330, 196, 334, 329, 438, 438, 503, 255, 481, 500, 420, 472, 509, 394, 450, 255, 472, 373, 365, 488, 305, 496, 418, 193, 368, 305, 508, 495, 494, 199, 420, 514, 450, 201, 496, 238, 264, 411, 358, 229, 287, 493, 346, 409, 489, 102, 480, 413, 435, 290, 317, 303, 348, 376, 314, 422, 297, 343, 250, 513, 466, 290, 289, 431, 503, 451, 516, 328, 305, 427, 361, 307, 469, 341, 476, 371, 489, 328, 355, 310, 437, 515, 402, 386, 403, 412, 357, 440, 486, 448, 399, 337, 514, 426, 478, 506, 462, 360, 466, 496, 279, 397, 479, 428, 505, 421, 461, 257, 437, 418, 315, 440, 498, 337, 387, 490, 437, 466, 220, 500, 479, 470, 218, 380, 431, 243, 396, 492, 443, 507, 373, 477, 395, 188, 496, 366, 457, 422, 336, 376, 450, 391, 494, 245, 384, 77, 44, 478, 438, 454, 407, 285, 508, 198, 457, 261, 322, 492, 482, 338, 512, 405, 420, 312, 464, 416, 80, 412, 249, 501, 412, 452, 505, 426, 379, 451, 479, 387, 137, 340, 507, 483, 459, 203, 453, 420, 358, 84, 499, 503, 408, 443, 350, 515, 200, 295, 376, 442, 369, 423, 346, 420, 445, 456, 465, 337, 475, 438, 258, 506, 377, 364, 185, 321, 305, 282, 509, 301, 321, 398, 456, 511, 465, 281, 516, 450, 435, 286, 416, 475, 254, 393, 469, 414, 429, 460, 389, 478, 492, 503, 453, 444, 393, 467, 294, 420, 157, 279, 513, 497, 204, 444, 514, 348, 459, 454, 270, 413, 440, 494, 434, 465, 505, 429, 384, 514, 466, 486, 475, 510, 436, 437, 434, 457, 516, 454, 473, 332, 433, 479, 499, 405, 482, 497, 503, 411, 351, 199, 380, 216, 420, 387, 426, 450, 404, 370, 447, 386, 452, 135, 253, 482, 416, 276, 171, 419, 420, 288, 241, 474, 391, 368, 488, 365, 400, 363, 354, 274, 415, 345, 376, 467, 138, 479, 295, 391, 382, 483, 444, 446, 390, 304, 510, 507, 385, 452, 216, 457, 472, 498, 438, 408, 388, 368, 498, 464, 462, 466, 508, 515, 321, 375, 337, 448, 273, 455, 435, 380, 354, 254, 242, 324, 489, 477, 245, 427, 195, 508, 187, 210, 328, 498, 145, 485, 304, 493, 392, 507, 324, 400, 419, 430, 439, 513, 432, 417, 496, 364, 474, 511, 493, 435, 487, 366, 364, 455, 384, 359, 195, 329, 263, 349, 248, 486, 371, 166, 257, 471, 339, 380, 357, 437, 441, 191, 443, 268, 197, 444, 306, 363, 160, 346, 345, 376, 401, 479, 195, 243, 514, 481, 489, 445, 432, 451, 460, 252, 443, 332, 283, 416, 502, 140, 164, 415, 359, 470, 90, 411, 425, 422, 352, 344, 501, 386, 335, 458, 449, 478, 480, 477, 487, 413, 444, 244, 157, 451, 423, 480, 297, 284, 495, 431, 384, 418, 363, 325, 245, 447, 313, 485, 436, 391, 357, 512, 490, 487, 417, 512, 324, 496, 366, 152, 452, 343, 361, 389, 254, 446, 471, 502, 399, 485, 395, 345, 474, 337, 481, 249, 510, 458, 514, 90, 362, 463, 347, 477, 257, 489, 405, 143, 259, 286, 495, 382, 224, 177, 446, 260, 427, 438, 434, 511, 187, 383, 423, 193, 430, 427, 447, 435, 487, 502, 338, 407, 323, 407, 387, 166, 512, 473, 310, 457, 490 +}; + +float input[] = { +-2.8588758611049867, -11.692946618257562, -2.0931111592429659, 11.110696212718175, 6.6118168080332342, 5.5228669775147967, -10.351976177615544, -6.2055936928533972, 15.766842028131405, 10.150684036103069, -8.459063190320423, 3.5621047687812557, -3.4741612771047636, 3.324748317571744, 8.996614205792751, -11.020291727957101, 12.081427681651697, -8.8928631203159583, -3.3519010114052263, 7.7902118547439443, 9.6608001848411806, -7.1066822779231593, -18.837368573809297, 6.7301895647238608, 6.7933629603091008, 5.9697810424393483, 8.344011991064086, 12.19791145343228, 9.4167774696594435, 7.423418316685729, 9.0291842080564226, 12.492983259925982, 7.1203329881309401, 9.8776999539720336, 7.3657220051725565, 5.4066464900536131, -12.553405951140983, -8.4918025628237199, -11.352365915823617, 14.756685666538061, -8.0938336502539876, -2.7071697789206022, -2.4795849849319289, 14.778716053676311, -12.149933491676437, -8.5931326392610909, -5.4147618905983697, 1.7095221079392837, -12.75286957597447, -6.560818125727109, 5.5288804134600262, -16.774264848727494, -10.397477377823613, -14.47470382199227, -12.095199384731899, -0.68504635593676977, 2.6623689185177528, 13.264791388391092, -15.654931986196731, 6.1276196890542334, 4.5068190091793028, -13.394637229913476, -6.9231832293793651, -12.113429033794846, 1.2142140703098925, 8.9363539352870394, -12.687063373304539, -3.3458614784673091, -3.4123481785186587, 17.559631253372945, 13.470764559481434, 5.3912902961422002, 8.0737946505557545, -12.755710856932868, -3.569697890412812, -6.2613535644882905, 0.068556269783912271, 6.2629797657916875, -9.2663011036090968, -4.4829975567184634, -9.6136989537403004, -8.7663852688801143, -13.974856274599134, 11.407302219619563, -10.302223327202944, -8.9771589068473983, -6.1388609170833384, 4.2370800072671333, 1.7760515525196516, -12.120232639630231, -12.958157445638765, 5.2985241644932541, -16.484657731002855, -6.3532421360393387, -9.0395804464700298, -7.2671128749847744, -12.616882711750195, -4.9350723080331012, -6.6905936282318637, 18.568407538602393, 12.530577696234687, -9.7889565176657243, -15.214958325061282, 7.215674131215513, -7.5394667988733808, 9.0137713371297465, 6.2553392643094785, 9.1953246360263154, -11.131787953429392, -5.4020937991353657, -4.0642543197135739, -0.44036236539366824, 8.0650609441874703, 0.85520780385748785, 7.2621337620159085, 0.29865166967486761, -9.2011814546979203, -10.330862011400864, -7.3191138151867943, -9.4852558149271111, 14.762260259194324, -5.0853268103463423, -11.2925794883785, 13.026909781206733, 7.9504343630905412, 10.148928930852414, -8.9032450603232327, 7.0914762951954913, 10.89340681888671, -12.705821222595254, 13.126012326275292, 9.4442919029362749, 5.0277440210736879, 0.21756213342494518, 12.710361373031621, 5.6453651213768019, -13.49634180382726, 6.4754225359227204, 9.6275804629486004, 5.8125840672452975, 9.7028326962213836, 6.1260130958734562, 3.3623596073706641, 10.736024757333299, 4.6569987032041826, -8.5021099021622799, -2.5832378575026125, 17.984880998940056, -13.974611077713172, -7.8550941092339874, -2.6917314432377575, 10.825283872831294, 11.217940706150642, 1.8301222470027103, 6.2062091666111812, -12.440863506480019, -19.955292055354317, -3.6699151522797462, 2.2154324244303956, -3.7363628672311142, -10.271027034445964, -9.2862432349117547, 9.7847963699436011, -5.9471830363214551, 11.139859339322513, -9.2599913694963618, 5.0422863933763367, -7.1141487133220043, 4.2177963601947308, 10.657785123505857, -5.7952000401674324, -6.826355874510365, 8.7268751949597245, -8.5906649209875745, 2.2758857640658201, -6.1665377492933358, -7.3104026599884433, -3.2424605164178031, 16.796591996286164, 15.671215006757382, -7.8445348658392806, 12.2589312976831, -2.5670307012079139, -11.537316744819945, -2.4858301794672331, 5.0542510171190438, -6.6860957990782133, -7.2619018024969462, -6.7329842279273242, -7.3146812058251234, 8.0821157274412183, 2.4005920765968378, 9.3157871935284753, -12.908851857280949, 5.2927115546650425, 9.9926730185778059, 3.9229860372333749, -5.5126846245121035, 12.313688019948762, 7.9681453222519041, 17.181368769149195, -8.962498225939207, -11.548950041024865, 12.014544817430894, 11.485639169870186, 11.939774664713912, -14.36069895314143, -11.812874687185857, 12.249194120883461, 4.8839501930831242, -10.540165871108648, -14.829380396239381, -6.4665012687326051, 4.7430459960995295, -7.1378949876943016, -15.357105375923917, 7.3351294975306445, -9.6095153441695373, 4.381145332149095, -9.2910048695861427, 4.894239034759102, 7.864879034656453, -8.3265429253416077, 10.497214061711553, -0.39338042557070996, -4.4611306847986816, 0.76940119561902198, 2.3535542193708272, 10.459438806533345, 9.4938186880252005, -6.4805717587307994, -13.457392617761585, -10.487085219177404, -9.8506932711478576, 11.274019685851906, -12.3031017274995, 8.3324030035106826, -2.3013116280481358, 8.3664075310158825, -10.402109920341072, -5.2924293563600742, -12.008098192077149, 10.992304106359162, -5.5591947469243506, -12.838234842015352, 8.1682577157065577, -6.4919177172949487, 13.568876091933316, 8.0352162745849594, 8.7834139460450125, -11.335870474093099, -10.790767171281415, -2.8875937626970223, 14.64505222675956, 11.436743007190451, -2.9337339836825955, -12.707240342338084, 16.661129912274529, -19.171798326126961, 12.280144746488103, 6.5975965145696174, -13.019719338217644, -3.4328503704209457, 4.822535491209953, -8.1340577921572415, 11.549182216506546, 9.6431724916100059, 5.5547407614902173, 15.019668995173307, -1.6514898426907461, 16.110709054474917, -10.9397931999944, 12.04576668183285, -8.4818868311872198, -6.103248438757908, 8.2975079067215702, 2.5480181038085412, 18.799878298920927, 16.231939791740228, -18.011602750805633, 3.7139764502467689, 12.751595841360283, -7.8718015936255812, -0.40802815212428428, -15.47812599016518, 3.2584854200798588, 14.976391986507007, 9.1367378814346782, 3.4155780056910059, -13.292285487599507, -12.855991908912157, 14.013291588644732, 9.6911017234399335, -5.8910196575740752, -2.2280612655108047, -11.219438047247786, -2.5955623953948517, -3.4460676112793136, 3.5682986120247073, -11.70300520092221, 11.99455548751415, 7.319096625369828, 8.400961847094683, 12.142806695044221, -3.6775894169196279, 8.3797255658565142, -12.156985373281584, -17.475193610019677, -14.228116929396922, 10.726007504360073, 15.267119384103992, 12.781072511062279, 8.0326533999697229, -17.51207194760946, -7.554034280962183, 10.066411068992132, 14.13799652436988, -6.7247334837075705, -11.112518294834185, -5.7326833292155523, 3.6877552031425131, 8.7105204152043516, 9.3857694378580963, 19.127569440965896, -3.8614826162666089, 7.9404471399280068, 6.3807591097483005, -6.8888859894612535, 10.317928637508684, 2.1736529765433783, 10.953222318849482, -7.6682531128958038, 5.0318286636058982, -6.9463690764775503, -3.0184853792276383, 9.6041512562391542, -0.88225262267439808, 6.4852292067129724, -2.3181001351577644, -13.197351056460056, -6.8047677874499586, 5.3843074707174692, 5.1196343577870644, -17.820822197855577, -12.257015718775355, 5.1913937352654651, -5.0162460867599536, 9.9461758050913041, -9.7414598652248081, 8.1378256819797858, 12.564281794378495, -5.6365288176451322, -9.1029468332924104, -5.6355130288814301, -13.719331548944416, -5.8613058178495017, -9.2573519867695815, 6.0620773131346706, 5.8947778726542905, 11.265652594812099, -11.760986024368906, -7.7447348268870124, 19.076436411627338, 14.505720191829832, -9.0750817120358054, -5.2025480400034789, -3.1960162333402482, -11.659437264119374, -7.9842387274926709, 8.5980388295231229, 14.858752059828165, 6.8639263237417376, 6.0631638589074024, 2.7093921939507379, -4.9581002755473795, 4.4179924464321392, -11.144868427484562, 12.546476704938177, 13.606433000436612, 4.0208619807458295, 6.2408832155761376, 3.0941528835943455, -11.347668662075096, 1.9313877794966201, 11.65105372954261, -14.681336156121709, 7.2969958167198605, 11.59264621157577, -8.831465763669156, -12.759130509205734, -9.0714254556796128, 8.9948895559776467, -8.3736028555285831, -13.115027308542444, -0.21628815052066303, 7.7132708674061705, 14.055053470061472, 13.370601410874029, 3.3283307501026052, -11.9653642849229, -5.6440590777489144, -4.2508984635752549, 13.005398229132568, -11.5296140873405, 11.286858942494266, 9.8110403874583074, -13.263569122014866, -6.4297799553106456, 7.9672918799786396, 2.1515462864377719, -8.490571668881163, 7.5548103934198929, -13.121628447449439, -5.7901204816768361, 7.5171762671769704, -5.4216710822831979, -0.95140907859749113, -5.6992105242986471, -0.91737830538166343, -8.2053563541920571, -4.9100295191078036, -8.650093905400162, 10.400080220873763, 7.2829351923330092, 5.3481291290736603, -9.5017802399357425, -9.8687523002255393, 11.82329840938681, -3.1919281246249707, -10.124868011353035, 6.8360355157042028, -14.032171223888698, 18.148403140529073, -9.5731633683674744, 4.0453611070899935, -4.114147796015585, -8.4912512496909898, -7.9968991599686872, 12.922672789580542, -6.7315939113482681, -16.414580925551139, 10.417406116722118, -9.5795995211441394, -7.974905790034116, -13.727944328842275, -15.024522822723423, 4.9026741637309703, -10.662764572620276, -19.122555879539242, 9.217115643469544, -2.9661166430929642, 13.154514394206242, 9.8788596316167272, 4.2669291411005252, 10.239868792823961, 0.50928446540137651, -6.9544644508051245, 2.9807945285095245, -8.2689690969205181, 3.5499295458600972, 12.732733620631645, 11.61935741986054, 8.4137329217700945, -13.703811206903364, 8.5347899814747166, 13.941804015126218, 11.213731601489895, 11.550008187296406, -10.885532785062049, -6.0320756476152395, -7.945602926688589, 18.178022024827495, 4.2378890109434684, -8.419937978328889, 14.273513193884424, -8.1801725060827586, 13.690183625733544, -17.518387733265431, -8.6392702216784656, -13.927446312699148, -8.651607062718659, -12.712917239643309, 15.009792996204254, 0.15853783962329626, -10.462310302523948, -12.535567399778486, 8.8192610919401329, 13.066656030822525, 18.005415525102343, -16.007576967175243, 11.052574245331391, -1.1810954342450888, -12.762633127175347, -11.427571726679494, -1.8068233566411038, -3.8651597939182674, 6.9028603232990591, -9.9188843352819767, -13.607089316301986, 5.8989769757503172, -10.266998033319117, 12.946619994251195, -7.3433271276853551, 13.594756446262442, -1.4802835189751626, 2.9459432512420887, 9.0127453411993006, 12.34274116102957, -0.99056567004691576, -1.0211228826859517, 10.87969885601588, -15.669877762479704, 16.01192464298973, 10.789218207135569, 6.1523737440350752, 10.844976713696601, -18.796538678004055, -7.3982730413954201, -6.5213519941388851, -18.571369340190397, -9.6913300045155282, 1.0175474995943568, -8.0705533615168754, 14.251221745808563, -14.054781652173469, -10.906074448438877, 9.9932114606110058, 9.2204934537976815, -11.102967677965665, -15.06146952578059, 11.282374133246716, -3.4111780254645643, 7.3857075662336609, 10.330601600777463, 5.6502615537426548, -7.2776853004382911, -12.041052757776699, -11.046289906579057, -2.8519140526114701, -14.358095698121817, 4.6207960341417813, -12.368837238636017, -7.2377430770905917, -7.1306536664479809, -10.374815173234571, 7.5287331560402384, -5.4660620697715716, -13.441122458297521, -6.5962962593129824, -8.4930653390556969, -5.473757203858737, -16.42318744504734, -7.678902139771755, -6.1724752873292612, 17.227224731420481, 2.7992443468423089, -11.010643413583562, -6.0460973993600238, -11.514094016830022, 7.2250024006000091, -7.8426213114387204, 10.647716150585898, 5.7539405508617296, 9.727218535739766, -10.217949794886991, -10.197658817694322, 1.4534950594678713, 12.10682632749001, -0.51088307163622715, 17.710760548825679, -7.7470194812395397, -24.372971692573486, -6.6052580469808717, 8.826482956514015, -6.7872955696686779, 3.6389619856040674, 9.9237321927880782, 12.100520790781362, -6.8842633676573595, 2.8844843405481937, 13.672108533544661, -5.6338295492883859, -7.1944131155704678, 6.9746870716875398, -8.2312590639291852, -10.25205738032861, 3.9564297173352139, -11.16342115946062, -8.4103856915642865, -3.86058459788803, 6.7693385059336668, -5.5093604081945458, 9.9112156966838256, -11.829917793796264, 12.06350448472004, -9.8908904770778552, -17.725516485129567, 5.0710728367340741, 2.3733785626266992, -12.373813495428958, -8.2010211819107539, -12.301300323962623, 10.576063861117305, -2.4429576335852246, -9.8126936984062763, 10.720987427999063, 5.3468144210345949, -7.436093608771988, -12.085562323273949, 9.616133130427178, -7.2337117418265358, 6.590012489497771, -12.933819456719151, 9.0992320680750058, -4.7115096872358144, -12.444448996962361, -9.2431835291508904, 8.9400870181220906, -14.84487535501597, 6.9572855730306786, 8.679259378600257, -11.728117564638417, 11.57774167266283, -11.089244669418909, 4.4545841055164113, -10.471036138424958, -7.9268850048012363, 10.006310688982033, 7.3307629546995496, -0.70086411051328346, 3.4399790497959652, 7.5780305602750353, 15.952535940468001, 1.1236075069228646, -10.56946563987197, -16.455271371728593, 14.943737550316991, 15.270538328279843, 1.8246123975329285, -11.861267836196021, -12.897409417413272, -8.0295182717849976, 2.5085092290718261, -2.997769928368061, 7.7106512520538253, -9.7986312114017196, 3.8597867083890951, 14.715042117673541, 3.6286772784703238, 4.6804229784596041, 10.468442660987332, 6.0309605373905297, -7.2836222700763322, 7.3372979832476464, -9.125874340732242, 12.431154776537063, -12.652059501141041, 8.520614267493885, -14.669291764198016, -5.4369263583494511, -6.9272239504642288, 14.411503339302335, -6.5090359387453871, -3.8249288367587844, 6.226877964919483, 5.4872378813688707, -12.071286274848809, -14.839631376528764, 14.929556186968613, -13.550466083272015, -17.79040452965922, 5.2176515285150078, -8.4073909354978511, 13.152357868676932, 11.880434179671278, -15.154722117187848, 3.3578570344364098, 3.7992951070371852, 12.544849221875657, 4.4664223998223864, -16.02563218730095, -16.858694781271584, 5.8423687431569373, 14.717494305248145, -6.3014233972716296, 7.8246512200173655, 0.2490959399462627, 10.09774947224876, 8.2302536611399972, -2.0230125836350608, -10.877543890130998, -10.315299910440396, -17.814418691884743, -4.7984509876179366, -10.569732541659832, 12.468245506360125, -8.1994351150315588, -8.4938440033843783, -15.646554844352739, 11.104862652426069, 5.4254710709054565, -7.075912451839514, -13.038488980503107, 8.6283602505517099, -0.1897762834069755, -15.926221800862628, -9.4620561439869952, 11.028601034997564, 6.2202218101379954, 13.01838761394424, 3.8814455959068872, -10.571348353520641, 9.3930545668475638, -7.4486485829571807, -15.896920034679038, -7.6634637506716583, -13.744383772875613, -16.289316553121051, 4.2240572521775093, -5.9728476753105495, 1.4435980912356212, -9.482201269588181, -7.1075995048298424, -8.4496788887326719, 5.5233585701859731, 8.8295065675835449, -6.8321409197770491, 14.622652588625614, 8.1030077299922656, -5.0997213512339847, 10.535820013561885, -11.687469584683409, 3.0547169868379771, 8.210959869395893, 10.201179428221021, -11.658463276051274, -13.563724058479169, 11.01039677555352, -7.1382476676607203, 14.955134349802455, -13.750666848543476, 10.162311270235616, 5.7884645703783697, 7.3371242692507819, -9.6841606635170585, 5.466449250298048, 8.4163518309029381, -7.1508542487337046, -6.6797959016182888, -4.7449989886325188, 2.4393509869405792, 8.654752655597532, 10.070879973393719, -13.17581052395726, 8.5470611298539545, 6.660259185215466, -6.0653871786400737, -6.5193717691612134, -12.615899043092323, 6.700881216282939, -4.8478946577189745, 5.1988868211607864, -12.549358461765644, -10.045744010088018, -12.380860324318006, -3.8616068170109248, -14.465705737907983, 0.4164829268257374, -17.143567612135136, 9.487366827722223, 12.652721901108753, 0.7645899772346989, -11.920812995054151, 5.348021509175628, 8.3879926788022008, -4.6246359904401313, 11.089899173175201, -3.8332542947304775, -13.36196018971258, 8.2464982273107097, 14.657515986404208, 10.904966172392774, 11.533578255944192, -13.982006985588614, -11.973821478795168, -16.592644946389242, 9.2836692767439004, -12.678645783087854, 10.730932446196368, 9.5849200107862327, 8.4498461340685918, -8.6907116625889529, 14.156816081594213, -2.5856081507256512, -9.2993749691896994, -3.6239666126178607, -1.8399557052395836, -9.9970546829752251, -11.017332480853435, -11.692178962270885, 6.3025733321249016, -16.175906955071767, -14.423994620868056, -14.689511946206805, -7.2353003125032167, -9.3660212630661839, -13.858073820033896, 4.7709918994882639, -6.7026088232668739, -10.527782639004828, 16.58828557927492, 15.050247187970289, -4.0564185563228934, -10.640020339068798, 5.0431846567205971, 10.934348304548614, 0.75988821460881439, -10.291366703091549, -13.942020188031572, 14.135017480152827, 11.151498767692816, -11.537353350061172, 10.343082453782436, 7.976541387752091, -3.5774431227145778, 6.7912849734238856, 1.8417106851238594, 8.8764923317563689, -14.359256236175909, -5.6171451890921933, 5.9817930874266256, 3.2031461221092781, -3.5231009274983971, -14.863876345356418, 13.612377512426715, -8.9030335281364348, 5.1285813990983709, 4.8771312118802621, -3.1813763041012044, -8.1658030154444532, 9.2635478384894121, -11.938316318486482, -10.581389864174858, -9.041740376889754, -11.289532586451648, 9.8541909326330934, -10.813754378648875, -10.992626098956032, -4.2128060145436059, -13.803513190675977, -3.4047166821717285, -14.699309096179331, -12.322199151029571, 1.9847013546589598, 3.443351936013523, -7.7412573332668169, -9.4014738152531816, -6.0936722951459252, 11.249057062872248, 5.3612317349290048, -6.0934505412619844, -10.329491262921293, -8.3782268065652321, 10.610705115588038, -7.7383153101209938, 8.5683043797354852, 9.5214421313463742, 9.4646448974772674, -15.945188235432587, 13.571842719150663, 9.1766386061343823, 3.9788060864638335, -16.400242920289237, -12.152955170027367, -11.743525499640301, -10.778431692576483, -9.560949750398839, -11.274506489189537, -10.497378072608422, -11.313774108583567, -8.6889440492171826, -16.999837953521492, 2.8463220500405759, -9.3414733746083147, 14.505309388696032, 7.2740770646355823, -15.216612609375215, -7.7754295642857443, -7.9668693810493751, -11.838336074962589, 9.3302243430363134, -6.1546909317578038, -11.643770269023584, -7.3067290482575826, -7.6586644572207598, 4.1554355791738411, 5.5784827988725025, -6.6788226812914591, -10.099712087346221, -6.812608788772855, -8.6942723276748133, -9.1414982497263626, -5.5404435688554674, 13.782301424897506, 6.4913332097552408, -14.843570407301076, 9.1090159582398744, -11.810479272023766, 10.734632284091132, 12.106233609286406, 1.2074129428018001, 9.05135706765188, 7.0513320487712221, 5.7063731455704252, 17.827025603920255, 8.2204534825947988, 6.859838386896449, -17.066087459633668, -10.546186910811119, 12.544407506754297, -10.501953033608231, 11.631217929282226, -7.3247345033456455, -0.30451282566541621, -8.8097804299616289, 12.580754884209387, -2.4535950387210703, 9.2528280654920945, -6.6762373246501507, 8.5487856314147361, -9.8862934311079176, -7.405954429775278, 11.460818356885351, 9.4241123506707218, -6.0650535086957591, 11.749931801221361, 13.45158323366806, 8.509266618399371, 3.0990921451133864, -11.845686618745093, 4.6809017476948664, -9.0788995203187035, -14.154172714949322, 11.436663871420148, -11.686823110591192, -10.466322347645878, -1.8093094588126659, -8.2842513297508678, 6.998530934794041, -2.8130875381789773, -4.7458503858358174, 14.892214325455083, -13.297630549395505, 14.137398522674463, -5.1741407656371132, 10.811880263388231, 7.6909240450423546, 1.2020066622797796, 8.3882554040760446, -13.296889605096078, -14.12122762385526, -0.86913405214011996, -1.7012640446050573, 12.135944269100591, 13.696947616128121, -4.5178290393967648, 11.379039879071998, -17.142332699109016, -6.2502893853176538, 14.551005043468933, -15.922443449630226, 7.9749887358427554, 7.5006183839537428, -10.731307185445075, 11.828405368248815, -11.242740313773945, 8.6857287401789396, -2.3357416563180076, -9.2522949403141723, 10.057172114119057, 4.2142804964077794, -7.25445812349398, -4.7859211707096279, 12.212717205630641, -0.68060465039856421, 8.3585750011161384, 9.4355684709667997, 5.8736217498953929, -10.357680904873, -15.182609723791906, -10.528438249903205, -10.728845332160351, 4.4271186570969041, -9.5459159618972773, 7.698786708464044, -5.7616256574906473, -6.74427916594568, 5.0713712230747952, 4.9757324493057258, -7.5822193975454732, 2.1521506074067127, 11.702619296651129, 2.475868836880037, -8.5152128927626887, -8.8176272081621523, -6.7396490012107382, -7.1103087325178862, -12.249044472908748, 5.7223187192045835, 6.0785970538718885, 13.311388408274434, -5.1967232459428514, 10.616058764924363, 4.1131834199366937, 9.1157637550044708, 5.0981827919094043, 3.9623438215809581, -5.1277684895200872, 10.717366089367347, -9.6119167010571456, -17.671933631733026, -0.93466484572541053, 9.4511618566836688, 0.51145591409598801, -7.4842698912260595, -12.965780155817985, -11.049283246505306, -9.4204398537725336, 14.713331608978752, 6.1294522089617445, 12.762571544243462, 4.2519976479727246, 11.581799865407062, 4.0540310044195316, 6.7583036711124178, -8.4596629969850596, -11.555561625120337, -13.223361797635503, -11.022881346403601, 7.820188150462851, 10.050313550691401, -2.8748772822692796, -3.975284267526737, 10.165011610963463, 8.361153496598952, 10.23454765876409, 6.9861352278001991, -14.063066120834387, 5.5703634980353156, 4.5720288674742182, -10.208336872812145, -3.8841964569917136, 15.871358616035476, -10.375333061106602, -17.028934392886523, 9.6095097993772214, 2.8612197492337277, 7.3984151374847418, 12.882442279479097, -3.8593872267618985, -3.3505651418910092, 9.1400352361857795, 3.4607159608677991, -11.802758101252648, 16.131696084668302, 4.3485520924992915, 4.9299693363247012, 10.20608409504235, 11.350181288635312, 0.71079817132091727, 7.1011529322063716, -9.9921413971440192, -5.8089676277937103, 21.431868331238753, -7.0747060210352215, 12.069527047899687, -9.4828998378865119, 10.122263948520756, -13.538606127789073, 9.6375976702501429, -4.4100604567201094, -11.99790766311845, -5.976372779813337, -8.272146596627568, -8.9450436886845743, 1.9542103075796229, -2.5876227697187235, -14.368094001362385, -2.985471188013614, -2.478307267502168, 2.7456040916726456, 12.581031236480218, -11.4758779722525, -15.599590155208737, -12.992869206559288, 9.953747866291776, -11.025999481843595, 9.7008748889831633, 9.4677048052865693, 6.0665148799454283, -11.021027787278838, 4.1148665510329865, 9.9715457939675805, -4.524015231428284, 18.833454602793879, 7.5018420072802252, 6.536477074456216, 10.39532612887518, -7.7192567198190574, -5.8633746049064728, -9.4739325485451946, -12.966876834521914, -4.8932353347242916, -7.50082678824488, 7.9240662467055403, 15.473285728117284, -7.874821177550495, 3.9913525758800343, -20.203393732375613, 13.177667766939793, -11.905585671112627, 8.76829420558043, -6.6904194950549218, -2.0990812946584643, 16.352167450942488, -8.6839871579774304, 0.65535704062993771, -9.0914298192610481, 6.226432112620512, 14.414606788199343, 5.3327990949329722, -9.2825422873145076, 5.2444348695624967, -13.52476436519694, -10.565017103537128, -7.9458267805510605, 6.2385267794539532, -10.620897086888419, -14.02491825647715, -17.249193736529822, 21.822546537373011, -14.525572761291961, -9.6352912168501117, 7.7923236942745477, -0.43905931375127905, -1.1677511335028592, 7.9195608711842009, -1.7261157613467151, 0.81574419315180335, -6.6258630940789853, 11.446710993602048, 10.423767215464459, 10.131515821910522, -4.0813762630157786, 5.3099875815632895, 15.005238483277349, 3.9458100113193013, 12.997541564501073, -13.401349640520106, 6.0898523220056484, 8.5430795315739463, -6.727566986421512, -6.0976964106078926, -1.5514248251358895, -6.9251342133096534, -5.0010498589221326, 19.36294632958224, -10.995748094036278, 6.8230876895289425, -8.9816761374312737, 19.252689002798032, 15.018231032342973, 0.75032883111291693, -10.512852145797988, 15.952636394768637, -13.876019658000088, 7.4282002133627536, -15.007337649734009, -20.867628639436518, -12.864466413292632, 12.282886216105501, 5.6117260976193588, 7.7243055425354985, 0.74537471606410499, -8.3753274103443793, 8.7297402808334041, -3.8752359373415373, -7.8660891683218042, -8.8027160564205786, 7.7988010166838881, -7.8129632889899385, -5.8353090570942738, 11.438552747844, -9.8854956847581263, 6.193488211617348, 5.7060858140643864, -5.8417400083956581, -7.1659403388854175, 8.8621684734697617, -13.828395956746165, 11.58722476958626, -8.7757625064865632, 9.7638601085689327, -13.63897121774294, 10.692146632523938, 9.1954815513953641, -9.7262358263602646, -3.0742135000084518, -11.831625275045802, 10.346151064081882, 13.860225574621548, 5.3434462647847401, -12.667486708061194, -7.6071393527596891, 10.497824234551809, 9.1398524858692305, -4.8312688599490299, -9.6866353191391568, -14.936854315955886, -4.5645292398393735, 10.306087472805107, 16.435616799434957, 9.7618939189542857, 7.3359442918945499, 5.4777235052650965, 12.827631906540597, -9.3557044067803972, -8.6207571310957753, -6.9067986860795303, 9.4266173165645881, 8.2700014055707438, -14.396299560527304, -9.1945433850102294, -5.0742673058143186, 5.9363570201246212, 9.1825801770474449, -14.26016478123667, -8.9647881473585791, -10.999991358949853, -5.2643587807317358, 17.966460043223208, 4.5038323715849113, -7.3643627119764705, -8.0021495622334466, -5.5012765171131761, -8.6385795076142866, 10.642859565399243, 16.418157809689014, -12.558310319227193, -5.6944436186565675, -16.620579134203229, 5.2993074909249556, -9.5535858720998252, -6.194850562303122, 7.9283758132069577, -4.3938243314441445, -16.08461551423154, -6.1053020627578558, -7.8156662613007883, -4.2010902685294225, -11.260598796472106, -17.361798229363732, 10.523477968271544, -9.2997205134904561, 4.7239785905440819, -16.55663724338849, 7.336212674126954, -6.9284736037251049, -5.9733477242286268, 16.958437027673817, -9.3688626284447736, 12.335069283139083, 4.4003768017589344, -9.6375650205771759, 4.3025216992304607, 8.1709809734149754, 6.0840979096543046, -1.7791701081822009, -9.7212268065403915, -6.3728373407996992, 9.4709301635928664, -9.8099415495718265, 10.216669472304444, -7.9089613940445638, 9.0133309428613888, 15.233159549099527, 14.443197589960937, 12.315849008505751, 15.22683390790605, -12.204208274855294, 8.0545420942912056, 11.261686524342778, -10.088714704911705, -14.758394330397744, -8.3506925495196622, -5.7190575904160488, -10.474095362096637, 6.7558531383042801, 10.839875782803038, 9.6223187492013871, 4.0011315315627671, 5.3452889051100145, 0.29628684358052387, 10.260560792716758, 10.010269925150098, 12.309818259037518, 8.3443036587520112, -5.4014577244395916, -12.309450717768483, 6.227119823086781, -0.90098300040336077, -5.9574142236058796, -6.5290358544134426, -7.443075641870017, 9.5718761708906559, 5.9045525168917088, -14.09287394192167, 8.537557668616758, -14.160598968888243, 5.8051719496039951, -6.239975019204187, 7.4524259174698209, -7.4731349725176219, -8.5239733925114809, 16.110254200184002, -10.257968713373153, 9.5898379203607735, 3.4675905258102322, 8.1300367938993361, 4.7762632339122959, -5.8974433337845085, -9.3140122423426206, 3.5847848816848376, -9.5355250106758724, 8.6839175133173008, -6.6948323819511488, 6.7933016290691377, -6.3800902026507824, 0.76093699061175468, 2.6435457529778015, 7.4138748481937027, 6.0247308500592567, 5.9280863177297123, -3.8920878288506016, -8.4621386416944677, -18.750651564949948, -7.6188990491921116, -2.1334205811758622, 8.7540093304816082, -9.8600851053842149, 16.342033110995256, -10.800872299968921, -13.998298573757474, -3.2934871871896396, 14.06180118603365, -9.271874228911658, -11.048285130582032, 6.1595626190926716, 8.0570216147192557, 0.66340001966893403, 6.5132884000227351, -5.4201122315987309, -9.7412562635013984, -7.0486139617141514, 16.981384687745692, -8.7022380510622721, 14.647877845477861, -8.0820055541788722, 7.2226523022245761, 5.3790569210687584, 13.728807132743302, 8.5317048523035623, -2.7316549253863927, 5.3846139594020226, 5.4103146460176523, -6.694268736004001, 8.7300406717059573, -13.347383859719848, -8.335174873152722, -10.945696086225201, -10.4875598953527, -6.2891459907155456, -9.3671321709341981, -11.585498988590738, 6.512870728010193, 6.33239714027453, 8.7682544573530521, -6.7439993019333704, 9.5026784978124166, -7.0246760343330656, 6.4372813340255446, 8.1945894173399711, 10.262887249545706, -7.5060931723177706, -14.674750300787338, -13.287289997793177, -8.4928309129257595, 7.4563888548291644, -4.5195874938690226, 8.5442291590063935, 9.7115273312730501, 15.092119744113154, -6.4263051953856785, 0.12831365323535676, 8.7640439297438597, -6.1460218943241305, -10.889755958467752, 13.67769695151666, 6.312988951937812, -13.227320725213115, -11.784825668882982, -7.6748667604861192, 7.7787450544407344, -9.3711259762266828, 13.023365017019263, -7.0200584128511876, 13.494925467734497, 4.2227722997626005, -13.760223253172747, 6.1777636365323456, 12.067306433588751, -9.9155428829691132, -6.5766064428842856, -15.151662906193899, 9.6988065214723864, -10.152731302282174, -8.5735676931961322, -9.9418795299730185, -6.2260760507460198, 9.447544122507308, -8.1319644337468215, -4.145324424570318, -3.5485961822808565, -13.467769122062073, -5.7514070303621585, 4.2372927865136871, 10.111694661148967, -7.4186471554037379, 11.430760000153063, 12.312843067890855, -12.810688665750249, -1.4448074235360808, 7.986361807585828, -1.7676683131382003, -14.521209725348982, -4.352705664193615, 18.914853195668275, -1.5113121651615482, -3.6397864185997131, -8.6196558356553385, 4.1199321080626019, -8.4888399293551817, 0.57614759104880209, -3.8170562650576274, 6.5118953364681147, 4.0953213386352472, -5.3421050165325257, -12.272356482934088, -3.0358640779517354, 4.2481637384966975, -2.7752337082527849, -8.0160326885318369, 9.5768553793879043, -1.8524775210440534, -11.009861394679287, 8.9742068648070266, 12.471334080830026, 9.9992644688047552, 8.0039800551702207, -8.7981872925635614, 6.6433407975833738, 6.5480704488332835, 7.2841246634294423, -6.3252439319780178, -6.0513426125451124, -6.3988334931556485, -17.469331458693546, -4.580254889517116, 8.9993454898016569, 3.2238207283793323, -7.7799510625287303, -13.803751678166556, 9.7121916487763045, -8.1746700971358059, -8.8126126733994941, -4.8155492973679186, -10.804453969532291, 7.0086143651800121, 3.1481410707654631, -12.810183673768677, 2.3362046780839187, 5.744619950986845, 3.8643342874084374, -13.249939418679734, 11.415744222471059, 12.554737671029878, 9.8333778447831257, 5.0957400772063437, -3.9991407502674661, 9.8345770583999279, -9.7368996360840274, -19.449417624721992, -7.5133274868764675, 6.0619042605430966, 7.197156700662827, -7.0063836107615485, -19.263860108465263, 13.028208109141358, 7.1331219897936977, 5.4720228485501652, -7.3579311406347925, 7.1801636071660138, 14.640572831964421, -3.8340913302192701, -3.3062445113231744, 17.400159670258972, -7.1681505547822413, -4.3542281808553351, -8.4546164816007607, 13.421193429578857, -14.905121149794782, 8.3143744117862095, 4.9730046756217972, 8.3532232015837344, -7.5969825424753346, 12.3177910080973, 8.7607875220531426, 8.5127047792303561, 3.5774587189097899, -9.6494548210828786, 7.5331539937229897, -7.4747114284701679, -8.6591660587053916, 7.3468316363038637, -3.622337543593344, 0.47384090625185044, -6.0463560480716252, 8.0499483448215017, 9.7022755442800293, -10.776004671468062, 8.3543427603924503, -5.5360568466131905, 6.0186808121336659, -7.3543970398820848, 9.2806086183805689, -12.230546104506987, 7.4673092848302733, 10.975472812952574, 6.7926415721593818, 4.8749321283736755, 9.5323516120815874, -3.0280886662753885, 5.5571898549900514, 10.226559964818154, -5.8034190385368811, 6.5444311969384019, -9.130374827280793, 15.819448485436817, 5.5538576215556326, 2.8637826501217618, 4.0706674231610558, 6.4597011042272623, -8.3735378854139135, -9.5667300995851061, -13.845901714228189, 12.714093428899416, -8.3628461969588557, 7.5987675327409425, 5.9272125723131186, 4.6950385206484189, -4.8195825770873233, -7.908711363482686, -6.0290697566338824, -8.6859336035752293, -4.5193059923378351, -4.5940077637319696, -4.3311584091869832, 5.3536488354562275, 1.9921280360174241, -9.4633153479117045, -6.6570051760469031, 14.208357863252012, 9.4845107231608647, -7.1832992233853066, -8.8475487049318655, -13.630287949249563, -6.0719107719352952, -14.274798405390152, -11.162105305503859, 13.054901490270078, 12.995371746588807, -13.146715820058548, 12.945646134893682, 3.0460739976722446, -12.155229015360904, 2.7412678887489506, 11.780611735174173, -5.3341954653614927, -10.032480770112713, -5.8447538785525053, 0.52725472542845364, 13.379456926012971, 9.6135830134952744, -1.944448284069229, 9.0502993001659355, -11.346127451101133, 4.2434870682337369, -9.5043367843183457, -2.9775157830606012, 5.4193649803215109, 5.9212605221007886, 6.8739591477125153, -9.3618138585411454, -11.34734301929147, -2.8580136600449677, 9.7314938797272301, 10.716957084696832, 2.261487615173849, -11.936472547545375, -11.596497065616539, 8.1683014049841454, -1.9741314291525349, -3.8079032870338203, -18.998387033650793, 14.785213606318443, -2.4675987407306512, -12.092457768834166, 8.3055089082183038, -9.8880041321383381, -12.17693749962149, -5.6119106856770609, 9.3346742365750952, 5.9978824704833622, 0.13754021975113387, -14.894732183908136, 14.747292229007831, -9.7097733323647439, 7.1041665937562009, 8.747982309638612, -1.1124715705618149, -1.3453533016361534, -7.2336827315963976, -3.3065754079116902, 10.610359888132521, 6.439770888743964, 11.42420401634142, 6.5388842458764689, -10.853598132676623, -15.353822721495742, -8.0675862924724751, 14.459019981256141, -12.566396596207603, 3.4205186262164231, 5.630487549883056, -8.073684341188935, 0.82126057392054652, 13.882060246971731, -11.094144048902541, -11.389801550560342, -10.3187260289045, 2.991571648758196, -6.4911734708363165, -11.245496138683489, 10.9851776336762, -13.130504876870628, 3.7733165504957942, 8.4076079303113911, 7.5529546967120051, 9.1048736341912768, 2.7287083950923141, -6.4019633593747214, -6.7703960792021753, -7.6283872602484184, -7.6359394699956251, -11.153289601654617, 4.0727793884727168, 8.3062884746691932, 15.72392064712384, 0.9811577968163786, -11.722310671012934, -11.342923130703641, 4.6538782013854689, -7.3739066993524025, -5.8947067956510093, 11.486762613574625, 12.413880145399126, 10.786268654735865, -14.830950842039924, -12.718664091764236, 11.838893611398694, 16.960744319691706, -0.90885433404131177, 11.805632469674961, 8.787147329142396, 7.4670599584679005, 13.783711428147573, 2.6889832573487715, 9.8277282208337393, -12.621979239155044, 11.900463485129047, 7.3974913674936378, 7.9790082301381764, -18.460977129782226, 9.6868989422260476, -7.4849707679692381, 2.791279213037106, 5.9072811103444005, 10.027746084723706, 5.481378194108391, 0.94657543605496242, 3.1638084348680802, -11.565804912112132, 8.1295825065418228, 6.2454385368905463, -8.7244225637155086, 9.2949740971114814, -15.413745662976126, -9.2767171742637053, 20.883637553321279, 2.1729042705598971, 5.2123425513190229, 11.260222333457566, 5.4759025599371576, 8.1537344500122764, -12.294121929916995, 8.802476739158374, -20.703918322925325, -9.4123075195898913, 14.838015503157582, 8.1809389421993437, -7.6381202529000944, 5.0731354695422288, -9.7523696522120105, -13.519239387616903, 7.7323479369959101, 12.148583040284464, 5.4807070910189717, 4.8696229713233139, 5.0087903276064836, 6.4402113569592467, 13.277426855835845, 9.6524651881369721, 10.826902095836219, 16.183489895274345, -9.6318043844967534, -1.373132442179763, -11.219593888898418, -15.004319828107285, 18.258393722812315, 3.7354456310459385, 8.0651749744359105, -6.5164044554554748, -12.565266643553137, -12.030885912645394, -8.5404810535779507, 12.314165209697041, 7.2947873166397219, -10.819275536058335, -8.0129408622894012, -3.8121662128657552, -7.6091124585846721, -8.4798365873122474, -3.9868453977970675, 11.38629202057937, 3.5714802941824, 2.9518831049273677, 6.3322250488086071, 11.580034774188221, 13.479927163429085, 2.0786137569475098, 7.9330224326080057, -3.6943001859225055, -3.2256160391289095, -12.811450358156192, 13.541505165687818, 2.6411149013180362, -6.3489619114245244, 13.373338952003571, 12.628299743258562, 1.0027687748564038, 9.2077227922659706, -13.768254699816865, 6.8324600540916247, -14.524379303203943, 9.2715316925285709, 8.7678396133255916, -7.7000840765938703, -7.6752994649649313, -6.9178464084480851, -2.824297046557938, -10.067962153214038, 9.8382780470022801, 9.8343360207768367, -10.442346656794413, -11.531825845771756, -5.6955603852302623, 7.9952115376447042, 7.2796481632297372, -3.9815702225402285, -13.888827599999129, -8.7028698626538308, -6.0635186121417952, -1.0917426165389645, -7.5444189349932813, -13.502585170286313, 5.3738984196649149, 5.1002418292985094, -2.2415640749653791, 8.3993581378656117, 17.872303247028064, -5.7930453662663712, -9.5610560588597515, 8.0594903059030294, 5.9955468570765671, -8.4016643820784811, 16.017479926774133, 12.457791465479348, 14.251050296430238, 13.550966058757862, -8.762120073439311, -19.568799520529904, 14.473633275887034, 4.7150108398434316, 17.622896812791758, 8.5532109821391256, -7.8861564007563967, 2.8018084587073706, 11.238281768369326, 19.036214400042667, -12.627994340787289, -3.229926146308185, -6.2106083456766665, -12.029815325633603, -12.732678066605525, 16.114114027765005, -8.8878875737603433, -9.1952288940063198, 2.9514348736209386, -14.875969949421576, 7.426537438524826, 4.0988218779588257, 5.1048469008081083, 8.3561664083509974, -7.1680838371486972, 0.079559302266173665, 7.234447616829998, 9.2153180384359938, 11.380502523658766, 3.7813665464468564, 9.3571471630839476, -5.6198950965916659, -2.6112846832626295, -13.074922193350705, 7.1458325396315745, -6.8553238201936848, 14.037347515845747, 6.1114574644258219, 2.6233447927944442, -6.6962191818230385, -15.054560815064955, -3.8509653059595634, 5.6193134186600444, 8.4632418525580135, 9.06084843255511, 8.7155312766304451, 14.146656363113056, 9.4485647712524159, -11.894790263269002, 6.3630883640874796, 6.0659222594215532, 9.3423771994935656, -11.56898779218068, -12.569317170483185, -3.1542401369229229, -14.317618053977442, -16.07713062656423, -13.866270731830225, 8.9731628045127234, -2.7568654754219311, 10.650056946180007, -0.38554919912492391, -19.636918428478758, -7.261084813408365, 18.261599502237281, 4.365909470450525, 9.4604701736004575, 9.3379768195852684, -5.9721332777841125, 1.8392337494849149, 12.236588220433115, 10.729755869202716, -5.0163355160529157, 7.8745146479874295, -12.210717308250283, 9.9053843786672573, 4.3176048616878999, -7.1321033170654076, 9.8376099896153644, 13.994875675654404, -11.800822210877568, -12.467732532409068, -4.8096053846346782, -15.806886200214143, -16.011053902031289, 3.3108259217896991, 9.3708906824355758, 4.9387906035182194, -7.2811664484622529, -7.2283659694812323, -4.3994107454794076, 13.986557692605393, 16.267589496305209, -12.5211237853249, -8.6162733581098614, 11.875897506788261, -5.7924040049014529, 9.60395357854315, -13.371234187638548, 7.4044876769030976, -9.9169764629346115, -11.960026798255779, -5.6929530819152605, -14.080996179546117, -4.9741440758010285, -7.2894457453898616, 1.7385165163304241, 10.659988023147882, -1.4616437274123262, -10.074637029156758, -17.086127613435742, 12.235716666711239, -7.9575522168496349, 5.807625236075423, -9.2779276010226894, -16.480345338445041, 9.5297786981975108, -12.287759229285887, -5.793455825490601, 11.046928184816098, 12.263531584491689, -15.868613864191206, 6.1089590101381299, 7.7043039642206841, 6.7725058819006509, 0.19765926454723443, -10.92190123421037, -8.6903416862217444, -3.604954070470813, 10.780882529813848, 7.6342821794581255, 1.819027960022801, 8.9622472070627612, -3.7731185676641705, 2.6511830669363676, -5.936256145443763, -3.5065708446633179, -1.6756694810431396, -9.4457045728120921, 5.1176087336867671, 9.0843869892318665, -4.9165468247185249, 9.6190501542416023, 5.7720688303614107, -8.8665231351704143, -16.776765049597191, 5.1935200585542409, -7.0317717992679913, 8.5952975711448651, 15.701379400382201, -5.1747900955843287, 6.644409479106538, -12.294043736596755, -15.483394542555223, -6.9161043885800755, -16.902160692468406, 13.140408586007654, 7.9585367038084494, -0.60142488467217781, -10.583573691246794, 7.6570812407643905, 10.488467203766263, -12.229594163883426, -12.105180821633089, -10.100333917660924, 10.582889173673999, -4.3524138084056574, 4.1598294177868027, -7.7208623056787218, 9.8373959423124191, -9.843437056863948, 9.2758547221503864, 13.917929858415311, 9.6348606573169207, 6.1603576344825903, 7.2761550553448275, -5.6132644264075031, 16.925921888188984, 13.099232943399601, -12.169951256692608, 8.0341465714582103, 9.5080586839310293, -8.9153040306547862, -6.2778930359354987, 0.65702865949253608, 6.1455975831103666, 3.4956736733487177, -13.101966614043903, -8.4917541060921486, -7.7703858331616402, 2.9540207920840338, -2.8250454453694225, 16.471572201031012, -8.3401753077338174, 8.5209392200398799, -8.4562622463700912, 5.3451445327350049, 8.3227551961577149, 9.5505384761710648, -9.6168853444985132, 7.8088619634040271, -10.010194534199005, 10.407541359870157, -12.730901681260953, 10.062237956980878, -8.301093581147164, -11.221782089013969, 5.0699226682185836, 6.8670809315755763, 9.5183305660198574, -12.477293633009369, -3.0829984725185011, 14.251075736126907, -0.50381312202666373, 1.3945668674871461, 4.4380349292124333, -8.4792849992484687, 15.740298722260704, 6.4916661990457039, 9.8781328856963952, 14.524311425947424, 8.623227064986775, 1.82594923740208, 8.1658888991281113, 19.519909829772214, -0.71626812905103776, 1.7182300090879543, -8.0056305624195137, 8.8667806307632393, -6.8903486607996696, 5.3931378831660304, -14.284745953661838, 11.800779205285183, 11.828892295047666, 11.579327959504184, 5.9644626407280574, -10.637566489206868, -6.3308930175168046, 10.362896991246821, -13.136681551103671, -10.69114929291889, -8.2804076555200332, -8.7620956793565572, -8.3349590113674843, 6.0390086996968186, -0.92206940007654714, 16.688147291793179, -7.7396944231238889, -10.556885976235911, -5.5034713893873217, 10.684323799177031, 10.164740010619706, -18.644906837500962, 7.8255279920941758, 7.1184183927575999, -8.5879829996361785, 10.058536284915368, -3.9577147638427337, -9.4390455070755355, -10.813502747434075, 3.1725069430189179, 14.646645070268773, -6.6958720302719321, 7.1891012020482057, 2.776770380964142, -5.3045752723276198, 11.024688310314966, -8.8716706651748609, -6.2182144207648875, 7.2174155723591822, 9.2363647659736916, -0.13811663085025644, -6.5095852199241193, 2.7850661520962201, 5.7288466875807895, 3.8404238060339386, -11.979694823507765, -8.1566218452888641, 8.4872181623141802, 4.0684730663558621, 9.433119896225687, 17.452359798566942, -9.1852211978356539, 3.7813711040017632, 13.687886395835575, 8.3110503099043083, -12.263855365231695, -0.29265821325473718, -5.7786710506977288, 0.32000221107421295, -13.152220176187292, -6.5995903240006717, -13.649334703564579, -7.5516513340805105, -15.16406327996164, -6.7664832291371457, 9.9511431024063146, -11.833825853245724, -11.726480937964023, -4.6960938337568416, 3.6909792826776235, -5.7241654435325771, 0.84009221550172219, 3.981445765587416, 8.3193977689219309, -14.855487044550641, -12.13768399449228, 8.2575189786919658, -12.482209307351347, 12.288265749008579, 12.92588605732125, -0.89651953932604156, -17.178851924529209, 13.465060130471429, -0.66179931634497746, -4.7361380949519907, -8.5915497494217874, 9.8633923545024036, -11.075503948766817, -11.521258634171812, -16.937563321814299, -8.4089961555477153, 10.316744468138424, 11.068755254870558, -12.812559137681774, -11.716000182253042, -10.794814834414403, -14.695829972179469, -5.7734367211811755, 19.281663549262714, -7.7079679114509911, 18.982133221850518, 6.7278265135517552, 9.4200950070653935, -5.0327780626629206, -1.1472749532062567, 8.9655615288611052, -10.289968622568939, -4.5317886320427014, -5.0717832150149214, -12.403158065152988, 16.054879478569319, 11.910769204629043, 8.8721630995550154, 12.946670225247273, -20.040326823281728, 15.061437997065909, 12.371159663686912, -5.2434241432319393, -6.539600733678907, 8.9759004731301122, 10.399696431036546, -9.7820158235043255, -1.8655127741351087, -7.2564512028104291, -9.2402317505484497, -15.743596514833451, 8.0518221334585913, 8.064389141916843, -5.1750464722524647, -1.2577099412771857, 11.088648050953193, 14.734664098438651, -8.7257834129372487, -4.9071340910761805, -7.2288497019818241, 11.368753439780507, 11.259515603467754, -0.9190234527098583, 10.508309728639846, 5.5014236641516137, -1.0062376510942861, 3.9510038373896794, -3.3772476520373296, -12.298064413396816, 1.1518807046710942, 9.8347990668982277, -9.6697877164226895, -5.1708006319540161, 10.90534178699129, 9.0780310964231923, -11.06717326378323, -10.193153698637712, 1.6370922062264599, -1.599701860652494, 7.4493340597532782, 10.079750519485344, 5.9817167134058051, -6.1883642950981734, -8.7859917448021054, 7.6925693496530796, -11.726693947959594, 1.5292664230077266, -3.7640503328337047, -9.2026303785959076, 8.3703384923817321, 9.2968574133785165, -9.0282964165522213, 14.082662142896044, 7.0391904432891064, -8.1892402659133481, -8.494960679412987, -8.3171594195215324, -4.1204583607408765, -12.464929795412097, -8.2800259108270922, 5.0158695467591343, 2.90504266938304, 5.5802620759772603, 9.6053945607379294, 7.4665086294967553, 7.2836197716168538, -6.0797636096551519, 5.9192672325212143, 4.3197502963078556, -2.5794586298505413, -8.3804827856018385, -5.7616389244014083, 7.5165636982133597, -3.7871806468757891, 2.6957388838195038, -3.0339814791522679, 7.7390014359139343, 1.0179611498135317, 0.57428282151728316, 9.2486809887277968, 8.9851820183067517, -12.322228892543235, 2.1846637256927366, -6.9268224211182101, -5.6465263096341207, -9.8609073169739414, -8.0437109222330996, -2.5924823061626299, 10.799267368908426, 9.5532367964485942, 2.1510949897407339, 0.72813586085734983, -7.6316236927774765, -6.6634161974825536, -7.6995131312161114, -2.6469146283491312, -7.8927242011683072, 7.9686594739655217, -8.0858268153723696, -11.113628935027652, -4.2312391545249435, 7.400536752330261, -15.878877108958942, 5.267992480772417, 11.16296673206628, -17.540164979801386, -14.801126830818111, -11.385201143366997, -14.508310090705075, 14.464207778841862, 11.215905228606482, 8.9532196390944634, 3.1058203222772014, 8.0753828772231113, 10.559485384240654, -8.2414912742823354, -11.714805939566189, 4.7281042573450431, 12.657353257890819, -6.3043093049399248, 5.067000914225444, -14.714628033981958, -7.7444814248447615, -2.5025562382741042, 13.564851064978582, -9.4328409951276662, 10.04126088038934, -10.570084081595921, 2.3444801610493466, 7.1831276221853866, 7.404162681313343, 1.1684082688282307, -8.8884680285241533, 1.9400943416397112, -13.196562462363692, -4.5705203572273359, 11.003636571194738, 11.468673888105736, -10.534610194739036, 4.4477979444487845, 7.3667611650061362, -12.044187016767467, -11.396051178941862, 3.9462512050906744, -12.988661501036244, 10.545881026800801, -8.0309289513402735, 9.9370741830104734, 13.654579804016825, 7.0469488853837321, -10.938942295813185, 5.1800344871423132, 10.882232153707738, 1.2710853105543087, -6.5661242949766816, 9.7776412282696459, 13.321850745505881, -8.1153422577009291, -2.2941713421233958, -8.7097542589155221, 2.2618606797252978, 3.1810406025700315, 4.829995467844082, -8.8230523342209999, -7.8350849175265527, -9.1156429568037076, -11.442019665347123, 2.2127249998070249, 18.018245968154236, 6.7919203279388967, 10.818120665998064, 15.957114328595093, 9.436472994391762, -15.0724442489973, 10.177531220212931, 8.7382348206500033, -7.4439716572652967, -10.135340539629416, -1.5478693068716267, -6.2520881203409369, 21.51870984833112, 6.7814496888686202, -5.4629593689724354, -1.0810664038442734, 11.680093350196586, -1.1684404824410481, -8.8192804660387161, 11.947180907432026, -11.865540708697406, -12.073158010228243, -9.3168616660647103, -10.855717378744718, 12.832277402471462, -15.233827235544979, 3.719489187613028, 12.974696537296685, -8.75959465422536, -2.4475947054420195, 11.313184053568827, 6.9182165488811229, 12.123675956468196, 9.6442923820443145, 10.799907622549545, 1.3696427348286129, 12.109212710737127, 2.6404947713803306, 9.5435762973738267, -5.4268755145327745, 10.974370356637689, 11.459181655827159, 10.228613791177938, -2.0376202581586202, 8.5519223504193267, -15.144108617549279, 10.208111627929036, -16.074632706297336, 9.535346082793712, 12.968894012265515, 4.2926497043948793, -7.6447760416419124, 7.3591604897068219, -6.294066487171917, 8.6661482650382133, 4.3524844886549072, -9.6284187314739373, -16.389868048898698, 14.370574991274481, -8.2963813089615268, 16.504114329831857, -8.4564658970066731, -6.3969858495492078, -7.0522130158545027, 16.328014713505098, 4.0676774938327931, -8.8805902890220576, -5.6438005548253818, 10.887856323753418, -13.497382772819085, -17.229682704447541, 10.177341730428909, -10.959196430060141, -15.892999214486872, -0.39312548358593402, 17.548662000796629, 8.138747505659067, -11.081466337015, 9.3549081143588229, -5.2668052531909293, 0.59145215464277101, 13.865804154173629, -6.7446135707105945, 10.591472647241186, -6.8775928522394087, 0.79035105716724385, -0.83434363179526505, 13.426811179256797, 13.480253964577903, 7.9579945693584886, 7.8687287842784803, -1.2711852125721312, -6.5831626138029433, -10.255988526378117, -9.3721646222445631, -4.5483019698635951, 12.654546996958775, -2.2845772848784054, -13.395748226685187, 10.227730333720137, -8.9275038607977386, 9.2096733075692399, -9.1994549499155589, -4.5768838702423018, 7.4336970353205523, 6.1990136188764922, 5.392562974045604, 6.8615159418299543, -9.9148725697134683, 10.272013543022926, -6.541146389868957, 6.1996539988491746, -8.5702789915391175, 6.0710850780527128, 0.41216255793753664, -6.8452494187073416, -7.3698306482120808, -4.3788198137924814, 5.254192997316685, 7.0651978737141468, -8.3496697717376325, -15.541186410630397, -13.361062248182593, 11.869712905857645, 8.8858662456220436, 2.315280646740792, 9.1370562156627635, 10.612212040886574, 15.723923545841364, 9.3000796832012966, -12.203790919241875, 9.5229433645020229, -11.332560886601259, -11.799762316157022, 8.6718707861873146, 3.4390494326490342, 10.948206478975262, 10.351083327208633, -2.3551385999606347, 3.6593868571158006, -10.912461508095474, 6.3601915796808566, 12.644105697007012, 8.0987317607631102, 6.8425116090817673, -7.8614337809266139, -16.777952262404956, -15.092829035089149, -10.867283176676434, 9.7617585972043095, 7.0699740006630494, -0.80345056050581032, 7.2341098943011026, -2.7901743760803868, -14.023920253719963, -8.6493250885626658, 12.119156062865828, -12.565363519164727, -6.6257256922764087, 9.9530063133378111, 6.2285641482405287, 8.5890710113124502, 10.901661163934543, 1.7011000225296526, 9.2328185698429888, -2.5151197107048353, -0.78814118951465995, -6.3782804075339934, 0.77016194990540299, 4.7860592575330942, -18.091131028655795, 6.6618347947308489, -4.5537746303503699, 12.906362988375243, 6.6637236513957019, 5.4194732758517778, -5.626683563346548, 4.8295291548347352, -11.904932030289029, 9.9944164460741938, -11.027348899069844, -0.014743410131345848, -7.3410368137184197, -12.558702052466645, -9.2966083471503538, -2.8582301845790048, 16.122229949617235, 6.0332133243788979, 9.4423884847579131, -6.7953848219405604, -8.640997496023326, 11.564755524473357, 7.7370575077503672, 11.178600690994582, 9.6609341268345741, -5.0924071871300569, 2.9472182219982841, 11.322674214116185, 17.636604816170465, -8.112421382991716, 5.7980976514734257, 10.587871354585735, -10.207529594090163, -13.012906685255201, 1.6439826301840548, 4.7959168408892552, -9.1817793609379343, 15.910744159295755, 11.988413488939839, 10.225499838967904, -2.1100999951643771, 7.7773391391119979, 4.2070274590049737, 3.1789918079199362, 11.389698381773869, -5.6797986359782069, -4.7261529062162424, -6.1926650154600731, 9.5097255166801595, -4.4005426737892748, 4.8284348550831577, -7.4035564503513553, -10.371755556185054, -11.138214834764621, -11.479591917367713, 7.3492465579271542, -8.6401023000535666, 2.4737379805053212, -8.4391176745455763, -3.5699286239866383, -8.1254703716775829, 11.948227614312263, 7.880462510583679, 1.8623842706739999, 7.3888689386136646, -1.2896033177393418, -8.2116493851785464, -9.0121076446113531, 2.6038276518722672, 7.9944375021940459, -4.3649859784435145, 5.1704186172538593, 7.7846827735959723, -0.51775021699396251, -13.814395914977867, 11.155615752700793, -4.0116122940272048 +}; + +char detected_data[] = { +0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1 +}; diff --git a/src/H2064_516_sparse_test.h b/src/H2064_516_sparse_test.h new file mode 100644 index 0000000..d3d4797 --- /dev/null +++ b/src/H2064_516_sparse_test.h @@ -0,0 +1,33 @@ +/* + FILE....: ../src/H2064_516_sparse.h + + Static arrays for CML LDPC codec, generated + by test_ldpc_fsk.m:simple_ut(). + +*/ + +#define NUMBERPARITYBITS 516 +#define MAX_ROW_WEIGHT 12 +#define CODELENGTH 2580 +#define NUMBERROWSHCOLS 2064 +#define MAX_COL_WEIGHT 3 +#define DEC_TYPE 0 +#define MAX_ITER 10 + +#include + +uint16_t H_rows[] = { +870, 276, 110, 54, 226, 85, 59, 153, 31, 60, 46, 75, 139, 239, 56, 13, 30, 45, 63, 34, 54, 21, 77, 204, 441, 11, 297, 126, 148, 104, 269, 57, 369, 213, 117, 479, 53, 124, 405, 97, 42, 132, 67, 103, 389, 156, 237, 105, 418, 11, 60, 12, 195, 32, 11, 21, 10, 191, 176, 237, 140, 376, 115, 9, 149, 304, 129, 308, 234, 129, 453, 215, 176, 213, 151, 169, 41, 106, 421, 103, 83, 62, 124, 3, 574, 39, 31, 472, 69, 8, 40, 352, 62, 275, 74, 121, 125, 35, 83, 52, 21, 422, 229, 233, 62, 125, 181, 175, 28, 43, 113, 340, 71, 4, 40, 249, 134, 168, 97, 15, 26, 135, 104, 80, 206, 108, 307, 494, 358, 82, 159, 137, 19, 210, 6, 19, 65, 285, 45, 154, 276, 14, 137, 79, 241, 235, 116, 129, 84, 3, 122, 370, 132, 451, 77, 89, 262, 79, 170, 469, 24, 163, 128, 18, 120, 244, 8, 153, 151, 441, 95, 327, 284, 96, 84, 35, 61, 286, 20, 22, 68, 131, 106, 30, 280, 343, 99, 124, 262, 208, 277, 44, 349, 41, 10, 761, 39, 445, 165, 81, 393, 194, 18, 250, 589, 70, 307, 1, 365, 47, 4, 9, 283, 133, 90, 601, 117, 228, 212, 58, 420, 230, 142, 25, 57, 518, 88, 180, 24, 122, 379, 143, 33, 30, 140, 68, 150, 320, 55, 33, 132, 2, 22, 16, 272, 44, 264, 49, 174, 234, 86, 39, 10, 278, 177, 178, 20, 126, 18, 90, 6, 184, 158, 111, 246, 229, 221, 48, 267, 6, 172, 49, 291, 185, 67, 50, 157, 66, 32, 525, 257, 196, 260, 92, 72, 163, 144, 329, 134, 156, 47, 82, 49, 391, 26, 1, 88, 52, 56, 8, 111, 138, 219, 57, 447, 182, 263, 38, 98, 75, 36, 83, 245, 5, 419, 63, 12, 287, 603, 58, 507, 37, 2, 214, 539, 55, 53, 81, 186, 73, 85, 97, 91, 332, 123, 66, 188, 591, 158, 324, 88, 53, 214, 84, 389, 104, 271, 211, 7, 393, 281, 242, 119, 848, 705, 428, 50, 28, 52, 15, 5, 2, 230, 38, 76, 295, 217, 1, 56, 170, 145, 5, 72, 460, 203, 145, 211, 121, 68, 538, 44, 133, 87, 494, 325, 161, 781, 370, 51, 115, 262, 106, 614, 29, 220, 189, 224, 165, 17, 72, 46, 17, 64, 19, 447, 13, 9, 270, 4, 91, 471, 35, 23, 407, 34, 38, 82, 321, 112, 195, 651, 7, 43, 431, 249, 171, 196, 311, 15, 66, 16, 633, 37, 94, 102, 23, 3, 214, 252, 256, 173, 316, 125, 96, 341, 71, 73, 338, 256, 165, 140, 108, 471, 434, 137, 642, 172, 51, 113, 67, 172, 93, 23, 318, 514, 50, 118, 245, 169, 14, 64, 40, 859, 95, 308, 65, 93, 42, 339, 46, 7, 96, 142, 36, 131, 60, 13, 12, 25, 31, 183, 94, 43, 241, 162, 26, 232, 120, 128, 118, 89, 164, 51, 29, 127, 177, 180, 95, 332, 284, 32, 802, 452, 25, 382, 187, 892, 432, 162, 126, 587, 342, 205, 170, 255, 73, 605, 579, 398, 305, 58, 110, 178, 244, 306, 178, 166, 28, 368, 224, 582, 135, 420, 618, 264, 234, 346, 223, 439, 399, 150, 655, 242, 248, 750, 199, 242, 277, 112, 163, 545, 359, 487, 322, 570, 64, 402, 412, 252, 116, 147, 109, 27, 197, 204, 251, 282, 455, 118, 390, 225, 382, 215, 373, 554, 371, 568, 289, 225, 405, 160, 414, 290, 109, 524, 406, 344, 188, 385, 33, 791, 261, 171, 475, 100, 183, 156, 564, 78, 395, 144, 497, 334, 45, 167, 79, 27, 520, 239, 449, 138, 347, 667, 572, 61, 278, 136, 375, 231, 320, 167, 304, 389, 185, 171, 109, 468, 243, 206, 210, 305, 160, 682, 514, 433, 152, 375, 1064, 48, 522, 139, 98, 191, 557, 127, 189, 372, 54, 515, 406, 370, 950, 549, 352, 319, 27, 489, 440, 636, 941, 153, 102, 268, 120, 190, 719, 451, 175, 539, 477, 279, 474, 17, 232, 221, 476, 174, 415, 545, 357, 368, 149, 94, 409, 218, 76, 87, 136, 114, 245, 596, 408, 335, 246, 511, 560, 438, 298, 351, 91, 22, 813, 108, 546, 248, 218, 629, 212, 223, 569, 611, 93, 399, 185, 427, 260, 20, 111, 354, 187, 150, 702, 316, 666, 541, 227, 558, 486, 207, 450, 224, 568, 222, 341, 81, 222, 386, 441, 484, 159, 289, 142, 372, 534, 157, 78, 337, 522, 70, 293, 318, 161, 325, 74, 194, 797, 130, 128, 70, 386, 657, 611, 105, 456, 230, 100, 61, 274, 358, 135, 249, 236, 247, 264, 279, 123, 345, 59, 397, 645, 448, 80, 192, 149, 190, 564, 292, 508, 359, 202, 152, 459, 200, 446, 293, 512, 103, 154, 229, 492, 145, 256, 828, 55, 296, 133, 147, 314, 220, 190, 481, 208, 290, 198, 146, 100, 202, 259, 295, 16, 505, 251, 86, 375, 618, 266, 891, 166, 159, 269, 850, 127, 397, 759, 494, 141, 567, 339, 119, 336, 162, 98, 265, 770, 423, 380, 346, 116, 402, 101, 628, 623, 286, 309, 107, 453, 406, 496, 200, 865, 720, 429, 187, 107, 609, 439, 90, 48, 330, 59, 87, 632, 323, 219, 101, 865, 203, 14, 74, 466, 462, 160, 448, 168, 474, 980, 396, 148, 244, 904, 438, 198, 982, 601, 199, 119, 300, 240, 702, 241, 258, 192, 291, 227, 34, 698, 78, 107, 123, 89, 704, 114, 274, 461, 151, 115, 576, 323, 201, 468, 271, 231, 92, 592, 220, 909, 829, 243, 480, 466, 345, 763, 404, 356, 86, 110, 210, 688, 353, 271, 740, 226, 352, 247, 288, 758, 338, 426, 235, 405, 625, 155, 146, 475, 491, 189, 177, 216, 962, 503, 216, 726, 381, 219, 183, 102, 332, 113, 155, 440, 922, 450, 379, 294, 301, 36, 80, 75, 875, 462, 547, 69, 330, 186, 527, 92, 138, 157, 169, 69, 143, 401, 24, 283, 41, 37, 472, 309, 117, 747, 342, 251, 300, 182, 216, 202, 266, 192, 217, 302, 660, 360, 663, 130, 355, 367, 47, 1103, 519, 811, 586, 488, 983, 652, 303, 201, 759, 860, 416, 585, 268, 428, 928, 819, 821, 379, 340, 493, 260, 752, 599, 314, 182, 444, 612, 369, 692, 311, 523, 622, 335, 259, 499, 225, 526, 409, 188, 709, 356, 606, 777, 222, 541, 327, 201, 176, 551, 544, 1008, 372, 628, 181, 523, 549, 476, 464, 240, 593, 181, 254, 223, 305, 285, 595, 217, 887, 550, 552, 278, 381, 621, 517, 953, 538, 265, 581, 313, 540, 366, 626, 647, 511, 467, 508, 890, 63, 976, 275, 312, 885, 598, 254, 180, 687, 196, 398, 146, 675, 380, 101, 443, 122, 85, 531, 347, 463, 167, 536, 724, 710, 288, 351, 232, 387, 424, 650, 363, 544, 540, 248, 279, 121, 479, 267, 218, 445, 485, 240, 737, 692, 1017, 331, 716, 1130, 207, 602, 274, 750, 261, 572, 131, 435, 672, 253, 729, 542, 739, 1062, 731, 619, 328, 65, 769, 502, 898, 966, 158, 211, 289, 193, 314, 784, 533, 396, 567, 497, 280, 696, 348, 290, 383, 636, 526, 470, 622, 541, 411, 286, 378, 561, 374, 194, 349, 166, 143, 390, 697, 533, 570, 304, 615, 709, 476, 679, 454, 287, 114, 904, 535, 786, 270, 308, 828, 302, 506, 732, 626, 533, 584, 186, 456, 495, 350, 317, 672, 343, 315, 919, 367, 820, 548, 296, 614, 635, 209, 543, 350, 733, 239, 376, 287, 344, 470, 563, 607, 319, 323, 473, 428, 677, 212, 263, 386, 567, 435, 328, 616, 255, 729, 147, 320, 855, 267, 426, 261, 458, 977, 670, 173, 478, 366, 112, 71, 419, 968, 139, 606, 292, 275, 463, 344, 671, 810, 77, 465, 755, 579, 179, 353, 357, 442, 599, 354, 805, 453, 407, 193, 510, 285, 513, 583, 645, 325, 173, 621, 573, 423, 479, 912, 130, 300, 227, 184, 391, 293, 204, 673, 282, 371, 324, 313, 228, 334, 343, 655, 42, 532, 559, 658, 484, 921, 373, 944, 329, 184, 302, 861, 205, 414, 771, 606, 312, 652, 503, 413, 415, 238, 449, 781, 874, 586, 544, 402, 468, 525, 155, 845, 714, 295, 564, 197, 509, 863, 640, 209, 986, 808, 691, 317, 355, 789, 779, 281, 141, 594, 336, 105, 682, 360, 299, 559, 876, 608, 315, 401, 632, 480, 161, 577, 284, 657, 1012, 481, 330, 388, 1011, 524, 423, 1019, 812, 416, 168, 322, 258, 710, 703, 1027, 195, 447, 259, 633, 990, 710, 215, 410, 458, 760, 174, 312, 605, 269, 206, 617, 534, 554, 497, 296, 393, 236, 784, 483, 1189, 892, 602, 788, 709, 382, 831, 537, 695, 99, 563, 424, 759, 432, 281, 795, 319, 422, 684, 331, 866, 377, 638, 247, 501, 711, 463, 475, 631, 507, 310, 298, 252, 1059, 757, 364, 785, 410, 233, 411, 236, 487, 339, 341, 473, 1022, 527, 515, 700, 380, 388, 414, 253, 913, 466, 773, 238, 638, 335, 896, 298, 310, 658, 461, 207, 205, 550, 29, 425, 141, 76, 649, 442, 322, 832, 730, 307, 385, 401, 268, 301, 311, 306, 291, 364, 864, 560, 840, 199, 358, 385, 179, 1142, 520, 986, 600, 712, 1018, 661, 365, 237, 769, 953, 517, 605, 396, 459, 991, 867, 899, 415, 700, 556, 324, 788, 639, 778, 226, 743, 685, 706, 883, 362, 970, 785, 387, 376, 734, 392, 730, 448, 250, 731, 387, 665, 1015, 243, 812, 391, 795, 346, 588, 737, 1077, 874, 933, 412, 817, 585, 550, 491, 273, 640, 208, 542, 338, 436, 895, 694, 257, 899, 583, 629, 327, 815, 744, 573, 1226, 727, 272, 607, 331, 1050, 594, 754, 716, 515, 524, 695, 1086, 297, 1177, 400, 678, 1004, 648, 294, 555, 780, 316, 486, 689, 679, 430, 136, 717, 233, 400, 646, 383, 530, 263, 574, 749, 790, 336, 377, 409, 609, 499, 686, 518, 595, 601, 334, 531, 197, 485, 348, 424, 701, 579, 500, 1147, 797, 1085, 404, 738, 1200, 253, 714, 427, 756, 303, 610, 313, 1399, 770, 455, 732, 796, 824, 1230, 927, 929, 397, 276, 794, 741, 957, 1052, 1002, 213, 392, 566, 461, 832, 798, 433, 590, 723, 718, 755, 878, 446, 615, 669, 776, 608, 659, 565, 443, 457, 407, 577, 631, 255, 365, 399, 152, 766, 814, 556, 640, 1137, 1000, 767, 745, 733, 1194, 529, 238, 1034, 789, 1314, 436, 493, 853, 492, 654, 809, 885, 636, 596, 270, 848, 774, 364, 512, 832, 411, 516, 927, 700, 857, 588, 703, 756, 758, 315, 574, 810, 885, 416, 600, 690, 417, 501, 626, 707, 581, 377, 916, 660, 808, 587, 265, 395, 613, 906, 381, 661, 310, 799, 148, 632, 941, 750, 578, 277, 1065, 1242, 1018, 326, 551, 459, 134, 99, 510, 1097, 198, 673, 531, 450, 697, 394, 749, 948, 193, 664, 965, 818, 454, 419, 556, 721, 742, 473, 886, 647, 694, 209, 906, 433, 674, 620, 666, 464, 446, 634, 728, 430, 630, 990, 435, 371, 534, 394, 467, 928, 326, 723, 490, 816, 699, 490, 530, 384, 361, 772, 374, 554, 619, 672, 613, 924, 677, 1079, 404, 367, 337, 898, 228, 418, 844, 766, 317, 680, 690, 566, 680, 333, 726, 960, 942, 637, 607, 452, 664, 698, 235, 942, 736, 368, 584, 362, 650, 871, 683, 328, 1141, 988, 715, 915, 495, 1084, 919, 613, 179, 888, 355, 144, 1243, 655, 551, 582, 993, 730, 340, 548, 774, 643, 469, 651, 392, 843, 1196, 590, 573, 545, 1211, 593, 439, 1027, 869, 586, 442, 762, 502, 758, 822, 1048, 254, 628, 417, 683, 996, 752, 384, 725, 676, 842, 360, 374, 688, 353, 549, 661, 648, 584, 624, 348, 530, 250, 1135, 667, 1298, 1033, 623, 1102, 715, 594, 888, 871, 833, 321, 634, 491, 766, 505, 297, 1024, 388, 460, 707, 735, 1023, 444, 1098, 629, 505, 807, 581, 543, 687, 598, 337, 434, 806, 1111, 761, 521, 826, 547, 257, 434, 412, 688, 577, 363, 839, 1187, 1306, 648, 808, 504, 760, 429, 309, 916, 503, 777, 403, 1076, 512, 1127, 592, 351, 692, 711, 474, 587, 558, 487, 498, 326, 164, 902, 456, 471, 836, 748, 469, 480, 537, 553, 507, 347, 490, 498, 420, 1010, 598, 1022, 283, 362, 958, 553, 1156, 712, 1108, 718, 753, 1067, 681, 398, 483, 903, 956, 698, 612, 578, 489, 1294, 990, 920, 592, 1113, 862, 464, 1435, 835, 788, 280, 957, 795, 743, 1108, 425, 1026, 879, 488, 701, 931, 610, 741, 1061, 282, 830, 413, 983, 1159, 1067, 1071, 437, 843, 506, 610, 890, 1133, 1034, 954, 452, 925, 785, 836, 620, 597, 722, 258, 858, 342, 455, 927, 706, 299, 1104, 660, 811, 333, 1173, 878, 858, 1336, 816, 457, 948, 563, 1054, 678, 764, 733, 565, 555, 873, 1150, 485, 1303, 496, 796, 1218, 823, 634, 624, 878, 686, 684, 879, 1100, 454, 154, 1002, 357, 822, 676, 740, 578, 350, 1124, 834, 876, 500, 486, 426, 663, 529, 947, 656, 621, 823, 361, 615, 421, 585, 417, 538, 707, 656, 861, 1236, 831, 1087, 508, 768, 1269, 292, 786, 478, 1043, 593, 765, 408, 1439, 806, 528, 801, 912, 882, 1348, 1050, 1077, 528, 349, 996, 799, 976, 1265, 1100, 674, 470, 617, 540, 847, 862, 457, 757, 841, 973, 921, 969, 539, 646, 699, 959, 654, 670, 787, 872, 559, 744, 1276, 666, 273, 569, 833, 191, 775, 896, 576, 935, 1231, 1046, 923, 804, 949, 1201, 572, 303, 1162, 827, 1346, 897, 612, 937, 599, 675, 992, 930, 644, 1151, 301, 1103, 1086, 482, 831, 1130, 472, 753, 1007, 852, 1054, 635, 705, 955, 823, 425, 596, 962, 908, 445, 880, 867, 478, 509, 653, 775, 591, 510, 1055, 798, 1021, 740, 294, 427, 679, 973, 484, 686, 369, 836, 410, 802, 1245, 883, 649, 431, 1102, 1267, 1262, 557, 1092, 837, 164, 881, 726, 1120, 273, 697, 1097, 609, 708, 663, 838, 985, 552, 968, 1042, 1044, 483, 520, 691, 736, 756, 521, 895, 779, 914, 266, 1356, 548, 742, 964, 888, 481, 877, 685, 791, 437, 696, 991, 825, 643, 708, 969, 683, 1080, 1001, 1012, 617, 1030, 734, 792, 1069, 504, 394, 864, 595, 676, 782, 695, 837, 1154, 819, 1104, 437, 413, 383, 913, 627, 624, 987, 1394, 449, 839, 825, 1054, 1180, 378, 1211, 1090, 1114, 804, 897, 558, 1032, 746, 246, 1051, 870, 958, 725, 536, 702, 1035, 971, 356, 1195, 1061, 827, 1090, 526, 1092, 1250, 1025, 231, 947, 659, 272, 1284, 802, 826, 902, 1040, 870, 345, 658, 822, 715, 1012, 872, 575, 945, 1232, 805, 720, 580, 1215, 854, 603, 1074, 1056, 991, 528, 1218, 642, 1060, 1010, 1203, 288, 978, 884, 762, 1118, 763, 430, 786, 922, 928, 886, 529, 706, 403, 1104, 693, 868, 815, 670, 366, 546, 378, 1151, 901, 1522, 1107, 671, 1333, 745, 724, 1230, 1073, 911, 429, 646, 611, 889, 746, 403, 1032, 616, 637, 1382, 767, 1083, 451, 1212, 803, 1318, 849, 662, 955, 712, 971, 571, 496, 977, 1145, 1160, 931, 830, 580, 359, 805, 668, 770, 771, 390, 882, 1329, 1572, 851, 829, 535, 944, 535, 373, 930, 669, 828, 565, 1219, 620, 1308, 793, 361, 938, 859, 482, 946, 1186, 742, 591, 846, 221, 906, 641, 631, 1068, 780, 536, 517, 844, 652, 721, 552, 523, 627, 525, 1186, 944, 1039, 794, 498, 1076, 654, 1167, 856, 1264, 890, 768, 1225, 691, 729, 543, 936, 1016, 1210, 656, 604, 608, 1324, 1035, 1095, 639, 1311, 1281, 877, 1519, 923, 974, 431, 1057, 903, 809, 1137, 569, 1243, 1118, 880, 720, 1102, 1168, 821, 1193, 432, 999, 555, 1013, 1375, 1200, 1080, 495, 982, 519, 630, 1066, 1164, 1091, 1006, 1039, 943, 1195, 1103, 665, 894, 908, 329, 1081, 951, 641, 1060, 793, 719, 1232, 713, 847, 395, 1213, 1038, 1041, 1587, 984, 752, 1125, 929, 1095, 988, 940, 845, 603, 623, 875, 1158, 772, 1503, 506, 816, 1500, 1007, 638, 633, 936, 703, 704, 1173, 1171, 724, 175, 1051, 604, 1174, 682, 819, 854, 384, 1196, 1249, 1029, 509, 504, 537, 722, 571, 1121, 739, 838, 1027, 363, 743, 570, 818, 546, 721, 736, 842, 905, 1372, 932, 1178, 863, 840, 1334, 299, 855, 499, 1293, 1202, 1061, 689, 1516, 866, 614, 862, 955, 981, 1511, 1153, 1256, 768, 501, 1044, 1282, 985, 1455, 1235, 711, 1001, 627, 641, 889, 914, 644, 877, 913, 1149, 1138, 1188, 557, 871, 787, 1015, 727, 731, 868, 892, 560, 778, 1331, 1025, 318, 619, 864, 203, 911, 1052, 705, 1079, 1461, 1090, 994, 1023, 1050, 1535, 625, 999, 1344, 933, 1498, 1045, 939, 1249, 650, 910, 1294, 951, 649, 1163, 418, 1133, 1089, 493, 1116, 1309, 561, 857, 1073, 1112, 1223, 909, 807, 989, 1053, 997, 813, 976, 1074, 527, 1070, 966, 775, 511, 1004, 800, 717, 933, 1120, 900, 1389, 922, 684, 440, 704, 1106, 668, 767, 757, 847, 936, 835, 1293, 893, 895, 647, 1269, 1480, 1304, 782, 1166, 952, 566, 1124, 846, 1203, 354, 893, 1200, 952, 792, 667, 1164, 1003, 718, 1002, 1139, 1163, 1096, 685, 769, 1003, 977, 532, 1128, 905, 926, 443, 1405, 576, 835, 1116, 1145, 562, 1063, 737, 883, 639, 790, 1021, 967, 772, 995, 1165, 754, 1422, 1583, 1075, 997, 1082, 748, 827, 1197, 516, 465, 1451, 645, 879, 809, 739, 855, 1155, 948, 1117, 460, 465, 791, 1098, 693, 673, 1087, 1400, 532, 910, 829, 1171, 1214, 400, 1221, 1603, 1323, 834, 965, 787, 1045, 918, 589, 1074, 1171, 1116, 744, 905, 931, 1176, 1005, 589, 1238, 1107, 972, 1115, 600, 1181, 1609, 1105, 521, 1158, 1049, 306, 1389, 804, 963, 971, 1199, 917, 716, 668, 973, 998, 1174, 903, 590, 1130, 1472, 841, 811, 597, 1399, 956, 719, 1301, 1083, 1044, 622, 1446, 1097, 1206, 1119, 1345, 604, 1324, 920, 1129, 1340, 798, 444, 980, 997, 1232, 1087, 884, 1093, 422, 1135, 909, 1026, 1055, 824, 462, 678, 945, 1234, 1149, 1542, 1177, 675, 1421, 779, 1013, 1486, 1388, 1191, 514, 1219, 760, 974, 773, 477, 1190, 784, 674, 1428, 778, 1257, 477, 1252, 901, 1352, 1037, 1224, 970, 813, 1009, 1162, 519, 1088, 1157, 1409, 1182, 1089, 755, 438, 1076, 725, 869, 900, 436, 1148, 1421, 1588, 956, 978, 749, 950, 932, 516, 1046, 814, 865, 588, 1303, 713, 1614, 1024, 421, 959, 897, 518, 987, 1275, 765, 887, 893, 333, 925, 732, 635, 1169, 910, 1434, 575, 959, 653, 850, 728, 583, 1093, 542, 1316, 1031, 1059, 1122, 642, 1121, 891, 1209, 925, 1299, 896, 932, 1288, 934, 984, 580, 1113, 1413, 1224, 964, 643, 773, 1337, 1663, 1341, 657, 1357, 1473, 1292, 1551, 970, 1209, 792, 1339, 1141, 1140, 1320, 616, 1383, 1126, 980, 1014, 1146, 1245, 859, 1298, 513, 1182, 662, 1014, 1562, 1297, 1151, 502, 1139, 874, 1259, 1645, 1169, 1242, 1072, 1412, 1115, 1275, 1466, 1239, 1038, 1184, 458, 1094, 1440, 810, 1352, 1339, 830, 1354, 801, 848, 671, 1300, 1147, 1047, 1625, 1117, 1046, 1327, 1047, 1237, 1101, 1018, 1016, 745, 1066, 1132, 1221, 841, 1512, 522, 853, 1535, 1248, 975, 694, 1143, 824, 1009, 1185, 1288, 908, 200, 1308, 904, 1665, 687, 843, 943, 1199, 1198, 1379, 1168, 571, 789, 630, 846, 602, 1342, 1350, 995, 1114, 408, 1043, 1304, 945, 751, 793, 741, 1072, 1006, 1401, 1331, 1296, 1152, 856, 1337, 321, 881, 937, 1318, 1535, 1560, 806, 1696, 924, 625, 994, 1058, 996, 1649, 1183, 1442, 1118, 901, 1094, 1408, 1016, 1653, 1259, 800, 1317, 677, 815, 894, 1017, 1278, 957, 1109, 1284, 1321, 1220, 947, 1383, 860, 1220, 783, 873, 979, 1025, 1228, 1007, 1417, 1231, 735, 783, 872, 492, 1028, 1244, 852, 1144, 1645, 1172, 1088, 1110, 1204, 1622, 738, 1146, 1513, 1106, 1564, 1079, 1021, 1436, 776, 917, 1467, 1051, 814, 1217, 812, 1174, 1271, 863, 1187, 1461, 644, 1308, 1154, 1263, 1225, 1121, 867, 1110, 1157, 1139, 989, 1033, 1270, 1163, 1170, 1037, 880, 803, 1098, 807, 968, 1446, 1235, 1064, 1547, 979, 842, 500, 838, 1398, 939, 916, 953, 920, 946, 851, 1428, 1210, 960, 762, 1456, 1519, 1384, 898, 1361, 995, 1100, 1508, 856, 1284, 553, 1330, 1249, 1258, 1020, 764, 1165, 1179, 1047, 1056, 1285, 1266, 1286, 853, 1397, 1515, 987, 547, 1296, 1215, 965, 489, 1444, 800, 849, 1300, 1242, 662, 1085, 818, 918, 748, 954, 1024, 1022, 954, 1109, 1218, 821, 1431, 1587, 1315, 1081, 1140, 754, 943, 1371, 1003, 840, 1475, 722, 1081, 1033, 1216, 1254, 1175, 1122, 1203, 728, 488, 1189, 1377, 1136, 907, 1267, 1416, 751, 1169, 1101, 1289, 1241, 597, 1322, 1625, 1332, 961, 985, 915, 1128, 1069, 764, 1175, 1177, 1156, 889, 1075, 1088, 1251, 1031, 738, 1523, 1229, 994, 1489, 637, 1185, 1651, 1112, 680, 1608, 1197, 513, 1538, 978, 1040, 1000, 1432, 1030, 887, 833, 1057, 1094, 1565, 1190, 696, 1178, 1556, 1045, 1307, 1294, 1436, 1096, 747, 1485, 1128, 1430, 664, 1653, 1180, 1597, 1167, 1452, 776, 1341, 1305, 1142, 1418, 849, 562, 1247, 998, 1391, 1161, 941, 1387, 912, 1149, 1078, 1029, 1141, 1197, 582, 701, 961, 1423, 1195, 1674, 1205, 964, 1633, 929, 1127, 1571, 1581, 1291, 681, 1272, 781, 981, 783, 765, 1295, 974, 1015, 1516, 873, 1324, 482, 1262, 1371, 1648, 1101, 1240, 1115, 837, 1048, 1301, 763, 1260, 1229, 1426, 1316, 1208, 963, 1083, 1125, 992, 882, 1034, 467, 1176, 1429, 1610, 1452, 1376, 753, 1184, 1239, 777, 1291, 1264, 1223, 659, 1378, 797, 1632, 1071, 575, 1099, 926, 801, 1042, 1322, 1111, 1234, 1112, 979, 962, 993, 713, 1271, 1008, 1533, 653, 999, 746, 876, 751, 1123, 1319, 693, 1354, 1209, 1207, 1159, 1250, 1192, 1385, 1350, 952, 1543, 1020, 1067, 1632, 1119, 1635, 1165, 1161, 1483, 1347, 983, 669, 796, 1412, 1684, 1374, 886, 1468, 1479, 1594, 1781, 1113, 1274, 969, 1343, 1403, 1261, 1440, 681, 1424, 1216, 1207, 1210, 1172, 1325, 935, 1414, 1123, 1287, 1158, 1032, 1589, 1554, 1326, 562, 1313, 949, 1296, 1760, 1260, 1552, 1129, 1422, 1258, 1542, 1525, 1253, 1089, 1255, 1131, 1220, 1652, 869, 1410, 1351, 1266, 1518, 868, 884, 1302, 1486, 1362, 1185, 1652, 1172, 1205, 1388, 1479, 1270, 1224, 1297, 1138, 817, 1170, 1214, 1240, 1153, 1551, 817, 915, 1553, 1319, 1496, 717, 1194, 850, 1091, 1256, 1541, 1039, 561, 1358, 938, 1707, 1557, 1368, 1160, 1342, 1404, 1515, 1435, 727, 790, 1396, 854, 891, 1783, 1365, 1271, 1183, 1400, 1205, 1367, 1068, 794, 1006, 803, 1485, 1164, 1422, 1502, 1334, 1359, 1215, 1698, 1042, 1204, 1028, 1458, 1550, 1600, 1111, 1700, 1132, 992, 1134, 1430, 1049, 1731, 1323, 1555, 1228, 1456, 1099, 1545, 1091, 1685, 1445, 857, 1612, 735, 1126, 946, 1168, 1399, 1222, 1192, 1373, 1575, 1317, 1073, 1506, 1143, 1440, 1438, 1263, 1105, 1327, 1256, 1126, 1619, 1265, 924, 961, 1023, 866, 1070, 1437, 1132, 1487, 1675, 1333, 1423, 1182, 1295, 1683, 939, 1154, 1617, 1212, 1665, 1414, 1107, 1534, 1282, 1402, 1485, 1096, 1059, 1495, 981, 1235, 1381, 1017, 1240, 1534, 875, 1561, 1279, 1354, 1353, 1396, 1243, 1547, 1356, 1166, 1181, 1343, 1285, 1247, 1255, 1357, 975, 919, 1318, 988, 1477, 1521, 1358, 1206, 1549, 1146, 1117, 1305, 1019, 1406, 982, 942, 1014, 1075, 1004, 860, 1512, 1241, 1053, 858, 1620, 1527, 1415, 1251, 1497, 1108, 1166, 1667, 967, 1434, 665, 1335, 1313, 1406, 1283, 902, 1362, 1358, 1501, 1222, 1427, 1280, 1309, 984, 1647, 1573, 1449, 618, 1328, 1310, 1120, 844, 1739, 1424, 1246, 1474, 1561, 699, 1277, 826, 1386, 1257, 1227, 1056, 1189, 975, 1125, 1329, 917, 1464, 1784, 1405, 1152, 1153, 935, 1092, 1464, 1040, 907, 1592, 1428, 1136, 1063, 1420, 1390, 1251, 1217, 1268, 1143, 708, 1603, 1407, 1160, 1207, 1340, 1488, 998, 1315, 1344, 1300, 1365, 1134, 1401, 1629, 1366, 1008, 1013, 1211, 1179, 1188, 825, 1262, 1393, 1469, 1173, 1077, 1248, 1417, 1095, 907, 1654, 1320, 1065, 1598, 799, 1601, 1656, 1190, 714, 1754, 1595, 651, 1647, 1063, 1397, 1157, 1481, 1237, 1060, 1482, 1287, 1192, 1618, 1394, 1259, 1558, 1635, 1162, 1377, 1803, 1492, 1476, 774, 1626, 1420, 1504, 689, 1687, 1372, 1616, 1199, 1471, 934, 1342, 1351, 1261, 1442, 923, 723, 1361, 1084, 1450, 1233, 1011, 1389, 1338, 1186, 1340, 1110, 1327, 1225, 690, 1483, 1064, 1443, 1258, 1697, 1213, 966, 1687, 1161, 1314, 1605, 1877, 1477, 747, 1280, 1028, 1138, 820, 782, 1560, 1038, 1592, 1517, 894, 1586, 568, 1276, 1379, 1753, 1230, 1749, 1122, 1458, 1080, 1526, 1411, 1309, 1332, 1430, 1381, 1255, 1648, 1248, 1267, 1459, 914, 1085, 1184, 1180, 1459, 1629, 1463, 1378, 845, 1343, 1415, 1037, 1292, 1336, 1431, 734, 1426, 1193, 1688, 1279, 940, 1313, 1036, 1155, 1099, 1406, 1490, 1326, 1556, 1069, 1005, 1142, 1010, 1273, 1312, 1546, 761, 1624, 1065, 921, 1055, 1134, 1518, 839, 1435, 1234, 1244, 1238, 1297, 1254, 1494, 1484, 1145, 1604, 1404, 1289, 1645, 1131, 1658, 1198, 1392, 1557, 1667, 1082, 972, 918, 1432, 1701, 1637, 1312, 1579, 1680, 1864, 1825, 1194, 1457, 1370, 1411, 1479, 1398, 1510, 1049, 1447, 1576, 1252, 1290, 1360, 1679, 1070, 1506, 1699, 1359, 1204, 1222, 1818, 1596, 1363, 834, 1383, 1513, 1499, 1766, 1646, 1629, 1328, 1423, 1460, 1640, 1923, 1302, 1216, 1364, 1369, 1233, 1739, 1031, 1624, 1505, 1434, 1630, 1451, 1196, 1548, 1527, 1454, 1520, 1707, 1407, 1467, 1561, 1604, 1319, 1543, 1456, 1374, 881, 1453, 1323, 1735, 1246, 1660, 1381, 1188, 1709, 1391, 1532, 771, 1264, 851, 1219, 1322, 1639, 1144, 960, 1615, 1136, 1732, 1690, 1371, 1433, 1377, 1459, 1571, 1447, 1058, 1245, 1451, 1053, 949, 1894, 1531, 1305, 1253, 1493, 1303, 1380, 1581, 1330, 1082, 1036, 1541, 1520, 1437, 1585, 1359, 1425, 1410, 1857, 1465, 1239, 1208, 1585, 1642, 1807, 1743, 1710, 1167, 1135, 1465, 1513, 1175, 1759, 1524, 1655, 1348, 1471, 1150, 1581, 1917, 1694, 1545, 911, 1622, 852, 1348, 1191, 1261, 1410, 1491, 1237, 1401, 1822, 1325, 1457, 1668, 1236, 1449, 1698, 1270, 1392, 1418, 1486, 1133, 1797, 1503, 1041, 1198, 1392, 1041, 1632, 1621, 1311, 1638, 1832, 1364, 1452, 1499, 1472, 1913, 1295, 1208, 1766, 1369, 1780, 1541, 1462, 1545, 1336, 1569, 1693, 1385, 1276, 1547, 1266, 1338, 1505, 1029, 1493, 1670, 958, 1572, 1607, 1446, 1634, 1530, 1414, 1704, 1552, 1441, 1653, 1480, 1310, 1712, 1347, 1403, 1408, 951, 1360, 1213, 1562, 1710, 1419, 1528, 1589, 1443, 1345, 1636, 1071, 1637, 1026, 1644, 1030, 1638, 1221, 1119, 1570, 1712, 1253, 989, 1742, 1790, 1537, 1619, 1508, 1150, 1326, 1926, 1470, 1702, 940, 1733, 1362, 1429, 1299, 938, 1606, 1453, 1568, 1335, 1738, 1564, 1312, 1275, 1718, 1575, 1528, 937, 1491, 1415, 1179, 900, 1843, 1471, 1345, 1536, 1573, 930, 1301, 1020, 1482, 1412, 1274, 1105, 1347, 1344, 1764, 1729, 1062, 1563, 1843, 1532, 1228, 1302, 1273, 1397, 1591, 1391, 1052, 1662, 1470, 1181, 1425, 1427, 1578, 1263, 1395, 1292, 1317, 899, 1808, 1539, 1650, 1231, 1376, 1515, 1001, 1330, 1603, 1331, 1419, 1369, 1444, 1709, 1374, 1068, 1019, 1306, 1298, 1293, 1011, 1831, 1502, 1590, 1238, 1148, 1269, 1555, 1114, 1036, 1740, 1325, 1405, 1670, 1062, 1773, 1688, 1335, 1476, 1827, 1723, 820, 1748, 1072, 1536, 1398, 1732, 1587, 1400, 1529, 1355, 1304, 1651, 1722, 1268, 1673, 1800, 1178, 1503, 1847, 1656, 1497, 1595, 1689, 1576, 1740, 963, 1822, 1393, 1743, 1246, 1499, 1106, 1356, 1387, 1367, 1745, 1009, 780, 1458, 1206, 1673, 1250, 1662, 1611, 1555, 1193, 1353, 1597, 1559, 1445, 1187, 1677, 1155, 1464, 1497, 1713, 1357, 1450, 1696, 1257, 1339, 1685, 1894, 1615, 1733, 1315, 1364, 1363, 1418, 1123, 1738, 1445, 1620, 1660, 1156, 1599, 926, 1507, 1640, 1763, 1289, 1791, 1648, 1601, 1321, 1544, 1577, 1683, 1376, 1543, 1540, 1361, 1666, 1273, 1433, 1504, 993, 1265, 1288, 1454, 1482, 1736, 1481, 1439, 1286, 1467, 1461, 1474, 1510, 1489, 1681, 934, 1643, 1606, 1791, 1491, 1341, 1429, 1127, 1227, 1299, 1600, 1904, 1395, 1588, 1084, 1057, 1183, 1252, 1283, 1478, 1611, 1320, 1851, 1355, 1223, 1147, 1403, 1576, 1035, 1460, 1260, 1641, 1538, 1368, 1475, 1511, 1672, 1329, 1764, 1426, 1353, 1691, 1214, 1915, 1247, 1538, 1658, 1716, 1689, 1000, 986, 1884, 1975, 1730, 1899, 1623, 1834, 1981, 1952, 1473, 1490, 1529, 1557, 1748, 1544, 1617, 1720, 1690, 1667, 1630, 1641, 1678, 1750, 1367, 1525, 1786, 1447, 1395, 1390, 1826, 1598, 1427, 861, 1582, 1658, 1878, 1768, 1651, 1699, 1532, 1498, 1529, 1765, 1939, 1384, 1723, 1872, 1758, 1438, 1742, 1093, 1657, 1759, 1650, 1634, 1519, 1290, 1569, 1573, 1591, 1643, 1928, 1411, 1786, 1582, 1661, 1521, 1657, 1609, 1633, 972, 1468, 1644, 1776, 1388, 1692, 1409, 1278, 1812, 1631, 1873, 1310, 1272, 1109, 1333, 1522, 1722, 1612, 1048, 1741, 1674, 1755, 1711, 1568, 1437, 1484, 1567, 1746, 1583, 1148, 1307, 1570, 1314, 950, 1906, 1654, 1379, 1494, 1518, 1455, 1393, 1703, 1390, 1606, 1226, 1669, 1580, 1692, 1719, 1366, 1438, 1433, 1982, 1514, 1676, 1609, 1742, 1690, 1819, 1763, 1730, 1321, 1566, 2031, 1680, 1741, 1839, 1762, 1925, 1536, 1524, 1283, 1723, 1924, 1706, 1558, 1375, 1758, 1417, 1691, 1350, 1727, 1475, 1537, 1457, 1506, 1917, 1386, 1695, 1753, 1355, 1756, 1775, 1613, 1563, 1425, 1488, 1176, 1827, 1556, 1131, 1349, 1448, 1281, 1749, 1664, 1572, 1744, 1860, 1813, 1762, 1642, 1689, 1928, 1570, 1878, 1890, 1739, 1809, 1799, 1663, 1591, 1495, 1695, 1762, 1580, 1306, 1879, 1462, 1413, 1637, 1078, 1567, 1785, 1078, 1659, 1801, 1530, 1769, 1579, 1549, 1747, 1682, 1796, 1668, 1727, 1822, 1836, 1378, 1551, 1501, 1810, 1478, 1278, 1574, 1764, 1533, 1627, 1714, 1489, 1480, 1726, 1584, 1643, 1387, 1655, 1058, 1720, 1370, 1595, 1795, 1832, 1843, 1212, 1871, 1840, 1886, 1831, 1720, 1272, 1765, 1956, 1496, 1855, 1144, 1830, 1404, 1593, 1507, 967, 1768, 1671, 1842, 1469, 1829, 1593, 1621, 1516, 1763, 1612, 1982, 1124, 1613, 1715, 1375, 1311, 1844, 1509, 1448, 1542, 1660, 1005, 1490, 1408, 1620, 1707, 1277, 1568, 1373, 1887, 1827, 1778, 1510, 1782, 1886, 1537, 1424, 1402, 1282, 1496, 1681, 1649, 1286, 1858, 1566, 1622, 1972, 1562, 1868, 1316, 1754, 1725, 1559, 1086, 1873, 1594, 1792, 1351, 1579, 1889, 1043, 1380, 1789, 1588, 1481, 1487, 1650, 1717, 1602, 1413, 1226, 1370, 1368, 1346, 1493, 1902, 1554, 1713, 1564, 1244, 1432, 1597, 1328, 1285, 1828, 1484, 1466, 1719, 1550, 1909, 1854, 1582, 1596, 1903, 1751, 1530, 1905, 1227, 1771, 1605, 1807, 1777, 1738, 1592, 1460, 1507, 1708, 1745, 1385, 1686, 1869, 1277, 1517, 1867, 1776, 1846, 1809, 1803, 1674, 1748, 1191, 1837, 1420, 1754, 1274, 1644, 1201, 1366, 1450, 1402, 1757, 1140, 1500, 1465, 1509, 1793, 1352, 1804, 1702, 1560, 1431, 1549, 1679, 1769, 1615, 1229, 1740, 1775, 1534, 1498, 1757, 1416, 1567, 1711, 1360, 1472, 1705, 1923, 1782, 1746, 1767, 1575, 1531, 1628, 1772, 1868, 1771, 1628, 1719, 1287, 1623, 1900, 1709, 1703, 1840, 1382, 1841, 1808, 1860, 1788, 1652, 1687, 1810, 1488, 1661, 1867, 1476, 1785, 1646, 1468, 1611, 1159, 1492, 1291, 1463, 1716, 1778, 1669, 1448, 1539, 1633, 1511, 1523, 1672, 1821, 1718, 1349, 1875, 1659, 1835, 1558, 1520, 1670, 1639, 1540, 1885, 1779, 1972, 1531, 1874, 1627, 1202, 1639, 1553, 1540, 1539, 1646, 1439, 1856, 1444, 1279, 1241, 1952, 1701, 1280, 1616, 1332, 1692, 1664, 1373, 1781, 1733, 1995, 1571, 1777, 1593, 1578, 1869, 1233, 1916, 1504, 1849, 1704, 1729, 1896, 1953, 1449, 1899, 2007, 1744, 2003, 1875, 1935, 2016, 1993, 1527, 1788, 1734, 1726, 1823, 1636, 1619, 1734, 1755, 1829, 1773, 1799, 1700, 1947, 1938, 1647, 1789, 1550, 1396, 1590, 1964, 1951, 1634, 1066, 1856, 1717, 1988, 1791, 1664, 1977, 1544, 1715, 1563, 1801, 1988, 1725, 1815, 1921, 1897, 1442, 1831, 1217, 1752, 1866, 1861, 1659, 1706, 1724, 1678, 1714, 1724, 1958, 2036, 1487, 1978, 1657, 1997, 1800, 1895, 1708, 1811, 1678, 1705, 1962, 1927, 1699, 1694, 1625, 1501, 1844, 1686, 1958, 1614, 1307, 1129, 1407, 1683, 1835, 1800, 1152, 1793, 1879, 1820, 1747, 1598, 1922, 1553, 1768, 1811, 1838, 1290, 1953, 1781, 1610, 1626, 1936, 1751, 1665, 1584, 1823, 1816, 1758, 1932, 1454, 1793, 1436, 1817, 1675, 1697, 1927, 1655, 1546, 1677, 2003, 1666, 1735, 1811, 1808, 1813, 1834, 1850, 1821, 1565, 1975, 2045, 1816, 1809, 1951, 1862, 2048, 1911, 1686, 1441, 1878, 1976, 1865, 1906, 1608, 1871, 1469, 1803, 1932, 1798, 1862, 1881, 1577, 1802, 1979, 1455, 1977, 1820, 1495, 1816, 1907, 1784, 1774, 1789, 1743, 1533, 1830, 1684, 1201, 1548, 1566, 1334, 1776, 1724, 1752, 1880, 1908, 1863, 1898, 1925, 1693, 2033, 1799, 1910, 1893, 1928, 1833, 1841, 1706, 1801, 1599, 1737, 1934, 1688, 2035, 1885, 1796, 1807, 1881, 1419, 1901, 1948, 1137, 1685, 1848, 1624, 1829, 1868, 1630, 1819, 1772, 1946, 1787, 1805, 1941, 1854, 1554, 1722, 1729, 1877, 1863, 1736, 1626, 1918, 1631, 1628, 1986, 1616, 1679, 1820, 1869, 1756, 1662, 1876, 1380, 1815, 1914, 1680, 1956, 1870, 1947, 1421, 1886, 1936, 1911, 1918, 1728, 1346, 1769, 2021, 1601, 1912, 1548, 1835, 1502, 1605, 1927, 1372, 1865, 1673, 1891, 1494, 1882, 1779, 1814, 1940, 1806, 1759, 2011, 1441, 1623, 1846, 1514, 1663, 2033, 1552, 1819, 1574, 1850, 1671, 1702, 1757, 1756, 1836, 1384, 1980, 1640, 2038, 2006, 1794, 1805, 1785, 1955, 1580, 1930, 1583, 1526, 1523, 1833, 1725, 1462, 1883, 1682, 1794, 1995, 1892, 1874, 1349, 1818, 1730, 1604, 1170, 1890, 1777, 1806, 1701, 1589, 1911, 1254, 1526, 1942, 1825, 1514, 1966, 1780, 1864, 1671, 1817, 1677, 1443, 1855, 1569, 1922, 1934, 1712, 1931, 1765, 1888, 1463, 1627, 1505, 1492, 1870, 1590, 1565, 1922, 1698, 1956, 1985, 2006, 1635, 1931, 1899, 1600, 1973, 1268, 1823, 1710, 1867, 1916, 1804, 1642, 1466, 1767, 1832, 1996, 1672, 1824, 1921, 1924, 1838, 1904, 1908, 1861, 1960, 1998, 1728, 1760, 1394, 1993, 1546, 1974, 1525, 1847, 1202, 1613, 1453, 1602, 1826, 1875, 1594, 1596, 1753, 1970, 1478, 2055, 1853, 1713, 1474, 1797, 1682, 1943, 1745, 1830, 1814, 1897, 1621, 1817, 1802, 1617, 1649, 1978, 1500, 1483, 1804, 2040, 1983, 1775, 1893, 1636, 1896, 1774, 1784, 1903, 1782, 1783, 1852, 1894, 1770, 1924, 2020, 1926, 1929, 1714, 2009, 1989, 1865, 1898, 1737, 1945, 1847, 1696, 1767, 1907, 1715, 1849, 1967, 1694, 1747, 1337, 1608, 1363, 1676, 1734, 1859, 1755, 1470, 1584, 1957, 1919, 1528, 1788, 1900, 1741, 1508, 1971, 1749, 1937, 1970, 1941, 1794, 1693, 1721, 1991, 1915, 1997, 1824, 1942, 1996, 1236, 1669, 1887, 1654, 1982, 1898, 1761, 1883, 1700, 1521, 1681, 2011, 1751, 1281, 1684, 1607, 1845, 1860, 1524, 1844, 1901, 1999, 1760, 1940, 1705, 1736, 1987, 1721, 2033, 2024, 1990, 2047, 1965, 2018, 2044, 1473, 1920, 2030, 1968, 2045, 2025, 1995, 2054, 2017, 1559, 1876, 1891, 1871, 2013, 1949, 1821, 1892, 1834, 1946, 1778, 1880, 1864, 2042, 2016, 2026, 1945, 2031, 1574, 1853, 1980, 2034, 2056, 2012, 1912, 1812, 2031, 1836, 1992, 2058, 1941, 1814, 2007, 2051, 2048, 2044, 1880, 1926, 2047, 1761, 1839, 1365, 1772, 1986, 1985, 1905, 2060, 1909, 1857, 1944, 1826, 2000, 2050, 2023, 2020, 1931, 2023, 2043, 2005, 1967, 1872, 1907, 1944, 1981, 1965, 1999, 1711, 1916, 1517, 1958, 1954, 2023, 1961, 2064, 1798, 1577, 1930, 1896, 1859, 1382, 1987, 2039, 2037, 1787, 1666, 1984, 1602, 1933, 2008, 2057, 1338, 1976, 2038, 1971, 1950, 1954, 1991, 1828, 1695, 1845, 1873, 1889, 2037, 1641, 1961, 1731, 1884, 1881, 1914, 1978, 1783, 1925, 1882, 2010, 2062, 1846, 1921, 2029, 2046, 1910, 2026, 1953, 1607, 2063, 2059, 2000, 1884, 2008, 2014, 2052, 2015, 1848, 1716, 2003, 2036, 2006, 1932, 1973, 1976, 1522, 2028, 2059, 1917, 1947, 2027, 1954, 1964, 2059, 2035, 1999, 1910, 1893, 1877, 1933, 1934, 2019, 1858, 1990, 2037, 1876, 1903, 1792, 1966, 2025, 1509, 1853, 1908, 1837, 2044, 1914, 1938, 1913, 2004, 1824, 2047, 1856, 1938, 2032, 2022, 1870, 1912, 1779, 2039, 2049, 1761, 1983, 1950, 2054, 2002, 1959, 1848, 1919, 1790, 1993, 1967, 1900, 1718, 1897, 2019, 2051, 2053, 1838, 1930, 1918, 2015, 2036, 1904, 1962, 1890, 1852, 1845, 2009, 2050, 2004, 2032, 1883, 2057, 2028, 2040, 2056, 1851, 1737, 1939, 1872, 1939, 1975, 1988, 1676, 1919, 1994, 2019, 1984, 1885, 2005, 1812, 2008, 2040, 1957, 2028, 1842, 2032, 2039, 2062, 1828, 1992, 1746, 1841, 1980, 1940, 1994, 1416, 1937, 1866, 1996, 1866, 1929, 2013, 1815, 2064, 1959, 2012, 2022, 1735, 1727, 1950, 1981, 1991, 2043, 1929, 1920, 1578, 1859, 1960, 1949, 1852, 1955, 1966, 2018, 2063, 1656, 2055, 2041, 1969, 2046, 1905, 2017, 1726, 1943, 1717, 2009, 1802, 2062, 1750, 1675, 1990, 1963, 1795, 2061, 1998, 2042, 1770, 2049, 1862, 1668, 2056, 2000, 1987, 2002, 1797, 1882, 1963, 1512, 1708, 1949, 1901, 1935, 1997, 1971, 2017, 2054, 1920, 1691, 1585, 2001, 2005, 1963, 2015, 1933, 2026, 1909, 1913, 1704, 1798, 1962, 1610, 2024, 1969, 1810, 1994, 1703, 2055, 2021, 2030, 2024, 1986, 1906, 1825, 2002, 1770, 1855, 1837, 2014, 2010, 1849, 1697, 1661, 1863, 1935, 2052, 1957, 2058, 1937, 2061, 2035, 2045, 1984, 1888, 1965, 2058, 1854, 2007, 1842, 2060, 1888, 1989, 1599, 2014, 1638, 2027, 1731, 2012, 1891, 1936, 1614, 1618, 1806, 2030, 1586, 2057, 1968, 1974, 1477, 1959, 1840, 1973, 1970, 1955, 1951, 1998, 1985, 1892, 1818, 1874, 1961, 2046, 1989, 1960, 2041, 2049, 2001, 1948, 2048, 1983, 1944, 1790, 2042, 2051, 1992, 1923, 2041, 1952, 1972, 1945, 2029, 1948, 1974, 1943, 2038, 2050, 1942, 1968, 1805, 1977, 2004, 1752, 1787, 1915, 1732, 2063, 2021, 1766, 1946, 1618, 1858, 2025, 1857, 1773, 1895, 1833, 1887, 1744, 1979, 2010, 1850, 2061, 2016, 1780, 1586, 2027, 1969, 2034, 1979, 2018, 1813, 1839, 1902, 2013, 2011, 2052, 1851, 2029, 2064, 1386, 1750, 1902, 1771, 2034, 2001, 1795, 2053, 1792, 1631, 1964, 2053, 1796, 1409, 1774, 1721, 1889, 1879, 1728, 2020, 2043, 2060, 1895, 2022, 1861, 1786 +}; + +uint16_t H_cols[] = { +208, 242, 84, 114, 314, 135, 349, 90, 64, 57, 26, 52, 16, 142, 120, 244, 167, 164, 133, 179, 22, 180, 413, 161, 224, 121, 57, 22, 394, 17, 9, 54, 84, 20, 98, 311, 322, 308, 86, 91, 77, 41, 110, 192, 18, 11, 210, 133, 248, 276, 389, 100, 37, 4, 239, 15, 32, 15, 7, 10, 109, 82, 19, 50, 137, 278, 43, 181, 89, 206, 113, 285, 10, 95, 12, 180, 23, 93, 100, 124, 200, 130, 81, 149, 6, 251, 181, 227, 156, 215, 194, 284, 206, 177, 171, 174, 40, 136, 187, 89, 98, 156, 44, 30, 48, 78, 349, 126, 56, 3, 212, 43, 111, 183, 63, 54, 35, 63, 333, 158, 96, 100, 270, 38, 97, 4, 139, 163, 67, 251, 139, 42, 214, 117, 26, 98, 132, 105, 13, 61, 330, 223, 183, 95, 295, 95, 55, 29, 65, 35, 75, 130, 8, 98, 344, 46, 239, 155, 131, 75, 246, 3, 44, 260, 199, 21, 99, 118, 76, 8, 87, 271, 257, 171, 98, 44, 255, 17, 276, 91, 50, 21, 90, 262, 118, 208, 214, 35, 140, 159, 58, 277, 158, 180, 53, 93, 58, 264, 40, 98, 4, 284, 183, 24, 7, 123, 133, 57, 223, 124, 156, 202, 34, 324, 67, 452, 63, 123, 303, 303, 169, 40, 32, 24, 32, 5, 220, 218, 103, 222, 113, 111, 100, 30, 146, 266, 4, 195, 14, 55, 145, 37, 40, 18, 184, 188, 267, 38, 116, 35, 60, 53, 133, 58, 9, 296, 63, 57, 30, 17, 86, 157, 105, 29, 73, 285, 122, 9, 31, 199, 347, 73, 55, 135, 86, 2, 42, 67, 119, 21, 351, 35, 213, 173, 61, 176, 194, 109, 72, 77, 273, 133, 244, 90, 313, 220, 27, 192, 63, 299, 208, 202, 3, 66, 14, 19, 127, 68, 348, 246, 26, 87, 75, 20, 215, 93, 212, 180, 149, 114, 133, 48, 235, 17, 247, 257, 42, 149, 57, 363, 75, 334, 67, 97, 29, 109, 241, 59, 332, 15, 228, 6, 186, 81, 271, 31, 103, 122, 150, 105, 110, 92, 277, 213, 358, 37, 100, 129, 46, 367, 118, 26, 115, 211, 3, 77, 217, 23, 24, 145, 70, 48, 68, 179, 112, 30, 110, 177, 14, 97, 68, 66, 103, 105, 83, 231, 29, 383, 45, 64, 42, 32, 201, 269, 67, 9, 149, 3, 34, 86, 373, 51, 409, 130, 39, 80, 177, 118, 34, 248, 175, 50, 37, 76, 14, 7, 122, 49, 262, 27, 79, 102, 295, 113, 26, 111, 135, 10, 356, 97, 21, 2, 129, 451, 140, 60, 42, 191, 33, 152, 25, 279, 99, 22, 124, 168, 305, 34, 104, 224, 154, 50, 71, 97, 60, 209, 73, 57, 10, 322, 159, 375, 104, 17, 273, 374, 81, 121, 160, 157, 411, 88, 236, 166, 88, 53, 164, 135, 36, 375, 291, 211, 4, 233, 84, 94, 47, 29, 10, 306, 54, 183, 16, 128, 42, 86, 96, 488, 31, 109, 150, 42, 332, 110, 315, 44, 321, 82, 109, 235, 80, 212, 35, 128, 80, 215, 7, 115, 44, 102, 281, 86, 27, 79, 280, 33, 227, 142, 113, 104, 102, 281, 161, 238, 197, 106, 111, 72, 163, 76, 41, 58, 4, 46, 45, 122, 281, 219, 52, 53, 45, 66, 264, 69, 37, 16, 138, 221, 176, 176, 98, 42, 75, 92, 80, 158, 163, 71, 26, 49, 109, 108, 70, 85, 378, 186, 178, 9, 12, 4, 74, 25, 65, 207, 8, 339, 5, 45, 205, 163, 234, 14, 56, 77, 62, 185, 55, 89, 19, 228, 117, 113, 80, 9, 8, 38, 74, 10, 112, 32, 205, 8, 242, 142, 119, 26, 158, 28, 148, 54, 69, 28, 81, 91, 142, 78, 158, 49, 66, 45, 179, 249, 91, 90, 219, 153, 339, 90, 14, 56, 60, 392, 9, 162, 274, 102, 79, 89, 206, 114, 365, 2, 232, 172, 36, 8, 14, 317, 173, 65, 2, 37, 112, 273, 38, 179, 107, 244, 9, 173, 67, 141, 265, 156, 96, 102, 158, 77, 96, 331, 2, 102, 302, 94, 23, 93, 92, 408, 95, 229, 2, 25, 326, 62, 82, 166, 185, 7, 170, 15, 30, 216, 93, 94, 186, 24, 124, 268, 36, 108, 156, 448, 65, 134, 356, 79, 91, 165, 63, 30, 123, 56, 164, 97, 348, 262, 72, 294, 3, 33, 36, 143, 79, 31, 158, 124, 46, 131, 115, 103, 33, 280, 22, 69, 80, 343, 386, 295, 107, 39, 122, 18, 215, 78, 166, 136, 163, 222, 5, 405, 196, 253, 401, 78, 138, 184, 190, 131, 5, 141, 91, 84, 10, 210, 184, 171, 39, 20, 283, 92, 337, 257, 172, 160, 28, 134, 170, 18, 110, 108, 85, 21, 62, 122, 23, 10, 128, 161, 152, 156, 65, 249, 124, 191, 282, 139, 220, 238, 24, 60, 66, 41, 196, 185, 68, 72, 51, 121, 12, 218, 13, 101, 89, 93, 298, 293, 197, 201, 332, 36, 128, 160, 182, 42, 19, 53, 259, 116, 331, 131, 84, 125, 43, 285, 79, 112, 66, 66, 288, 93, 93, 158, 87, 104, 134, 131, 156, 58, 33, 6, 42, 16, 130, 182, 354, 141, 12, 65, 60, 1, 169, 175, 82, 44, 82, 108, 17, 69, 28, 29, 80, 145, 25, 66, 88, 14, 64, 290, 160, 46, 113, 1, 251, 55, 61, 185, 199, 153, 13, 237, 150, 269, 5, 100, 126, 243, 312, 56, 219, 203, 156, 144, 164, 161, 87, 236, 203, 10, 216, 13, 166, 239, 19, 141, 51, 284, 61, 11, 75, 205, 31, 128, 49, 2, 33, 5, 135, 100, 194, 78, 154, 245, 51, 321, 121, 160, 114, 74, 44, 113, 59, 259, 6, 49, 144, 6, 22, 214, 171, 98, 181, 225, 368, 8, 274, 154, 262, 234, 21, 19, 352, 9, 165, 20, 90, 85, 255, 367, 174, 29, 145, 43, 1, 3, 153, 10, 280, 77, 221, 12, 11, 142, 370, 143, 116, 145, 223, 330, 36, 9, 157, 99, 271, 88, 291, 49, 89, 47, 94, 394, 344, 305, 38, 30, 39, 6, 129, 1, 242, 268, 200, 298, 182, 297, 175, 27, 117, 135, 108, 246, 60, 38, 225, 48, 12, 124, 229, 55, 50, 311, 70, 133, 119, 151, 199, 73, 70, 98, 26, 76, 99, 154, 112, 76, 236, 273, 22, 109, 206, 61, 34, 146, 292, 132, 254, 42, 1, 121, 310, 33, 41, 49, 168, 226, 247, 459, 47, 211, 187, 41, 58, 8, 388, 359, 129, 83, 129, 190, 55, 189, 48, 258, 60, 58, 13, 205, 263, 232, 151, 96, 77, 31, 53, 64, 174, 197, 200, 25, 93, 191, 139, 217, 5, 117, 51, 212, 72, 28, 2, 236, 114, 320, 35, 106, 74, 28, 425, 282, 49, 132, 2, 82, 47, 143, 142, 100, 25, 79, 43, 24, 23, 399, 92, 97, 290, 31, 69, 109, 165, 83, 41, 98, 84, 195, 319, 347, 222, 37, 39, 104, 5, 196, 207, 47, 4, 223, 141, 32, 47, 81, 96, 31, 68, 101, 145, 177, 85, 129, 271, 334, 224, 36, 117, 56, 70, 410, 212, 87, 298, 361, 160, 164, 34, 19, 52, 66, 310, 4, 105, 40, 180, 137, 263, 37, 73, 237, 29, 135, 20, 7, 336, 197, 68, 2, 131, 28, 60, 88, 94, 58, 83, 38, 218, 7, 1, 71, 296, 149, 355, 146, 179, 64, 2, 418, 155, 127, 76, 348, 54, 83, 251, 48, 27, 185, 32, 84, 4, 89, 107, 360, 257, 29, 54, 318, 56, 95, 295, 51, 45, 47, 24, 256, 173, 92, 154, 63, 255, 321, 132, 76, 116, 92, 308, 20, 52, 178, 292, 87, 216, 275, 16, 152, 151, 165, 226, 276, 36, 1, 333, 30, 428, 17, 136, 11, 192, 45, 40, 34, 268, 68, 292, 54, 85, 120, 116, 206, 92, 99, 213, 91, 15, 14, 43, 112, 305, 319, 157, 136, 76, 25, 141, 95, 82, 11, 32, 41, 74, 49, 301, 122, 128, 338, 94, 129, 265, 71, 11, 109, 22, 328, 13, 105, 22, 196, 240, 198, 7, 146, 181, 115, 62, 61, 218, 64, 170, 222, 15, 99, 36, 31, 258, 69, 41, 56, 60, 129, 33, 103, 57, 21, 103, 127, 165, 13, 39, 328, 105, 228, 107, 120, 86, 98, 27, 54, 205, 167, 244, 74, 238, 38, 89, 5, 120, 329, 37, 37, 278, 24, 140, 118, 127, 203, 23, 106, 286, 243, 72, 152, 86, 61, 22, 11, 6, 34, 256, 269, 158, 175, 211, 317, 253, 50, 50, 27, 130, 454, 41, 250, 267, 144, 303, 11, 104, 63, 18, 124, 104, 58, 140, 25, 151, 58, 239, 286, 155, 217, 27, 182, 10, 398, 65, 190, 81, 69, 119, 78, 20, 136, 106, 51, 188, 200, 350, 303, 133, 53, 73, 15, 158, 262, 150, 192, 10, 289, 162, 362, 234, 232, 16, 225, 334, 294, 6, 105, 125, 68, 72, 176, 239, 20, 163, 353, 118, 117, 170, 90, 258, 50, 45, 88, 87, 128, 85, 4, 62, 34, 268, 258, 183, 25, 146, 85, 44, 133, 107, 140, 87, 64, 18, 70, 76, 95, 309, 147, 34, 308, 19, 237, 21, 217, 115, 49, 177, 201, 88, 149, 163, 5, 325, 455, 96, 52, 77, 24, 152, 130, 207, 67, 220, 36, 18, 48, 88, 40, 148, 179, 6, 155, 19, 138, 74, 39, 51, 198, 141, 142, 106, 103, 67, 111, 107, 186, 68, 37, 166, 28, 94, 289, 15, 126, 121, 43, 108, 117, 128, 406, 71, 333, 39, 38, 69, 313, 267, 17, 249, 40, 351, 40, 202, 138, 262, 105, 324, 75, 267, 123, 141, 156, 78, 112, 408, 97, 173, 91, 99, 239, 25, 376, 25, 254, 185, 157, 15, 61, 71, 113, 237, 237, 48, 29, 89, 1, 79, 41, 3, 24, 13, 187, 96, 52, 30, 137, 70, 82, 1, 47, 34, 444, 146, 63, 47, 59, 154, 115, 129, 298, 61, 3, 64, 85, 75, 244, 12, 47, 101, 103, 7, 169, 125, 213, 271, 378, 271, 100, 126, 134, 131, 31, 32, 16, 310, 222, 95, 12, 154, 89, 391, 205, 8, 27, 1, 85, 192, 85, 117, 140, 127, 132, 35, 31, 12, 263, 121, 6, 81, 65, 71, 78, 88, 140, 85, 227, 347, 68, 50, 7, 44, 215, 128, 26, 2, 96, 55, 66, 54, 22, 161, 258, 7, 13, 124, 101, 265, 21, 83, 233, 203, 274, 59, 354, 99, 59, 139, 13, 377, 107, 102, 23, 184, 32, 115, 61, 169, 320, 27, 171, 293, 57, 62, 46, 58, 147, 139, 235, 52, 46, 375, 46, 218, 319, 368, 61, 29, 174, 172, 83, 325, 29, 200, 198, 18, 303, 114, 173, 213, 35, 102, 20, 35, 211, 46, 180, 99, 301, 250, 208, 178, 93, 30, 76, 52, 165, 159, 372, 225, 278, 138, 136, 145, 231, 79, 44, 137, 50, 55, 119, 125, 39, 138, 101, 25, 166, 23, 192, 18, 39, 178, 116, 28, 178, 59, 188, 198, 16, 96, 46, 186, 108, 59, 255, 199, 258, 252, 88, 118, 134, 383, 150, 5, 139, 239, 228, 38, 227, 263, 43, 67, 175, 97, 188, 63, 147, 189, 17, 154, 62, 370, 219, 1, 198, 22, 56, 90, 318, 15, 20, 171, 45, 100, 30, 126, 131, 234, 11, 207, 254, 299, 349, 120, 196, 21, 26, 170, 114, 77, 8, 57, 190, 11, 214, 212, 345, 179, 225, 64, 114, 80, 185, 66, 138, 149, 43, 190, 127, 3, 3, 153, 222, 210, 11, 56, 104, 53, 153, 130, 56, 83, 71, 274, 95, 74, 121, 106, 173, 16, 114, 270, 33, 53, 267, 49, 332, 306, 68, 35, 28, 32, 213, 24, 113, 40, 18, 9, 89, 294, 250, 256, 70, 208, 291, 91, 82, 314, 39, 7, 181, 78, 13, 301, 405, 112, 316, 156, 393, 12, 110, 48, 73, 166, 39, 17, 132, 204, 104, 63, 62, 1, 45, 393, 5, 115, 47, 18, 248, 16, 272, 75, 317, 84, 70, 342, 207, 14, 191, 77, 154, 12, 107, 230, 132, 280, 42, 23, 147, 149, 17, 18, 8, 174, 73, 261, 197, 72, 4, 15, 34, 163, 159, 136, 12, 36, 196, 3, 40, 167, 71, 101, 111, 100, 237, 300, 32, 76, 9, 14, 137, 6, 53, 202, 71, 52, 148, 219, 17, 299, 41, 108, 48, 143, 65, 316, 133, 142, 92, 296, 323, 150, 211, 361, 261, 422, 167, 212, 195, 50, 317, 406, 372, 360, 314, 399, 203, 136, 211, 56, 195, 436, 229, 489, 295, 101, 109, 487, 184, 87, 279, 233, 399, 176, 470, 433, 364, 197, 115, 194, 314, 423, 246, 98, 401, 291, 268, 272, 357, 458, 298, 327, 21, 298, 299, 225, 220, 272, 51, 177, 93, 84, 403, 150, 336, 275, 236, 476, 243, 261, 373, 330, 248, 310, 365, 155, 240, 144, 276, 229, 292, 99, 175, 101, 317, 365, 297, 404, 260, 333, 417, 462, 434, 474, 444, 119, 309, 261, 260, 344, 435, 80, 123, 257, 183, 358, 197, 78, 16, 264, 260, 459, 195, 390, 147, 217, 467, 353, 165, 120, 151, 335, 83, 106, 28, 326, 252, 70, 298, 182, 153, 300, 260, 122, 111, 143, 302, 135, 235, 362, 236, 232, 287, 371, 309, 248, 248, 176, 215, 169, 183, 155, 140, 446, 91, 277, 263, 234, 126, 376, 335, 162, 490, 398, 182, 105, 378, 469, 159, 119, 457, 292, 249, 108, 59, 451, 20, 362, 228, 57, 306, 459, 301, 208, 329, 357, 82, 396, 279, 137, 396, 272, 202, 396, 282, 120, 308, 389, 287, 43, 311, 371, 59, 326, 125, 223, 190, 285, 134, 348, 219, 74, 343, 72, 455, 367, 179, 368, 395, 267, 227, 59, 225, 65, 21, 300, 310, 266, 259, 362, 168, 104, 69, 344, 417, 47, 335, 103, 126, 394, 41, 122, 166, 313, 265, 438, 118, 265, 204, 316, 439, 142, 90, 180, 440, 281, 392, 312, 210, 137, 189, 240, 247, 240, 320, 251, 157, 324, 208, 415, 245, 180, 262, 94, 141, 191, 110, 165, 165, 361, 61, 488, 378, 138, 178, 229, 396, 157, 168, 397, 266, 289, 240, 347, 299, 84, 451, 133, 391, 469, 324, 137, 116, 60, 365, 207, 200, 472, 450, 428, 330, 139, 159, 223, 217, 330, 245, 234, 238, 418, 391, 367, 308, 291, 304, 67, 244, 288, 382, 130, 461, 335, 118, 187, 334, 324, 441, 462, 112, 445, 59, 214, 230, 372, 44, 106, 167, 181, 211, 193, 148, 409, 264, 364, 353, 174, 263, 283, 406, 312, 349, 118, 455, 181, 259, 323, 175, 33, 152, 299, 141, 320, 314, 131, 62, 235, 335, 231, 340, 244, 425, 169, 311, 497, 241, 37, 436, 117, 184, 294, 157, 350, 301, 94, 162, 273, 13, 182, 101, 486, 341, 434, 322, 74, 144, 284, 139, 111, 403, 214, 52, 323, 327, 172, 227, 230, 208, 277, 221, 120, 409, 339, 123, 223, 252, 209, 237, 429, 295, 253, 35, 162, 454, 243, 199, 295, 385, 360, 241, 170, 390, 175, 402, 198, 288, 397, 275, 330, 267, 161, 341, 283, 193, 62, 258, 162, 254, 259, 374, 408, 415, 268, 54, 312, 424, 302, 342, 376, 172, 453, 214, 281, 379, 447, 170, 434, 230, 121, 423, 305, 441, 276, 244, 121, 110, 461, 323, 151, 309, 431, 202, 200, 329, 210, 352, 164, 503, 113, 126, 231, 152, 454, 311, 433, 86, 449, 130, 231, 262, 189, 290, 288, 429, 143, 311, 70, 226, 451, 277, 362, 134, 51, 81, 343, 171, 466, 149, 194, 310, 119, 315, 186, 300, 469, 349, 427, 123, 168, 117, 174, 144, 224, 116, 173, 198, 457, 287, 147, 65, 258, 272, 499, 315, 81, 186, 168, 341, 316, 190, 178, 291, 232, 280, 174, 260, 242, 226, 181, 120, 113, 138, 294, 106, 481, 287, 377, 104, 125, 383, 234, 369, 289, 348, 52, 389, 239, 219, 344, 378, 338, 418, 137, 363, 116, 207, 335, 449, 202, 358, 216, 134, 319, 100, 11, 265, 233, 172, 267, 45, 256, 23, 318, 221, 169, 245, 306, 281, 181, 289, 116, 173, 346, 327, 194, 205, 326, 345, 201, 111, 448, 366, 399, 293, 222, 170, 358, 442, 19, 187, 159, 456, 299, 206, 290, 169, 253, 412, 252, 202, 377, 331, 497, 203, 313, 115, 255, 373, 364, 237, 245, 291, 269, 342, 54, 218, 269, 373, 170, 256, 270, 213, 305, 288, 203, 315, 238, 87, 192, 334, 26, 127, 352, 240, 277, 114, 102, 432, 139, 332, 278, 128, 411, 91, 317, 296, 265, 343, 291, 217, 124, 350, 220, 242, 220, 62, 233, 300, 190, 393, 445, 513, 478, 346, 375, 131, 99, 272, 160, 355, 279, 112, 305, 107, 403, 336, 109, 322, 143, 371, 147, 204, 192, 308, 180, 279, 127, 194, 145, 239, 124, 288, 24, 177, 191, 433, 429, 308, 270, 136, 330, 73, 469, 302, 274, 221, 246, 393, 328, 431, 454, 391, 426, 269, 434, 329, 245, 149, 151, 338, 328, 299, 433, 374, 230, 202, 472, 177, 360, 402, 387, 316, 181, 418, 52, 198, 174, 20, 197, 110, 294, 268, 123, 151, 43, 87, 250, 237, 247, 233, 143, 367, 231, 339, 381, 141, 233, 355, 204, 225, 382, 208, 224, 206, 159, 87, 80, 275, 103, 365, 33, 374, 117, 145, 332, 368, 309, 297, 421, 63, 212, 213, 373, 107, 249, 247, 318, 242, 464, 312, 164, 240, 103, 328, 345, 262, 160, 209, 401, 325, 249, 186, 201, 112, 250, 262, 215, 70, 473, 170, 126, 143, 211, 313, 370, 183, 220, 174, 388, 346, 351, 182, 173, 48, 214, 370, 163, 92, 95, 228, 134, 461, 251, 398, 205, 282, 372, 363, 348, 83, 321, 175, 265, 160, 252, 479, 340, 257, 64, 285, 419, 369, 23, 196, 283, 286, 327, 97, 411, 331, 184, 297, 325, 284, 341, 245, 302, 294, 231, 247, 319, 404, 190, 180, 491, 441, 147, 303, 148, 291, 350, 471, 197, 396, 187, 92, 201, 269, 200, 264, 250, 338, 104, 470, 379, 248, 168, 271, 113, 146, 205, 267, 71, 296, 221, 385, 153, 347, 482, 252, 339, 453, 390, 289, 284, 229, 269, 263, 167, 27, 369, 80, 243, 432, 230, 153, 280, 397, 239, 380, 208, 244, 8, 72, 271, 354, 328, 233, 224, 297, 297, 204, 461, 190, 259, 151, 306, 375, 195, 189, 304, 155, 279, 232, 352, 123, 177, 339, 401, 493, 384, 376, 340, 38, 171, 79, 161, 78, 340, 293, 238, 465, 191, 435, 179, 244, 387, 184, 211, 307, 352, 342, 316, 196, 351, 353, 445, 69, 97, 368, 180, 274, 136, 275, 342, 189, 75, 395, 145, 147, 205, 185, 222, 218, 413, 297, 374, 144, 453, 372, 138, 302, 316, 237, 356, 46, 40, 339, 343, 184, 242, 125, 216, 345, 305, 477, 148, 214, 199, 303, 306, 123, 440, 404, 292, 210, 328, 350, 210, 337, 94, 309, 408, 151, 76, 276, 266, 325, 482, 155, 332, 254, 209, 321, 297, 243, 355, 259, 164, 221, 453, 361, 15, 338, 357, 289, 240, 149, 249, 263, 219, 447, 434, 261, 300, 159, 479, 342, 93, 213, 57, 141, 177, 335, 410, 315, 188, 166, 223, 307, 354, 492, 170, 187, 453, 195, 127, 349, 410, 151, 207, 130, 147, 216, 417, 439, 369, 83, 461, 326, 406, 381, 227, 126, 270, 258, 394, 108, 331, 228, 333, 72, 95, 209, 319, 351, 346, 379, 284, 392, 315, 191, 147, 463, 95, 486, 415, 167, 324, 377, 390, 375, 410, 92, 354, 106, 364, 106, 370, 132, 193, 396, 321, 134, 119, 393, 327, 195, 506, 30, 341, 253, 233, 82, 283, 55, 207, 301, 430, 167, 248, 163, 475, 77, 218, 124, 367, 176, 415, 426, 188, 380, 58, 488, 209, 170, 164, 354, 134, 212, 334, 255, 220, 349, 110, 288, 227, 350, 201, 406, 319, 442, 117, 330, 228, 148, 424, 267, 155, 452, 161, 345, 217, 474, 179, 208, 328, 367, 254, 173, 210, 259, 458, 296, 277, 206, 296, 162, 480, 430, 183, 202, 268, 263, 274, 312, 374, 96, 445, 66, 463, 321, 250, 204, 194, 129, 78, 342, 485, 289, 387, 67, 119, 256, 241, 341, 110, 215, 276, 226, 186, 276, 266, 198, 331, 455, 167, 232, 89, 355, 166, 336, 147, 397, 167, 260, 175, 282, 465, 265, 178, 453, 189, 132, 273, 202, 132, 209, 62, 400, 397, 114, 225, 299, 288, 259, 228, 149, 319, 160, 327, 406, 411, 217, 374, 286, 229, 236, 129, 232, 403, 266, 432, 189, 115, 338, 120, 342, 197, 248, 310, 269, 298, 79, 156, 453, 325, 468, 116, 246, 210, 438, 43, 256, 378, 294, 398, 84, 366, 122, 311, 174, 346, 377, 320, 111, 309, 243, 162, 329, 165, 307, 229, 266, 305, 267, 94, 230, 454, 131, 72, 50, 209, 199, 283, 329, 178, 400, 236, 388, 423, 127, 190, 287, 175, 477, 274, 314, 465, 389, 410, 350, 131, 263, 108, 201, 127, 130, 468, 59, 223, 148, 341, 336, 414, 235, 36, 288, 171, 405, 111, 395, 271, 122, 154, 150, 164, 403, 460, 374, 213, 208, 464, 310, 143, 356, 204, 81, 273, 314, 287, 380, 16, 410, 313, 385, 410, 406, 23, 240, 370, 373, 416, 355, 204, 176, 187, 329, 357, 292, 282, 384, 212, 273, 202, 262, 385, 198, 191, 402, 230, 266, 179, 389, 210, 165, 375, 261, 287, 302, 471, 250, 144, 284, 279, 277, 382, 118, 65, 126, 235, 158, 354, 150, 53, 331, 68, 280, 51, 219, 432, 90, 236, 213, 137, 289, 256, 366, 469, 484, 125, 289, 454, 49, 155, 392, 221, 181, 238, 137, 85, 222, 105, 228, 351, 380, 22, 379, 322, 409, 215, 234, 174, 275, 356, 182, 212, 272, 203, 194, 426, 215, 279, 234, 279, 388, 164, 318, 219, 205, 152, 74, 304, 242, 136, 440, 304, 466, 238, 347, 201, 373, 275, 325, 364, 362, 393, 103, 394, 365, 359, 338, 332, 322, 369, 270, 216, 363, 135, 353, 460, 157, 282, 402, 414, 393, 196, 403, 178, 294, 276, 193, 282, 217, 86, 234, 351, 433, 337, 64, 236, 184, 423, 64, 362, 241, 210, 247, 483, 298, 122, 191, 243, 245, 46, 458, 278, 447, 311, 326, 360, 71, 224, 354, 148, 360, 74, 6, 215, 290, 374, 313, 200, 185, 116, 133, 28, 224, 467, 357, 291, 473, 379, 388, 188, 246, 340, 67, 240, 144, 475, 314, 193, 179, 215, 150, 423, 360, 192, 102, 159, 127, 204, 154, 168, 423, 373, 172, 48, 140, 327, 292, 358, 221, 426, 154, 101, 331, 337, 235, 102, 251, 409, 238, 283, 151, 307, 278, 357, 247, 484, 229, 152, 69, 311, 241, 225, 388, 230, 140, 146, 370, 429, 26, 134, 466, 240, 372, 197, 389, 145, 136, 176, 187, 400, 264, 221, 366, 446, 311, 364, 186, 404, 363, 101, 243, 400, 120, 146, 389, 203, 190, 278, 300, 260, 196, 430, 106, 260, 367, 436, 222, 359, 433, 417, 184, 371, 301, 275, 336, 111, 428, 129, 304, 303, 73, 224, 449, 175, 255, 446, 326, 123, 315, 315, 223, 327, 161, 194, 97, 201, 309, 383, 407, 302, 326, 209, 324, 198, 356, 107, 88, 189, 276, 247, 144, 339, 320, 221, 169, 140, 226, 118, 379, 333, 69, 300, 262, 218, 265, 257, 251, 310, 27, 265, 227, 369, 220, 146, 412, 265, 272, 286, 286, 229, 283, 395, 209, 372, 290, 488, 293, 184, 360, 342, 194, 132, 313, 290, 448, 385, 162, 232, 31, 270, 271, 383, 318, 242, 251, 157, 79, 119, 421, 401, 178, 231, 152, 207, 55, 163, 274, 313, 125, 251, 256, 468, 385, 329, 227, 272, 317, 196, 427, 466, 96, 216, 449, 14, 441, 333, 484, 363, 383, 303, 155, 172, 188, 348, 169, 256, 199, 193, 188, 455, 86, 161, 235, 247, 288, 135, 344, 427, 381, 148, 261, 128, 193, 287, 221, 347, 155, 172, 204, 334, 255, 380, 189, 241, 277, 226, 448, 413, 81, 441, 223, 162, 429, 292, 205, 146, 439, 110, 114, 304, 261, 378, 88, 278, 386, 123, 226, 329, 165, 83, 295, 213, 408, 355, 414, 336, 440, 366, 409, 142, 153, 168, 128, 470, 266, 82, 280, 428, 250, 360, 238, 99, 53, 424, 176, 285, 263, 212, 268, 316, 377, 335, 387, 168, 144, 428, 326, 132, 232, 252, 300, 51, 146, 308, 371, 486, 279, 275, 370, 223, 33, 304, 296, 217, 442, 360, 280, 75, 354, 182, 139, 397, 236, 442, 361, 45, 233, 193, 479, 206, 153, 121, 299, 201, 255, 426, 318, 286, 54, 143, 302, 57, 148, 320, 231, 218, 377, 498, 206, 359, 238, 235, 379, 160, 391, 381, 261, 297, 277, 368, 362, 437, 409, 372, 270, 481, 300, 407, 253, 55, 488, 487, 470, 429, 431, 402, 259, 404, 257, 101, 243, 463, 487, 514, 496, 150, 358, 504, 234, 490, 511, 240, 415, 412, 484, 490, 416, 252, 472, 489, 478, 493, 381, 139, 480, 511, 362, 293, 466, 503, 359, 342, 142, 326, 369, 304, 320, 364, 486, 261, 105, 316, 471, 476, 430, 460, 379, 484, 253, 446, 400, 447, 373, 472, 490, 272, 401, 158, 471, 328, 417, 312, 344, 331, 429, 383, 341, 501, 361, 410, 480, 477, 492, 508, 482, 332, 336, 429, 310, 369, 460, 291, 346, 365, 392, 402, 452, 120, 430, 301, 419, 462, 406, 410, 342, 493, 500, 390, 498, 378, 230, 403, 188, 443, 258, 505, 499, 148, 508, 485, 241, 382, 289, 264, 182, 455, 481, 264, 451, 489, 483, 485, 365, 376, 447, 301, 382, 278, 237, 409, 285, 168, 292, 463, 290, 482, 339, 323, 376, 386, 495, 286, 502, 450, 322, 115, 390, 483, 370, 426, 461, 441, 406, 162, 73, 506, 256, 511, 507, 107, 498, 491, 323, 274, 478, 516, 337, 450, 304, 183, 502, 285, 249, 420, 427, 349, 386, 508, 353, 413, 500, 375, 304, 485, 410, 484, 306, 353, 431, 377, 239, 156, 438, 402, 499, 503, 200, 458, 419, 490, 230, 203, 397, 73, 436, 398, 326, 293, 363, 416, 497, 458, 250, 443, 460, 60, 476, 227, 392, 494, 352, 422, 383, 468, 344, 443, 199, 425, 417, 496, 452, 472, 396, 246, 449, 458, 395, 398, 283, 253, 391, 307, 268, 337, 501, 269, 499, 409, 408, 434, 365, 264, 407, 267, 150, 253, 254, 269, 185, 434, 306, 508, 510, 287, 347, 318, 439, 235, 307, 503, 281, 303, 468, 366, 415, 434, 480, 368, 497, 500, 504, 195, 188, 125, 502, 496, 475, 492, 481, 501, 407, 309, 302, 372, 442, 357, 464, 436, 249, 429, 493, 412, 340, 385, 489, 172, 353, 322, 477, 439, 509, 490, 311, 478, 364, 450, 448, 479, 372, 463, 495, 312, 269, 425, 341, 501, 415, 193, 225, 481, 437, 433, 281, 509, 428, 278, 509, 458, 506, 481, 509, 463, 504, 209, 415, 510, 347, 246, 388, 307, 237, 472, 407, 318, 228, 441, 417, 467, 469, 457, 515, 324, 402, 510, 254, 112, 470, 345, 463, 302, 378, 416, 312, 241, 381, 327, 94, 207, 335, 498, 343, 476, 427, 444, 351, 414, 186, 178, 457, 459, 460, 333, 471, 334, 389, 398, 327, 315, 504, 481, 437, 386, 431, 488, 442, 241, 356, 471, 402, 424, 433, 287, 459, 298, 463, 322, 458, 386, 464, 232, 492, 285, 441, 227, 292, 405, 377, 336, 466, 441, 513, 350, 276, 142, 492, 176, 404, 286, 437, 483, 474, 446, 291, 323, 474, 463, 414, 496, 231, 493, 491, 464, 484, 448, 191, 441, 258, 296, 497, 381, 484, 419, 318, 125, 222, 487, 516, 285, 502, 449, 294, 211, 384, 358, 451, 414, 509, 135, 241, 444, 392, 474, 469, 444, 203, 500, 282, 350, 286, 231, 478, 365, 465, 467, 472, 497, 484, 513, 513, 455, 242, 502, 385, 504, 358, 479, 390, 407, 416, 266, 330, 206, 412, 471, 496, 498, 380, 325, 159, 219, 504, 447, 340, 383, 416, 475, 373, 410, 486, 368, 501, 511, 413, 91, 278, 257, 486, 369, 506, 214, 402, 430, 348, 476, 333, 331, 441, 204, 187, 450, 194, 382, 224, 497, 411, 462, 252, 275, 457, 446, 415, 502, 413, 121, 515, 485, 476, 353, 381, 488, 480, 385, 425, 314, 224, 383, 506, 280, 515, 388, 422, 386, 396, 408, 329, 340, 371, 359, 138, 431, 200, 361, 393, 189, 436, 411, 319, 316, 478, 293, 390, 422, 414, 445, 232, 503, 397, 443, 296, 493, 374, 432, 430, 493, 206, 437, 477, 295, 352, 492, 509, 375, 214, 314, 430, 283, 467, 491, 350, 421, 499, 499, 511, 367, 125, 379, 482, 476, 505, 411, 446, 507, 390, 264, 290, 419, 460, 474, 414, 422, 317, 327, 437, 422, 404, 320, 416, 242, 362, 429, 366, 399, 438, 293, 245, 448, 461, 390, 415, 356, 482, 504, 284, 428, 378, 268, 400, 308, 468, 416, 393, 394, 405, 355, 408, 438, 323, 424, 401, 483, 516, 493, 362, 424, 372, 234, 515, 386, 382, 500, 314, 402, 425, 460, 456, 172, 501, 247, 495, 173, 492, 226, 476, 439, 346, 293, 353, 317, 435, 152, 487, 119, 348, 424, 499, 494, 495, 469, 251, 501, 401, 516, 308, 457, 280, 454, 440, 432, 470, 497, 399, 451, 344, 487, 432, 439, 516, 278, 461, 462, 313, 475, 386, 233, 396, 475, 439, 424, 495, 431, 434, 433, 436, 456, 403, 341, 423, 359, 296, 324, 309, 480, 508, 435, 144, 478, 401, 358, 287, 484, 512, 443, 367, 459, 452, 445, 468, 316, 271, 514, 388, 448, 474, 413, 307, 86, 293, 320, 433, 302, 394, 222, 414, 344, 456, 356, 475, 468, 456, 426, 494, 428, 339, 288, 494, 448, 270, 504, 507, 381, 405, 379, 498, 469, 489, 247, 354, 445, 500, 467, 217, 277, 385, 318, 513, 218, 253, 483, 249, 325, 161, 351, 505, 475, 440, 229, 412, 461, 371, 427, 377, 439, 338, 473, 500, 292, 167, 315, 230, 261, 464, 294, 407, 226, 406, 488, 426, 432, 515, 511, 421, 489, 439, 282, 515, 483, 325, 323, 462, 443, 491, 377, 384, 349, 491, 353, 226, 420, 495, 428, 409, 473, 461, 357, 473, 371, 343, 360, 398, 500, 465, 401, 319, 513, 483, 216, 405, 424, 473, 455, 516, 235, 476, 308, 248, 281, 482, 244, 481, 407, 345, 309, 506, 417, 485, 363, 320, 192, 470, 231, 513, 246, 299, 447, 467, 163, 510, 498, 337, 417, 491, 457, 422, 340, 422, 298, 273, 301, 447, 449, 356, 374, 436, 299, 225, 452, 468, 490, 403, 432, 387, 38, 277, 340, 514, 485, 355, 253, 400, 389, 460, 492, 356, 300, 400, 404, 404, 498, 369, 330, 273, 311, 248, 491, 126, 216, 495, 449, 505, 407, 380, 425, 246, 437, 153, 211, 256, 387, 515, 297, 507, 440, 480, 361, 412, 395, 431, 412, 371, 506, 435, 421, 462, 504, 483, 472, 436, 507, 370, 183, 485, 330, 389, 381, 473, 272, 449, 364, 192, 345, 312, 252, 333, 501, 388, 491, 246, 507, 393, 355, 358, 367, 417, 499, 81, 516, 494, 490, 228, 480, 367, 427, 387, 349, 510, 349, 411, 321, 449, 315, 307, 458, 490, 462, 323, 406, 452, 456, 357, 153, 359, 503, 375, 352, 385, 392, 442, 485, 260, 445, 423, 512, 410, 361, 396, 421, 514, 300, 412, 487, 489, 19, 352, 447, 347, 321, 400, 394, 284, 510, 508, 502, 281, 459, 177, 483, 388, 399, 379, 180, 186, 209, 502, 418, 326, 214, 432, 274, 401, 413, 512, 322, 264, 513, 239, 501, 464, 419, 259, 418, 306, 307, 319, 484, 512, 453, 363, 508, 454, 424, 450, 275, 270, 301, 260, 512, 161, 494, 323, 346, 189, 348, 376, 345, 464, 421, 381, 342, 464, 359, 455, 492, 470, 359, 505, 465, 343, 420, 435, 428, 510, 478, 193, 419, 380, 414, 181, 394, 266, 396, 491, 395, 192, 421, 404, 507, 456, 512, 251, 384, 442, 421, 334, 384, 317, 320, 391, 477, 171, 336, 273, 500, 446, 414, 340, 484, 306, 453, 445, 327, 405, 406, 506, 236, 491, 371, 508, 471, 446, 501, 290, 366, 507, 250, 394, 403, 458, 266, 509, 351, 493, 252, 510, 456, 176, 440, 419, 378, 506, 399, 442, 319, 514, 462, 275, 459, 378, 350, 226, 494, 430, 494, 394, 486, 442, 381, 233, 500, 504, 504, 308, 494, 366, 353, 469, 439, 463, 516, 109, 473, 473, 343, 383, 435, 282, 509, 420, 514, 333, 450, 307, 477, 375, 398, 466, 382, 479, 452, 283, 285, 495, 482, 425, 430, 505, 322, 444, 503, 497, 449, 486, 338, 440, 355, 488, 413, 352, 513, 331, 333, 506, 423, 183, 361, 474, 461, 409, 425, 411, 481, 397, 470, 332, 395, 343, 298, 159, 476, 512, 398, 444, 516, 505, 499, 397, 421, 271, 130, 424, 456, 270, 463, 431, 334, 397, 399, 509, 335, 341, 443, 392, 509, 338, 284, 468, 382, 477, 443, 331, 455, 445, 169, 296, 511, 491, 408, 427, 408, 318, 405, 182, 392, 390, 488, 219, 368, 369, 384, 372, 336, 399, 502, 515, 356, 486, 325, 293, 504, 162, 451, 295, 339, 220, 471, 421, 351, 433, 334, 392, 465, 303, 418, 306, 316, 515, 317, 438, 482, 454, 475, 370, 459, 496, 505, 384, 185, 172, 497, 171, 281, 400, 418, 499, 436, 391, 108, 468, 280, 422, 313, 467, 398, 464, 167, 254, 168, 448, 465, 505, 471, 312, 467, 418, 403, 374, 470, 459, 347, 468, 395, 425, 19, 472, 510, 456, 428, 495, 75, 255, 467, 465, 425, 512, 387, 426, 335, 453, 474, 487, 480, 462, 344, 511, 207, 309, 419, 419, 395, 424, 272, 346, 382, 460, 352, 169, 442, 476, 404, 473, 511, 330, 196, 334, 329, 438, 438, 503, 255, 481, 500, 420, 472, 509, 394, 450, 255, 472, 373, 365, 488, 305, 496, 418, 193, 368, 305, 508, 495, 494, 199, 420, 514, 450, 201, 496, 238, 264, 411, 358, 229, 287, 493, 346, 409, 489, 102, 480, 413, 435, 290, 317, 303, 348, 376, 314, 422, 297, 343, 250, 513, 466, 290, 289, 431, 503, 451, 516, 328, 305, 427, 361, 307, 469, 341, 476, 371, 489, 328, 355, 310, 437, 515, 402, 386, 403, 412, 357, 440, 486, 448, 399, 337, 514, 426, 478, 506, 462, 360, 466, 496, 279, 397, 479, 428, 505, 421, 461, 257, 437, 418, 315, 440, 498, 337, 387, 490, 437, 466, 220, 500, 479, 470, 218, 380, 431, 243, 396, 492, 443, 507, 373, 477, 395, 188, 496, 366, 457, 422, 336, 376, 450, 391, 494, 245, 384, 77, 44, 478, 438, 454, 407, 285, 508, 198, 457, 261, 322, 492, 482, 338, 512, 405, 420, 312, 464, 416, 80, 412, 249, 501, 412, 452, 505, 426, 379, 451, 479, 387, 137, 340, 507, 483, 459, 203, 453, 420, 358, 84, 499, 503, 408, 443, 350, 515, 200, 295, 376, 442, 369, 423, 346, 420, 445, 456, 465, 337, 475, 438, 258, 506, 377, 364, 185, 321, 305, 282, 509, 301, 321, 398, 456, 511, 465, 281, 516, 450, 435, 286, 416, 475, 254, 393, 469, 414, 429, 460, 389, 478, 492, 503, 453, 444, 393, 467, 294, 420, 157, 279, 513, 497, 204, 444, 514, 348, 459, 454, 270, 413, 440, 494, 434, 465, 505, 429, 384, 514, 466, 486, 475, 510, 436, 437, 434, 457, 516, 454, 473, 332, 433, 479, 499, 405, 482, 497, 503, 411, 351, 199, 380, 216, 420, 387, 426, 450, 404, 370, 447, 386, 452, 135, 253, 482, 416, 276, 171, 419, 420, 288, 241, 474, 391, 368, 488, 365, 400, 363, 354, 274, 415, 345, 376, 467, 138, 479, 295, 391, 382, 483, 444, 446, 390, 304, 510, 507, 385, 452, 216, 457, 472, 498, 438, 408, 388, 368, 498, 464, 462, 466, 508, 515, 321, 375, 337, 448, 273, 455, 435, 380, 354, 254, 242, 324, 489, 477, 245, 427, 195, 508, 187, 210, 328, 498, 145, 485, 304, 493, 392, 507, 324, 400, 419, 430, 439, 513, 432, 417, 496, 364, 474, 511, 493, 435, 487, 366, 364, 455, 384, 359, 195, 329, 263, 349, 248, 486, 371, 166, 257, 471, 339, 380, 357, 437, 441, 191, 443, 268, 197, 444, 306, 363, 160, 346, 345, 376, 401, 479, 195, 243, 514, 481, 489, 445, 432, 451, 460, 252, 443, 332, 283, 416, 502, 140, 164, 415, 359, 470, 90, 411, 425, 422, 352, 344, 501, 386, 335, 458, 449, 478, 480, 477, 487, 413, 444, 244, 157, 451, 423, 480, 297, 284, 495, 431, 384, 418, 363, 325, 245, 447, 313, 485, 436, 391, 357, 512, 490, 487, 417, 512, 324, 496, 366, 152, 452, 343, 361, 389, 254, 446, 471, 502, 399, 485, 395, 345, 474, 337, 481, 249, 510, 458, 514, 90, 362, 463, 347, 477, 257, 489, 405, 143, 259, 286, 495, 382, 224, 177, 446, 260, 427, 438, 434, 511, 187, 383, 423, 193, 430, 427, 447, 435, 487, 502, 338, 407, 323, 407, 387, 166, 512, 473, 310, 457, 490 +}; + +float input[] = { +-2.8588758611049867, -11.692946618257562, -2.0931111592429659, 11.110696212718175, 6.6118168080332342, 5.5228669775147967, -10.351976177615544, -6.2055936928533972, 15.766842028131405, 10.150684036103069, -8.459063190320423, 3.5621047687812557, -3.4741612771047636, 3.324748317571744, 8.996614205792751, -11.020291727957101, 12.081427681651697, -8.8928631203159583, -3.3519010114052263, 7.7902118547439443, 9.6608001848411806, -7.1066822779231593, -18.837368573809297, 6.7301895647238608, 6.7933629603091008, 5.9697810424393483, 8.344011991064086, 12.19791145343228, 9.4167774696594435, 7.423418316685729, 9.0291842080564226, 12.492983259925982, 7.1203329881309401, 9.8776999539720336, 7.3657220051725565, 5.4066464900536131, -12.553405951140983, -8.4918025628237199, -11.352365915823617, 14.756685666538061, -8.0938336502539876, -2.7071697789206022, -2.4795849849319289, 14.778716053676311, -12.149933491676437, -8.5931326392610909, -5.4147618905983697, 1.7095221079392837, -12.75286957597447, -6.560818125727109, 5.5288804134600262, -16.774264848727494, -10.397477377823613, -14.47470382199227, -12.095199384731899, -0.68504635593676977, 2.6623689185177528, 13.264791388391092, -15.654931986196731, 6.1276196890542334, 4.5068190091793028, -13.394637229913476, -6.9231832293793651, -12.113429033794846, 1.2142140703098925, 8.9363539352870394, -12.687063373304539, -3.3458614784673091, -3.4123481785186587, 17.559631253372945, 13.470764559481434, 5.3912902961422002, 8.0737946505557545, -12.755710856932868, -3.569697890412812, -6.2613535644882905, 0.068556269783912271, 6.2629797657916875, -9.2663011036090968, -4.4829975567184634, -9.6136989537403004, -8.7663852688801143, -13.974856274599134, 11.407302219619563, -10.302223327202944, -8.9771589068473983, -6.1388609170833384, 4.2370800072671333, 1.7760515525196516, -12.120232639630231, -12.958157445638765, 5.2985241644932541, -16.484657731002855, -6.3532421360393387, -9.0395804464700298, -7.2671128749847744, -12.616882711750195, -4.9350723080331012, -6.6905936282318637, 18.568407538602393, 12.530577696234687, -9.7889565176657243, -15.214958325061282, 7.215674131215513, -7.5394667988733808, 9.0137713371297465, 6.2553392643094785, 9.1953246360263154, -11.131787953429392, -5.4020937991353657, -4.0642543197135739, -0.44036236539366824, 8.0650609441874703, 0.85520780385748785, 7.2621337620159085, 0.29865166967486761, -9.2011814546979203, -10.330862011400864, -7.3191138151867943, -9.4852558149271111, 14.762260259194324, -5.0853268103463423, -11.2925794883785, 13.026909781206733, 7.9504343630905412, 10.148928930852414, -8.9032450603232327, 7.0914762951954913, 10.89340681888671, -12.705821222595254, 13.126012326275292, 9.4442919029362749, 5.0277440210736879, 0.21756213342494518, 12.710361373031621, 5.6453651213768019, -13.49634180382726, 6.4754225359227204, 9.6275804629486004, 5.8125840672452975, 9.7028326962213836, 6.1260130958734562, 3.3623596073706641, 10.736024757333299, 4.6569987032041826, -8.5021099021622799, -2.5832378575026125, 17.984880998940056, -13.974611077713172, -7.8550941092339874, -2.6917314432377575, 10.825283872831294, 11.217940706150642, 1.8301222470027103, 6.2062091666111812, -12.440863506480019, -19.955292055354317, -3.6699151522797462, 2.2154324244303956, -3.7363628672311142, -10.271027034445964, -9.2862432349117547, 9.7847963699436011, -5.9471830363214551, 11.139859339322513, -9.2599913694963618, 5.0422863933763367, -7.1141487133220043, 4.2177963601947308, 10.657785123505857, -5.7952000401674324, -6.826355874510365, 8.7268751949597245, -8.5906649209875745, 2.2758857640658201, -6.1665377492933358, -7.3104026599884433, -3.2424605164178031, 16.796591996286164, 15.671215006757382, -7.8445348658392806, 12.2589312976831, -2.5670307012079139, -11.537316744819945, -2.4858301794672331, 5.0542510171190438, -6.6860957990782133, -7.2619018024969462, -6.7329842279273242, -7.3146812058251234, 8.0821157274412183, 2.4005920765968378, 9.3157871935284753, -12.908851857280949, 5.2927115546650425, 9.9926730185778059, 3.9229860372333749, -5.5126846245121035, 12.313688019948762, 7.9681453222519041, 17.181368769149195, -8.962498225939207, -11.548950041024865, 12.014544817430894, 11.485639169870186, 11.939774664713912, -14.36069895314143, -11.812874687185857, 12.249194120883461, 4.8839501930831242, -10.540165871108648, -14.829380396239381, -6.4665012687326051, 4.7430459960995295, -7.1378949876943016, -15.357105375923917, 7.3351294975306445, -9.6095153441695373, 4.381145332149095, -9.2910048695861427, 4.894239034759102, 7.864879034656453, -8.3265429253416077, 10.497214061711553, -0.39338042557070996, -4.4611306847986816, 0.76940119561902198, 2.3535542193708272, 10.459438806533345, 9.4938186880252005, -6.4805717587307994, -13.457392617761585, -10.487085219177404, -9.8506932711478576, 11.274019685851906, -12.3031017274995, 8.3324030035106826, -2.3013116280481358, 8.3664075310158825, -10.402109920341072, -5.2924293563600742, -12.008098192077149, 10.992304106359162, -5.5591947469243506, -12.838234842015352, 8.1682577157065577, -6.4919177172949487, 13.568876091933316, 8.0352162745849594, 8.7834139460450125, -11.335870474093099, -10.790767171281415, -2.8875937626970223, 14.64505222675956, 11.436743007190451, -2.9337339836825955, -12.707240342338084, 16.661129912274529, -19.171798326126961, 12.280144746488103, 6.5975965145696174, -13.019719338217644, -3.4328503704209457, 4.822535491209953, -8.1340577921572415, 11.549182216506546, 9.6431724916100059, 5.5547407614902173, 15.019668995173307, -1.6514898426907461, 16.110709054474917, -10.9397931999944, 12.04576668183285, -8.4818868311872198, -6.103248438757908, 8.2975079067215702, 2.5480181038085412, 18.799878298920927, 16.231939791740228, -18.011602750805633, 3.7139764502467689, 12.751595841360283, -7.8718015936255812, -0.40802815212428428, -15.47812599016518, 3.2584854200798588, 14.976391986507007, 9.1367378814346782, 3.4155780056910059, -13.292285487599507, -12.855991908912157, 14.013291588644732, 9.6911017234399335, -5.8910196575740752, -2.2280612655108047, -11.219438047247786, -2.5955623953948517, -3.4460676112793136, 3.5682986120247073, -11.70300520092221, 11.99455548751415, 7.319096625369828, 8.400961847094683, 12.142806695044221, -3.6775894169196279, 8.3797255658565142, -12.156985373281584, -17.475193610019677, -14.228116929396922, 10.726007504360073, 15.267119384103992, 12.781072511062279, 8.0326533999697229, -17.51207194760946, -7.554034280962183, 10.066411068992132, 14.13799652436988, -6.7247334837075705, -11.112518294834185, -5.7326833292155523, 3.6877552031425131, 8.7105204152043516, 9.3857694378580963, 19.127569440965896, -3.8614826162666089, 7.9404471399280068, 6.3807591097483005, -6.8888859894612535, 10.317928637508684, 2.1736529765433783, 10.953222318849482, -7.6682531128958038, 5.0318286636058982, -6.9463690764775503, -3.0184853792276383, 9.6041512562391542, -0.88225262267439808, 6.4852292067129724, -2.3181001351577644, -13.197351056460056, -6.8047677874499586, 5.3843074707174692, 5.1196343577870644, -17.820822197855577, -12.257015718775355, 5.1913937352654651, -5.0162460867599536, 9.9461758050913041, -9.7414598652248081, 8.1378256819797858, 12.564281794378495, -5.6365288176451322, -9.1029468332924104, -5.6355130288814301, -13.719331548944416, -5.8613058178495017, -9.2573519867695815, 6.0620773131346706, 5.8947778726542905, 11.265652594812099, -11.760986024368906, -7.7447348268870124, 19.076436411627338, 14.505720191829832, -9.0750817120358054, -5.2025480400034789, -3.1960162333402482, -11.659437264119374, -7.9842387274926709, 8.5980388295231229, 14.858752059828165, 6.8639263237417376, 6.0631638589074024, 2.7093921939507379, -4.9581002755473795, 4.4179924464321392, -11.144868427484562, 12.546476704938177, 13.606433000436612, 4.0208619807458295, 6.2408832155761376, 3.0941528835943455, -11.347668662075096, 1.9313877794966201, 11.65105372954261, -14.681336156121709, 7.2969958167198605, 11.59264621157577, -8.831465763669156, -12.759130509205734, -9.0714254556796128, 8.9948895559776467, -8.3736028555285831, -13.115027308542444, -0.21628815052066303, 7.7132708674061705, 14.055053470061472, 13.370601410874029, 3.3283307501026052, -11.9653642849229, -5.6440590777489144, -4.2508984635752549, 13.005398229132568, -11.5296140873405, 11.286858942494266, 9.8110403874583074, -13.263569122014866, -6.4297799553106456, 7.9672918799786396, 2.1515462864377719, -8.490571668881163, 7.5548103934198929, -13.121628447449439, -5.7901204816768361, 7.5171762671769704, -5.4216710822831979, -0.95140907859749113, -5.6992105242986471, -0.91737830538166343, -8.2053563541920571, -4.9100295191078036, -8.650093905400162, 10.400080220873763, 7.2829351923330092, 5.3481291290736603, -9.5017802399357425, -9.8687523002255393, 11.82329840938681, -3.1919281246249707, -10.124868011353035, 6.8360355157042028, -14.032171223888698, 18.148403140529073, -9.5731633683674744, 4.0453611070899935, -4.114147796015585, -8.4912512496909898, -7.9968991599686872, 12.922672789580542, -6.7315939113482681, -16.414580925551139, 10.417406116722118, -9.5795995211441394, -7.974905790034116, -13.727944328842275, -15.024522822723423, 4.9026741637309703, -10.662764572620276, -19.122555879539242, 9.217115643469544, -2.9661166430929642, 13.154514394206242, 9.8788596316167272, 4.2669291411005252, 10.239868792823961, 0.50928446540137651, -6.9544644508051245, 2.9807945285095245, -8.2689690969205181, 3.5499295458600972, 12.732733620631645, 11.61935741986054, 8.4137329217700945, -13.703811206903364, 8.5347899814747166, 13.941804015126218, 11.213731601489895, 11.550008187296406, -10.885532785062049, -6.0320756476152395, -7.945602926688589, 18.178022024827495, 4.2378890109434684, -8.419937978328889, 14.273513193884424, -8.1801725060827586, 13.690183625733544, -17.518387733265431, -8.6392702216784656, -13.927446312699148, -8.651607062718659, -12.712917239643309, 15.009792996204254, 0.15853783962329626, -10.462310302523948, -12.535567399778486, 8.8192610919401329, 13.066656030822525, 18.005415525102343, -16.007576967175243, 11.052574245331391, -1.1810954342450888, -12.762633127175347, -11.427571726679494, -1.8068233566411038, -3.8651597939182674, 6.9028603232990591, -9.9188843352819767, -13.607089316301986, 5.8989769757503172, -10.266998033319117, 12.946619994251195, -7.3433271276853551, 13.594756446262442, -1.4802835189751626, 2.9459432512420887, 9.0127453411993006, 12.34274116102957, -0.99056567004691576, -1.0211228826859517, 10.87969885601588, -15.669877762479704, 16.01192464298973, 10.789218207135569, 6.1523737440350752, 10.844976713696601, -18.796538678004055, -7.3982730413954201, -6.5213519941388851, -18.571369340190397, -9.6913300045155282, 1.0175474995943568, -8.0705533615168754, 14.251221745808563, -14.054781652173469, -10.906074448438877, 9.9932114606110058, 9.2204934537976815, -11.102967677965665, -15.06146952578059, 11.282374133246716, -3.4111780254645643, 7.3857075662336609, 10.330601600777463, 5.6502615537426548, -7.2776853004382911, -12.041052757776699, -11.046289906579057, -2.8519140526114701, -14.358095698121817, 4.6207960341417813, -12.368837238636017, -7.2377430770905917, -7.1306536664479809, -10.374815173234571, 7.5287331560402384, -5.4660620697715716, -13.441122458297521, -6.5962962593129824, -8.4930653390556969, -5.473757203858737, -16.42318744504734, -7.678902139771755, -6.1724752873292612, 17.227224731420481, 2.7992443468423089, -11.010643413583562, -6.0460973993600238, -11.514094016830022, 7.2250024006000091, -7.8426213114387204, 10.647716150585898, 5.7539405508617296, 9.727218535739766, -10.217949794886991, -10.197658817694322, 1.4534950594678713, 12.10682632749001, -0.51088307163622715, 17.710760548825679, -7.7470194812395397, -24.372971692573486, -6.6052580469808717, 8.826482956514015, -6.7872955696686779, 3.6389619856040674, 9.9237321927880782, 12.100520790781362, -6.8842633676573595, 2.8844843405481937, 13.672108533544661, -5.6338295492883859, -7.1944131155704678, 6.9746870716875398, -8.2312590639291852, -10.25205738032861, 3.9564297173352139, -11.16342115946062, -8.4103856915642865, -3.86058459788803, 6.7693385059336668, -5.5093604081945458, 9.9112156966838256, -11.829917793796264, 12.06350448472004, -9.8908904770778552, -17.725516485129567, 5.0710728367340741, 2.3733785626266992, -12.373813495428958, -8.2010211819107539, -12.301300323962623, 10.576063861117305, -2.4429576335852246, -9.8126936984062763, 10.720987427999063, 5.3468144210345949, -7.436093608771988, -12.085562323273949, 9.616133130427178, -7.2337117418265358, 6.590012489497771, -12.933819456719151, 9.0992320680750058, -4.7115096872358144, -12.444448996962361, -9.2431835291508904, 8.9400870181220906, -14.84487535501597, 6.9572855730306786, 8.679259378600257, -11.728117564638417, 11.57774167266283, -11.089244669418909, 4.4545841055164113, -10.471036138424958, -7.9268850048012363, 10.006310688982033, 7.3307629546995496, -0.70086411051328346, 3.4399790497959652, 7.5780305602750353, 15.952535940468001, 1.1236075069228646, -10.56946563987197, -16.455271371728593, 14.943737550316991, 15.270538328279843, 1.8246123975329285, -11.861267836196021, -12.897409417413272, -8.0295182717849976, 2.5085092290718261, -2.997769928368061, 7.7106512520538253, -9.7986312114017196, 3.8597867083890951, 14.715042117673541, 3.6286772784703238, 4.6804229784596041, 10.468442660987332, 6.0309605373905297, -7.2836222700763322, 7.3372979832476464, -9.125874340732242, 12.431154776537063, -12.652059501141041, 8.520614267493885, -14.669291764198016, -5.4369263583494511, -6.9272239504642288, 14.411503339302335, -6.5090359387453871, -3.8249288367587844, 6.226877964919483, 5.4872378813688707, -12.071286274848809, -14.839631376528764, 14.929556186968613, -13.550466083272015, -17.79040452965922, 5.2176515285150078, -8.4073909354978511, 13.152357868676932, 11.880434179671278, -15.154722117187848, 3.3578570344364098, 3.7992951070371852, 12.544849221875657, 4.4664223998223864, -16.02563218730095, -16.858694781271584, 5.8423687431569373, 14.717494305248145, -6.3014233972716296, 7.8246512200173655, 0.2490959399462627, 10.09774947224876, 8.2302536611399972, -2.0230125836350608, -10.877543890130998, -10.315299910440396, -17.814418691884743, -4.7984509876179366, -10.569732541659832, 12.468245506360125, -8.1994351150315588, -8.4938440033843783, -15.646554844352739, 11.104862652426069, 5.4254710709054565, -7.075912451839514, -13.038488980503107, 8.6283602505517099, -0.1897762834069755, -15.926221800862628, -9.4620561439869952, 11.028601034997564, 6.2202218101379954, 13.01838761394424, 3.8814455959068872, -10.571348353520641, 9.3930545668475638, -7.4486485829571807, -15.896920034679038, -7.6634637506716583, -13.744383772875613, -16.289316553121051, 4.2240572521775093, -5.9728476753105495, 1.4435980912356212, -9.482201269588181, -7.1075995048298424, -8.4496788887326719, 5.5233585701859731, 8.8295065675835449, -6.8321409197770491, 14.622652588625614, 8.1030077299922656, -5.0997213512339847, 10.535820013561885, -11.687469584683409, 3.0547169868379771, 8.210959869395893, 10.201179428221021, -11.658463276051274, -13.563724058479169, 11.01039677555352, -7.1382476676607203, 14.955134349802455, -13.750666848543476, 10.162311270235616, 5.7884645703783697, 7.3371242692507819, -9.6841606635170585, 5.466449250298048, 8.4163518309029381, -7.1508542487337046, -6.6797959016182888, -4.7449989886325188, 2.4393509869405792, 8.654752655597532, 10.070879973393719, -13.17581052395726, 8.5470611298539545, 6.660259185215466, -6.0653871786400737, -6.5193717691612134, -12.615899043092323, 6.700881216282939, -4.8478946577189745, 5.1988868211607864, -12.549358461765644, -10.045744010088018, -12.380860324318006, -3.8616068170109248, -14.465705737907983, 0.4164829268257374, -17.143567612135136, 9.487366827722223, 12.652721901108753, 0.7645899772346989, -11.920812995054151, 5.348021509175628, 8.3879926788022008, -4.6246359904401313, 11.089899173175201, -3.8332542947304775, -13.36196018971258, 8.2464982273107097, 14.657515986404208, 10.904966172392774, 11.533578255944192, -13.982006985588614, -11.973821478795168, -16.592644946389242, 9.2836692767439004, -12.678645783087854, 10.730932446196368, 9.5849200107862327, 8.4498461340685918, -8.6907116625889529, 14.156816081594213, -2.5856081507256512, -9.2993749691896994, -3.6239666126178607, -1.8399557052395836, -9.9970546829752251, -11.017332480853435, -11.692178962270885, 6.3025733321249016, -16.175906955071767, -14.423994620868056, -14.689511946206805, -7.2353003125032167, -9.3660212630661839, -13.858073820033896, 4.7709918994882639, -6.7026088232668739, -10.527782639004828, 16.58828557927492, 15.050247187970289, -4.0564185563228934, -10.640020339068798, 5.0431846567205971, 10.934348304548614, 0.75988821460881439, -10.291366703091549, -13.942020188031572, 14.135017480152827, 11.151498767692816, -11.537353350061172, 10.343082453782436, 7.976541387752091, -3.5774431227145778, 6.7912849734238856, 1.8417106851238594, 8.8764923317563689, -14.359256236175909, -5.6171451890921933, 5.9817930874266256, 3.2031461221092781, -3.5231009274983971, -14.863876345356418, 13.612377512426715, -8.9030335281364348, 5.1285813990983709, 4.8771312118802621, -3.1813763041012044, -8.1658030154444532, 9.2635478384894121, -11.938316318486482, -10.581389864174858, -9.041740376889754, -11.289532586451648, 9.8541909326330934, -10.813754378648875, -10.992626098956032, -4.2128060145436059, -13.803513190675977, -3.4047166821717285, -14.699309096179331, -12.322199151029571, 1.9847013546589598, 3.443351936013523, -7.7412573332668169, -9.4014738152531816, -6.0936722951459252, 11.249057062872248, 5.3612317349290048, -6.0934505412619844, -10.329491262921293, -8.3782268065652321, 10.610705115588038, -7.7383153101209938, 8.5683043797354852, 9.5214421313463742, 9.4646448974772674, -15.945188235432587, 13.571842719150663, 9.1766386061343823, 3.9788060864638335, -16.400242920289237, -12.152955170027367, -11.743525499640301, -10.778431692576483, -9.560949750398839, -11.274506489189537, -10.497378072608422, -11.313774108583567, -8.6889440492171826, -16.999837953521492, 2.8463220500405759, -9.3414733746083147, 14.505309388696032, 7.2740770646355823, -15.216612609375215, -7.7754295642857443, -7.9668693810493751, -11.838336074962589, 9.3302243430363134, -6.1546909317578038, -11.643770269023584, -7.3067290482575826, -7.6586644572207598, 4.1554355791738411, 5.5784827988725025, -6.6788226812914591, -10.099712087346221, -6.812608788772855, -8.6942723276748133, -9.1414982497263626, -5.5404435688554674, 13.782301424897506, 6.4913332097552408, -14.843570407301076, 9.1090159582398744, -11.810479272023766, 10.734632284091132, 12.106233609286406, 1.2074129428018001, 9.05135706765188, 7.0513320487712221, 5.7063731455704252, 17.827025603920255, 8.2204534825947988, 6.859838386896449, -17.066087459633668, -10.546186910811119, 12.544407506754297, -10.501953033608231, 11.631217929282226, -7.3247345033456455, -0.30451282566541621, -8.8097804299616289, 12.580754884209387, -2.4535950387210703, 9.2528280654920945, -6.6762373246501507, 8.5487856314147361, -9.8862934311079176, -7.405954429775278, 11.460818356885351, 9.4241123506707218, -6.0650535086957591, 11.749931801221361, 13.45158323366806, 8.509266618399371, 3.0990921451133864, -11.845686618745093, 4.6809017476948664, -9.0788995203187035, -14.154172714949322, 11.436663871420148, -11.686823110591192, -10.466322347645878, -1.8093094588126659, -8.2842513297508678, 6.998530934794041, -2.8130875381789773, -4.7458503858358174, 14.892214325455083, -13.297630549395505, 14.137398522674463, -5.1741407656371132, 10.811880263388231, 7.6909240450423546, 1.2020066622797796, 8.3882554040760446, -13.296889605096078, -14.12122762385526, -0.86913405214011996, -1.7012640446050573, 12.135944269100591, 13.696947616128121, -4.5178290393967648, 11.379039879071998, -17.142332699109016, -6.2502893853176538, 14.551005043468933, -15.922443449630226, 7.9749887358427554, 7.5006183839537428, -10.731307185445075, 11.828405368248815, -11.242740313773945, 8.6857287401789396, -2.3357416563180076, -9.2522949403141723, 10.057172114119057, 4.2142804964077794, -7.25445812349398, -4.7859211707096279, 12.212717205630641, -0.68060465039856421, 8.3585750011161384, 9.4355684709667997, 5.8736217498953929, -10.357680904873, -15.182609723791906, -10.528438249903205, -10.728845332160351, 4.4271186570969041, -9.5459159618972773, 7.698786708464044, -5.7616256574906473, -6.74427916594568, 5.0713712230747952, 4.9757324493057258, -7.5822193975454732, 2.1521506074067127, 11.702619296651129, 2.475868836880037, -8.5152128927626887, -8.8176272081621523, -6.7396490012107382, -7.1103087325178862, -12.249044472908748, 5.7223187192045835, 6.0785970538718885, 13.311388408274434, -5.1967232459428514, 10.616058764924363, 4.1131834199366937, 9.1157637550044708, 5.0981827919094043, 3.9623438215809581, -5.1277684895200872, 10.717366089367347, -9.6119167010571456, -17.671933631733026, -0.93466484572541053, 9.4511618566836688, 0.51145591409598801, -7.4842698912260595, -12.965780155817985, -11.049283246505306, -9.4204398537725336, 14.713331608978752, 6.1294522089617445, 12.762571544243462, 4.2519976479727246, 11.581799865407062, 4.0540310044195316, 6.7583036711124178, -8.4596629969850596, -11.555561625120337, -13.223361797635503, -11.022881346403601, 7.820188150462851, 10.050313550691401, -2.8748772822692796, -3.975284267526737, 10.165011610963463, 8.361153496598952, 10.23454765876409, 6.9861352278001991, -14.063066120834387, 5.5703634980353156, 4.5720288674742182, -10.208336872812145, -3.8841964569917136, 15.871358616035476, -10.375333061106602, -17.028934392886523, 9.6095097993772214, 2.8612197492337277, 7.3984151374847418, 12.882442279479097, -3.8593872267618985, -3.3505651418910092, 9.1400352361857795, 3.4607159608677991, -11.802758101252648, 16.131696084668302, 4.3485520924992915, 4.9299693363247012, 10.20608409504235, 11.350181288635312, 0.71079817132091727, 7.1011529322063716, -9.9921413971440192, -5.8089676277937103, 21.431868331238753, -7.0747060210352215, 12.069527047899687, -9.4828998378865119, 10.122263948520756, -13.538606127789073, 9.6375976702501429, -4.4100604567201094, -11.99790766311845, -5.976372779813337, -8.272146596627568, -8.9450436886845743, 1.9542103075796229, -2.5876227697187235, -14.368094001362385, -2.985471188013614, -2.478307267502168, 2.7456040916726456, 12.581031236480218, -11.4758779722525, -15.599590155208737, -12.992869206559288, 9.953747866291776, -11.025999481843595, 9.7008748889831633, 9.4677048052865693, 6.0665148799454283, -11.021027787278838, 4.1148665510329865, 9.9715457939675805, -4.524015231428284, 18.833454602793879, 7.5018420072802252, 6.536477074456216, 10.39532612887518, -7.7192567198190574, -5.8633746049064728, -9.4739325485451946, -12.966876834521914, -4.8932353347242916, -7.50082678824488, 7.9240662467055403, 15.473285728117284, -7.874821177550495, 3.9913525758800343, -20.203393732375613, 13.177667766939793, -11.905585671112627, 8.76829420558043, -6.6904194950549218, -2.0990812946584643, 16.352167450942488, -8.6839871579774304, 0.65535704062993771, -9.0914298192610481, 6.226432112620512, 14.414606788199343, 5.3327990949329722, -9.2825422873145076, 5.2444348695624967, -13.52476436519694, -10.565017103537128, -7.9458267805510605, 6.2385267794539532, -10.620897086888419, -14.02491825647715, -17.249193736529822, 21.822546537373011, -14.525572761291961, -9.6352912168501117, 7.7923236942745477, -0.43905931375127905, -1.1677511335028592, 7.9195608711842009, -1.7261157613467151, 0.81574419315180335, -6.6258630940789853, 11.446710993602048, 10.423767215464459, 10.131515821910522, -4.0813762630157786, 5.3099875815632895, 15.005238483277349, 3.9458100113193013, 12.997541564501073, -13.401349640520106, 6.0898523220056484, 8.5430795315739463, -6.727566986421512, -6.0976964106078926, -1.5514248251358895, -6.9251342133096534, -5.0010498589221326, 19.36294632958224, -10.995748094036278, 6.8230876895289425, -8.9816761374312737, 19.252689002798032, 15.018231032342973, 0.75032883111291693, -10.512852145797988, 15.952636394768637, -13.876019658000088, 7.4282002133627536, -15.007337649734009, -20.867628639436518, -12.864466413292632, 12.282886216105501, 5.6117260976193588, 7.7243055425354985, 0.74537471606410499, -8.3753274103443793, 8.7297402808334041, -3.8752359373415373, -7.8660891683218042, -8.8027160564205786, 7.7988010166838881, -7.8129632889899385, -5.8353090570942738, 11.438552747844, -9.8854956847581263, 6.193488211617348, 5.7060858140643864, -5.8417400083956581, -7.1659403388854175, 8.8621684734697617, -13.828395956746165, 11.58722476958626, -8.7757625064865632, 9.7638601085689327, -13.63897121774294, 10.692146632523938, 9.1954815513953641, -9.7262358263602646, -3.0742135000084518, -11.831625275045802, 10.346151064081882, 13.860225574621548, 5.3434462647847401, -12.667486708061194, -7.6071393527596891, 10.497824234551809, 9.1398524858692305, -4.8312688599490299, -9.6866353191391568, -14.936854315955886, -4.5645292398393735, 10.306087472805107, 16.435616799434957, 9.7618939189542857, 7.3359442918945499, 5.4777235052650965, 12.827631906540597, -9.3557044067803972, -8.6207571310957753, -6.9067986860795303, 9.4266173165645881, 8.2700014055707438, -14.396299560527304, -9.1945433850102294, -5.0742673058143186, 5.9363570201246212, 9.1825801770474449, -14.26016478123667, -8.9647881473585791, -10.999991358949853, -5.2643587807317358, 17.966460043223208, 4.5038323715849113, -7.3643627119764705, -8.0021495622334466, -5.5012765171131761, -8.6385795076142866, 10.642859565399243, 16.418157809689014, -12.558310319227193, -5.6944436186565675, -16.620579134203229, 5.2993074909249556, -9.5535858720998252, -6.194850562303122, 7.9283758132069577, -4.3938243314441445, -16.08461551423154, -6.1053020627578558, -7.8156662613007883, -4.2010902685294225, -11.260598796472106, -17.361798229363732, 10.523477968271544, -9.2997205134904561, 4.7239785905440819, -16.55663724338849, 7.336212674126954, -6.9284736037251049, -5.9733477242286268, 16.958437027673817, -9.3688626284447736, 12.335069283139083, 4.4003768017589344, -9.6375650205771759, 4.3025216992304607, 8.1709809734149754, 6.0840979096543046, -1.7791701081822009, -9.7212268065403915, -6.3728373407996992, 9.4709301635928664, -9.8099415495718265, 10.216669472304444, -7.9089613940445638, 9.0133309428613888, 15.233159549099527, 14.443197589960937, 12.315849008505751, 15.22683390790605, -12.204208274855294, 8.0545420942912056, 11.261686524342778, -10.088714704911705, -14.758394330397744, -8.3506925495196622, -5.7190575904160488, -10.474095362096637, 6.7558531383042801, 10.839875782803038, 9.6223187492013871, 4.0011315315627671, 5.3452889051100145, 0.29628684358052387, 10.260560792716758, 10.010269925150098, 12.309818259037518, 8.3443036587520112, -5.4014577244395916, -12.309450717768483, 6.227119823086781, -0.90098300040336077, -5.9574142236058796, -6.5290358544134426, -7.443075641870017, 9.5718761708906559, 5.9045525168917088, -14.09287394192167, 8.537557668616758, -14.160598968888243, 5.8051719496039951, -6.239975019204187, 7.4524259174698209, -7.4731349725176219, -8.5239733925114809, 16.110254200184002, -10.257968713373153, 9.5898379203607735, 3.4675905258102322, 8.1300367938993361, 4.7762632339122959, -5.8974433337845085, -9.3140122423426206, 3.5847848816848376, -9.5355250106758724, 8.6839175133173008, -6.6948323819511488, 6.7933016290691377, -6.3800902026507824, 0.76093699061175468, 2.6435457529778015, 7.4138748481937027, 6.0247308500592567, 5.9280863177297123, -3.8920878288506016, -8.4621386416944677, -18.750651564949948, -7.6188990491921116, -2.1334205811758622, 8.7540093304816082, -9.8600851053842149, 16.342033110995256, -10.800872299968921, -13.998298573757474, -3.2934871871896396, 14.06180118603365, -9.271874228911658, -11.048285130582032, 6.1595626190926716, 8.0570216147192557, 0.66340001966893403, 6.5132884000227351, -5.4201122315987309, -9.7412562635013984, -7.0486139617141514, 16.981384687745692, -8.7022380510622721, 14.647877845477861, -8.0820055541788722, 7.2226523022245761, 5.3790569210687584, 13.728807132743302, 8.5317048523035623, -2.7316549253863927, 5.3846139594020226, 5.4103146460176523, -6.694268736004001, 8.7300406717059573, -13.347383859719848, -8.335174873152722, -10.945696086225201, -10.4875598953527, -6.2891459907155456, -9.3671321709341981, -11.585498988590738, 6.512870728010193, 6.33239714027453, 8.7682544573530521, -6.7439993019333704, 9.5026784978124166, -7.0246760343330656, 6.4372813340255446, 8.1945894173399711, 10.262887249545706, -7.5060931723177706, -14.674750300787338, -13.287289997793177, -8.4928309129257595, 7.4563888548291644, -4.5195874938690226, 8.5442291590063935, 9.7115273312730501, 15.092119744113154, -6.4263051953856785, 0.12831365323535676, 8.7640439297438597, -6.1460218943241305, -10.889755958467752, 13.67769695151666, 6.312988951937812, -13.227320725213115, -11.784825668882982, -7.6748667604861192, 7.7787450544407344, -9.3711259762266828, 13.023365017019263, -7.0200584128511876, 13.494925467734497, 4.2227722997626005, -13.760223253172747, 6.1777636365323456, 12.067306433588751, -9.9155428829691132, -6.5766064428842856, -15.151662906193899, 9.6988065214723864, -10.152731302282174, -8.5735676931961322, -9.9418795299730185, -6.2260760507460198, 9.447544122507308, -8.1319644337468215, -4.145324424570318, -3.5485961822808565, -13.467769122062073, -5.7514070303621585, 4.2372927865136871, 10.111694661148967, -7.4186471554037379, 11.430760000153063, 12.312843067890855, -12.810688665750249, -1.4448074235360808, 7.986361807585828, -1.7676683131382003, -14.521209725348982, -4.352705664193615, 18.914853195668275, -1.5113121651615482, -3.6397864185997131, -8.6196558356553385, 4.1199321080626019, -8.4888399293551817, 0.57614759104880209, -3.8170562650576274, 6.5118953364681147, 4.0953213386352472, -5.3421050165325257, -12.272356482934088, -3.0358640779517354, 4.2481637384966975, -2.7752337082527849, -8.0160326885318369, 9.5768553793879043, -1.8524775210440534, -11.009861394679287, 8.9742068648070266, 12.471334080830026, 9.9992644688047552, 8.0039800551702207, -8.7981872925635614, 6.6433407975833738, 6.5480704488332835, 7.2841246634294423, -6.3252439319780178, -6.0513426125451124, -6.3988334931556485, -17.469331458693546, -4.580254889517116, 8.9993454898016569, 3.2238207283793323, -7.7799510625287303, -13.803751678166556, 9.7121916487763045, -8.1746700971358059, -8.8126126733994941, -4.8155492973679186, -10.804453969532291, 7.0086143651800121, 3.1481410707654631, -12.810183673768677, 2.3362046780839187, 5.744619950986845, 3.8643342874084374, -13.249939418679734, 11.415744222471059, 12.554737671029878, 9.8333778447831257, 5.0957400772063437, -3.9991407502674661, 9.8345770583999279, -9.7368996360840274, -19.449417624721992, -7.5133274868764675, 6.0619042605430966, 7.197156700662827, -7.0063836107615485, -19.263860108465263, 13.028208109141358, 7.1331219897936977, 5.4720228485501652, -7.3579311406347925, 7.1801636071660138, 14.640572831964421, -3.8340913302192701, -3.3062445113231744, 17.400159670258972, -7.1681505547822413, -4.3542281808553351, -8.4546164816007607, 13.421193429578857, -14.905121149794782, 8.3143744117862095, 4.9730046756217972, 8.3532232015837344, -7.5969825424753346, 12.3177910080973, 8.7607875220531426, 8.5127047792303561, 3.5774587189097899, -9.6494548210828786, 7.5331539937229897, -7.4747114284701679, -8.6591660587053916, 7.3468316363038637, -3.622337543593344, 0.47384090625185044, -6.0463560480716252, 8.0499483448215017, 9.7022755442800293, -10.776004671468062, 8.3543427603924503, -5.5360568466131905, 6.0186808121336659, -7.3543970398820848, 9.2806086183805689, -12.230546104506987, 7.4673092848302733, 10.975472812952574, 6.7926415721593818, 4.8749321283736755, 9.5323516120815874, -3.0280886662753885, 5.5571898549900514, 10.226559964818154, -5.8034190385368811, 6.5444311969384019, -9.130374827280793, 15.819448485436817, 5.5538576215556326, 2.8637826501217618, 4.0706674231610558, 6.4597011042272623, -8.3735378854139135, -9.5667300995851061, -13.845901714228189, 12.714093428899416, -8.3628461969588557, 7.5987675327409425, 5.9272125723131186, 4.6950385206484189, -4.8195825770873233, -7.908711363482686, -6.0290697566338824, -8.6859336035752293, -4.5193059923378351, -4.5940077637319696, -4.3311584091869832, 5.3536488354562275, 1.9921280360174241, -9.4633153479117045, -6.6570051760469031, 14.208357863252012, 9.4845107231608647, -7.1832992233853066, -8.8475487049318655, -13.630287949249563, -6.0719107719352952, -14.274798405390152, -11.162105305503859, 13.054901490270078, 12.995371746588807, -13.146715820058548, 12.945646134893682, 3.0460739976722446, -12.155229015360904, 2.7412678887489506, 11.780611735174173, -5.3341954653614927, -10.032480770112713, -5.8447538785525053, 0.52725472542845364, 13.379456926012971, 9.6135830134952744, -1.944448284069229, 9.0502993001659355, -11.346127451101133, 4.2434870682337369, -9.5043367843183457, -2.9775157830606012, 5.4193649803215109, 5.9212605221007886, 6.8739591477125153, -9.3618138585411454, -11.34734301929147, -2.8580136600449677, 9.7314938797272301, 10.716957084696832, 2.261487615173849, -11.936472547545375, -11.596497065616539, 8.1683014049841454, -1.9741314291525349, -3.8079032870338203, -18.998387033650793, 14.785213606318443, -2.4675987407306512, -12.092457768834166, 8.3055089082183038, -9.8880041321383381, -12.17693749962149, -5.6119106856770609, 9.3346742365750952, 5.9978824704833622, 0.13754021975113387, -14.894732183908136, 14.747292229007831, -9.7097733323647439, 7.1041665937562009, 8.747982309638612, -1.1124715705618149, -1.3453533016361534, -7.2336827315963976, -3.3065754079116902, 10.610359888132521, 6.439770888743964, 11.42420401634142, 6.5388842458764689, -10.853598132676623, -15.353822721495742, -8.0675862924724751, 14.459019981256141, -12.566396596207603, 3.4205186262164231, 5.630487549883056, -8.073684341188935, 0.82126057392054652, 13.882060246971731, -11.094144048902541, -11.389801550560342, -10.3187260289045, 2.991571648758196, -6.4911734708363165, -11.245496138683489, 10.9851776336762, -13.130504876870628, 3.7733165504957942, 8.4076079303113911, 7.5529546967120051, 9.1048736341912768, 2.7287083950923141, -6.4019633593747214, -6.7703960792021753, -7.6283872602484184, -7.6359394699956251, -11.153289601654617, 4.0727793884727168, 8.3062884746691932, 15.72392064712384, 0.9811577968163786, -11.722310671012934, -11.342923130703641, 4.6538782013854689, -7.3739066993524025, -5.8947067956510093, 11.486762613574625, 12.413880145399126, 10.786268654735865, -14.830950842039924, -12.718664091764236, 11.838893611398694, 16.960744319691706, -0.90885433404131177, 11.805632469674961, 8.787147329142396, 7.4670599584679005, 13.783711428147573, 2.6889832573487715, 9.8277282208337393, -12.621979239155044, 11.900463485129047, 7.3974913674936378, 7.9790082301381764, -18.460977129782226, 9.6868989422260476, -7.4849707679692381, 2.791279213037106, 5.9072811103444005, 10.027746084723706, 5.481378194108391, 0.94657543605496242, 3.1638084348680802, -11.565804912112132, 8.1295825065418228, 6.2454385368905463, -8.7244225637155086, 9.2949740971114814, -15.413745662976126, -9.2767171742637053, 20.883637553321279, 2.1729042705598971, 5.2123425513190229, 11.260222333457566, 5.4759025599371576, 8.1537344500122764, -12.294121929916995, 8.802476739158374, -20.703918322925325, -9.4123075195898913, 14.838015503157582, 8.1809389421993437, -7.6381202529000944, 5.0731354695422288, -9.7523696522120105, -13.519239387616903, 7.7323479369959101, 12.148583040284464, 5.4807070910189717, 4.8696229713233139, 5.0087903276064836, 6.4402113569592467, 13.277426855835845, 9.6524651881369721, 10.826902095836219, 16.183489895274345, -9.6318043844967534, -1.373132442179763, -11.219593888898418, -15.004319828107285, 18.258393722812315, 3.7354456310459385, 8.0651749744359105, -6.5164044554554748, -12.565266643553137, -12.030885912645394, -8.5404810535779507, 12.314165209697041, 7.2947873166397219, -10.819275536058335, -8.0129408622894012, -3.8121662128657552, -7.6091124585846721, -8.4798365873122474, -3.9868453977970675, 11.38629202057937, 3.5714802941824, 2.9518831049273677, 6.3322250488086071, 11.580034774188221, 13.479927163429085, 2.0786137569475098, 7.9330224326080057, -3.6943001859225055, -3.2256160391289095, -12.811450358156192, 13.541505165687818, 2.6411149013180362, -6.3489619114245244, 13.373338952003571, 12.628299743258562, 1.0027687748564038, 9.2077227922659706, -13.768254699816865, 6.8324600540916247, -14.524379303203943, 9.2715316925285709, 8.7678396133255916, -7.7000840765938703, -7.6752994649649313, -6.9178464084480851, -2.824297046557938, -10.067962153214038, 9.8382780470022801, 9.8343360207768367, -10.442346656794413, -11.531825845771756, -5.6955603852302623, 7.9952115376447042, 7.2796481632297372, -3.9815702225402285, -13.888827599999129, -8.7028698626538308, -6.0635186121417952, -1.0917426165389645, -7.5444189349932813, -13.502585170286313, 5.3738984196649149, 5.1002418292985094, -2.2415640749653791, 8.3993581378656117, 17.872303247028064, -5.7930453662663712, -9.5610560588597515, 8.0594903059030294, 5.9955468570765671, -8.4016643820784811, 16.017479926774133, 12.457791465479348, 14.251050296430238, 13.550966058757862, -8.762120073439311, -19.568799520529904, 14.473633275887034, 4.7150108398434316, 17.622896812791758, 8.5532109821391256, -7.8861564007563967, 2.8018084587073706, 11.238281768369326, 19.036214400042667, -12.627994340787289, -3.229926146308185, -6.2106083456766665, -12.029815325633603, -12.732678066605525, 16.114114027765005, -8.8878875737603433, -9.1952288940063198, 2.9514348736209386, -14.875969949421576, 7.426537438524826, 4.0988218779588257, 5.1048469008081083, 8.3561664083509974, -7.1680838371486972, 0.079559302266173665, 7.234447616829998, 9.2153180384359938, 11.380502523658766, 3.7813665464468564, 9.3571471630839476, -5.6198950965916659, -2.6112846832626295, -13.074922193350705, 7.1458325396315745, -6.8553238201936848, 14.037347515845747, 6.1114574644258219, 2.6233447927944442, -6.6962191818230385, -15.054560815064955, -3.8509653059595634, 5.6193134186600444, 8.4632418525580135, 9.06084843255511, 8.7155312766304451, 14.146656363113056, 9.4485647712524159, -11.894790263269002, 6.3630883640874796, 6.0659222594215532, 9.3423771994935656, -11.56898779218068, -12.569317170483185, -3.1542401369229229, -14.317618053977442, -16.07713062656423, -13.866270731830225, 8.9731628045127234, -2.7568654754219311, 10.650056946180007, -0.38554919912492391, -19.636918428478758, -7.261084813408365, 18.261599502237281, 4.365909470450525, 9.4604701736004575, 9.3379768195852684, -5.9721332777841125, 1.8392337494849149, 12.236588220433115, 10.729755869202716, -5.0163355160529157, 7.8745146479874295, -12.210717308250283, 9.9053843786672573, 4.3176048616878999, -7.1321033170654076, 9.8376099896153644, 13.994875675654404, -11.800822210877568, -12.467732532409068, -4.8096053846346782, -15.806886200214143, -16.011053902031289, 3.3108259217896991, 9.3708906824355758, 4.9387906035182194, -7.2811664484622529, -7.2283659694812323, -4.3994107454794076, 13.986557692605393, 16.267589496305209, -12.5211237853249, -8.6162733581098614, 11.875897506788261, -5.7924040049014529, 9.60395357854315, -13.371234187638548, 7.4044876769030976, -9.9169764629346115, -11.960026798255779, -5.6929530819152605, -14.080996179546117, -4.9741440758010285, -7.2894457453898616, 1.7385165163304241, 10.659988023147882, -1.4616437274123262, -10.074637029156758, -17.086127613435742, 12.235716666711239, -7.9575522168496349, 5.807625236075423, -9.2779276010226894, -16.480345338445041, 9.5297786981975108, -12.287759229285887, -5.793455825490601, 11.046928184816098, 12.263531584491689, -15.868613864191206, 6.1089590101381299, 7.7043039642206841, 6.7725058819006509, 0.19765926454723443, -10.92190123421037, -8.6903416862217444, -3.604954070470813, 10.780882529813848, 7.6342821794581255, 1.819027960022801, 8.9622472070627612, -3.7731185676641705, 2.6511830669363676, -5.936256145443763, -3.5065708446633179, -1.6756694810431396, -9.4457045728120921, 5.1176087336867671, 9.0843869892318665, -4.9165468247185249, 9.6190501542416023, 5.7720688303614107, -8.8665231351704143, -16.776765049597191, 5.1935200585542409, -7.0317717992679913, 8.5952975711448651, 15.701379400382201, -5.1747900955843287, 6.644409479106538, -12.294043736596755, -15.483394542555223, -6.9161043885800755, -16.902160692468406, 13.140408586007654, 7.9585367038084494, -0.60142488467217781, -10.583573691246794, 7.6570812407643905, 10.488467203766263, -12.229594163883426, -12.105180821633089, -10.100333917660924, 10.582889173673999, -4.3524138084056574, 4.1598294177868027, -7.7208623056787218, 9.8373959423124191, -9.843437056863948, 9.2758547221503864, 13.917929858415311, 9.6348606573169207, 6.1603576344825903, 7.2761550553448275, -5.6132644264075031, 16.925921888188984, 13.099232943399601, -12.169951256692608, 8.0341465714582103, 9.5080586839310293, -8.9153040306547862, -6.2778930359354987, 0.65702865949253608, 6.1455975831103666, 3.4956736733487177, -13.101966614043903, -8.4917541060921486, -7.7703858331616402, 2.9540207920840338, -2.8250454453694225, 16.471572201031012, -8.3401753077338174, 8.5209392200398799, -8.4562622463700912, 5.3451445327350049, 8.3227551961577149, 9.5505384761710648, -9.6168853444985132, 7.8088619634040271, -10.010194534199005, 10.407541359870157, -12.730901681260953, 10.062237956980878, -8.301093581147164, -11.221782089013969, 5.0699226682185836, 6.8670809315755763, 9.5183305660198574, -12.477293633009369, -3.0829984725185011, 14.251075736126907, -0.50381312202666373, 1.3945668674871461, 4.4380349292124333, -8.4792849992484687, 15.740298722260704, 6.4916661990457039, 9.8781328856963952, 14.524311425947424, 8.623227064986775, 1.82594923740208, 8.1658888991281113, 19.519909829772214, -0.71626812905103776, 1.7182300090879543, -8.0056305624195137, 8.8667806307632393, -6.8903486607996696, 5.3931378831660304, -14.284745953661838, 11.800779205285183, 11.828892295047666, 11.579327959504184, 5.9644626407280574, -10.637566489206868, -6.3308930175168046, 10.362896991246821, -13.136681551103671, -10.69114929291889, -8.2804076555200332, -8.7620956793565572, -8.3349590113674843, 6.0390086996968186, -0.92206940007654714, 16.688147291793179, -7.7396944231238889, -10.556885976235911, -5.5034713893873217, 10.684323799177031, 10.164740010619706, -18.644906837500962, 7.8255279920941758, 7.1184183927575999, -8.5879829996361785, 10.058536284915368, -3.9577147638427337, -9.4390455070755355, -10.813502747434075, 3.1725069430189179, 14.646645070268773, -6.6958720302719321, 7.1891012020482057, 2.776770380964142, -5.3045752723276198, 11.024688310314966, -8.8716706651748609, -6.2182144207648875, 7.2174155723591822, 9.2363647659736916, -0.13811663085025644, -6.5095852199241193, 2.7850661520962201, 5.7288466875807895, 3.8404238060339386, -11.979694823507765, -8.1566218452888641, 8.4872181623141802, 4.0684730663558621, 9.433119896225687, 17.452359798566942, -9.1852211978356539, 3.7813711040017632, 13.687886395835575, 8.3110503099043083, -12.263855365231695, -0.29265821325473718, -5.7786710506977288, 0.32000221107421295, -13.152220176187292, -6.5995903240006717, -13.649334703564579, -7.5516513340805105, -15.16406327996164, -6.7664832291371457, 9.9511431024063146, -11.833825853245724, -11.726480937964023, -4.6960938337568416, 3.6909792826776235, -5.7241654435325771, 0.84009221550172219, 3.981445765587416, 8.3193977689219309, -14.855487044550641, -12.13768399449228, 8.2575189786919658, -12.482209307351347, 12.288265749008579, 12.92588605732125, -0.89651953932604156, -17.178851924529209, 13.465060130471429, -0.66179931634497746, -4.7361380949519907, -8.5915497494217874, 9.8633923545024036, -11.075503948766817, -11.521258634171812, -16.937563321814299, -8.4089961555477153, 10.316744468138424, 11.068755254870558, -12.812559137681774, -11.716000182253042, -10.794814834414403, -14.695829972179469, -5.7734367211811755, 19.281663549262714, -7.7079679114509911, 18.982133221850518, 6.7278265135517552, 9.4200950070653935, -5.0327780626629206, -1.1472749532062567, 8.9655615288611052, -10.289968622568939, -4.5317886320427014, -5.0717832150149214, -12.403158065152988, 16.054879478569319, 11.910769204629043, 8.8721630995550154, 12.946670225247273, -20.040326823281728, 15.061437997065909, 12.371159663686912, -5.2434241432319393, -6.539600733678907, 8.9759004731301122, 10.399696431036546, -9.7820158235043255, -1.8655127741351087, -7.2564512028104291, -9.2402317505484497, -15.743596514833451, 8.0518221334585913, 8.064389141916843, -5.1750464722524647, -1.2577099412771857, 11.088648050953193, 14.734664098438651, -8.7257834129372487, -4.9071340910761805, -7.2288497019818241, 11.368753439780507, 11.259515603467754, -0.9190234527098583, 10.508309728639846, 5.5014236641516137, -1.0062376510942861, 3.9510038373896794, -3.3772476520373296, -12.298064413396816, 1.1518807046710942, 9.8347990668982277, -9.6697877164226895, -5.1708006319540161, 10.90534178699129, 9.0780310964231923, -11.06717326378323, -10.193153698637712, 1.6370922062264599, -1.599701860652494, 7.4493340597532782, 10.079750519485344, 5.9817167134058051, -6.1883642950981734, -8.7859917448021054, 7.6925693496530796, -11.726693947959594, 1.5292664230077266, -3.7640503328337047, -9.2026303785959076, 8.3703384923817321, 9.2968574133785165, -9.0282964165522213, 14.082662142896044, 7.0391904432891064, -8.1892402659133481, -8.494960679412987, -8.3171594195215324, -4.1204583607408765, -12.464929795412097, -8.2800259108270922, 5.0158695467591343, 2.90504266938304, 5.5802620759772603, 9.6053945607379294, 7.4665086294967553, 7.2836197716168538, -6.0797636096551519, 5.9192672325212143, 4.3197502963078556, -2.5794586298505413, -8.3804827856018385, -5.7616389244014083, 7.5165636982133597, -3.7871806468757891, 2.6957388838195038, -3.0339814791522679, 7.7390014359139343, 1.0179611498135317, 0.57428282151728316, 9.2486809887277968, 8.9851820183067517, -12.322228892543235, 2.1846637256927366, -6.9268224211182101, -5.6465263096341207, -9.8609073169739414, -8.0437109222330996, -2.5924823061626299, 10.799267368908426, 9.5532367964485942, 2.1510949897407339, 0.72813586085734983, -7.6316236927774765, -6.6634161974825536, -7.6995131312161114, -2.6469146283491312, -7.8927242011683072, 7.9686594739655217, -8.0858268153723696, -11.113628935027652, -4.2312391545249435, 7.400536752330261, -15.878877108958942, 5.267992480772417, 11.16296673206628, -17.540164979801386, -14.801126830818111, -11.385201143366997, -14.508310090705075, 14.464207778841862, 11.215905228606482, 8.9532196390944634, 3.1058203222772014, 8.0753828772231113, 10.559485384240654, -8.2414912742823354, -11.714805939566189, 4.7281042573450431, 12.657353257890819, -6.3043093049399248, 5.067000914225444, -14.714628033981958, -7.7444814248447615, -2.5025562382741042, 13.564851064978582, -9.4328409951276662, 10.04126088038934, -10.570084081595921, 2.3444801610493466, 7.1831276221853866, 7.404162681313343, 1.1684082688282307, -8.8884680285241533, 1.9400943416397112, -13.196562462363692, -4.5705203572273359, 11.003636571194738, 11.468673888105736, -10.534610194739036, 4.4477979444487845, 7.3667611650061362, -12.044187016767467, -11.396051178941862, 3.9462512050906744, -12.988661501036244, 10.545881026800801, -8.0309289513402735, 9.9370741830104734, 13.654579804016825, 7.0469488853837321, -10.938942295813185, 5.1800344871423132, 10.882232153707738, 1.2710853105543087, -6.5661242949766816, 9.7776412282696459, 13.321850745505881, -8.1153422577009291, -2.2941713421233958, -8.7097542589155221, 2.2618606797252978, 3.1810406025700315, 4.829995467844082, -8.8230523342209999, -7.8350849175265527, -9.1156429568037076, -11.442019665347123, 2.2127249998070249, 18.018245968154236, 6.7919203279388967, 10.818120665998064, 15.957114328595093, 9.436472994391762, -15.0724442489973, 10.177531220212931, 8.7382348206500033, -7.4439716572652967, -10.135340539629416, -1.5478693068716267, -6.2520881203409369, 21.51870984833112, 6.7814496888686202, -5.4629593689724354, -1.0810664038442734, 11.680093350196586, -1.1684404824410481, -8.8192804660387161, 11.947180907432026, -11.865540708697406, -12.073158010228243, -9.3168616660647103, -10.855717378744718, 12.832277402471462, -15.233827235544979, 3.719489187613028, 12.974696537296685, -8.75959465422536, -2.4475947054420195, 11.313184053568827, 6.9182165488811229, 12.123675956468196, 9.6442923820443145, 10.799907622549545, 1.3696427348286129, 12.109212710737127, 2.6404947713803306, 9.5435762973738267, -5.4268755145327745, 10.974370356637689, 11.459181655827159, 10.228613791177938, -2.0376202581586202, 8.5519223504193267, -15.144108617549279, 10.208111627929036, -16.074632706297336, 9.535346082793712, 12.968894012265515, 4.2926497043948793, -7.6447760416419124, 7.3591604897068219, -6.294066487171917, 8.6661482650382133, 4.3524844886549072, -9.6284187314739373, -16.389868048898698, 14.370574991274481, -8.2963813089615268, 16.504114329831857, -8.4564658970066731, -6.3969858495492078, -7.0522130158545027, 16.328014713505098, 4.0676774938327931, -8.8805902890220576, -5.6438005548253818, 10.887856323753418, -13.497382772819085, -17.229682704447541, 10.177341730428909, -10.959196430060141, -15.892999214486872, -0.39312548358593402, 17.548662000796629, 8.138747505659067, -11.081466337015, 9.3549081143588229, -5.2668052531909293, 0.59145215464277101, 13.865804154173629, -6.7446135707105945, 10.591472647241186, -6.8775928522394087, 0.79035105716724385, -0.83434363179526505, 13.426811179256797, 13.480253964577903, 7.9579945693584886, 7.8687287842784803, -1.2711852125721312, -6.5831626138029433, -10.255988526378117, -9.3721646222445631, -4.5483019698635951, 12.654546996958775, -2.2845772848784054, -13.395748226685187, 10.227730333720137, -8.9275038607977386, 9.2096733075692399, -9.1994549499155589, -4.5768838702423018, 7.4336970353205523, 6.1990136188764922, 5.392562974045604, 6.8615159418299543, -9.9148725697134683, 10.272013543022926, -6.541146389868957, 6.1996539988491746, -8.5702789915391175, 6.0710850780527128, 0.41216255793753664, -6.8452494187073416, -7.3698306482120808, -4.3788198137924814, 5.254192997316685, 7.0651978737141468, -8.3496697717376325, -15.541186410630397, -13.361062248182593, 11.869712905857645, 8.8858662456220436, 2.315280646740792, 9.1370562156627635, 10.612212040886574, 15.723923545841364, 9.3000796832012966, -12.203790919241875, 9.5229433645020229, -11.332560886601259, -11.799762316157022, 8.6718707861873146, 3.4390494326490342, 10.948206478975262, 10.351083327208633, -2.3551385999606347, 3.6593868571158006, -10.912461508095474, 6.3601915796808566, 12.644105697007012, 8.0987317607631102, 6.8425116090817673, -7.8614337809266139, -16.777952262404956, -15.092829035089149, -10.867283176676434, 9.7617585972043095, 7.0699740006630494, -0.80345056050581032, 7.2341098943011026, -2.7901743760803868, -14.023920253719963, -8.6493250885626658, 12.119156062865828, -12.565363519164727, -6.6257256922764087, 9.9530063133378111, 6.2285641482405287, 8.5890710113124502, 10.901661163934543, 1.7011000225296526, 9.2328185698429888, -2.5151197107048353, -0.78814118951465995, -6.3782804075339934, 0.77016194990540299, 4.7860592575330942, -18.091131028655795, 6.6618347947308489, -4.5537746303503699, 12.906362988375243, 6.6637236513957019, 5.4194732758517778, -5.626683563346548, 4.8295291548347352, -11.904932030289029, 9.9944164460741938, -11.027348899069844, -0.014743410131345848, -7.3410368137184197, -12.558702052466645, -9.2966083471503538, -2.8582301845790048, 16.122229949617235, 6.0332133243788979, 9.4423884847579131, -6.7953848219405604, -8.640997496023326, 11.564755524473357, 7.7370575077503672, 11.178600690994582, 9.6609341268345741, -5.0924071871300569, 2.9472182219982841, 11.322674214116185, 17.636604816170465, -8.112421382991716, 5.7980976514734257, 10.587871354585735, -10.207529594090163, -13.012906685255201, 1.6439826301840548, 4.7959168408892552, -9.1817793609379343, 15.910744159295755, 11.988413488939839, 10.225499838967904, -2.1100999951643771, 7.7773391391119979, 4.2070274590049737, 3.1789918079199362, 11.389698381773869, -5.6797986359782069, -4.7261529062162424, -6.1926650154600731, 9.5097255166801595, -4.4005426737892748, 4.8284348550831577, -7.4035564503513553, -10.371755556185054, -11.138214834764621, -11.479591917367713, 7.3492465579271542, -8.6401023000535666, 2.4737379805053212, -8.4391176745455763, -3.5699286239866383, -8.1254703716775829, 11.948227614312263, 7.880462510583679, 1.8623842706739999, 7.3888689386136646, -1.2896033177393418, -8.2116493851785464, -9.0121076446113531, 2.6038276518722672, 7.9944375021940459, -4.3649859784435145, 5.1704186172538593, 7.7846827735959723, -0.51775021699396251, -13.814395914977867, 11.155615752700793, -4.0116122940272048 +}; + +char detected_data[] = { +0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1 +}; diff --git a/src/H_128_384_23.c b/src/H_128_384_23.c new file mode 100644 index 0000000..6539295 --- /dev/null +++ b/src/H_128_384_23.c @@ -0,0 +1,22 @@ +/* + FILE....: H_128_384_23.c + + Static arrays for LDPC codec H_128_384_23, generated by ldpc_gen_c_h_file.m. +*/ + +#include +#include "H_128_384_23.h" + +const uint16_t H_128_384_23_H_rows[] = { +90, 34, 13, 29, 48, 14, 87, 63, 32, 85, 18, 61, 62, 6, 37, 9, 50, 51, 12, 91, 27, 28, 56, 10, 8, 92, 17, 13, 9, 3, 67, 54, 119, 51, 82, 7, 26, 20, 1, 60, 6, 12, 7, 87, 3, 2, 76, 47, 25, 26, 22, 16, 23, 17, 13, 46, 66, 24, 62, 41, 40, 64, 15, 28, 51, 93, 49, 25, 73, 31, 22, 33, 102, 61, 29, 42, 37, 30, 9, 45, 88, 54, 44, 63, 105, 44, 93, 10, 7, 8, 28, 20, 24, 47, 18, 44, 16, 4, 5, 11, 70, 4, 71, 6, 2, 19, 6, 13, 3, 63, 13, 60, 20, 12, 42, 68, 45, 11, 5, 7, 55, 22, 15, 10, 62, 19, 5, 15, 37, 28, 1, 33, 23, 39, 55, 78, 17, 58, 21, 67, 81, 83, 65, 7, 86, 30, 21, 71, 36, 18, 35, 17, 34, 77, 14, 11, 4, 31, 11, 69, 22, 61, 9, 38, 1, 32, 34, 21, 16, 26, 42, 39, 111, 53, 38, 40, 17, 8, 14, 9, 19, 78, 72, 4, 89, 15, 101, 56, 80, 23, 41, 23, 58, 39, 4, 84, 5, 32, 43, 37, 55, 59, 2, 71, 25, 71, 3, 65, 30, 3, 69, 30, 2, 29, 10, 81, 12, 1, 5, 40, 16, 46, 28, 20, 8, 74, 29, 47, 15, 29, 21, 56, 27, 61, 65, 33, 45, 65, 44, 31, 107, 2, 31, 1, 41, 36, 77, 83, 91, 14, 18, 82, 86, 27, 35, 10, 107, 39, 72, 74, 64, 18, 99, 123, 99, 89, 42, 121, 111, 68, 114, 84, 63, 96, 48, 98, 79, 32, 110, 48, 35, 102, 109, 67, 22, 85, 68, 66, 122, 114, 87, 70, 79, 65, 122, 124, 31, 77, 59, 109, 115, 19, 106, 75, 80, 38, 25, 108, 127, 36, 97, 49, 116, 97, 75, 121, 88, 83, 86, 41, 57, 99, 96, 112, 102, 40, 70, 39, 111, 95, 119, 78, 84, 53, 81, 54, 90, 59, 46, 76, 118, 82, 105, 77, 25, 26, 52, 95, 49, 52, 112, 85, 58, 75, 42, 26, 75, 47, 104, 8, 27, 62, 11, 23, 43, 82, 49, 116, 67, 24, 57, 108, 75, 38, 6, 45, 73, 81, 96, 53, 73, 79, 90, 43, 48, 74, 12, 35, 115, 126, 56, 94, 50, 125, 101, 117, 94, 95, 67, 84, 96, 34, 57, 118, 48, 94, 76, 64, 119, 83, 16, 100, 73, 128, 68, 73, 32, 120, 94, 69, 20, 103, 41, 24, 103, 68, 88, 87, 117, 106, 79, 43, 34, 38, 58, 52, 45, 90, 102, 19, 93, 57, 112, 82, 113, 49, 50, 24, 100, 50, 56, 98, 78, 74, 126, 66, 72, 101, 113, 72, 37, 92, 46, 92, 33, 55, 113, 36, 54, 61, 36, 98, 114, 104, 14, 76, 95, 72, 110, 58, 27, 125, 95, 70, 46, 109, 98, 85, 33, 103, 100, 60, 47, 120, 55, 43, 124, 30, 35, 97, 89, 53, 127, 97, 128, 81, 21, 85, 123, 60, 123, 64, 0, 0, 0, 103, 122, 91, 110, 0, 0, 0, 0, 0, 0, 90, 0, 112, 0, 0, 0, 0, 124, 109, 0, 59, 40, 0, 121, 92, 74, 0, 100, 80, 0, 0, 0, 80, 0, 97, 0, 0, 88, 101, 66, 0, 0, 60, 0, 110, 0, 102, 84, 0, 0, 119, 0, 0, 0, 104, 0, 0, 0, 0, 88, 99, 91, 0, 115, 0, 0, 107, 0, 63, 118, 122, 121, 91, 101, 116, 103, 116, 128, 0, 0, 126, 0, 0, 0, 0, 52, 107, 70, 0, 0, 0, 0, 123, 120, 93, 128, 117, 0, 0, 0, 0, 0, 69, 107, 104, 44, 89, 71, 0, 0, 0, 96, 0, 113, 0, 0, 0, 111, 0, 128, 0, 105, 0, 100, 0, 77, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 120, 104, 0, 0, 50, 0, 0, 0, 98, 124, 0, 0, 122, 94, 0, 0, 0, 92, 79, 52, 0, 0, 0, 120, 0, 109, 127, 0, 0, 0, 89, 0, 0, 111, 123, 53, 124, 78, 0, 0, 0, 117, 113, 110, 0, 114, 93, 0, 57, 87, 51, 0, 106, 62, 0, 108, 121, 0, 0, 0, 0, 116, 115, 59, 117, 86, 0, 0, 118, 0, 0, 0, 64, 66, 112, 127, 0, 0, 0, 125, 118, 0, 108, 0, 0, 0, 99, 115, 0, 114, 105, 76, 125, 108, 106, 80, 0, 105, 86, 0, 106, 0, 127, 0, 54, 0, 0, 0, 0, 51, 126, 0, 69, 126, 119 +}; + +const uint16_t H_128_384_23_H_cols[] = { +39, 46, 30, 98, 99, 14, 36, 25, 16, 24, 100, 19, 3, 6, 63, 52, 27, 6, 46, 38, 139, 29, 53, 58, 49, 37, 21, 22, 4, 78, 41, 9, 72, 2, 25, 54, 15, 50, 2, 25, 60, 11, 109, 83, 80, 56, 48, 5, 56, 17, 18, 89, 78, 32, 121, 23, 65, 97, 24, 40, 12, 13, 8, 5, 38, 32, 28, 14, 106, 36, 103, 3, 69, 4, 48, 47, 42, 76, 21, 32, 79, 35, 62, 16, 10, 63, 7, 41, 10, 1, 6, 26, 66, 136, 74, 18, 38, 20, 7, 31, 42, 26, 4, 58, 85, 47, 1, 52, 22, 7, 13, 16, 117, 15, 45, 57, 100, 73, 33, 97, 12, 5, 8, 21, 138, 84, 53, 81, 131, 105, 45, 102, 119, 41, 43, 90, 29, 88, 107, 42, 28, 155, 123, 97, 54, 11, 106, 92, 147, 51, 108, 93, 51, 50, 105, 64, 75, 146, 70, 22, 132, 146, 132, 149, 77, 118, 72, 61, 64, 76, 128, 86, 117, 83, 94, 19, 67, 137, 34, 91, 124, 80, 135, 135, 115, 138, 43, 46, 74, 59, 17, 62, 143, 43, 31, 31, 160, 71, 111, 183, 121, 29, 59, 84, 88, 136, 37, 36, 122, 86, 131, 51, 30, 145, 35, 61, 110, 14, 20, 28, 87, 141, 92, 67, 55, 150, 9, 127, 77, 50, 79, 103, 87, 174, 70, 116, 27, 23, 73, 68, 184, 34, 67, 78, 140, 85, 54, 142, 27, 33, 96, 40, 141, 134, 168, 99, 165, 203, 109, 157, 127, 104, 89, 104, 79, 124, 118, 114, 55, 179, 128, 155, 137, 95, 126, 113, 168, 71, 133, 114, 68, 90, 225, 91, 214, 209, 158, 161, 209, 153, 151, 212, 129, 164, 134, 70, 167, 99, 176, 96, 120, 207, 102, 24, 93, 146, 65, 94, 174, 82, 201, 188, 147, 179, 82, 112, 162, 106, 72, 152, 208, 57, 113, 116, 164, 91, 148, 201, 125, 130, 98, 151, 129, 179, 126, 49, 141, 110, 142, 77, 96, 207, 44, 63, 172, 81, 65, 159, 98, 150, 142, 115, 58, 196, 64, 156, 139, 69, 166, 108, 125, 194, 90, 197, 44, 48, 121, 95, 189, 187, 133, 80, 173, 148, 75, 162, 60, 39, 176, 151, 221, 199, 217, 123, 218, 213, 207, 184, 197, 107, 120, 178, 163, 215, 156, 131, 108, 219, 186, 169, 152, 150, 181, 165, 231, 122, 190, 168, 89, 100, 233, 130, 227, 212, 240, 166, 233, 167, 243, 215, 200, 175, 172, 176, 191, 115, 199, 109, 181, 222, 228, 129, 111, 191, 192, 161, 177, 213, 210, 195, 186, 193, 202, 236, 214, 125, 84, 214, 235, 200, 140, 159, 211, 101, 204, 204, 157, 198, 101, 220, 154, 182, 160, 189, 216, 188, 154, 144, 232, 240, 172, 81, 185, 127, 76, 206, 185, 155, 221, 123, 244, 216, 66, 193, 187, 73, 169, 143, 232, 236, 107, 224, 167, 185, 173, 187, 203, 217, 204, 112, 183, 210, 153, 165, 75, 74, 253, 178, 226, 252, 244, 158, 244, 242, 210, 195, 219, 119, 144, 225, 180, 256, 159, 217, 111, 250, 229, 221, 177, 251, 184, 224, 251, 161, 192, 192, 205, 170, 254, 223, 230, 242, 243, 198, 236, 177, 255, 246, 205, 178, 194, 220, 245, 171, 240, 239, 237, 229, 237, 149, 190, 194, 251, 180, 246, 246, 239, 232, 190, 224, 205, 254, 234, 195, 110, 256, 238, 215, 143, 170, 254, 228, 206, 222, 160, 226, 117, 233, 247, 197, 175, 237, 250, 252, 248, 196, 252, 253, 191, 171, 245, 182, 249, 208, 188, 163, 227, 145, 248, 231, 228, 235, 202, 183, 234, 218, 239, 242, 241, 235, 230, 223, 175, 216, 211, 231, 229, 203, 206, 222, 256, 238, 198, 154, 255, 241, 234, 255, 247, 249 +}; +const float H_128_384_23_input[] = { +8.1777347069716182, 11.068275286194897, -9.9432245045443768, 6.6551236271074705, -11.054406713179503, -6.2746575567318477, 7.667712136118686, -2.1922257574847572, -4.8237609670948771, -0.91390703117478189, -11.229258232572455, 1.4857476978815731, 7.3856830024986815, 3.1880549168643748, -10.120957869946404, -10.319425257629057, -11.41562435894356, -12.11927694936889, -9.0469458594649517, 1.7569887284523908, -15.442189230692762, 5.7626102302543432, -7.0612897764013622, 9.8291613428990949, 1.0767498658270371, 9.5856073387990453, 11.738497999320632, -9.0905799174312669, -10.470455080852828, -8.433744390991917, -6.9366856746970376, 13.26849350444494, 7.8070636674612741, -4.6173947833802247, 6.6456048779293422, -0.69263647534317907, -12.49898233313848, 6.6138981803938011, -8.6083023236151668, 15.453324493413819, 15.305896388638827, 7.1884007793243434, -11.740597845156534, 3.7308086480127889, 9.6831143382852893, -10.032320174440107, 11.654225085389784, 5.7804989851977071, -4.7479011487633347, -11.36114342348074, -17.928152449644944, -12.265345238363908, 6.9992004828247651, 15.49309559758461, -10.111696620390044, 0.1122734607649342, -6.6622427130187836, 7.4822113044655758, -7.925242660462505, 5.7467656046075231, -13.401166964099504, -4.1348089534205599, 11.264844498492213, -10.358928566579573, -11.216720153217402, 14.128765772663707, -8.5233957205111377, -9.1103725854592117, 8.0142532964098638, -7.9884310657121853, 0.99693987389979799, -5.1693918629280224, -5.910853810813621, -3.6608188686781928, -6.025229555630097, -2.5758396045091749, 9.9066305949783153, 7.1933649528504615, 8.0541830758014754, 8.8791162477659906, 0.57575820375628539, 2.0598054756647621, -8.003317244521222, 14.315603524511731, 2.1289431008644866, -5.4112513272825309, 7.2618834185352377, -1.9401082084404331, 1.9347336916334354, -12.845137950304331, 18.14330817252943, 11.181919275388029, -13.215961451165805, -8.3376488718859125, 5.3114228917827848, -1.1022969158236802, -2.7846572175961777, -5.463585670181291, 11.492094117831314, -9.302933959252556, 3.3836187096199208, -2.284430926840451, -6.7422039844055712, 10.381365097548491, 3.9262961005324533, -5.2088948529439607, 6.5600092667752907, -12.32451549929036, 4.0508533196564649, 5.0571676348437409, -11.185166289162519, 2.1177386611599283, 1.8632374264281581, -3.0822091330309846, -6.3222229034213875, 9.3955514224688184, 7.5722931465370769, 5.8225996467514722, -11.740091245560546, 13.254263914817818, 10.350606552441441, -4.13177276425861, -2.9055515270006325, -12.275811208362592, 8.7262807637046489, 15.135008327769862, 11.321536392571373, 8.9032604067202499, -5.0162115661089857, -14.366995833786691, 5.8386600312369596, -7.786480442774069, -6.4674600197472838, 11.857120505703504, 11.40089974300462, 9.6456350961814206, 10.130537941536021, 11.699256038881005, -9.7564228899680803, 6.9117571689497206, 15.519061294909973, -6.0315829647195756, -12.097752685154553, 7.7805475289904704, -3.5009655351727784, -12.041177029892658, 6.202834026684636, -9.8015631607525666, 4.1494330009823779, -6.7022057810013225, -8.5897779340618747, -9.6360264972515335, 10.84123650968198, 6.6247990317544909, -8.2231371184139075, 9.2100071306694851, 5.8410835705854502, -9.8465523730928517, 11.550853141012933, 5.2237637811204172, 9.5886545602619915, 8.821453189955804, 10.164314950855546, -6.9162895428275597, -0.99515705414423761, -0.65865377070546172, -2.0720548995423638, -5.751699051592162, 3.3929467907549795, -15.651761881817849, 1.7841459529791761, 9.8067737992082193, 6.5959941284543415, -10.685239406462571, -5.0988497681713829, 11.535671811791712, -3.927802400407173, -9.8136815011221472, 10.463904374444981, 5.2369943474980278, -8.1945701888074058, -2.2074976871592868, -8.2410254863031067, -4.4361001559281146, -6.4484841388698291, 1.1476091117261411, 11.112882158071999, 4.8437001578325232, -7.9066327077789147, -12.797171042579778, 2.645291305889935, -10.513340143073791, -12.409800836289598, 14.647264925728678, -19.259703981144938, 11.837338319296395, -6.8124685495313058, 14.84654495094942, -11.867943417980447, 0.69203449256735483, -11.334005258846348, -14.310695867992383, -8.5521372169311416, -9.1688793096132457, 10.658852517324213, -7.4665258542770596, -0.075811994975017297, -6.0426336621017649, -7.2574644956325169, 12.195709735388878, -17.383436877645277, 11.622429313846098, 5.378252971923124, 7.012775381030548, -4.0444207413344824, 8.2151802910712597, 4.2174063287231265, -6.729981147551837, 6.4674576686109555, 7.3123330030304334, -6.0528241694626495, 13.43295684538702, -13.555949927376236, -3.4182003647017063, 2.16132378213192, 2.9461768739000291, -11.945235376610468, 10.786189702655308, 7.5310740226051562, 5.5471972623473986, 7.9966645710875142, 5.8467489848587011, 7.6610398783261466, 5.0310549754371179, 16.758419583165288, -7.1449786726465687, -9.3396788084817839, -5.0111216924022326, 3.8386412346485246, 5.4135034207939734, -1.8528285666552722, 5.1834990236742877, 1.6555263358427816, 11.612276559812305, -7.8906144576045634, 3.3788212340025794, 8.6611514382956134, 11.303751771743098, -8.178134001542352, -7.7861242507141739, -8.550245641482018, 14.560198457183212, 11.522183354515889, -6.2092289934431744, 2.9318751685258069, 3.3176995571078498, -5.8676814992985786, -0.20142795940600339, -2.7548374956229265, -6.8234029820802586, -12.163878006280664, 3.7806635675811586, -11.384100861414165, 8.7968186354408893, 12.602745071995059, 3.9245275583051131, -12.485152199462473, 16.203610318578459, -12.778789390965139, 5.947784733269585, 0.043047146622793971, -0.21345058826177227, 12.056937533036457, -9.1293854677176682, -4.42743558791397, -10.992655730531101, 8.3327388706627676, -12.992478987886726, -3.9543911492643642, -13.441154463082384, -12.435765074796056, -4.8852471655352634, -7.5923950323705602, -6.1492824170455656, 6.6739203355868639, -6.8564402397588049, 3.8481202559130292, 14.631984071956355, -8.7012825984650899, 6.9912612052883354, 3.5901162162795877, 9.7901877081271138, 5.4898629984229474, -5.8299777300514934, 5.6636306567161858, -3.4376920400139075, -9.5457719463457877, 7.1553767994109512, -8.7053412847926559, 9.5704477634723055, -10.280820394571341, 3.9521533125794948, -7.3266725654275424, 5.6786044706323144, 2.3606102777279809, 20.130551498394631, 13.874264557291831, 12.159830089485711, -4.8906152168284516, 15.984498194925441, -5.7186401946137178, 4.8137170469596668, -8.3963626855772819, -9.2358887735950113, 9.0734539426016685, -10.212878735699499, -5.7678340864866833, 4.4358144111155111, -8.7975968699104854, -3.4765821930666503, 5.9968571181084371, -9.8666578506479876, 7.948328947816961, -1.6329791723432137, -3.2589625483304965, 10.914896850859009, -9.6348918992838577, 3.9496686667281429, -0.43212959079978708, -11.886061929354181, -1.4794363504765682, -9.6183831499867853, 11.240987817993659, 9.9687442031795293, -10.925260236125421, 7.2168938893916739, -9.8552762177525572, -6.0665742410640249, -8.6615748667952843, -5.7433849549057063, -1.3280443605766437, 14.868122965257667, 7.7231238473635413, -7.3390933241389398, -10.920255311404222, -10.528602925968642, 15.358601551553715, -14.526084973993848, 7.6509043363347669, 3.6093710598082187, -6.6960812909833365, 7.0890696432612419, -11.556058828365527, 4.4377032979213098, -10.573403540759278, 2.6061483340622646, -6.1581097570201413, 6.7641858643912744, -7.4602529589100861, -6.0927154714803962, 7.0513090242129932, 6.0680403349752927, -8.0201805767442647, 7.6143254699279739, 10.081541689232729, -4.2697255549172795, 6.8450884177449804, -9.3030886529899419, 10.329882427968109, 6.4188087024847098, -7.9299089583332165, 5.3570536587621191, 8.782347951713998, -11.005407014352345, -4.129815283417452, -15.281119948137995, -9.2865870557328929, -1.3434724280566799, 11.966880900034692, 12.566450377983358, -18.792935520852794, -0.68478067997372916, -10.126566557740903, 8.1631975996741382 +}; +const char H_128_384_23_detected_data[] = { +0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0 +}; diff --git a/src/H_128_384_23.h b/src/H_128_384_23.h new file mode 100644 index 0000000..c9bf4e7 --- /dev/null +++ b/src/H_128_384_23.h @@ -0,0 +1,19 @@ +/* + FILE....: H_128_384_23.h + + Static arrays for LDPC codec H_128_384_23, generated by ldpc_gen_c_h_file.m. +*/ + +#define H_128_384_23_NUMBERPARITYBITS 256 +#define H_128_384_23_MAX_ROW_WEIGHT 3 +#define H_128_384_23_CODELENGTH 384 +#define H_128_384_23_NUMBERROWSHCOLS 128 +#define H_128_384_23_MAX_COL_WEIGHT 5 +#define H_128_384_23_DEC_TYPE 0 +#define H_128_384_23_MAX_ITER 100 + +extern const uint16_t H_128_384_23_H_rows[]; +extern const uint16_t H_128_384_23_H_cols[]; +extern const float H_128_384_23_input[]; +extern const char H_128_384_23_detected_data[]; + diff --git a/src/H_256_768_22.c b/src/H_256_768_22.c new file mode 100644 index 0000000..5f3a3b9 --- /dev/null +++ b/src/H_256_768_22.c @@ -0,0 +1,22 @@ +/* + FILE....: H_256_768_22.c + + Static arrays for LDPC codec H_256_768_22, generated by ldpc_gen_c_h_file.m. +*/ + +#include +#include "H_256_768_22.h" + +const uint16_t H_256_768_22_H_rows[] = { +35, 7, 24, 203, 138, 29, 39, 28, 114, 79, 49, 43, 218, 92, 70, 192, 59, 1, 194, 129, 15, 5, 25, 62, 50, 28, 23, 119, 191, 112, 195, 18, 164, 117, 148, 82, 25, 120, 41, 100, 61, 4, 31, 7, 13, 135, 108, 128, 48, 45, 96, 201, 67, 17, 143, 42, 91, 44, 168, 49, 26, 38, 83, 169, 16, 86, 22, 25, 69, 42, 122, 94, 226, 145, 121, 242, 131, 165, 55, 81, 74, 5, 58, 46, 59, 32, 115, 139, 180, 6, 78, 20, 7, 135, 78, 88, 49, 28, 77, 158, 94, 125, 21, 152, 23, 7, 123, 160, 53, 11, 85, 82, 32, 60, 74, 65, 3, 13, 111, 143, 121, 46, 68, 121, 72, 177, 54, 166, 20, 130, 30, 139, 34, 151, 97, 47, 126, 1, 76, 72, 64, 32, 9, 125, 54, 114, 17, 82, 2, 30, 102, 29, 137, 2, 16, 206, 2, 27, 3, 13, 199, 123, 226, 20, 60, 221, 15, 53, 35, 93, 9, 124, 1, 109, 103, 73, 190, 51, 140, 90, 130, 57, 52, 225, 8, 47, 177, 66, 8, 112, 110, 62, 64, 104, 156, 33, 101, 26, 107, 60, 26, 196, 39, 34, 14, 54, 68, 17, 66, 5, 33, 104, 3, 214, 200, 35, 170, 51, 90, 113, 122, 8, 70, 65, 42, 80, 134, 157, 88, 19, 3, 98, 112, 19, 60, 119, 76, 18, 43, 232, 141, 175, 154, 118, 187, 182, 113, 37, 95, 169, 36, 17, 36, 64, 191, 51, 63, 24, 36, 21, 223, 27, 94, 142, 18, 22, 53, 45, 161, 81, 80, 68, 22, 169, 52, 109, 180, 61, 33, 121, 98, 118, 26, 96, 156, 101, 100, 73, 31, 87, 71, 20, 93, 132, 173, 1, 39, 151, 166, 106, 67, 87, 116, 196, 173, 56, 102, 120, 147, 30, 69, 137, 108, 21, 88, 84, 81, 48, 37, 102, 10, 86, 158, 78, 162, 39, 14, 144, 9, 91, 106, 96, 55, 6, 127, 135, 87, 163, 5, 25, 42, 56, 171, 225, 213, 99, 46, 133, 12, 194, 234, 159, 59, 55, 84, 10, 24, 40, 130, 228, 181, 186, 163, 72, 35, 115, 4, 149, 106, 19, 16, 67, 11, 8, 100, 144, 154, 27, 62, 37, 164, 2, 226, 11, 183, 48, 10, 176, 171, 197, 216, 155, 198, 44, 52, 75, 70, 74, 138, 184, 10, 96, 4, 99, 79, 208, 18, 62, 113, 167, 41, 38, 48, 40, 144, 97, 57, 134, 159, 211, 21, 146, 9, 83, 58, 51, 116, 32, 15, 50, 100, 6, 74, 31, 12, 19, 58, 78, 197, 162, 50, 11, 43, 89, 188, 132, 85, 94, 50, 65, 99, 66, 105, 69, 40, 157, 16, 97, 22, 63, 207, 72, 59, 142, 29, 76, 55, 206, 54, 136, 45, 40, 46, 41, 185, 6, 231, 13, 107, 208, 23, 173, 92, 145, 88, 144, 111, 119, 151, 68, 14, 129, 108, 89, 23, 36, 44, 47, 210, 4, 146, 89, 132, 111, 69, 57, 90, 117, 31, 14, 234, 183, 116, 214, 84, 249, 179, 209, 238, 47, 248, 227, 161, 125, 237, 220, 223, 237, 63, 200, 213, 240, 161, 212, 252, 250, 81, 214, 34, 159, 217, 184, 222, 240, 204, 147, 210, 211, 229, 133, 162, 185, 153, 249, 65, 15, 119, 204, 122, 161, 133, 138, 103, 204, 248, 38, 201, 173, 98, 181, 255, 73, 186, 73, 150, 189, 176, 128, 184, 101, 230, 56, 186, 160, 234, 205, 168, 243, 212, 205, 80, 147, 82, 93, 120, 214, 189, 195, 205, 141, 183, 152, 133, 255, 128, 174, 215, 229, 86, 160, 122, 206, 188, 165, 83, 246, 170, 85, 182, 219, 158, 118, 253, 104, 231, 220, 136, 191, 179, 79, 178, 166, 239, 116, 108, 167, 207, 221, 210, 207, 30, 158, 239, 209, 224, 199, 203, 142, 172, 67, 227, 75, 231, 34, 254, 145, 222, 240, 207, 107, 98, 168, 154, 233, 238, 33, 227, 236, 208, 241, 103, 141, 245, 190, 242, 128, 103, 232, 28, 159, 70, 197, 29, 155, 185, 218, 111, 188, 224, 252, 219, 164, 236, 163, 149, 241, 172, 219, 238, 216, 12, 156, 232, 217, 118, 136, 157, 247, 123, 230, 245, 202, 235, 217, 235, 64, 77, 95, 110, 140, 211, 254, 251, 235, 149, 253, 248, 226, 222, 256, 196, 170, 235, 152, 124, 168, 157, 127, 169, 184, 170, 71, 45, 247, 146, 120, 179, 176, 129, 249, 106, 251, 165, 199, 251, 220, 201, 224, 229, 194, 148, 220, 164, 193, 57, 183, 250, 52, 172, 180, 242, 175, 250, 91, 155, 187, 131, 61, 139, 252, 174, 107, 99, 77, 176, 179, 126, 192, 182, 125, 71, 124, 175, 202, 66, 178, 233, 105, 145, 140, 243, 135, 232, 85, 248, 153, 244, 115, 77, 216, 187, 139, 79, 171, 253, 204, 212, 156, 150, 218, 186, 86, 83, 198, 192, 151, 101, 127, 192, 58, 97, 208, 87, 188, 209, 137, 247, 136, 221, 154, 37, 199, 165, 126, 105, 12, 246, 187, 196, 242, 236, 256, 131, 213, 217, 230, 233, 105, 155, 198, 178, 203, 243, 228, 134, 123, 182, 49, 178, 222, 254, 244, 195, 225, 223, 193, 163, 141, 194, 252, 146, 237, 129, 76, 231, 92, 203, 177, 221, 117, 75, 197, 243, 27, 253, 92, 202, 215, 174, 228, 193, 254, 230, 239, 218, 80, 63, 223, 167, 109, 189, 228, 38, 149, 131, 210, 115, 241, 89, 193, 138, 250, 150, 171, 162, 113, 215, 185, 143, 172, 206, 245, 41, 209, 213, 216, 247, 148, 124, 44, 142, 117, 132, 127, 198, 255, 126, 110, 71, 177, 200, 175, 91, 152, 112, 212, 239, 249, 234, 140, 245, 167, 181, 104, 256, 241, 189, 244, 61, 200, 43, 148, 219, 143, 95, 174, 130, 114, 84, 244, 181, 137, 229, 95, 160, 215, 205, 24, 246, 53, 109, 251, 190, 236, 134, 153, 190, 150, 180, 227, 211, 237, 238, 153, 147, 93, 195, 201, 246, 166, 256, 56, 233, 114, 240, 202, 102, 75, 191, 225, 90, 110, 255, 224 +}; + +const uint16_t H_256_768_22_H_cols[] = { +18, 149, 117, 42, 22, 90, 2, 185, 143, 321, 110, 189, 45, 205, 21, 65, 54, 32, 230, 92, 103, 67, 27, 3, 23, 61, 158, 8, 6, 129, 43, 86, 154, 27, 1, 251, 248, 54, 7, 358, 39, 56, 12, 58, 50, 84, 8, 49, 11, 25, 178, 183, 109, 127, 79, 70, 182, 83, 17, 114, 41, 24, 17, 141, 43, 188, 53, 123, 69, 15, 230, 125, 60, 81, 140, 139, 99, 91, 10, 79, 25, 36, 63, 3, 106, 66, 290, 96, 407, 180, 57, 14, 82, 72, 206, 51, 135, 57, 271, 40, 68, 151, 51, 112, 286, 239, 148, 47, 174, 191, 119, 30, 220, 9, 87, 1, 34, 110, 28, 38, 75, 47, 107, 172, 12, 137, 226, 48, 20, 130, 77, 294, 38, 227, 46, 115, 153, 5, 88, 179, 88, 136, 55, 328, 74, 233, 34, 35, 183, 63, 134, 90, 41, 151, 172, 190, 195, 100, 28, 72, 11, 39, 182, 33, 78, 120, 124, 59, 64, 105, 302, 137, 56, 94, 242, 65, 126, 119, 5, 89, 58, 107, 89, 30, 40, 61, 245, 101, 64, 162, 29, 16, 252, 19, 31, 202, 170, 312, 134, 18, 52, 200, 4, 33, 74, 100, 125, 157, 6, 35, 36, 22, 19, 2, 95, 188, 29, 13, 108, 14, 126, 31, 15, 133, 184, 73, 10, 352, 37, 69, 113, 166, 152, 73, 201, 156, 13, 7, 121, 20, 158, 76, 76, 295, 161, 104, 196, 9, 4, 24, 211, 23, 111, 143, 59, 218, 138, 154, 159, 367, 82, 334, 44, 189, 171, 356, 373, 334, 118, 327, 44, 155, 147, 238, 234, 129, 260, 266, 105, 258, 37, 198, 262, 26, 152, 131, 289, 113, 196, 133, 169, 253, 319, 62, 203, 414, 411, 70, 239, 394, 231, 122, 136, 318, 60, 430, 218, 256, 168, 145, 333, 306, 253, 318, 85, 165, 266, 192, 257, 193, 116, 209, 138, 207, 311, 169, 279, 140, 62, 115, 379, 237, 205, 95, 118, 226, 80, 81, 103, 316, 111, 97, 302, 229, 444, 219, 262, 374, 170, 101, 249, 284, 319, 149, 346, 287, 197, 307, 159, 194, 333, 300, 199, 123, 276, 207, 175, 190, 247, 146, 296, 122, 378, 193, 45, 83, 121, 71, 162, 223, 102, 275, 316, 66, 237, 181, 265, 431, 49, 353, 94, 194, 312, 50, 132, 208, 160, 264, 120, 376, 144, 369, 80, 249, 213, 307, 298, 104, 294, 243, 263, 195, 225, 109, 168, 98, 21, 325, 338, 180, 102, 128, 397, 75, 227, 217, 343, 185, 295, 269, 260, 236, 187, 284, 117, 258, 361, 246, 254, 67, 173, 71, 264, 176, 85, 177, 116, 276, 364, 248, 86, 219, 380, 348, 161, 215, 55, 282, 135, 46, 78, 156, 128, 320, 132, 127, 209, 77, 342, 26, 386, 298, 192, 174, 179, 114, 166, 145, 261, 177, 344, 163, 139, 360, 96, 198, 141, 191, 285, 351, 203, 181, 16, 153, 131, 32, 184, 163, 289, 360, 199, 335, 232, 53, 42, 255, 240, 178, 214, 210, 92, 340, 173, 157, 213, 403, 210, 432, 93, 222, 329, 387, 384, 349, 160, 491, 167, 371, 208, 265, 370, 164, 314, 273, 481, 357, 68, 201, 378, 98, 171, 150, 434, 142, 211, 142, 216, 259, 329, 401, 297, 455, 421, 225, 443, 428, 268, 347, 186, 386, 97, 441, 256, 275, 267, 206, 354, 342, 417, 425, 353, 200, 278, 379, 395, 204, 224, 283, 301, 272, 454, 223, 291, 364, 176, 398, 396, 372, 272, 324, 301, 271, 270, 112, 311, 355, 292, 310, 321, 315, 494, 507, 330, 384, 293, 263, 463, 332, 416, 232, 404, 375, 286, 320, 165, 212, 346, 331, 270, 313, 398, 436, 487, 233, 409, 466, 366, 303, 430, 244, 236, 234, 124, 99, 197, 280, 144, 332, 335, 93, 371, 359, 341, 446, 91, 418, 290, 326, 324, 399, 267, 288, 241, 429, 417, 415, 287, 422, 309, 426, 368, 411, 314, 222, 484, 328, 347, 285, 228, 130, 352, 108, 48, 413, 363, 251, 241, 299, 410, 150, 250, 220, 389, 257, 305, 387, 281, 273, 376, 349, 235, 277, 451, 277, 385, 228, 416, 309, 299, 322, 399, 481, 255, 313, 389, 350, 361, 304, 390, 393, 242, 439, 245, 385, 350, 52, 87, 419, 147, 406, 323, 404, 420, 305, 345, 84, 415, 391, 202, 308, 186, 244, 327, 217, 363, 246, 362, 216, 155, 388, 247, 344, 373, 240, 345, 447, 212, 339, 370, 187, 392, 146, 406, 259, 351, 456, 420, 477, 325, 215, 238, 261, 243, 268, 303, 359, 434, 453, 296, 382, 231, 500, 339, 476, 106, 374, 423, 401, 442, 435, 478, 510, 429, 457, 252, 407, 436, 292, 421, 459, 495, 476, 340, 283, 382, 167, 465, 310, 509, 428, 279, 204, 365, 496, 380, 412, 326, 472, 474, 341, 459, 497, 471, 473, 498, 413, 356, 449, 426, 395, 478, 469, 467, 500, 506, 437, 463, 235, 457, 408, 460, 254, 450, 452, 372, 490, 505, 397, 437, 462, 288, 433, 506, 466, 297, 438, 405, 394, 317, 148, 424, 467, 447, 322, 337, 485, 502, 509, 441, 483, 494, 448, 472, 402, 458, 281, 451, 431, 315, 505, 175, 452, 453, 369, 479, 493, 479, 510, 504, 443, 414, 502, 405, 427, 508, 282, 488, 308, 280, 221, 354, 427, 278, 435, 432, 164, 492, 465, 403, 503, 348, 483, 336, 470, 470, 409, 300, 448, 366, 464, 462, 486, 484, 501, 493, 460, 402, 486, 489, 442, 492, 377, 392, 306, 456, 323, 419, 473, 269, 440, 365, 381, 331, 498, 450, 224, 274, 229, 412, 418, 482, 464, 440, 388, 438, 357, 274, 487, 469, 355, 512, 400, 475, 362, 336, 445, 455, 485, 507, 317, 408, 367, 495, 337, 439, 433, 330, 458, 496, 504, 375, 304, 475, 468, 461, 480, 422, 499, 489, 444, 423, 214, 474, 424, 343, 393, 461, 250, 377, 358, 396, 512, 508, 383, 488, 400, 471, 391, 477, 291, 501, 511, 221, 482, 490, 491, 445, 503, 454, 338, 381, 468, 449, 497, 425, 293, 446, 410, 480, 368, 383, 390, 511, 499 +}; +const float H_256_768_22_input[] = { +8.9323881489912722, -14.346922710565353, 7.9693390759559781, -5.575983146144643, -11.430007344507024, -11.797433382704103, -7.6498596597609545, -7.881023325143766, 4.7029642025464975, 5.490489593506263, 1.4577054829853482, 7.2204914066015347, -6.4495501165249394, 11.025143103007442, -9.6136273661905971, -1.6292633004367878, 20.082835454091001, -15.940623976141929, -2.9320120314706735, -4.3372895006030534, 5.8549869318024657, -7.8135927951559925, 4.4717025005955255, -7.1804626225242245, 8.8281745058367793, 3.457866082712139, -11.660964767047432, 15.344085170249253, -14.466810773633428, -10.293997562512834, -6.5294617860841004, 2.6337196833307024, -11.070543876657444, 5.7359108096272164, 9.0013294714941843, -9.1923366442599423, 8.3397116927192272, -7.3466443766727068, -7.0208885950279667, -9.8833064990274835, -11.070411858783441, 16.189201249627562, -6.6872549284064142, -11.752890503765991, 8.888774213749782, 6.0968391171951497, 4.6589995649358533, -13.575988817182116, 11.224485296177397, -10.220694397171258, -5.4572791361037458, 3.0379566142247696, -10.350052412180393, 10.682941155969285, -4.9736564167026174, 11.948298747287996, -9.0750233401887872, 8.9486285395989267, -8.0970017828965126, -6.5844009128903371, 8.5356201812866281, 6.8576026698255736, 3.5824292008949179, 6.386672876216724, -15.44333294899913, -14.723335707927411, -7.1535041654585925, 10.057507199075706, -6.9304518083413749, -13.454196499566493, -4.138927837975757, -9.8229530349333984, -4.7378733928678765, 9.7370721449903357, -11.850883212615898, 5.8425014756304456, -6.9027200123108363, 8.7507430345166597, -2.8432533600339798, 7.1365746925349614, -6.098608401582597, 10.486813349939659, -8.8989094853818393, 7.6668852841834365, 6.3748984557020911, -5.4320648642184377, 12.959555816131948, 6.6472990487222825, -4.5586715631096242, -10.121473995028611, 13.889214737960058, 7.8618812777297702, 0.65114006436468486, 5.6488480073158049, 5.572561535915213, 2.4203295039424271, 5.3724413783839795, 10.445189341740317, -15.231581540217265, 11.189031424930562, 13.490253048718506, -7.5847033262880901, 8.1341785315194368, 4.667483152501207, 10.057012188688605, -12.532915718955612, 17.831016306467532, -7.0233337748720057, -8.1477498232874108, 6.5993887776727203, -6.605350841986966, -7.0309413757967123, -0.87776810176011932, -7.9287494770117224, 5.1536577951126938, 0.56224938859050333, 7.7410604756629082, -10.567376193912894, -2.4437814999269047, -1.2455732716974919, -8.9878404597781163, -10.226284826932922, 4.5715929705982656, -1.3060897521729748, 9.6931031456180285, 6.3549868823010955, -7.6817147139176463, 8.4268904957327955, 0.72594931178019784, -4.9826196594501706, 8.5326984912532176, 2.0637319625971493, -4.2933223803232075, 8.0239298244286879, 1.7951957372413565, 0.084600427180267501, 9.4399601205840362, 10.396717221311645, 12.856923054222854, 3.3295462715836468, -7.6253580712992282, 4.4434471213207374, 6.3733997531278987, 5.4209913860102539, -5.9866755286453737, -7.0287078896424156, -9.2179437166191374, -11.790731307180192, 8.455859639343128, -8.3117274581248051, 13.838681948013669, 7.5475760198641648, -10.086023553300919, -11.224918245135393, -3.3058930832202531, -6.8195757099451129, 11.709166727746231, 11.710100491323546, -11.077873187765078, -10.227016885555694, -4.2941243793572408, 8.1424248467837987, 9.7722584940844754, 7.1104245309154912, 9.3804477382031415, -7.106685163129332, -7.2437598314289575, 11.947702093459393, -1.057260209023416, -6.765299028699161, 3.3425539547981304, 13.328906459054352, 4.4101064786390305, 1.8051901230395977, 11.535802590105595, 0.81386101415425482, -8.165348209826135, -8.5774987728328416, -6.0775939508580219, 2.5963421619843943, 6.3292406903055642, -8.4458269581431491, 8.7662642361276717, -5.819334215801403, -13.610981269704446, 5.0765800356900179, 8.6249353046138477, -4.9634433316247675, -3.9950013700332065, -7.6929117100191453, -6.3633253856519749, 0.83722518023775461, 10.425061034991041, 10.934194165601433, 10.580235622153944, -17.515337920449952, -1.537113005053216, 10.026745250979713, 18.991835102357538, -9.10384082546339, -13.768910919694958, 5.4796127108483343, -8.9244398152912101, -11.548649423930978, 15.611931291120561, -8.908049321272264, -11.715023369923955, -8.5067714993118528, 8.669606218924919, 8.6186685199527773, -0.30417248355831389, -14.992242521244618, -11.237143275747075, 15.47971006097473, 7.0259516978639338, 10.065037137491313, 7.8868287877920169, -12.78707872542274, 7.4550220422461217, -16.404346129675449, 13.30456637678888, 9.9512518647161254, 7.5942461140693247, 3.7624642178418926, 9.8925251212558027, 14.146774666880505, -6.8718384088583475, -3.9981741290451276, 9.4511470096099846, 11.953465594032014, -11.215529849347973, 15.45129835369298, -7.3274909872161418, -4.9654010419320853, 7.7259448497328904, 9.8641694370073871, 1.1150439872404596, -10.084099868296887, 12.049728969177872, 13.071957031320016, 6.9097309932538309, -0.39659296549442785, -2.9217410655323537, -9.5561149122145306, 4.3607269616443673, -7.3795521023764916, -11.702904880630188, -1.5433424172046679, 15.057989444533467, -1.2565455630730749, 8.9880357276703204, 6.1129770246307693, 11.328910534091127, -2.9309511311565144, 11.207912500256919, -5.7404867114420988, 5.9950024570017471, -5.7910643096127341, 5.4208744627397838, -4.5716714958282108, 8.1298949011896831, -11.711123662713085, -12.017719365072217, -9.7122748441533471, -6.6047630492267668, -14.567681472229127, 7.7859507737798745, -13.177213209080305, 1.409111307587259, -1.5011399595588764, 12.057098493693852, 6.4171185080762427, -11.634125892968456, 11.044794834453159, -14.65558507132892, 13.72196292983746, 11.040226522930523, 6.2584434572994629, 10.730689310638432, -4.618515034465152, -1.2143032307321182, -7.4189186448958875, -7.669206125358758, -9.1157167366336314, 4.9339345930796563, 8.3824960985509129, 9.5126664524245168, -4.4260649375190164, 3.6144449441325635, -10.893425304008998, 8.3182825177379076, 13.628768431834336, 7.1730917891722781, 10.087828497729179, -10.489116618742848, 3.8856613599836791, -15.602509765497121, 7.2487646720202497, 12.218582462579505, 0.49211467796430364, -0.066484718374747426, -8.4329617736870581, -3.0127430939186324, 5.8144883342823128, 8.6729115102941527, 6.121491141792947, 12.360054236262307, 13.543171514998027, 12.1058948920289, -12.808248849582228, 7.3365859144200227, 2.0678328559134647, -1.7234260199225477, -13.299836520520724, -14.789707963127125, 6.6006452928112296, -11.956138068501044, -8.8455623029732315, -2.9088913906661178, -9.2132364101435229, -5.8435384831621802, 5.8547803901805464, 8.8126231169253515, 5.5222906262970843, -10.39753464755324, -12.211638565038697, 17.292580458421533, -8.5876470036423616, 4.7678649428994673, -8.4226853315054129, 8.700249181036531, 12.952510035514349, -7.6833594373108234, -3.0202355585479235, 8.7526883579126586, 11.663176352140155, 11.981232949878732, 11.031377901823634, -9.9501241218952927, -15.089187715856323, -10.601089041749843, -6.388179627159027, -4.6793834219078603, 3.9045854726147744, 9.8861746042718845, 0.042855319175376341, 14.3414643477855, -10.407450105082846, 3.0336086321363265, 13.793872516546351, 8.0501940947932038, 4.5991785638040428, -7.9303874601996593, 14.049591025574657, 17.380262133125449, -7.8459793004203222, 8.705024309261562, 6.6262770303011473, -10.086319438204431, 11.047015628809582, -7.3582609209654937, 8.2545626149113698, -11.989564968227834, 2.5193529800955838, -13.244337020280915, 4.8502499826361731, 14.474602979942233, 6.9452935547158612, -7.0450024656821544, -10.212713949627561, 13.849620674538945, 9.6833988531870752, -5.9081325241866898, -10.018382284344064, -6.6229672412657683, 13.879028902842597, -14.33382686638503, 1.9643288191802857, 0.16885137143821174, 4.2277292060928415, 10.805548194765471, -2.4964830143581742, -13.101405042095365, -13.302619999785827, -5.9241726080344108, 14.467933324092012, -8.4591055199339298, -10.184465268318146, -19.503434376811896, -15.229997219469618, 4.8345001979789908, 8.0104662922364813, 4.4017092080658031, -10.231395640484859, 3.9727378370282236, 14.2026231360392, -8.4599285310056196, -12.215460236402727, 5.394330835754074, -7.3356861012337502, -3.6795675270857404, 8.0787223556775896, -9.3271996634056915, -7.4552893328088974, 6.4828043001554736, -5.9782833623900453, -1.9874116057406432, -7.5397619196439196, 6.0283880381663453, 7.1105241207440057, 10.966410901409223, -12.375355422502105, -13.997023100211885, 7.7681673568373251, 6.0215105845435861, -0.44409932549081066, 5.2745451861685329, -7.2390124351491778, 9.8045113653170404, -3.5483006663908347, 8.4455042050030151, 6.750717907091107, -9.4719350776568856, -10.118021370720959, 2.7210293880017544, 8.2387439951112835, -8.6980762983904132, -11.317194860133458, 14.906902369795306, 8.5196626788523204, -5.7269320734414473, -6.4873691363023527, 11.118139263369434, -5.131366585591298, -5.1884527453006095, 2.1617883533714988, -3.2189908119713868, 9.1103687701917888, 6.1325191653578388, 2.411217194453199, -3.9050656149976706, -7.7536941054127926, -11.37779012533324, 2.2663187424687767, -14.954242385161651, -11.78196073144464, -5.9162280171814157, -14.78759715146799, 4.6557410991557671, -5.9735521657583144, 6.6275285823558434, 3.1024480512797177, 10.06871404793227, -10.543486892529438, -4.7522704594310561, -0.61601641164246079, -7.6838548304456449, 15.87411724597454, -11.665450977940896, -4.4365872375343205, 3.8247335268174831, 6.5326004536991329, 12.435275476860919, 8.2570494940406931, -3.3808435906687064, -4.7552502897093776, 4.5050634114776189, 10.672688962977514, 12.075918776794476, 1.7986308060137437, 4.1923629883751303, 11.752733569678064, -10.339474897439999, -16.186126637379726, -10.796197122972746, -9.214305404692233, 13.497270712719919, -9.4453197440185637, -15.69391834232802, 12.700707467329744, 4.7024717561391816, -10.327031105585643, 3.8477541445369963, -5.4896217736139521, 8.0519776507030638, 5.0341370218785944, 6.0456145072449026, -10.710449576292405, -8.6533964520637863, -12.257979327405108, -12.078971121036197, -10.881473761466781, 14.147239535310518, -2.6328735032346162, -15.716779182806999, -9.4242407781207191, 8.1426142269915331, 8.1611227842517025, -3.6252335542783207, -9.8025397455364676, 12.763568770750853, -9.5331346940178729, 4.9974585644427902, 5.9879812547323237, -6.2951737225996656, -3.9498007698755808, 10.122100576790197, 6.6618355586974447, 4.6997313218613739, 8.1707413233409465, 12.216703169693357, -12.426888921432578, -11.146002828849364, 6.3741370321379085, 7.6566213756894941, 2.2128160251661328, -5.4585144064775051, 11.139007406371906, -0.057747253315553991, -5.7619887506088023, 11.559333388163129, -7.7967134901859065, 1.5414474492709742, 10.25242202166922, -2.4376317695445988, 2.4485328874029482, -5.2527291639016829, 6.6966144242231938, 10.1056403723797, 9.6715660466767641, 12.199837902638398, -9.9779918730035462, 7.0398600566727509, 13.235714186918685, 6.2264247221125624, 0.49429650260801106, 11.011555724458017, -10.232864614422217, 1.0779763774514628, 2.3155686395401807, 13.340589994791694, -1.4927270737348184, -6.3253956772331872, 11.17892183418669, 4.6804642104000935, 9.9681133942788716, -15.354347685766472, 12.132973558045073, 16.863099386593074, -16.254027114251262, 8.9259599464113109, 4.4137266569998239, 13.238368561676072, 7.7024856954025447, -14.55028063381018, 2.9997759568600673, 5.9324435315675945, 8.9709392409618971, 9.9626050864742304, 6.0433161763769014, -11.094500816935717, 5.0773121433888173, 8.8653918721034444, 13.358789208346618, -3.3614825528284049, -13.508375784100188, -9.738962524121586, -6.8429863842661831, 9.3377608423949319, 9.1681044258536648, 2.6799203842673007, -8.1054023029408491, 3.7516032358089029, -8.7628704110935036, -11.00085544248971, -5.7755226059613731, -0.22395652308977335, -6.5936781093194714, -10.208015637116542, -13.848721312194234, 9.876782398829647, 9.437177021184711, 13.967144290195598, -1.5603470410313784, -12.959548633651529, -13.772706675904137, 9.4983989705496406, 4.8575506841930132, -13.426339798518415, -6.8882549582242767, 10.020963852018646, 10.738289970141997, -3.5322181002015958, 8.9790411088584392, -4.3462795772567171, 18.871182150839772, 6.1273012327332719, -6.5695645965276261, -8.2641966395439947, 0.85103670621664851, -16.902729440065183, 8.2697379486332849, -13.872113727992556, 13.619190901125434, -12.016737280921415, 1.639362596352592, 7.9267314843757219, 9.5913300412571747, -7.091648374422606, 5.8969231337131776, -6.4726579518981842, -4.3486881710817249, -9.3821085024104374, 10.917473221565318, 2.0279974118340656, 11.063658410060127, 6.9102623370057179, 6.2072533209374354, 11.520596314303049, -1.5151713191609242, -6.5680763433887153, 16.444160798635387, -5.3791474454897958, -2.2789027240044306, -11.56354929134242, 12.427791285408714, 8.610090315178283, -4.0511067764443416, 7.8692225359304206, -6.7079554414922891, 5.3999766490636549, -8.3179099730168247, 3.6976737002905016, -17.552301172297032, 6.1364424779438496, -9.7751306565781455, 6.1931141049267051, 16.865997593208082, 3.7361395596034965, 3.8267814056050402, 10.269712544637359, -12.797853578296257, -11.480255281563355, -10.876303582685193, -5.4324292010775084, -6.498689183845423, -3.8053637987749771, 13.525521072484571, -9.0129342094166027, 12.475202758118572, 0.35156955969912357, -13.374269540997016, -10.783210983288953, 10.807251662994091, -12.38126506382245, -5.8440304046740765, 6.1261248782561006, 10.426389918103478, -10.251207974472264, 5.7090742604182871, -7.3918232768010466, 14.40018609866692, 10.516336495878081, 5.0907717527746268, -10.790845519857502, -10.344691466108914, -0.81606960094075376, 5.8009330688061373, -6.4523871686156467, -13.804096639962156, -3.8036780326942807, 4.4403995451427036, -6.0454707691007998, -4.457208611267375, -9.3857200039694799, -4.2448642066932596, 11.390356801037848, -11.880538676942361, 16.20974462472968, -8.1065692722381755, 0.10605368805162664, -4.0113679201569177, -3.6764938206674111, 7.1589548870717845, -14.894945704589089, 19.416913935254374, 10.455230095243721, 19.094980784068856, 12.749384013660427, -10.507945794429656, -8.6068528180875727, 6.4779699897920597, -7.4688822584989687, 11.422119526982375, 12.683635758259111, 6.9141103733570297, -3.4807019716082186, -1.0659446865294615, -5.5303642351312705, -8.4756723068747828, 6.5495058918879581, 17.01132173619504, -8.6901951713633352, 0.73205096704640338, 12.18517096248061, 9.6207253649723565, -0.11293013857241167, 14.416380598864535, -3.4842485223978721, 8.538043021108594, 7.9853181927735468, -0.17854963422944989, 15.297082129948347, -8.6558345268403372, -8.8359118745350518, 6.8797931777949346, -13.579058234606006, 5.6056971276091021, -4.7325737401807606, -10.043277228766703, -8.496193000774646, 13.208604057890039, -2.6125003977921626, -9.0028742948434246, -8.3466406676435714, 4.0100931584168364, 8.607156558507457, -9.0376712732526396, 11.431914424287775, -0.65772909230851129, 9.5881935247089132, 14.183768387632979, 1.0198498160186804, 12.12574599778624, -8.8946934403733184, 17.588496278735882, -1.8672309187831959, -10.261023592868218, -10.98895162511046, -2.7839860694432046, 8.6202133936627021, -2.9996428552260639, 12.935041261170362, 10.751931118319499, 9.6367189688985686, 10.40091951562113, -9.8677128130479659, -0.85076949696133808, -8.7094472775564959, -2.7363773372569646, -10.036127502962517, -3.494015934190208, -4.2404950010667983, 4.590562970442905, -11.458041901958747, 9.3378179645353931, 12.328201773184455, 4.9840870074452948, 12.800873263637309, -12.800832354798168, -8.3806105857214561, -7.1573424713736697, -3.454056906476644, -10.568266292992009, -3.1957929098569293, -12.197503600264985, 14.897621213566064, 4.3558337641415363 +}; +const char H_256_768_22_detected_data[] = { +0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 +}; diff --git a/src/H_256_768_22.h b/src/H_256_768_22.h new file mode 100644 index 0000000..a92ce5c --- /dev/null +++ b/src/H_256_768_22.h @@ -0,0 +1,19 @@ +/* + FILE....: H_256_768_22.h + + Static arrays for LDPC codec H_256_768_22, generated by ldpc_gen_c_h_file.m. +*/ + +#define H_256_768_22_NUMBERPARITYBITS 512 +#define H_256_768_22_MAX_ROW_WEIGHT 2 +#define H_256_768_22_CODELENGTH 768 +#define H_256_768_22_NUMBERROWSHCOLS 256 +#define H_256_768_22_MAX_COL_WEIGHT 4 +#define H_256_768_22_DEC_TYPE 0 +#define H_256_768_22_MAX_ITER 100 + +extern const uint16_t H_256_768_22_H_rows[]; +extern const uint16_t H_256_768_22_H_cols[]; +extern const float H_256_768_22_input[]; +extern const char H_256_768_22_detected_data[]; + diff --git a/src/_kiss_fft_guts.h b/src/_kiss_fft_guts.h new file mode 100644 index 0000000..1c62a34 --- /dev/null +++ b/src/_kiss_fft_guts.h @@ -0,0 +1,164 @@ +/* +Copyright (c) 2003-2010, Mark Borgerding + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/* kiss_fft.h + defines kiss_fft_scalar as either short or a float type + and defines + typedef struct { kiss_fft_scalar r; kiss_fft_scalar i; }kiss_fft_cpx; */ +#include "kiss_fft.h" +#include + +#define MAXFACTORS 32 +/* e.g. an fft of length 128 has 4 factors + as far as kissfft is concerned + 4*4*4*2 + */ + +struct kiss_fft_state{ + int nfft; + int inverse; + int factors[2*MAXFACTORS]; + kiss_fft_cpx twiddles[1]; +}; + +/* + Explanation of macros dealing with complex math: + + C_MUL(m,a,b) : m = a*b + C_FIXDIV( c , div ) : if a fixed point impl., c /= div. noop otherwise + C_SUB( res, a,b) : res = a - b + C_SUBFROM( res , a) : res -= a + C_ADDTO( res , a) : res += a + * */ +#ifdef FIXED_POINT +#if (FIXED_POINT==32) +# define FRACBITS 31 +# define SAMPPROD int64_t +#define SAMP_MAX 2147483647 +#else +# define FRACBITS 15 +# define SAMPPROD int32_t +#define SAMP_MAX 32767 +#endif + +#define SAMP_MIN -SAMP_MAX + +#if defined(CHECK_OVERFLOW) +# define CHECK_OVERFLOW_OP(a,op,b) \ + if ( (SAMPPROD)(a) op (SAMPPROD)(b) > SAMP_MAX || (SAMPPROD)(a) op (SAMPPROD)(b) < SAMP_MIN ) { \ + fprintf(stderr,"WARNING:overflow @ " __FILE__ "(%d): (%d " #op" %d) = %ld\n",__LINE__,(a),(b),(SAMPPROD)(a) op (SAMPPROD)(b) ); } +#endif + + +# define smul(a,b) ( (SAMPPROD)(a)*(b) ) +# define sround( x ) (kiss_fft_scalar)( ( (x) + (1<<(FRACBITS-1)) ) >> FRACBITS ) + +# define S_MUL(a,b) sround( smul(a,b) ) + +# define C_MUL(m,a,b) \ + do{ (m).r = sround( smul((a).r,(b).r) - smul((a).i,(b).i) ); \ + (m).i = sround( smul((a).r,(b).i) + smul((a).i,(b).r) ); }while(0) + +# define DIVSCALAR(x,k) \ + (x) = sround( smul( x, SAMP_MAX/k ) ) + +# define C_FIXDIV(c,div) \ + do { DIVSCALAR( (c).r , div); \ + DIVSCALAR( (c).i , div); }while (0) + +# define C_MULBYSCALAR( c, s ) \ + do{ (c).r = sround( smul( (c).r , s ) ) ;\ + (c).i = sround( smul( (c).i , s ) ) ; }while(0) + +#else /* not FIXED_POINT*/ + +# define S_MUL(a,b) ( (a)*(b) ) +#define C_MUL(m,a,b) \ + do{ (m).r = (a).r*(b).r - (a).i*(b).i;\ + (m).i = (a).r*(b).i + (a).i*(b).r; }while(0) +# define C_FIXDIV(c,div) /* NOOP */ +# define C_MULBYSCALAR( c, s ) \ + do{ (c).r *= (s);\ + (c).i *= (s); }while(0) +#endif + +#ifndef CHECK_OVERFLOW_OP +# define CHECK_OVERFLOW_OP(a,op,b) /* noop */ +#endif + +#define C_ADD( res, a,b)\ + do { \ + CHECK_OVERFLOW_OP((a).r,+,(b).r)\ + CHECK_OVERFLOW_OP((a).i,+,(b).i)\ + (res).r=(a).r+(b).r; (res).i=(a).i+(b).i; \ + }while(0) +#define C_SUB( res, a,b)\ + do { \ + CHECK_OVERFLOW_OP((a).r,-,(b).r)\ + CHECK_OVERFLOW_OP((a).i,-,(b).i)\ + (res).r=(a).r-(b).r; (res).i=(a).i-(b).i; \ + }while(0) +#define C_ADDTO( res , a)\ + do { \ + CHECK_OVERFLOW_OP((res).r,+,(a).r)\ + CHECK_OVERFLOW_OP((res).i,+,(a).i)\ + (res).r += (a).r; (res).i += (a).i;\ + }while(0) + +#define C_SUBFROM( res , a)\ + do {\ + CHECK_OVERFLOW_OP((res).r,-,(a).r)\ + CHECK_OVERFLOW_OP((res).i,-,(a).i)\ + (res).r -= (a).r; (res).i -= (a).i; \ + }while(0) + + +#ifdef FIXED_POINT +# define KISS_FFT_COS(phase) floorf(.5+SAMP_MAX * cosf (phase)) +# define KISS_FFT_SIN(phase) floorf(.5+SAMP_MAX * sinf (phase)) +# define HALF_OF(x) ((x)>>1) +#elif defined(USE_SIMD) +# define KISS_FFT_COS(phase) _mm_set1_ps( cosf(phase) ) +# define KISS_FFT_SIN(phase) _mm_set1_ps( sinf(phase) ) +# define HALF_OF(x) ((x)*_mm_set1_ps(.5)) +#else +# define KISS_FFT_COS(phase) (kiss_fft_scalar) cosf(phase) +# define KISS_FFT_SIN(phase) (kiss_fft_scalar) sinf(phase) +# define HALF_OF(x) ((x)*.5) +#endif + +#define kf_cexp(x,phase) \ + do{ \ + (x)->r = KISS_FFT_COS(phase);\ + (x)->i = KISS_FFT_SIN(phase);\ + }while(0) + + +/* a debugging function */ +#define pcpx(c)\ + fprintf(stderr,"%g + %gi\n",(double)((c)->r),(double)((c)->i) ) + + +#ifdef KISS_FFT_USE_ALLOCA +// define this to allow use of alloca instead of malloc for temporary buffers +// Temporary buffers are used in two case: +// 1. FFT sizes that have "bad" factors. i.e. not 2,3 and 5 +// 2. "in-place" FFTs. Notice the quotes, since kissfft does not really do an in-place transform. +#include +#define KISS_FFT_TMP_ALLOC(nbytes) alloca(nbytes) +#define KISS_FFT_TMP_FREE(ptr) +#else +#define KISS_FFT_TMP_ALLOC(nbytes) KISS_FFT_MALLOC(nbytes) +#define KISS_FFT_TMP_FREE(ptr) KISS_FFT_FREE(ptr) +#endif diff --git a/src/codec2_fdmdv.h b/src/codec2_fdmdv.h new file mode 100644 index 0000000..2b809d5 --- /dev/null +++ b/src/codec2_fdmdv.h @@ -0,0 +1,113 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: codec2_fdmdv.h + AUTHOR......: David Rowe + DATE CREATED: April 14 2012 + + A 1400 bit/s (nominal) Frequency Division Multiplexed Digital Voice + (FDMDV) modem. Used for digital audio over HF SSB. See + README_fdmdv.txt for more information, and fdmdv_mod.c and + fdmdv_demod.c for example usage. + + The name codec2_fdmdv.h is used to make it unique when "make + installed". + + References: + + [1] http://n1su.com/fdmdv/FDMDV_Docs_Rel_1_4b.pdf + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2012 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __FDMDV__ +#define __FDMDV__ + +#include "comp.h" +#include "modem_stats.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* set up the calling convention for DLL function import/export for + WIN32 cross compiling */ + +#ifdef __CODEC2_WIN32__ +#ifdef __CODEC2_BUILDING_DLL__ +#define CODEC2_WIN32SUPPORT __declspec(dllexport) __stdcall +#else +#define CODEC2_WIN32SUPPORT __declspec(dllimport) __stdcall +#endif +#else +#define CODEC2_WIN32SUPPORT +#endif + +#define FDMDV_NC 14 /* default number of data carriers */ +#define FDMDV_NC_MAX 20 /* maximum number of data carriers */ +#define FDMDV_BITS_PER_FRAME 28 /* 20ms frames, for nominal 1400 bit/s */ +#define FDMDV_NOM_SAMPLES_PER_FRAME 160 /* modulator output samples/frame and nominal demod samples/frame */ + /* at 8000 Hz sample rate */ +#define FDMDV_MAX_SAMPLES_PER_FRAME 200 /* max demod samples/frame, use this to allocate storage */ +#define FDMDV_SCALE 1000 /* suggested scaling for 16 bit shorts */ +#define FDMDV_FCENTRE 1500 /* Centre frequency, Nc/2 carriers below this, Nc/2 carriers above (Hz) */ + +/* 8 to 48 kHz sample rate conversion */ + +#define FDMDV_OS 2 /* oversampling rate */ +#define FDMDV_OS_TAPS_16K 48 /* number of OS filter taps at 16kHz */ +#define FDMDV_OS_TAPS_8K (FDMDV_OS_TAPS_16K/FDMDV_OS) /* number of OS filter taps at 8kHz */ + +/* FDMDV states and stats structures */ + +struct FDMDV; + +struct FDMDV * fdmdv_create(int Nc); +void fdmdv_destroy(struct FDMDV *fdmdv_state); +void fdmdv_use_old_qpsk_mapping(struct FDMDV *fdmdv_state); +int fdmdv_bits_per_frame(struct FDMDV *fdmdv_state); +float fdmdv_get_fsep(struct FDMDV *fdmdv_state); +void fdmdv_set_fsep(struct FDMDV *fdmdv_state, float fsep); + +void fdmdv_mod(struct FDMDV *fdmdv_state, COMP tx_fdm[], int tx_bits[], int *sync_bit); +void fdmdv_demod(struct FDMDV *fdmdv_state, int rx_bits[], int *reliable_sync_bit, COMP rx_fdm[], int *nin); + +void fdmdv_get_test_bits(struct FDMDV *fdmdv_state, int tx_bits[]); +int fdmdv_error_pattern_size(struct FDMDV *fdmdv_state); +void fdmdv_put_test_bits(struct FDMDV *f, int *sync, short error_pattern[], int *bit_errors, int *ntest_bits, int rx_bits[]); + +void fdmdv_get_demod_stats(struct FDMDV *fdmdv_state, struct MODEM_STATS *stats); + +void fdmdv_8_to_16(float out16k[], float in8k[], int n); +void fdmdv_8_to_16_short(short out16k[], short in8k[], int n); +void fdmdv_16_to_8(float out8k[], float in16k[], int n); +void fdmdv_16_to_8_short(short out8k[], short in16k[], int n); + +void fdmdv_freq_shift(COMP rx_fdm_fcorr[], COMP rx_fdm[], float foff, COMP *foff_phase_rect, int nin); + +/* debug/development function(s) */ + +void fdmdv_dump_osc_mags(struct FDMDV *f); +void fdmdv_simulate_channel(float *sig_pwr_av, COMP samples[], int nin, float target_snr); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/src/comp.h b/src/comp.h new file mode 100644 index 0000000..ffc20c1 --- /dev/null +++ b/src/comp.h @@ -0,0 +1,38 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: comp.h + AUTHOR......: David Rowe + DATE CREATED: 24/08/09 + + Complex number definition. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2009 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __COMP__ +#define __COMP__ + +/* Complex number */ + +typedef struct { + float real; + float imag; +} COMP; + +#endif diff --git a/src/comp_prim.h b/src/comp_prim.h new file mode 100644 index 0000000..d0f070a --- /dev/null +++ b/src/comp_prim.h @@ -0,0 +1,141 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: comp_prim.h + AUTHOR......: David Rowe + DATE CREATED: Marh 2015 + + Complex number maths primitives. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2015 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __COMP_PRIM__ +#define __COMP_PRIM__ + +/*---------------------------------------------------------------------------*\ + + FUNCTIONS + +\*---------------------------------------------------------------------------*/ + +inline static COMP cneg(COMP a) +{ + COMP res; + + res.real = -a.real; + res.imag = -a.imag; + + return res; +} + +inline static COMP cconj(COMP a) +{ + COMP res; + + res.real = a.real; + res.imag = -a.imag; + + return res; +} + +inline static COMP cmult(COMP a, COMP b) +{ + COMP res; + + res.real = a.real*b.real - a.imag*b.imag; + res.imag = a.real*b.imag + a.imag*b.real; + + return res; +} + +inline static COMP fcmult(float a, COMP b) +{ + COMP res; + + res.real = a*b.real; + res.imag = a*b.imag; + + return res; +} + +inline static COMP cadd(COMP a, COMP b) +{ + COMP res; + + res.real = a.real + b.real; + res.imag = a.imag + b.imag; + + return res; +} + +inline static float cabsolute(COMP a) +{ + return sqrtf((a.real * a.real) + (a.imag * a.imag) ); +} + +/* + * Euler's formula in a new convenient function + */ +inline static COMP comp_exp_j(float phi){ + COMP res; + res.real = cosf(phi); + res.imag = sinf(phi); + return res; +} + +/* + * Quick and easy complex 0 + */ +inline static COMP comp0(){ + COMP res; + res.real = 0; + res.imag = 0; + return res; +} + +/* + * Quick and easy complex subtract + */ +inline static COMP csub(COMP a, COMP b){ + COMP res; + res.real = a.real-b.real; + res.imag = a.imag-b.imag; + return res; +} + +/* + * Compare the magnitude of a and b. if |a|>|b|, return true, otw false. + * This needs no square roots + */ +inline static int comp_mag_gt(COMP a,COMP b){ + return ((a.real*a.real)+(a.imag*a.imag)) > ((b.real*b.real)+(b.imag*b.imag)); +} + +/* + * Normalize a complex number's magnitude to 1 + */ +inline static COMP comp_normalize(COMP a){ + COMP b; + float av = cabsolute(a); + b.real = a.real/av; + b.imag = a.imag/av; + return b; +} + +#endif diff --git a/src/debug_alloc.h b/src/debug_alloc.h new file mode 100644 index 0000000..62f0456 --- /dev/null +++ b/src/debug_alloc.h @@ -0,0 +1,61 @@ +/* debug_alloc.h + * + * Some macros which can report on malloc results. + * + * Enable with "-D DEBUG_ALLOC" + */ + +#ifndef DEBUG_ALLOC_H +#define DEBUG_ALLOC_H + +#include + +// Debug calls + +#ifdef CORTEX_M4 +extern char * __heap_end; +register char * sp asm ("sp"); +#endif + + static inline void * DEBUG_MALLOC(const char *func, size_t size) { + void *ptr = malloc(size); + fprintf(stderr, "MALLOC: %s %p %d", func, ptr, (int)size); +#ifdef CORTEX_M4 + + fprintf(stderr, " : sp %p ", sp); +#endif + if (!ptr) fprintf(stderr, " ** FAILED **"); + fprintf(stderr, "\n"); + return(ptr); + } + + static inline void * DEBUG_CALLOC(const char *func, size_t nmemb, size_t size) { + void *ptr = calloc(nmemb, size); + fprintf(stderr, "CALLOC: %s %p %d %d", func, ptr, (int)nmemb, (int)size); +#ifdef CORTEX_M4 + fprintf(stderr, " : sp %p ", sp); +#endif + if (!ptr) fprintf(stderr, " ** FAILED **"); + fprintf(stderr, "\n"); + return(ptr); + } + static inline void DEBUG_FREE(const char *func, void *ptr) { + free(ptr); + fprintf(stderr, "FREE: %s %p\n", func, ptr); + } + +#ifdef DEBUG_ALLOC + #define MALLOC(size) DEBUG_MALLOC(__func__, size) + #define CALLOC(nmemb, size) DEBUG_CALLOC(__func__, nmemb, size) + #define FREE(ptr) DEBUG_FREE(__func__, ptr) +#else //DEBUG_ALLOC +// Default to normal calls + #define MALLOC(size) malloc(size) + + #define CALLOC(nmemb, size) calloc(nmemb, size) + + #define FREE(ptr) free(ptr) + +#endif //DEBUG_ALLOC + +#endif //DEBUG_ALLOC_H diff --git a/src/drs232.c b/src/drs232.c new file mode 100644 index 0000000..92f65ca --- /dev/null +++ b/src/drs232.c @@ -0,0 +1,235 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: drs232.c + AUTHOR......: David Rowe + DATE CREATED: March 2016 + + Looks for a unique word in series of bits. When found, deframes a RS232 + encoded frame of bytes. Used for high bit rate Horus SSTV reception. + + Frame format: + + 16 bytes 0x55 - 0xabcdef01 UW - 256 bytes of payload - 2 bytes CRC + + Each byte is encoded as a 10 bit RS232 serial word: + + 0 LSB .... MSB 1 + + Building: + + $ gcc drs232.c -o drs232 -Wall + +\*---------------------------------------------------------------------------*/ + + +/* + Copyright (C) 2016 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#include +#include +#include +#include +#include +#include + +/* states -----------------------------------------------*/ + +#define LOOK_FOR_UW 0 +#define COLLECT_PACKET 1 + +/* packet parameters */ + +#define UW_BYTES 4 +#define UW_BITS 40 +#define UW_ALLOWED_ERRORS 5 +#define BYTES_PER_PACKET 256 +#define CRC_BYTES 2 +#define BITS_PER_BYTE 10 +#define UNPACKED_PACKET_BYTES ((UW_BYTES+BYTES_PER_PACKET+CRC_BYTES)*BITS_PER_BYTE) + +/* UW pattern we look for, including start/stop bits */ + +uint8_t uw[] = { + /* 0xb 0xa */ + 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, + /* 0xd 0xc */ + 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, + /* 0xf 0xe */ + 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, + /* 0x1 0x0 */ + 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, +}; + + // from http://stackoverflow.com/questions/10564491/function-to-calculate-a-crc16-checksum + +unsigned short gen_crc16(unsigned char* data_p, int length){ + unsigned char x; + unsigned short crc = 0xFFFF; + + while (length--){ + x = crc >> 8 ^ *data_p++; + x ^= x>>4; + crc = (crc << 8) ^ ((unsigned short)(x << 12)) ^ ((unsigned short)(x <<5)) ^ ((unsigned short)x); + } + + return crc; +} + + +int main(int argc, char *argv[]) { + FILE *fin, *fout; + int state, next_state, i, j, k, ind, score, bits_read; + char bit; + uint8_t unpacked_packet[UNPACKED_PACKET_BYTES]; + uint8_t packet[BYTES_PER_PACKET+CRC_BYTES]; + uint8_t abyte; + uint16_t tx_checksum, rx_checksum; + int verbose, packet_errors, packets; + + if (argc < 3) { + fprintf(stderr, "usage: drs232 InputOneBitPerChar OutputPackets [-v[v]]\n"); + exit(1); + } + + if (strcmp(argv[1], "-") == 0) fin = stdin; + else if ( (fin = fopen(argv[1],"rb")) == NULL ) { + fprintf(stderr, "Error opening input file: %s: %s.\n", + argv[1], strerror(errno)); + exit(1); + } + + if (strcmp(argv[2], "-") == 0) fout = stdout; + else if ( (fout = fopen(argv[2],"wb")) == NULL ) { + fprintf(stderr, "Error opening output file: %s: %s.\n", + argv[2], strerror(errno)); + exit(1); + } + + verbose = 0; + if (argc > 3) { + if (strcmp(argv[3], "-v") == 0) { + verbose = 1; + } + if (strcmp(argv[3], "-vv") == 0) { + verbose = 2; + } + } + + state = LOOK_FOR_UW; + for(i=0; i (UW_BITS-UW_ALLOWED_ERRORS)) { + if (verbose == 2) { + fprintf(stderr,"UW found!\n"); + } + ind = UW_BITS; + next_state = COLLECT_PACKET; + } + } + + if (state == COLLECT_PACKET) { + unpacked_packet[ind++] = bit; + + if (ind == UNPACKED_PACKET_BYTES) { + + /* OK we have enough bits, remove RS232 sync bits and pack */ + + for(i=UW_BITS,k=0; i. +*/ + +#include +#include +#include +#include +#include +#include + +#include "mpdecode_core.h" + +/* Machine generated consts, H_rows, H_cols, test input/output data to + change LDPC code regenerate this file. */ + +#include "H2064_516_sparse.h" + +/* states -----------------------------------------------*/ + +#define LOOK_FOR_UW 0 +#define COLLECT_PACKET 1 + +/* packet parameters */ + +#define UW_BYTES 4 +#define UW_BITS 40 +#define UW_ALLOWED_ERRORS 5 +#define BYTES_PER_PACKET 256 +#define CRC_BYTES 2 +#define PARITY_BYTES 65 +#define BITS_PER_BYTE 10 +#define UNPACKED_PACKET_BYTES ((UW_BYTES+BYTES_PER_PACKET+CRC_BYTES)*BITS_PER_BYTE) +#define SYMBOLS_PER_PACKET (BYTES_PER_PACKET+CRC_BYTES+PARITY_BYTES)*BITS_PER_BYTE + +/* UW pattern we look for, including start/stop bits */ + +uint8_t uw[] = { + /* 0xb 0xa */ + 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, + /* 0xd 0xc */ + 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, + /* 0xf 0xe */ + 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, + /* 0x1 0x0 */ + 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, +}; + + +// from http://stackoverflow.com/questions/10564491/function-to-calculate-a-crc16-checksum + +unsigned short gen_crc16(unsigned char* data_p, int length){ + unsigned char x; + unsigned short crc = 0xFFFF; + + while (length--){ + x = crc >> 8 ^ *data_p++; + x ^= x>>4; + crc = (crc << 8) ^ ((unsigned short)(x << 12)) ^ ((unsigned short)(x <<5)) ^ ((unsigned short)x); + } + + return crc; +} + + +int main(int argc, char *argv[]) { + FILE *fin, *fout; + int state, next_state, i, j, k, ind, score, verbose; + float symbol; + uint8_t bit, bit_buffer[UW_BITS]; + double symbol_buf[SYMBOLS_PER_PACKET]; + double symbol_buf_no_rs232[SYMBOLS_PER_PACKET]; + float llr[SYMBOLS_PER_PACKET]; + uint8_t unpacked_packet[CODELENGTH]; + uint8_t packet[BYTES_PER_PACKET+CRC_BYTES]; + uint8_t abyte; + uint16_t tx_checksum, rx_checksum, packet_errors, packets; + int CodeLength, iter, parityCheckCount; + struct LDPC ldpc; + + assert(sizeof(uw) == UW_BITS); + + /* LDPC parameters */ + + CodeLength = CODELENGTH; /* length of entire codeword in bits */ + + /* set up LDPC code from include file constants */ + + ldpc.max_iter = MAX_ITER; + ldpc.dec_type = 0; + ldpc.q_scale_factor = 1; + ldpc.r_scale_factor = 1; + ldpc.CodeLength = CODELENGTH; + ldpc.NumberParityBits = NUMBERPARITYBITS; + ldpc.NumberRowsHcols = NUMBERROWSHCOLS; + ldpc.max_row_weight = MAX_ROW_WEIGHT; + ldpc.max_col_weight = MAX_COL_WEIGHT; + ldpc.H_rows = H_rows; + ldpc.H_cols = H_cols; + + /* process command line ----------------------------------------------*/ + + if (argc < 3) { + fprintf(stderr, "usage: drs232 InputOneSymbolPerFloat OutputPackets [-v[v]]\n"); + exit(1); + } + + if (strcmp(argv[1], "-") == 0) fin = stdin; + else if ( (fin = fopen(argv[1],"rb")) == NULL ) { + fprintf(stderr, "Error opening input file: %s: %s.\n", + argv[1], strerror(errno)); + exit(1); + } + + if (strcmp(argv[2], "-") == 0) fout = stdout; + else if ( (fout = fopen(argv[2],"wb")) == NULL ) { + fprintf(stderr, "Error opening output file: %s: %s.\n", + argv[2], strerror(errno)); + exit(1); + } + + verbose = 0; + if (argc > 3) { + if (strcmp(argv[3], "-v") == 0) { + verbose = 1; + } + if (strcmp(argv[3], "-vv") == 0) { + verbose = 2; + } + } + + state = LOOK_FOR_UW; + memset(bit_buffer,0, sizeof(bit_buffer)); + + packet_errors = packets = 0; + + while(fread(&symbol, sizeof(float), 1, fin) == 1) { + + /* make hard decision for purpose of UW detection */ + + bit = symbol < 0; + //printf("symbol; %f bit: %d\n", symbol, bit); + next_state = state; + if (state == LOOK_FOR_UW) { + + /* put latest input bit into sliding buffer */ + + for(i=0; i= (UW_BITS-UW_ALLOWED_ERRORS)) { + //fprintf(stderr,"UW found! score: %d\n verbose: %d\n", score, verbose); + ind = 0; + next_state = COLLECT_PACKET; + } + } + + if (state == COLLECT_PACKET) { + symbol_buf[ind++] = symbol; + + if (ind == SYMBOLS_PER_PACKET) { + + /* OK we have enough bits, remove RS232 sync symbols. + This is set up for bit<->byte ordering as per python + tx code */ + + for(i=0,k=0; i. +*/ + +/*---------------------------------------------------------------------------*\ + + DEFINES + +\*---------------------------------------------------------------------------*/ + +/* Define this to enable EbNodB estimate */ +/* This needs square roots, may take more cpu time than it's worth */ +#define EST_EBNO + +/* This is a flag to make the mod/demod allocate their memory on the stack instead of the heap */ +/* At large sample rates, there's not enough stack space to run the demod */ +#define DEMOD_ALLOC_STACK + +/* This is a flag for the freq. estimator to use a precomputed/rt computed hann window table + On platforms with slow cosf, this will produce a substantial speedup at the cost of a small + amount of memory +*/ +#define USE_HANN_TABLE + +/* This flag turns on run-time hann table generation. If USE_HANN_TABLE is unset, + this flag has no effect. If USE_HANN_TABLE is set and this flag is set, the + hann table will be allocated and generated when fsk_init or fsk_init_hbr is + called. If this flag is not set, a hann function table of size fsk->Ndft MUST + be provided. On small platforms, this can be used with a precomputed table to + save memory at the cost of flash space. +*/ +#define GENERATE_HANN_TABLE_RUNTIME + +/* Turn off table generation if on cortex M4 to save memory */ +#ifdef CORTEX_M4 +#undef USE_HANN_TABLE +#endif + +/*---------------------------------------------------------------------------*\ + + INCLUDES + +\*---------------------------------------------------------------------------*/ + +#include +#include +#include +#include + +#include "fsk.h" +#include "comp_prim.h" +#include "kiss_fftr.h" +#include "modem_probe.h" + +/*---------------------------------------------------------------------------*\ + + FUNCTIONS + +\*---------------------------------------------------------------------------*/ + +static void stats_init(struct FSK *fsk); + +#ifdef USE_HANN_TABLE +/* + This is used by fsk_create and fsk_create_hbr to generate a hann function + table +*/ +static void fsk_generate_hann_table(struct FSK* fsk){ + int Ndft = fsk->Ndft; + size_t i; + + for(i=0; ihann_table[i] = 0.5 - 0.5 * cosf(2.0 * M_PI * (float)i / (float) (Ndft-1)); + } +} +#endif + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: fsk_create_core + AUTHOR......: Brady O'Brien + DATE CREATED: 7 January 2016 + + In this version of the demod the stdanard/hbr modes have been + largely combined at they shared so much common code. The + fsk_create/fsk_create_hbr function interface has been retained to + maximise compatability with existing applications. + +\*---------------------------------------------------------------------------*/ + +struct FSK * fsk_create_core(int Fs, int Rs, int M, int P, int Nsym, int tx_f1, int tx_fs) +{ + struct FSK *fsk; + int i; + + /* Check configuration validity */ + assert(Fs > 0 ); + assert(Rs > 0 ); + assert(tx_f1 > 0); + assert(tx_fs > 0); + assert(P > 0); + assert(Nsym > 0); + /* Ts (Fs/Rs) must be an integer */ + assert( (Fs%Rs) == 0 ); + /* Ts/P (Fs/Rs/P) must be an integer */ + assert( ((Fs/Rs)%P) == 0 ); + assert( M==2 || M==4); + + fsk = (struct FSK*) malloc(sizeof(struct FSK)); assert(fsk != NULL); + + // Need enough bins to with 10% of tone centre + float bin_width_Hz = 0.1*Rs; + float Ndft = (float)Fs/bin_width_Hz; + Ndft = pow(2.0, ceil(log2(Ndft))); + + /* Set constant config parameters */ + fsk->Fs = Fs; + fsk->Rs = Rs; + fsk->Ts = Fs/Rs; + fsk->burst_mode = 0; + fsk->P = P; + fsk->Nsym = Nsym; + fsk->N = fsk->Ts*fsk->Nsym; + fsk->Ndft = Ndft; + fsk->tc = 0.1; + fsk->Nmem = fsk->N+(2*fsk->Ts); + fsk->f1_tx = tx_f1; + fsk->fs_tx = tx_fs; + fsk->nin = fsk->N; + fsk->lock_nin = 0; + fsk->mode = M==2 ? MODE_2FSK : MODE_4FSK; + fsk->Nbits = M==2 ? fsk->Nsym : fsk->Nsym*2; + fsk->est_min = 0; + fsk->est_max = Fs; + fsk->est_space = 0.75*Rs; + + //printf("C.....: M: %d Fs: %d Rs: %d Ts: %d nsym: %d nbit: %d N: %d Ndft: %d fmin: %d fmax: %d\n", + // M, fsk->Fs, fsk->Rs, fsk->Ts, fsk->Nsym, fsk->Nbits, fsk->N, fsk->Ndft, fsk->est_min, fsk->est_max); + /* Set up rx state */ + for(i=0; iphi_c[i] = comp_exp_j(0); + fsk->f_dc = (COMP*)malloc(M*fsk->Nmem*sizeof(COMP)); assert(fsk->f_dc != NULL); + for(i=0; iNmem; i++) + fsk->f_dc[i] = comp0(); + + fsk->fft_cfg = kiss_fft_alloc(Ndft,0,NULL,NULL); assert(fsk->fft_cfg != NULL); + fsk->Sf = (float*)malloc(sizeof(float)*fsk->Ndft); assert(fsk->Sf != NULL); + + #ifdef USE_HANN_TABLE + #ifdef GENERATE_HANN_TABLE_RUNTIME + fsk->hann_table = (float*)malloc(sizeof(float)*fsk->Ndft); assert(fsk->hann_table != NULL); + fsk_generate_hann_table(fsk); + #else + fsk->hann_table = NULL; + #endif + #endif + + for(i=0;iSf[i] = 0; + + fsk->norm_rx_timing = 0; + + /* Set up tx state */ + fsk->tx_phase_c = comp_exp_j(0); + + /* Set up demod stats */ + fsk->EbNodB = 0; + + for( i=0; if_est[i] = 0; + + fsk->ppm = 0; + + fsk->stats = (struct MODEM_STATS*)malloc(sizeof(struct MODEM_STATS)); assert(fsk->stats != NULL); + stats_init(fsk); + fsk->normalise_eye = 1; + + return fsk; +} + +/*---------------------------------------------------------------------------* \ + + FUNCTION....: fsk_create + AUTHOR......: Brady O'Brien + DATE CREATED: 7 January 2016 + + Create and initialize an instance of the FSK modem. Returns a pointer + to the modem state/config struct. One modem config struct may be used + for both mod and demod. + +\*---------------------------------------------------------------------------*/ + +struct FSK * fsk_create(int Fs, int Rs, int M, int tx_f1, int tx_fs) { + return fsk_create_core(Fs, Rs, M, FSK_DEFAULT_P, FSK_DEFAULT_NSYM, tx_f1, tx_fs); +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: fsk_create_hbr + AUTHOR......: Brady O'Brien + DATE CREATED: 11 February 2016 + + Alternate version of create allows user defined decimation P and + Nsym. In the current version of the demod it's simply an alias for + the default core function. + + P is the decimation rate, so the intermal demod processing happens + at Fs/P Hz. Nsym is the number of symbols we average demod + parameters like symbol timing over. + +\*---------------------------------------------------------------------------*/ + +struct FSK * fsk_create_hbr(int Fs, int Rs, int M, int P, int Nsym, int tx_f1, int tx_fs) { + return fsk_create_core(Fs, Rs, M, P, Nsym, tx_f1, tx_fs); +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: fsk_destroy + AUTHOR......: Brady O'Brien + DATE CREATED: 11 February 2016 + + Call this to free all memory and shut down the modem. + +\*---------------------------------------------------------------------------*/ + +void fsk_destroy(struct FSK *fsk){ + free(fsk->f_dc); + free(fsk->fft_cfg); + free(fsk->stats); + free(fsk->hann_table); + free(fsk); +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: fsk_mod + AUTHOR......: Brady O'Brien + DATE CREATED: 11 February 2016 + + FSK modulator function, real valued output samples. + +\*---------------------------------------------------------------------------*/ + +void fsk_mod(struct FSK *fsk,float fsk_out[],uint8_t tx_bits[]){ + COMP tx_phase_c = fsk->tx_phase_c; /* Current complex TX phase */ + int f1_tx = fsk->f1_tx; /* '0' frequency */ + int fs_tx = fsk->fs_tx; /* space between frequencies */ + int Ts = fsk->Ts; /* samples-per-symbol */ + int Fs = fsk->Fs; /* sample freq */ + int M = fsk->mode; + COMP dosc_f[M]; /* phase shift per sample */ + COMP dph; /* phase shift of current bit */ + size_t i,j,m,bit_i,sym; + + /* Init the per sample phase shift complex numbers */ + for( m=0; mNsym; i++){ + sym = 0; + /* Pack the symbol number from the bit stream */ + for( m=M; m>>=1; ){ + uint8_t bit = tx_bits[bit_i]; + bit = (bit==1)?1:0; + sym = (sym<<1)|bit; + bit_i++; + } + /* Look up symbol phase shift */ + dph = dosc_f[sym]; + /* Spin the oscillator for a symbol period */ + for(j=0; jtx_phase_c = tx_phase_c; + +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: fsk_mod_c + AUTHOR......: Brady O'Brien + DATE CREATED: 11 February 2016 + + FSK modulator function, complex valued output samples. + +\*---------------------------------------------------------------------------*/ + +void fsk_mod_c(struct FSK *fsk,COMP fsk_out[],uint8_t tx_bits[]){ + COMP tx_phase_c = fsk->tx_phase_c; /* Current complex TX phase */ + int f1_tx = fsk->f1_tx; /* '0' frequency */ + int fs_tx = fsk->fs_tx; /* space between frequencies */ + int Ts = fsk->Ts; /* samples-per-symbol */ + int Fs = fsk->Fs; /* sample freq */ + int M = fsk->mode; + COMP dosc_f[M]; /* phase shift per sample */ + COMP dph; /* phase shift of current bit */ + size_t i,j,bit_i,sym; + int m; + + /* Init the per sample phase shift complex numbers */ + for( m=0; mNsym; i++){ + sym = 0; + /* Pack the symbol number from the bit stream */ + for( m=M; m>>=1; ){ + uint8_t bit = tx_bits[bit_i]; + bit = (bit==1)?1:0; + sym = (sym<<1)|bit; + bit_i++; + } + /* Look up symbol phase shift */ + dph = dosc_f[sym]; + /* Spin the oscillator for a symbol period */ + for(j=0; jtx_phase_c = tx_phase_c; + +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: fsk_mod_ext_vco + AUTHOR......: David Rowe + DATE CREATED: February 2018 + + Modulator that assume an external VCO. The output is a voltage + that changes for each symbol. + +\*---------------------------------------------------------------------------*/ + +void fsk_mod_ext_vco(struct FSK *fsk, float vco_out[], uint8_t tx_bits[]) { + int f1_tx = fsk->f1_tx; /* '0' frequency */ + int fs_tx = fsk->fs_tx; /* space between frequencies */ + int Ts = fsk->Ts; /* samples-per-symbol */ + int M = fsk->mode; + int i, j, m, sym, bit_i; + + bit_i = 0; + for(i=0; iNsym; i++) { + /* generate the symbol number from the bit stream, + e.g. 0,1 for 2FSK, 0,1,2,3 for 4FSK */ + + sym = 0; + + /* unpack the symbol number from the bit stream */ + + for( m=M; m>>=1; ){ + uint8_t bit = tx_bits[bit_i]; + bit = (bit==1)?1:0; + sym = (sym<<1)|bit; + bit_i++; + } + + /* + Map 'sym' to VCO frequency + Note: drive is inverted, a higher tone drives VCO voltage lower + */ + + //fprintf(stderr, "i: %d sym: %d freq: %f\n", i, sym, f1_tx + fs_tx*(float)sym); + for(j=0; jnin; +} + +/* + * Internal function to estimate the frequencies of the FSK tones. + * This is split off because it is fairly complicated, needs a bunch of memory, and probably + * takes more cycles than the rest of the demod. + * Parameters: + * fsk - FSK struct from demod containing FSK config + * fsk_in - block of samples in this demod cycles, must be nin long + * freqs - Array for the estimated frequencies + * M - number of frequency peaks to find + */ +void fsk_demod_freq_est(struct FSK *fsk, COMP fsk_in[], float *freqs, int M) { + int Ndft = fsk->Ndft; + int Fs = fsk->Fs; + int nin = fsk->nin; + size_t i,j; + float hann; + float max; + int imax; + kiss_fft_cfg fft_cfg = fsk->fft_cfg; + int freqi[M]; + int st,en,f_zero; + + /* Array to do complex FFT from using kiss_fft */ + #ifdef DEMOD_ALLOC_STACK + kiss_fft_cpx *fftin = (kiss_fft_cpx*)alloca(sizeof(kiss_fft_cpx)*Ndft); + kiss_fft_cpx *fftout = (kiss_fft_cpx*)alloca(sizeof(kiss_fft_cpx)*Ndft); + #else + kiss_fft_cpx *fftin = (kiss_fft_cpx*)malloc(sizeof(kiss_fft_cpx)*Ndft); + kiss_fft_cpx *fftout = (kiss_fft_cpx*)malloc(sizeof(kiss_fft_cpx)*Ndft); + #endif + + st = (fsk->est_min*Ndft)/Fs + Ndft/2; if (st < 0) st = 0; + en = (fsk->est_max*Ndft)/Fs + Ndft/2; if (en > Ndft) en = Ndft; + //fprintf(stderr, "min: %d max: %d st: %d en: %d\n", fsk->est_min, fsk->est_max, st, en); + + f_zero = (fsk->est_space*Ndft)/Fs; + + int numffts = floor((float)nin/(Ndft/2)) - 1; + for(j=0; jhann_table[i]; + #else + hann = 0.5 - 0.5 * cosf(2.0 * M_PI * (float)i / (float) (fft_samps-1)); + #endif + fftin[i].r = hann*fsk_in[i+a].real; + fftin[i].i = hann*fsk_in[i+a].imag; + } + + /* Do the FFT */ + kiss_fft(fft_cfg,fftin,fftout); + + /* FFT shift to put DC bin at Ndft/2 */ + kiss_fft_cpx tmp; + for(i=0; itc; + for(i=0; iSf[i] = (fsk->Sf[i]*(1-tc)) + (sqrtf(fftout[i].r)*tc); + fftout[i].i = fsk->Sf[i]; + } + } + + modem_probe_samp_f("t_Sf",fsk->Sf,Ndft); + + max = 0; + /* Find the M frequency peaks here */ + for(i=0; i max){ + max = fftout[j].i; + imax = j; + } + } + /* Blank out FMax +/-Fspace/2 */ + int f_min, f_max; + f_min = imax - f_zero; + f_min = f_min < 0 ? 0 : f_min; + f_max = imax + f_zero; + f_max = f_max > Ndft ? Ndft : f_max; + for(j=f_min; j= freqi[i-1]) i++; + else{ + j = freqi[i]; + freqi[i] = freqi[i-1]; + freqi[i-1] = j; + if(i>1) i--; + } + } + + /* Convert freqs from indices to frequencies */ + for(i=0; ifs_tx*Ndft/Fs)-1; + for(i=bin; i<=bin+2; i++) mask[i] = 1.0; + } + int len_mask = bin+2+1; + + #ifdef MODEMPROBE_ENABLE + modem_probe_samp_f("t_mask",mask,len_mask); + #endif + + /* drag mask over Sf, looking for peak in correlation */ + int b_max = st; float corr_max = 0.0; + float *Sf = fsk->Sf; + for (int b=st; b corr_max) { + corr_max = corr; + b_max = b; + } + } + float foff = (b_max-Ndft/2)*Fs/Ndft; + //fprintf(stderr, "fsk->fs_tx: %d\n",fsk->fs_tx); + for (int m=0; mf2_est[m] = foff + m*fsk->fs_tx; + #ifdef MODEMPROBE_ENABLE + modem_probe_samp_f("t_f2_est",fsk->f2_est,M); + #endif + + #ifndef DEMOD_ALLOC_STACK + free(fftin); + free(fftout); + #endif +} + +/* core demodulator function */ +void fsk_demod_core(struct FSK *fsk, uint8_t rx_bits[], float rx_sd[], COMP fsk_in[]){ + int N = fsk->N; + int Ts = fsk->Ts; + int Rs = fsk->Rs; + int Fs = fsk->Fs; + int nsym = fsk->Nsym; + int nin = fsk->nin; + int P = fsk->P; + int Nmem = fsk->Nmem; + int M = fsk->mode; + size_t i,j,m; + float ft1; + + COMP t[M]; /* complex number temps */ + COMP t_c; /* another complex temp */ + COMP *phi_c = fsk->phi_c; + COMP *f_dc = fsk->f_dc; + COMP phi_ft; + int nold = Nmem-nin; + + COMP dphift; + float rx_timing,norm_rx_timing,old_norm_rx_timing,d_norm_rx_timing,appm; + + float fc_avg,fc_tx; + float meanebno,stdebno,eye_max; + int neyesamp,neyeoffset; + + #ifdef MODEMPROBE_ENABLE + #define NMP_NAME 26 + char mp_name_tmp[NMP_NAME+1]; /* Temporary string for modem probe trace names */ + #endif + + /* Estimate tone frequencies */ + fsk_demod_freq_est(fsk,fsk_in,fsk->f_est,M); + #ifdef MODEMPROBE_ENABLE + modem_probe_samp_f("t_f_est",fsk->f_est,M); + #endif + float *f_est; + if (fsk->freq_est_type) + f_est = fsk->f2_est; + else + f_est = fsk->f_est; + + /* update filter (integrator) memory by shifting in nin samples */ + for(m=0; mnorm_rx_timing; + fsk->norm_rx_timing = norm_rx_timing; + + /* Estimate sample clock offset */ + d_norm_rx_timing = norm_rx_timing - old_norm_rx_timing; + + /* Filter out big jumps in due to nin change */ + if(fabsf(d_norm_rx_timing) < .2){ + appm = 1e6*d_norm_rx_timing/(float)nsym; + fsk->ppm = .9*fsk->ppm + .1*appm; + } + + /* Figure out how many samples are needed the next modem cycle */ + /* Unless we're in burst mode or nin locked */ + if(!fsk->burst_mode && !fsk->lock_nin) { + if(norm_rx_timing > 0.25) + fsk->nin = N+Ts/2; + else if(norm_rx_timing < -0.25) + fsk->nin = N-Ts/2; + else + fsk->nin = N; + } + + modem_probe_samp_f("t_norm_rx_timing",&(norm_rx_timing),1); + modem_probe_samp_i("t_nin",&(fsk->nin),1); + + /* Re-sample the integrators with linear interpolation magic */ + int low_sample = (int)floorf(rx_timing); + float fract = rx_timing - (float)low_sample; + int high_sample = (int)ceilf(rx_timing); + + /* Vars for finding the max-of-4 for each bit */ + float tmax[M]; + + #ifdef EST_EBNO + meanebno = 0; + stdebno = 0; + #endif + + /* FINALLY, THE BITS */ + /* also, resample fx_int */ + for(i=0; imax){ + max = tmax[m]; + sym = m; + } + if(tmax[m]>1; + } + } + + /* Produce soft decision symbols */ + if(rx_sd != NULL){ + /* Convert symbols from max^2 into max */ + for( m=0; m 0.0) { + stdebno = sqrt(stdebno); + } else { + stdebno = 0.0; + } + + fsk->EbNodB = -6+(20*log10f((1e-6+meanebno)/(1e-6+stdebno))); + #else + fsk->EbNodB = 1; + #endif + + /* Write some statistics to the stats struct */ + + /* Save clock offset in ppm */ + fsk->stats->clock_offset = fsk->ppm; + + /* Calculate and save SNR from EbNodB estimate */ + + fsk->stats->snr_est = .5*fsk->stats->snr_est + .5*fsk->EbNodB;//+ 10*log10f(((float)Rs)/((float)Rs*M)); + + /* Save rx timing */ + fsk->stats->rx_timing = (float)rx_timing; + + /* Estimate and save frequency offset */ + fc_avg = fc_tx = 0.0; + for(int m=0; mf1_tx + m*fsk->fs_tx)/M; + } + fsk->stats->foff = fc_tx-fc_avg; + + /* Take a sample for the eye diagrams ---------------------------------- */ + + /* due to oversample rate P, we have too many samples for eye + trace. So lets output a decimated version. We use 2P + as we want two symbols worth of samples in trace */ + + int neyesamp_dec = ceil(((float)P*2)/MODEM_STATS_EYE_IND_MAX); + neyesamp = (P*2)/neyesamp_dec; + assert(neyesamp <= MODEM_STATS_EYE_IND_MAX); + fsk->stats->neyesamp = neyesamp; + + neyeoffset = high_sample+1; + + int eye_traces = MODEM_STATS_ET_MAX/M; + int ind; + + fsk->stats->neyetr = fsk->mode*eye_traces; + for( i=0; iMODEM_STATS_EYE_IND_MAX advance through integrated + samples newamp_dec at a time so we dont overflow rx_eye[][] + */ + ind = 2*P*i + neyeoffset + j*neyesamp_dec; + assert((i*M+m) < MODEM_STATS_ET_MAX); + assert(ind < (nsym+1)*P); + fsk->stats->rx_eye[i*M+m][j] = cabsolute(f_int[m][ind]); + } + } + } + + if (fsk->normalise_eye) { + eye_max = 0; + /* Normalize eye to +/- 1 */ + for(i=0; istats->rx_eye[i][j])>eye_max) + eye_max = fabsf(fsk->stats->rx_eye[i][j]); + + for(i=0; istats->rx_eye[i][j] = fsk->stats->rx_eye[i][j]/eye_max; + } + + fsk->stats->nr = 0; + fsk->stats->Nc = 0; + + for(i=0; istats->f_est[i] = f_est[i]; + + /* Dump some internal samples */ + modem_probe_samp_f("t_EbNodB",&(fsk->EbNodB),1); + modem_probe_samp_f("t_ppm",&(fsk->ppm),1); + modem_probe_samp_f("t_rx_timing",&(rx_timing),1); +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: fsk_demod/fsk_demod_sd + AUTHOR......: Brady O'Brien + DATE CREATED: 11 February 2016 + + FSK demodulator functions: + + fsk_demod...: complex samples in, bits out + fsk_demos_sd: complex samples in, soft decision symbols out + +\*---------------------------------------------------------------------------*/ + +void fsk_demod(struct FSK *fsk, uint8_t rx_bits[], COMP fsk_in[]){ + fsk_demod_core(fsk,rx_bits,NULL,fsk_in); +} + +void fsk_demod_sd(struct FSK *fsk, float rx_sd[], COMP fsk_in[]){ + fsk_demod_core(fsk,NULL,rx_sd,fsk_in); +} + +/* make sure stats have known values in case monitoring process reads stats before they are set */ +static void stats_init(struct FSK *fsk) { + /* Take a sample for the eye diagrams */ + int i,j,m; + int P = fsk->P; + int M = fsk->mode; + + /* due to oversample rate P, we have too many samples for eye + trace. So lets output a decimated version */ + + /* asserts below as we found some problems over-running eye matrix */ + + /* TODO: refactor eye tracing code here and in fsk_demod */ + + int neyesamp_dec = ceil(((float)P*2)/MODEM_STATS_EYE_IND_MAX); + int neyesamp = (P*2)/neyesamp_dec; + assert(neyesamp <= MODEM_STATS_EYE_IND_MAX); + fsk->stats->neyesamp = neyesamp; + + int eye_traces = MODEM_STATS_ET_MAX/M; + + fsk->stats->neyetr = fsk->mode*eye_traces; + for(i=0; istats->rx_eye[i*M+m][j] = 0; + } + } + } + + fsk->stats->rx_timing = fsk->stats->snr_est = 0; + +} + + +/* Set the FSK modem into burst demod mode */ + +void fsk_enable_burst_mode(struct FSK *fsk){ + fsk->nin = fsk->N; + fsk->burst_mode = 1; +} + +void fsk_clear_estimators(struct FSK *fsk){ + int i; + /* Clear freq estimator state */ + for(i=0; i < (fsk->Ndft); i++){ + fsk->Sf[i] = 0; + } + /* Reset timing diff correction */ + fsk->nin = fsk->N; +} + +void fsk_get_demod_stats(struct FSK *fsk, struct MODEM_STATS *stats){ + /* copy from internal stats, note we can't overwrite stats completely + as it has other states rqd by caller, also we want a consistent + interface across modem types for the freedv_api. + */ + + stats->clock_offset = fsk->stats->clock_offset; + stats->snr_est = fsk->stats->snr_est; // TODO: make this SNR not Eb/No + stats->rx_timing = fsk->stats->rx_timing; + stats->foff = fsk->stats->foff; + + stats->neyesamp = fsk->stats->neyesamp; + stats->neyetr = fsk->stats->neyetr; + memcpy(stats->rx_eye, fsk->stats->rx_eye, sizeof(stats->rx_eye)); + memcpy(stats->f_est, fsk->stats->f_est, fsk->mode*sizeof(float)); + + /* these fields not used for FSK so set to something sensible */ + + stats->sync = 0; + stats->nr = fsk->stats->nr; + stats->Nc = fsk->stats->Nc; +} + +/* + * Set the minimum and maximum frequencies at which the freq. estimator can find tones + */ +void fsk_set_freq_est_limits(struct FSK *fsk, int est_min, int est_max){ + assert(fsk != NULL); + assert(est_min >= -fsk->Fs/2); + assert(est_max <= fsk->Fs/2); + assert(est_max > est_min); + fsk->est_min = est_min; + fsk->est_max = est_max; +} + +void fsk_stats_normalise_eye(struct FSK *fsk, int normalise_enable) { + assert(fsk != NULL); + fsk->normalise_eye = normalise_enable; +} + +void fsk_set_freq_est_alg(struct FSK *fsk, int est_type) { + assert(fsk != NULL); + fsk->freq_est_type = est_type; +} + + + + + + + diff --git a/src/fsk.h b/src/fsk.h new file mode 100644 index 0000000..c21ec33 --- /dev/null +++ b/src/fsk.h @@ -0,0 +1,207 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: fsk.h + AUTHOR......: Brady O'Brien + DATE CREATED: 6 January 2016 + + C Implementation of 2FSK/4FSK modulator/demodulator, based on octave/fsk_horus.m + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2016 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + + +#ifndef __C2FSK_H +#define __C2FSK_H + +#include +#include "comp.h" +#include "kiss_fftr.h" +#include "modem_stats.h" + +#define MODE_2FSK 2 +#define MODE_4FSK 4 + +#define MODE_M_MAX 4 + +#define FSK_SCALE 16383 + +/* default internal parameters */ +#define FSK_DEFAULT_P 8 +#define FSK_DEFAULT_NSYM 50 + +struct FSK { + /* Static parameters set up by fsk_init */ + int Ndft; /* freq offset est fft */ + int Fs; /* sample freq */ + int N; /* processing buffer size */ + int Rs; /* symbol rate */ + int Ts; /* samples per symbol */ + int Nmem; /* size of extra mem for timing adj */ + int P; /* oversample rate for timing est/adj */ + int Nsym; /* Number of symbols spat out in a processing frame */ + int Nbits; /* Number of bits spat out in a processing frame */ + int f1_tx; /* f1 for modulator */ + int fs_tx; /* Space between TX freqs for modulatosr */ + int mode; /* 2FSK or 4FSK */ + float tc; /* time constant for smoothing FFTs */ + int est_min; /* Minimum frequency for freq. estimator */ + int est_max; /* Maximum frequency for freq. estimaotr */ + int est_space; /* Minimum frequency spacing for freq. estimator */ + float* hann_table; /* Precomputed or runtime computed hann window table */ + + /* Parameters used by demod */ + float* Sf; /* Average of magnitude spectrum */ + COMP phi_c[MODE_M_MAX]; /* phase of each demod local oscillator */ + COMP *f_dc; /* down converted samples */ + + kiss_fft_cfg fft_cfg; /* Config for KISS FFT, used in freq est */ + float norm_rx_timing; /* Normalized RX timing */ + + + /* Parameters used by mod */ + COMP tx_phase_c; /* TX phase, but complex */ + + /* Statistics generated by demod */ + float EbNodB; /* Estimated EbNo in dB */ + float f_est[MODE_M_MAX]; /* Estimated frequencies (peak method) */ + float f2_est[MODE_M_MAX];/* Estimated frequencies (mask method) */ + int freq_est_type; /* which estimator to use */ + float ppm; /* Estimated PPM clock offset */ + + /* Parameters used by mod/demod and driving code */ + int nin; /* Number of samples to feed the next demod cycle */ + int burst_mode; /* enables/disables 'burst' mode */ + int lock_nin; /* locks nin during testing */ + + /* modem statistic struct */ + struct MODEM_STATS *stats; + int normalise_eye; /* enables/disables normalisation of eye diagram */ +}; + +/* + * Create an FSK config/state struct from a set of config parameters + * + * int Fs - Sample frequency + * int Rs - Symbol rate + * int tx_f1 - '0' frequency + * int tx_fs - frequency spacing + */ +struct FSK * fsk_create(int Fs, int Rs, int M, int tx_f1, int tx_fs); + +/* + * Create an FSK config/state struct from a set of config parameters + * + * int Fs - Sample frequency + * int Rs - Symbol rate + * int tx_f1 - '0' frequency + * int tx_fs - frequency spacing + */ +struct FSK * fsk_create_hbr(int Fs, int Rs, int M, int P, int Nsym, int tx_f1, int tx_fs); + +/* + * Set the minimum and maximum frequencies at which the freq. estimator can find tones + */ +void fsk_set_freq_est_limits(struct FSK *fsk,int fmin, int fmax); + +/* + * Clear the estimator states + */ +void fsk_clear_estimators(struct FSK *fsk); + +/* + * Fills MODEM_STATS struct with demod statistics + */ +void fsk_get_demod_stats(struct FSK *fsk, struct MODEM_STATS *stats); + +/* + * Destroy an FSK state struct and free it's memory + * + * struct FSK *fsk - FSK config/state struct to be destroyed + */ +void fsk_destroy(struct FSK *fsk); + +/* + * Modulates Nsym bits into N samples + * + * struct FSK *fsk - FSK config/state struct, set up by fsk_create + * float fsk_out[] - Buffer for N samples of modulated FSK + * uint8_t tx_bits[] - Buffer containing Nbits unpacked bits + */ +void fsk_mod(struct FSK *fsk, float fsk_out[], uint8_t tx_bits[]); + +/* + * Modulates Nsym bits into N samples + * + * struct FSK *fsk - FSK config/state struct, set up by fsk_create + * float fsk_out[] - Buffer for N samples of "voltage" used to modulate an external VCO + * uint8_t tx_bits[] - Buffer containing Nbits unpacked bits + */ +void fsk_mod_ext_vco(struct FSK *fsk, float vco_out[], uint8_t tx_bits[]); + +/* + * Modulates Nsym bits into N complex samples + * + * struct FSK *fsk - FSK config/state struct, set up by fsk_create + * comp fsk_out[] - Buffer for N samples of modulated FSK + * uint8_t tx_bits[] - Buffer containing Nbits unpacked bits + */ +void fsk_mod_c(struct FSK *fsk, COMP fsk_out[], uint8_t tx_bits[]); + + +/* + * Returns the number of samples needed for the next fsk_demod() cycle + * + * struct FSK *fsk - FSK config/state struct, set up by fsk_create + * returns - number of samples to be fed into fsk_demod next cycle + */ +uint32_t fsk_nin(struct FSK *fsk); + + +/* + * Demodulate some number of FSK samples. The number of samples to be + * demodulated can be found by calling fsk_nin(). + * + * struct FSK *fsk - FSK config/state struct, set up by fsk_create + * uint8_t rx_bits[] - Buffer for Nbits unpacked bits to be written + * float fsk_in[] - nin samples of modulated FSK + */ +void fsk_demod(struct FSK *fsk, uint8_t rx_bits[],COMP fsk_in[]); + +/* + * Demodulate some number of FSK samples. The number of samples to be + * demodulated can be found by calling fsk_nin(). + * + * struct FSK *fsk - FSK config/state struct, set up by fsk_create + * float rx_bits[] - Buffer for Nbits soft decision bits to be written + * float fsk_in[] - nin samples of modualted FSK + */ +void fsk_demod_sd(struct FSK *fsk, float rx_bits[],COMP fsk_in[]); + +/* enables/disables normalisation of eye diagram samples */ + +void fsk_stats_normalise_eye(struct FSK *fsk, int normalise_enable); + +/* Set the FSK modem into burst demod mode */ + +void fsk_enable_burst_mode(struct FSK *fsk); + +/* Set freq est algorithm 0: peak 1:mask */ +void fsk_set_freq_est_alg(struct FSK *fsk, int est_type); + +#endif diff --git a/src/fsk_demod.c b/src/fsk_demod.c new file mode 100644 index 0000000..f245822 --- /dev/null +++ b/src/fsk_demod.c @@ -0,0 +1,445 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: fsk_demod.c + AUTHOR......: Brady O'Brien + DATE CREATED: 8 January 2016 + + C test driver for fsk_demod in fsk.c. Reads in a stream of 32 bit cpu endian + floats and writes out the detected bits + + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2016 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#define TEST_FRAME_SIZE 100 /* must match fsk_get_test_bits.c */ + +#include +#include +#include +#include +#include +#include +#include + +#include "fsk.h" +#include "codec2_fdmdv.h" +#include "modem_stats.h" + +/* cleanly exit when we get a SIGTERM */ + +void sig_handler(int signo) +{ + if (signo == SIGTERM) { + exit(0); + } +} + +int main(int argc,char *argv[]){ + struct FSK *fsk; + struct MODEM_STATS stats; + int Fs,Rs,M,P,stats_ctr,stats_loop; + float loop_time; + int enable_stats = 0; + FILE *fin,*fout; + uint8_t *bitbuf = NULL; + int16_t *rawbuf; + COMP *modbuf; + float *sdbuf = NULL; + int i,j,Ndft; + int soft_dec_mode = 0; + stats_loop = 0; + int complex_input = 1, bytes_per_sample = 2; + int stats_rate = 8; + int testframe_mode = 0; + P = 8; /* default */ + M = 0; + int fsk_lower = 0; + int fsk_upper = 0; + int user_fsk_lower = 0; + int user_fsk_upper = 0; + int nsym = FSK_DEFAULT_NSYM; + int mask = 0; + int tx_tone_separation = 100; + + int o = 0; + int opt_idx = 0; + while( o != -1 ){ + static struct option long_opts[] = { + {"help", no_argument, 0, 'h'}, + {"conv", required_argument, 0, 'p'}, + {"cs16", no_argument, 0, 'c'}, + {"cu8", no_argument, 0, 'd'}, + {"fsk_lower", required_argument, 0, 'b'}, + {"fsk_upper", required_argument, 0, 'u'}, + {"stats", optional_argument, 0, 't'}, + {"soft-dec", no_argument, 0, 's'}, + {"testframes",no_argument, 0, 'f'}, + {"nsym", required_argument, 0, 'n'}, + {"mask", required_argument, 0, 'm'}, + {0, 0, 0, 0} + }; + + o = getopt_long(argc,argv,"fhlp:cdt::sb:u:m",long_opts,&opt_idx); + + switch(o){ + case 'c': + complex_input = 2; + bytes_per_sample = 2; + break; + case 'd': + complex_input = 2; + bytes_per_sample = 1; + break; + case 'f': + testframe_mode = 1; + break; + case 't': + enable_stats = 1; + if(optarg != NULL){ + stats_rate = atoi(optarg); + if(stats_rate == 0){ + stats_rate = 8; + } + } + break; + case 's': + soft_dec_mode = 1; + break; + case 'p': + P = atoi(optarg); + break; + case 'b': + if (optarg != NULL) { + fsk_lower = atoi(optarg); + user_fsk_lower = 1; + } + break; + case 'u': + if (optarg != NULL){ + fsk_upper = atoi(optarg); + user_fsk_upper = 1; + } + break; + case 'n': + if (optarg != NULL) { + nsym = atoi(optarg); + } + break; + case 'm': + mask = 1; + tx_tone_separation = atoi(optarg); + break; + case 'h': + case '?': + goto helpmsg; + break; + } + } + int dx = optind; + + if( (argc - dx) < 5){ + fprintf(stderr, "Too few arguments\n"); + goto helpmsg; + } + + if( (argc - dx) > 5) { + fprintf(stderr, "Too many arguments\n"); + helpmsg: + fprintf(stderr,"usage: %s [options] (2|4) SampleRate SymbolRate InputModemRawFile OutputFile\n",argv[0]); + fprintf(stderr," -c --cs16 The raw input file will be in complex signed 16 bit format.\n"); + fprintf(stderr," -d --cu8 The raw input file will be in complex unsigned 8 bit format.\n"); + fprintf(stderr," If neither -c nor -d are used, the input should be in signed 16 bit format.\n"); + fprintf(stderr," -f --testframes Testframe mode, prints stats to stderr when a testframe is detected, if -t (JSON) \n"); + fprintf(stderr," is enabled stats will be in JSON format\n"); + fprintf(stderr," -t[r] --stats=[r] Print out modem statistics to stderr in JSON.\n"); + fprintf(stderr," r, if provided, sets the number of modem frames between statistic printouts.\n"); + fprintf(stderr," -s --soft-dec The output file will be in a soft-decision format, with one 32-bit float per bit.\n"); + fprintf(stderr," If -s is not used, the output will be in a 1 byte-per-bit format.\n"); + fprintf(stderr," -p P The demod internals operate at a rate of Fs/P, default %d\n", FSK_DEFAULT_P); + fprintf(stderr," P must be divisible by the symbol rate. Smaller P values will result in faster\n"); + fprintf(stderr," processing but lower demodulation performance. Default %d\n", FSK_DEFAULT_P); + fprintf(stderr," --fsk_lower freq lower limit of freq estimator (default 0 for real input, -Fs/2 for complex input)\n"); + fprintf(stderr," --fsk_upper freq upper limit of freq estimator (default Fs/2)\n"); + fprintf(stderr," --nsym Nsym number of symbols used for estimators. Default %d\n", FSK_DEFAULT_NSYM); + fprintf(stderr," --mask TxFreqSpace Use \"mask\" freq estimator (default is \"peak\" estimator)\n"); + exit(1); + } + + /* Extract parameters */ + M = atoi(argv[dx]); + Fs = atoi(argv[dx + 1]); + Rs = atoi(argv[dx + 2]); + + if( (M!=2) && (M!=4) ){ + fprintf(stderr,"Mode %d is not valid. Mode must be 2 or 4.\n",M); + goto helpmsg; + } + + /* Open files */ + if(strcmp(argv[dx + 3],"-")==0){ + fin = stdin; + }else{ + fin = fopen(argv[dx + 3],"r"); + } + + if(strcmp(argv[dx + 4],"-")==0){ + fout = stdout; + }else{ + fout = fopen(argv[dx + 4],"w"); + } + + /* set up FSK */ + #define UNUSED 1000 + fsk = fsk_create_hbr(Fs,Rs,M,P,nsym,UNUSED,tx_tone_separation); + + /* set freq estimator limits */ + if (!user_fsk_lower) { + if (complex_input == 1) + fsk_lower = 0; + else + fsk_lower = -Fs/2; + } + if (!user_fsk_upper) { + fsk_upper = Fs/2; + } + fprintf(stderr,"Setting estimator limits to %d to %d Hz.\n", fsk_lower, fsk_upper); + fsk_set_freq_est_limits(fsk,fsk_lower,fsk_upper); + + fsk_set_freq_est_alg(fsk, mask); + + if(fin==NULL || fout==NULL || fsk==NULL){ + fprintf(stderr,"Couldn't open files\n"); + exit(1); + } + + /* set up testframe mode */ + + int testframecnt, bitcnt, biterr, testframe_detected; + uint8_t *bitbuf_tx = NULL, *bitbuf_rx = NULL; + if (testframe_mode) { + bitbuf_tx = (uint8_t*)malloc(sizeof(uint8_t)*TEST_FRAME_SIZE); assert(bitbuf_tx != NULL); + bitbuf_rx = (uint8_t*)malloc(sizeof(uint8_t)*TEST_FRAME_SIZE); assert(bitbuf_rx != NULL); + + /* Generate known tx frame from known seed */ + + srand(158324); + for(i=0; iNbits); assert(sdbuf != NULL); + }else{ + bitbuf = (uint8_t*)malloc(sizeof(uint8_t)*fsk->Nbits); assert(bitbuf != NULL); + } + rawbuf = (int16_t*)malloc(bytes_per_sample*(fsk->N+fsk->Ts*2)*complex_input); + modbuf = (COMP*)malloc(sizeof(COMP)*(fsk->N+fsk->Ts*2)); + + /* set up signal handler so we can terminate gracefully */ + + if (signal(SIGTERM, sig_handler) == SIG_ERR) { + printf("\ncan't catch SIGTERM\n"); + } + + /* Demodulate! */ + + while( fread(rawbuf,bytes_per_sample*complex_input,fsk_nin(fsk),fin) == fsk_nin(fsk) ){ + /* convert input to a buffer of floats. Note scaling isn't really necessary for FSK */ + + if (complex_input == 1) { + /* S16 real input */ + for(i=0;iNbits; j++) { + for(i=0; ippm); + float *f_est; + if (fsk->freq_est_type) + f_est = fsk->f2_est; + else + f_est = fsk->f_est; + fprintf(stderr," \"f1_est\":%.1f, \"f2_est\":%.1f",f_est[0],f_est[1]); + + /* Print 4FSK stats if in 4FSK mode */ + + if(fsk->mode == 4){ + fprintf(stderr,", \"f3_est\":%.1f, \"f4_est\":%.1f",f_est[2],f_est[3]); + } + + if (testframe_mode == 0) { + /* Print the eye diagram */ + + fprintf(stderr,",\t\"eye_diagram\":["); + for(i=0;iNdft/2; + for(i=0; iSf)[i]); + if(iNbits,fout); + }else{ + fwrite(bitbuf,sizeof(uint8_t),fsk->Nbits,fout); + } + + if(fin == stdin || fout == stdin){ + fflush(fin); + fflush(fout); + } + } /* while(fread ...... */ + + if (testframe_mode) { + free(bitbuf_tx); + free(bitbuf_rx); + } + + if(soft_dec_mode){ + free(sdbuf); + }else{ + free(bitbuf); + } + + free(rawbuf); + free(modbuf); + + fclose(fin); + fclose(fout); + fsk_destroy(fsk); + + return 0; +} + diff --git a/src/fsk_get_test_bits.c b/src/fsk_get_test_bits.c new file mode 100644 index 0000000..c9448b2 --- /dev/null +++ b/src/fsk_get_test_bits.c @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: fsk_get_test_bits.c + AUTHOR......: Brady O'Brien + DATE CREATED: January 2016 + + Generates a pseudorandom sequence of bits for testing of fsk_mod and fsk_demod + +\*---------------------------------------------------------------------------*/ + + +/* + Copyright (C) 2016 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + + +#include +#include +#include "fsk.h" + +#define TEST_FRAME_SIZE 100 /* arbitrary chice, repeats after this + many bits, sets frame size for rx + processing */ + +int main(int argc,char *argv[]){ + int bitcnt, framecnt; + int framesize = TEST_FRAME_SIZE; + int i; + FILE *fout; + uint8_t *bitbuf; + + if(argc < 3){ + fprintf(stderr,"usage: %s OutputBitsOnePerByte numBits [framesize]\n",argv[0]); + exit(1); + } + + if (argc == 4){ + framesize = atoi(argv[3]); + fprintf(stderr, "Using custom frame size of %d bits\n", framesize); + } + + /* Extract parameters */ + bitcnt = atoi(argv[2]); + framecnt = bitcnt/framesize; + if (framecnt == 0) { + fprintf(stderr,"Need a minimum of %d bits\n", framesize); + exit(1); + } + + if(strcmp(argv[1],"-")==0){ + fout = stdout; + }else{ + fout = fopen(argv[1],"w"); + } + + if(fout==NULL){ + fprintf(stderr,"Couldn't open output file: %s\n", argv[1]); + goto cleanup; + } + + /* allocate buffers for processing */ + bitbuf = (uint8_t*)alloca(sizeof(uint8_t)*framesize); + + /* Generate buffer of test frame bits from known seed */ + srand(158324); + for(i=0; i. +*/ + +#include +#include +#include +#include "fsk.h" +#include "codec2_fdmdv.h" + +int main(int argc,char *argv[]){ + struct FSK *fsk; + int Fs,Rs,f1,fs,M; + int i; + int p, user_p = 0; + FILE *fin,*fout; + uint8_t *bitbuf; + int16_t *rawbuf; + float *modbuf; + + char usage[] = "usage: %s [-p P] Mode SampleFreq SymbolFreq TxFreq1 TxFreqSpace InputOneBitPerCharFile OutputModRawFile\n"; + + int opt; + while ((opt = getopt(argc, argv, "p:")) != -1) { + switch (opt) { + case 'p': + p = atoi(optarg); + user_p = 1; + break; + default: + fprintf(stderr, usage, argv[0]); + exit(1); + } + } + + if (argc<8){ + fprintf(stderr, usage, argv[0]); + exit(1); + } + + /* Extract parameters */ + M = atoi(argv[optind++]); + Fs = atoi(argv[optind++]); + Rs = atoi(argv[optind++]); + f1 = atoi(argv[optind++]); + fs = atoi(argv[optind++]); + + if(strcmp(argv[optind],"-")==0){ + fin = stdin; + }else{ + fin = fopen(argv[optind],"r"); + } + optind++; + + if(strcmp(argv[optind],"-")==0){ + fout = stdout; + }else{ + fout = fopen(argv[optind],"w"); + } + + /* p is not actually used for the modulator, but we need to set it for fsk_create() to be happy */ + if (!user_p) + p = Fs/Rs; + + /* set up FSK */ + fsk = fsk_create_hbr(Fs,Rs,M,p,FSK_DEFAULT_NSYM,f1,fs); + + if(fin==NULL || fout==NULL || fsk==NULL){ + fprintf(stderr,"Couldn't open test vector files\n"); + goto cleanup; + } + + + /* allocate buffers for processing */ + bitbuf = (uint8_t*)malloc(sizeof(uint8_t)*fsk->Nbits); + rawbuf = (int16_t*)malloc(sizeof(int16_t)*fsk->N); + modbuf = (float*)malloc(sizeof(float)*fsk->N); + + /* Modulate! */ + while( fread(bitbuf,sizeof(uint8_t),fsk->Nbits,fin) == fsk->Nbits ){ + fsk_mod(fsk,modbuf,bitbuf); + for(i=0; iN; i++){ + rawbuf[i] = (int16_t)(modbuf[i]*(float)FDMDV_SCALE); + } + fwrite(rawbuf,sizeof(int16_t),fsk->N,fout); + + if(fin == stdin || fout == stdin){ + fflush(fin); + fflush(fout); + } + } + free(bitbuf); + free(rawbuf); + free(modbuf); + + cleanup: + fclose(fin); + fclose(fout); + fsk_destroy(fsk); + exit(0); +} diff --git a/src/fsk_put_test_bits.c b/src/fsk_put_test_bits.c new file mode 100644 index 0000000..e004994 --- /dev/null +++ b/src/fsk_put_test_bits.c @@ -0,0 +1,147 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: fsk_get_test_bits.c + AUTHOR......: Brady O'Brien + DATE CREATED: January 2016 + + Generates a pseudorandom sequence of bits for testing of fsk_mod and + fsk_demod. + +\*---------------------------------------------------------------------------*/ + + +/* + Copyright (C) 2016 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#include +#include +#include +#include "fsk.h" + +#define TEST_FRAME_SIZE 100 /* must match fsk_get_test_bits.c */ + +#define VALID_PACKET_BER_THRESH 0.1 + +int main(int argc,char *argv[]){ + int bitcnt,biterr,i,errs,packetcnt; + int framesize = TEST_FRAME_SIZE; + float valid_packet_ber_thresh = VALID_PACKET_BER_THRESH; + int packet_pass_thresh = 0; + float ber_pass_thresh = 0; + FILE *fin; + uint8_t *bitbuf_tx, *bitbuf_rx, abit; + int verbose = 1; + + char usage[] = "usage: %s [-f frameSizeBits] [-t VaildFrameBERThreshold] [-b BERPass] [-p numPacketsPass] InputOneBitPerByte\n"; + + int opt; + while ((opt = getopt(argc, argv, "f:b:p:hqt:")) != -1) { + switch (opt) { + case 't': + valid_packet_ber_thresh = atof(optarg); + break; + case 'b': + ber_pass_thresh = atof(optarg); + break; + case 'p': + packet_pass_thresh = atoi(optarg); + break; + case 'f': + framesize = atoi(optarg); + break; + case 'q': + verbose = 0; + break; + case 'h': + default: + fprintf(stderr, usage, argv[0]); + exit(1); + } + } + if (argc == 1) { + fprintf(stderr, usage, argv[0]); + exit(1); + } + char *fname = argv[optind++]; + if ((strcmp(fname,"-")==0) || (argc<2)){ + fin = stdin; + } else { + fin = fopen(fname,"r"); + } + + if(fin==NULL){ + fprintf(stderr,"Couldn't open input file: %s\n", argv[1]); + exit(1); + } + + /* allocate buffers for processing */ + bitbuf_tx = (uint8_t*)alloca(sizeof(uint8_t)*framesize); + bitbuf_rx = (uint8_t*)alloca(sizeof(uint8_t)*framesize); + + /* Generate known tx frame from known seed */ + srand(158324); + for(i=0; i0){ + + /* update sliding window of input bits */ + + for(i=0; i= packet_pass_thresh) && (ber <= ber_pass_thresh)) { + fprintf(stderr,"PASS\n"); + return 0; + } + else { + fprintf(stderr,"FAIL\n"); + return 1; + } +} diff --git a/src/golay23.c b/src/golay23.c new file mode 100644 index 0000000..158a099 --- /dev/null +++ b/src/golay23.c @@ -0,0 +1,311 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: golay23.c + AUTHOR......: Tomas HΓ€rdin & David Rowe + DATE CREATED: 3 March 2013 + + To test: + + src$ gcc golay23.c -o golay23 -Wall -O3 -DGOLAY23_UNITTEST && ./golay23 + src$ gcc golay23.c -o golay23 -Wall -O3 -DGOLAY23_UNITTEST -DRUN_TIME_TABLES && ./golay23 + src$ gcc golay23.c -o golay23 -Wall -O3 -DGOLAY23_UNITTEST -DNO_TABLES && ./golay23 + + To generate tables: + src$ gcc golay23.c -o golay23 -Wall -O3 -DGOLAY23_MAKETABLES && ./golay23 + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2016 Tomas HΓ€rdin & David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not,see . +*/ + +#include + +#ifdef GOLAY23_MAKETABLES +#define RUN_TIME_TABLES +#endif + +#ifndef NO_TABLES +#ifdef RUN_TIME_TABLES +int static encoding_table[4096]; +int static decoding_table[2048]; +static int inited = 0; +#else +//default is to use precomputed tables +#include "golayenctable.h" +#include "golaydectable.h" +#endif +#endif + +//since we want to avoid bit-reversing inside syndrome() we bit-reverse the polynomial instead +#define GOLAY_POLYNOMIAL 0xC75 //AE3 reversed + +int golay23_syndrome(int c) { + //could probably be done slightly smarter, but works + int x; + for (x = 11; x >= 0; x--) { + if (c & ((1<<11) << x)) { + c ^= GOLAY_POLYNOMIAL << x; + } + } + return c; +} + +#ifdef __GNUC__ +#define popcount __builtin_popcount +#elif defined(__MSC_VER) +#include +#define popcount __popcnt +#else +static int popcount(unsigned int c) { + int ret = 0; + while (c) { + if (c & 1) { + ret++; + } + c >>= 1; + } + return ret; +} +#endif + +#if defined(NO_TABLES) || defined(RUN_TIME_TABLES) +static int golay23_encode_no_tables(int c) { + c <<= 11; + return golay23_syndrome(c) | c; +} +#endif + +#ifdef NO_TABLES +static int unrotate(unsigned int c, int x) { + return ((c << x) & 0x7FFFFF) | (c >> (23 - x)); +} + +static int golay23_decode_no_tables(int c) { + //TODO: optimize? + int x; + c = unrotate(c, 12); + + for (x = 0; x < 23; x++) { + int t; + int s = golay23_syndrome(c); + + if (popcount(s) <= 3) { + return unrotate(c ^ s, x) & 0xFFF; + } + + for (t = 0; t < 23; t++) { + int c2 = c ^ (1 << t); + int s = golay23_syndrome(c2); + + if (popcount(s) <= 2) { + return unrotate(c2 ^ s, x) & 0xFFF; + } + } + + //rotate + c = (c >> 1) | ((c & 1) << 22); + } + + //shouldn't reach here.. + assert("Something is wrong with golay23_decode_no_tables().."); + return c & 0xFFF; +} +#endif + +void golay23_init(void) { +#ifdef RUN_TIME_TABLES + int x, y, z; + inited = 1; + for (x = 0; x < 4096; x++) { + encoding_table[x] = golay23_encode_no_tables(x); + } + + decoding_table[0] = 0; + //1-bit errors + for (x = 0; x < 23; x++) { + int d = 1<= 0 && c <= 0xFFF); +#ifdef RUN_TIME_TABLES + assert(inited); +#endif + +#ifdef NO_TABLES + return golay23_encode_no_tables(c); +#else + return encoding_table[c]; +#endif +} + +int golay23_decode(int c) { + assert(c >= 0 && c <= 0x7FFFFF); +#ifdef RUN_TIME_TABLES + assert(inited); +#endif + +#ifdef NO_TABLES + //duplicate old golay23_decode()'s shift + return unrotate(golay23_decode_no_tables(c), 11); +#else + //message is shifted 11 places left in the return value + return c ^ decoding_table[golay23_syndrome(c)]; +#endif +} + +int golay23_count_errors(int recd_codeword, int corrected_codeword) { + return popcount(recd_codeword ^ corrected_codeword); +} + +/** + * Table generation and testing code below + */ + +#ifdef GOLAY23_MAKETABLES +#include + +int main() { + int x; + //generate and dump + golay23_init(); + + FILE *enc = fopen("golayenctable.h", "w"); + FILE *dec = fopen("golaydectable.h", "w"); + + fprintf(enc, "/* Generated by golay23.c -DGOLAY23_MAKETABLE */\n\ +\n\ +const int static encoding_table[]={\n"); + for (x = 0; x < 4096; x++) { + fprintf(enc, x < 4095 ? " 0x%x,\n" : " 0x%x\n", encoding_table[x]); + } + fprintf(enc, "};\n"); + + fprintf(dec, "/* Generated by golay23.c -DGOLAY23_MAKETABLE */\n\ +\n\ +const int static decoding_table[]={\n"); + for (x = 0; x < 2048; x++) { + fprintf(dec, x < 2047 ? " 0x%x,\n" : " 0x%x\n", decoding_table[x]); + } + fprintf(dec, "};\n"); + + fclose(enc); + fclose(dec); + + return 0; +} + +#elif defined(GOLAY23_UNITTEST) +#include +#include +#include + +int main() { + int c; + + golay23_init(); + + //keep track of whether every single codeword has been checked + char *checkmask = malloc(1<<23); + memset(checkmask, 0, 1<<23); + + //step through all possible messages + for (c = 0; c < (1<<12); c++) { + int g23 = golay23_encode(c); + int x,y,z; + checkmask[g23] = 1; + int c2 = golay23_decode(g23) >> 11; + + printf("%03x -> %06x %03x\n", c, g23, c2); + + if (c != c2) { + printf("Bad!\n"); + exit(1); + } + + //test the code by flipping every combination of one, two and three bits + for (x = 0; x < 23; x++) { + int flipped = g23 ^ (1<> 11; + if (c != c2) { + printf("Bad!\n"); + + exit(1); + } + } + + for (x = 0; x < 22; x++) { + for (y = x+1; y < 23; y++) { + int flipped = g23 ^ (1<> 11; + if (c != c2) { + printf("Bad!\n"); + + exit(1); + } + } + } + + for (x = 0; x < 21; x++) { + for (y = x+1; y < 22; y++) { + for (z = y+1; z < 23; z++) { + int flipped = g23 ^ (1<> 11; + if (c != c2) { + printf("Bad!\n"); + exit(1); + } + } + } + } + } + + //did we check every codeword? + for (c = 0; c < (1<<23); c++) { + if (checkmask[c] != 1) { + printf("%06x unchecked!\n", c); + exit(1); + } + } + + printf("Everything checks out\n"); + free(checkmask); + return 0; +} +#endif diff --git a/src/golay23.h b/src/golay23.h new file mode 100644 index 0000000..25502c6 --- /dev/null +++ b/src/golay23.h @@ -0,0 +1,45 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: golay23.h + AUTHOR......: David Rowe + DATE CREATED: 3 March 2013 + + Header file for Golay FEC. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2013 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __GOLAY23__ +#define __GOLAY23__ + +#ifdef __cplusplus +extern "C" { +#endif + +void golay23_init(void); +int golay23_encode(int data); +int golay23_decode(int received_codeword); +int golay23_count_errors(int recd_codeword, int corrected_codeword); +int golay23_syndrome(int c); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/golaydectable.h b/src/golaydectable.h new file mode 100644 index 0000000..b7dc4ff --- /dev/null +++ b/src/golaydectable.h @@ -0,0 +1,2052 @@ +/* Generated by golay23.c -DGOLAY23_MAKETABLE */ + +static const int decoding_table[]={ + 0x0, + 0x1, + 0x2, + 0x3, + 0x4, + 0x5, + 0x6, + 0x7, + 0x8, + 0x9, + 0xa, + 0xb, + 0xc, + 0xd, + 0xe, + 0x24020, + 0x10, + 0x11, + 0x12, + 0x13, + 0x14, + 0x15, + 0x16, + 0x412000, + 0x18, + 0x19, + 0x1a, + 0x180800, + 0x1c, + 0x200300, + 0x48040, + 0x1480, + 0x20, + 0x21, + 0x22, + 0x23, + 0x24, + 0x25, + 0x26, + 0x24008, + 0x28, + 0x29, + 0x2a, + 0x24004, + 0x2c, + 0x24002, + 0x24001, + 0x24000, + 0x30, + 0x31, + 0x32, + 0x8180, + 0x34, + 0xc40, + 0x301000, + 0xc0200, + 0x38, + 0x43000, + 0x400600, + 0x210040, + 0x90080, + 0x508000, + 0x2900, + 0x24010, + 0x40, + 0x41, + 0x42, + 0x43, + 0x44, + 0x45, + 0x46, + 0x280080, + 0x48, + 0x49, + 0x4a, + 0x2500, + 0x4c, + 0x111000, + 0x48010, + 0x400a00, + 0x50, + 0x51, + 0x52, + 0x21200, + 0x54, + 0xc20, + 0x48008, + 0x104100, + 0x58, + 0x404080, + 0x48004, + 0x210020, + 0x48002, + 0xa2000, + 0x48000, + 0x48001, + 0x60, + 0x61, + 0x62, + 0x540000, + 0x64, + 0xc10, + 0x10300, + 0xb000, + 0x68, + 0x88200, + 0x1880, + 0x210010, + 0x602000, + 0x40180, + 0x180400, + 0x24040, + 0x70, + 0xc04, + 0x86000, + 0x210008, + 0xc01, + 0xc00, + 0x420080, + 0xc02, + 0x120100, + 0x210002, + 0x210001, + 0x210000, + 0x5200, + 0xc08, + 0x48020, + 0x210004, + 0x80, + 0x81, + 0x82, + 0x83, + 0x84, + 0x85, + 0x86, + 0x280040, + 0x88, + 0x89, + 0x8a, + 0x50200, + 0x8c, + 0xa800, + 0x500100, + 0x1410, + 0x90, + 0x91, + 0x92, + 0x8120, + 0x94, + 0x160000, + 0x4a00, + 0x1408, + 0x98, + 0x404040, + 0x222000, + 0x1404, + 0x90020, + 0x1402, + 0x1401, + 0x1400, + 0xa0, + 0xa1, + 0xa2, + 0x8110, + 0xa4, + 0x401200, + 0x42400, + 0x110800, + 0xa8, + 0x300400, + 0x1840, + 0x482000, + 0x90010, + 0x40140, + 0x208200, + 0x24080, + 0xb0, + 0x8102, + 0x8101, + 0x8100, + 0x90008, + 0x206000, + 0x420040, + 0x8104, + 0x90004, + 0x20a00, + 0x144000, + 0x8108, + 0x90000, + 0x90001, + 0x90002, + 0x1420, + 0xc0, + 0xc1, + 0xc2, + 0x280004, + 0xc4, + 0x280002, + 0x280001, + 0x280000, + 0xc8, + 0x404010, + 0x1820, + 0x128000, + 0x20600, + 0x40120, + 0x16000, + 0x280008, + 0xd0, + 0x404008, + 0x110400, + 0x42800, + 0x3100, + 0x18200, + 0x420020, + 0x280010, + 0x404001, + 0x404000, + 0x80300, + 0x404002, + 0x300800, + 0x404004, + 0x48080, + 0x1440, + 0xe0, + 0x32000, + 0x1808, + 0x4600, + 0x10c000, + 0x40108, + 0x420010, + 0x280020, + 0x1802, + 0x40104, + 0x1800, + 0x1801, + 0x40101, + 0x40100, + 0x1804, + 0x40102, + 0x240200, + 0x181000, + 0x420004, + 0x8140, + 0x420002, + 0xc80, + 0x420000, + 0x420001, + 0xa400, + 0x404020, + 0x1810, + 0x210080, + 0x90040, + 0x40110, + 0x420008, + 0x102200, + 0x100, + 0x101, + 0x102, + 0x103, + 0x104, + 0x105, + 0x106, + 0x41800, + 0x108, + 0x109, + 0x10a, + 0x2440, + 0x10c, + 0x200210, + 0x500080, + 0x98000, + 0x110, + 0x111, + 0x112, + 0x80a0, + 0x114, + 0x200208, + 0xa0400, + 0x104040, + 0x118, + 0x200204, + 0x15000, + 0x460000, + 0x200201, + 0x200200, + 0x2820, + 0x200202, + 0x120, + 0x121, + 0x122, + 0x8090, + 0x124, + 0x182000, + 0x10240, + 0x600400, + 0x128, + 0x410800, + 0x2c0000, + 0x101200, + 0x9400, + 0x400c0, + 0x2810, + 0x24100, + 0x130, + 0x8082, + 0x8081, + 0x8080, + 0x444000, + 0x31000, + 0x2808, + 0x8084, + 0x120040, + 0x84400, + 0x2804, + 0x8088, + 0x2802, + 0x200220, + 0x2800, + 0x2801, + 0x140, + 0x141, + 0x142, + 0x2408, + 0x144, + 0x428000, + 0x10220, + 0x104010, + 0x148, + 0x2402, + 0x2401, + 0x2400, + 0x84800, + 0x400a0, + 0x221000, + 0x2404, + 0x150, + 0xd0000, + 0x600800, + 0x104004, + 0x3080, + 0x104002, + 0x104001, + 0x104000, + 0x120020, + 0x9800, + 0x80280, + 0x2410, + 0x410400, + 0x200240, + 0x48100, + 0x104008, + 0x160, + 0x205000, + 0x10204, + 0xa0800, + 0x10202, + 0x40088, + 0x10200, + 0x10201, + 0x120010, + 0x40084, + 0x40c000, + 0x2420, + 0x40081, + 0x40080, + 0x10208, + 0x40082, + 0x120008, + 0x402200, + 0x41400, + 0x80c0, + 0x288000, + 0xd00, + 0x10210, + 0x104020, + 0x120000, + 0x120001, + 0x120002, + 0x210100, + 0x120004, + 0x40090, + 0x2840, + 0x481000, + 0x180, + 0x181, + 0x182, + 0x8030, + 0x184, + 0x14400, + 0x500008, + 0x22200, + 0x188, + 0xa1000, + 0x500004, + 0x204800, + 0x500002, + 0x40060, + 0x500000, + 0x500001, + 0x190, + 0x8022, + 0x8021, + 0x8020, + 0x3040, + 0x480800, + 0x250000, + 0x8024, + 0x40c00, + 0x112000, + 0x80240, + 0x8028, + 0x2c000, + 0x200280, + 0x500010, + 0x1500, + 0x1a0, + 0x8012, + 0x8011, + 0x8010, + 0x220800, + 0x40048, + 0x85000, + 0x8014, + 0x6200, + 0x40044, + 0x30400, + 0x8018, + 0x40041, + 0x40040, + 0x500020, + 0x40042, + 0x8003, + 0x8002, + 0x8001, + 0x8000, + 0x100600, + 0x8006, + 0x8005, + 0x8004, + 0x601000, + 0x800a, + 0x8009, + 0x8008, + 0x90100, + 0x40050, + 0x2880, + 0x800c, + 0x1c0, + 0x100a00, + 0x64000, + 0x411000, + 0x3010, + 0x40028, + 0x8c00, + 0x280100, + 0x218000, + 0x40024, + 0x80210, + 0x2480, + 0x40021, + 0x40020, + 0x500040, + 0x40022, + 0x3004, + 0x220400, + 0x80208, + 0x8060, + 0x3000, + 0x3001, + 0x3002, + 0x104080, + 0x80202, + 0x404100, + 0x80200, + 0x80201, + 0x3008, + 0x40030, + 0x80204, + 0x30800, + 0x480400, + 0x4000c, + 0x302000, + 0x8050, + 0x40009, + 0x40008, + 0x10280, + 0x4000a, + 0x40005, + 0x40004, + 0x1900, + 0x40006, + 0x40001, + 0x40000, + 0x40003, + 0x40002, + 0x14800, + 0x8042, + 0x8041, + 0x8040, + 0x3020, + 0x40018, + 0x420100, + 0x8044, + 0x120080, + 0x40014, + 0x80220, + 0x8048, + 0x40011, + 0x40010, + 0x204400, + 0x40012, + 0x200, + 0x201, + 0x202, + 0x203, + 0x204, + 0x205, + 0x206, + 0x108400, + 0x208, + 0x209, + 0x20a, + 0x50080, + 0x20c, + 0x200110, + 0x83000, + 0x400840, + 0x210, + 0x211, + 0x212, + 0x21040, + 0x214, + 0x200108, + 0x4880, + 0xc0020, + 0x218, + 0x200104, + 0x400420, + 0xe000, + 0x200101, + 0x200100, + 0x130000, + 0x200102, + 0x220, + 0x221, + 0x222, + 0x202800, + 0x224, + 0x401080, + 0x10140, + 0xc0010, + 0x228, + 0x88040, + 0x400410, + 0x101100, + 0x140800, + 0x12400, + 0x208080, + 0x24200, + 0x230, + 0x114000, + 0x400408, + 0xc0004, + 0x2a000, + 0xc0002, + 0xc0001, + 0xc0000, + 0x400402, + 0x20880, + 0x400400, + 0x400401, + 0x5040, + 0x200120, + 0x400404, + 0xc0008, + 0x240, + 0x241, + 0x242, + 0x21010, + 0x244, + 0x46000, + 0x10120, + 0x400808, + 0x248, + 0x88020, + 0x304000, + 0x400804, + 0x20480, + 0x400802, + 0x400801, + 0x400800, + 0x250, + 0x21002, + 0x21001, + 0x21000, + 0x580000, + 0x18080, + 0x202400, + 0x21004, + 0x12800, + 0x140400, + 0x80180, + 0x21008, + 0x5020, + 0x200140, + 0x48200, + 0x400810, + 0x260, + 0x88008, + 0x10104, + 0x4480, + 0x10102, + 0x320000, + 0x10100, + 0x10101, + 0x88001, + 0x88000, + 0x62000, + 0x88002, + 0x5010, + 0x88004, + 0x10108, + 0x400820, + 0x240080, + 0x402100, + 0x108800, + 0x21020, + 0x5008, + 0xe00, + 0x10110, + 0xc0040, + 0x5004, + 0x88010, + 0x400440, + 0x210200, + 0x5000, + 0x5001, + 0x5002, + 0x102080, + 0x280, + 0x281, + 0x282, + 0x50008, + 0x284, + 0x401020, + 0x4810, + 0x22100, + 0x288, + 0x50002, + 0x50001, + 0x50000, + 0x20440, + 0x184000, + 0x208020, + 0x50004, + 0x290, + 0x82400, + 0x4804, + 0x700000, + 0x4802, + 0x18040, + 0x4800, + 0x4801, + 0x109000, + 0x20820, + 0x80140, + 0x50010, + 0x442000, + 0x200180, + 0x4808, + 0x1600, + 0x2a0, + 0x401004, + 0x1a0000, + 0x4440, + 0x401001, + 0x401000, + 0x208008, + 0x401002, + 0x6100, + 0x20810, + 0x208004, + 0x50020, + 0x208002, + 0x401008, + 0x208000, + 0x208001, + 0x240040, + 0x20808, + 0x13000, + 0x8300, + 0x100500, + 0x401010, + 0x4820, + 0xc0080, + 0x20801, + 0x20800, + 0x400480, + 0x20802, + 0x90200, + 0x20804, + 0x208010, + 0x102040, + 0x2c0, + 0x100900, + 0x40a000, + 0x4420, + 0x20408, + 0x18010, + 0x141000, + 0x280200, + 0x20404, + 0x203000, + 0x80110, + 0x50040, + 0x20400, + 0x20401, + 0x20402, + 0x400880, + 0x240020, + 0x18004, + 0x80108, + 0x21080, + 0x18001, + 0x18000, + 0x4840, + 0x18002, + 0x80102, + 0x404200, + 0x80100, + 0x80101, + 0x20410, + 0x18008, + 0x80104, + 0x102020, + 0x240010, + 0x4402, + 0x4401, + 0x4400, + 0x82800, + 0x401040, + 0x10180, + 0x4404, + 0x510000, + 0x88080, + 0x1a00, + 0x4408, + 0x20420, + 0x40300, + 0x208040, + 0x102010, + 0x240000, + 0x240001, + 0x240002, + 0x4410, + 0x240004, + 0x18020, + 0x420200, + 0x102008, + 0x240008, + 0x20840, + 0x80120, + 0x102004, + 0x5080, + 0x102002, + 0x102001, + 0x102000, + 0x300, + 0x301, + 0x302, + 0x484000, + 0x304, + 0x200018, + 0x10060, + 0x22080, + 0x308, + 0x200014, + 0x28800, + 0x101020, + 0x200011, + 0x200010, + 0x44400, + 0x200012, + 0x310, + 0x20000c, + 0x142000, + 0x10c00, + 0x200009, + 0x200008, + 0x409000, + 0x20000a, + 0x200005, + 0x200004, + 0x800c0, + 0x200006, + 0x200001, + 0x200000, + 0x200003, + 0x200002, + 0x320, + 0x60400, + 0x10044, + 0x101008, + 0x10042, + 0xc800, + 0x10040, + 0x10041, + 0x6080, + 0x101002, + 0x101001, + 0x101000, + 0x4a0000, + 0x200030, + 0x10048, + 0x101004, + 0x81800, + 0x402040, + 0x224000, + 0x8280, + 0x100480, + 0x200028, + 0x10050, + 0xc0100, + 0x58000, + 0x200024, + 0x400500, + 0x101010, + 0x200021, + 0x200020, + 0x2a00, + 0x200022, + 0x340, + 0x100880, + 0x10024, + 0x248000, + 0x10022, + 0x81400, + 0x10020, + 0x10021, + 0x441000, + 0x34000, + 0x80090, + 0x2600, + 0x10a000, + 0x200050, + 0x10028, + 0x400900, + 0xc400, + 0x402020, + 0x80088, + 0x21100, + 0x60800, + 0x200048, + 0x10030, + 0x104200, + 0x80082, + 0x200044, + 0x80080, + 0x80081, + 0x200041, + 0x200040, + 0x80084, + 0x200042, + 0x10006, + 0x402010, + 0x10004, + 0x10005, + 0x10002, + 0x10003, + 0x10000, + 0x10001, + 0x200c00, + 0x88100, + 0x1000c, + 0x101040, + 0x1000a, + 0x40280, + 0x10008, + 0x10009, + 0x402001, + 0x402000, + 0x10014, + 0x402002, + 0x10012, + 0x402004, + 0x10010, + 0x10011, + 0x120200, + 0x402008, + 0x800a0, + 0x44800, + 0x5100, + 0x200060, + 0x10018, + 0x28400, + 0x380, + 0x100840, + 0x201400, + 0x22004, + 0xc8000, + 0x22002, + 0x22001, + 0x22000, + 0x6020, + 0x408400, + 0x80050, + 0x50100, + 0x11800, + 0x200090, + 0x500200, + 0x22008, + 0x430000, + 0x45000, + 0x80048, + 0x8220, + 0x100420, + 0x200088, + 0x4900, + 0x22010, + 0x80042, + 0x200084, + 0x80040, + 0x80041, + 0x200081, + 0x200080, + 0x80044, + 0x200082, + 0x6008, + 0x290000, + 0x440800, + 0x8210, + 0x100410, + 0x401100, + 0x100c0, + 0x22020, + 0x6000, + 0x6001, + 0x6002, + 0x101080, + 0x6004, + 0x40240, + 0x208100, + 0x80c00, + 0x100404, + 0x8202, + 0x8201, + 0x8200, + 0x100400, + 0x100401, + 0x100402, + 0x8204, + 0x6010, + 0x20900, + 0x80060, + 0x8208, + 0x100408, + 0x2000a0, + 0x61000, + 0x414000, + 0x100801, + 0x100800, + 0x80018, + 0x100802, + 0x604000, + 0x100804, + 0x100a0, + 0x22040, + 0x80012, + 0x100808, + 0x80010, + 0x80011, + 0x20500, + 0x40220, + 0x80014, + 0xd000, + 0x8000a, + 0x100810, + 0x80008, + 0x80009, + 0x3200, + 0x18100, + 0x8000c, + 0x440400, + 0x80002, + 0x80003, + 0x80000, + 0x80001, + 0x80006, + 0x2000c0, + 0x80004, + 0x80005, + 0x29000, + 0x100820, + 0x10084, + 0x4500, + 0x10082, + 0x40208, + 0x10080, + 0x10081, + 0x6040, + 0x40204, + 0x80030, + 0x620000, + 0x40201, + 0x40200, + 0x10088, + 0x40202, + 0x240100, + 0x402080, + 0x80028, + 0x8240, + 0x100440, + 0xa4000, + 0x10090, + 0x201800, + 0x80022, + 0x11400, + 0x80020, + 0x80021, + 0x408800, + 0x40210, + 0x80024, + 0x102100, + 0x400, + 0x401, + 0x402, + 0x403, + 0x404, + 0x405, + 0x406, + 0x108200, + 0x408, + 0x409, + 0x40a, + 0x2140, + 0x40c, + 0x4c0000, + 0x210800, + 0x1090, + 0x410, + 0x411, + 0x412, + 0x244000, + 0x414, + 0x860, + 0xa0100, + 0x1088, + 0x418, + 0x38000, + 0x400220, + 0x1084, + 0x106000, + 0x1082, + 0x1081, + 0x1080, + 0x420, + 0x421, + 0x422, + 0x91000, + 0x424, + 0x850, + 0x42080, + 0x600100, + 0x428, + 0x300080, + 0x400210, + 0x48800, + 0x9100, + 0x12200, + 0x180040, + 0x24400, + 0x430, + 0x844, + 0x400208, + 0x122000, + 0x841, + 0x840, + 0x1c000, + 0x842, + 0x400202, + 0x84100, + 0x400200, + 0x400201, + 0x260000, + 0x848, + 0x400204, + 0x10a0, + 0x440, + 0x441, + 0x442, + 0x2108, + 0x444, + 0x830, + 0x405000, + 0x70000, + 0x448, + 0x2102, + 0x2101, + 0x2100, + 0x20280, + 0x20c000, + 0x180020, + 0x2104, + 0x450, + 0x824, + 0x110080, + 0x488000, + 0x821, + 0x820, + 0x202200, + 0x822, + 0x281000, + 0x140200, + 0x24800, + 0x2110, + 0x410100, + 0x828, + 0x48400, + 0x10c0, + 0x460, + 0x814, + 0x228000, + 0x4280, + 0x811, + 0x810, + 0x180008, + 0x812, + 0x54000, + 0x421000, + 0x180004, + 0x2120, + 0x180002, + 0x818, + 0x180000, + 0x180001, + 0x805, + 0x804, + 0x41100, + 0x806, + 0x801, + 0x800, + 0x803, + 0x802, + 0xa080, + 0x80c, + 0x400240, + 0x210400, + 0x809, + 0x808, + 0x180010, + 0x80a, + 0x480, + 0x481, + 0x482, + 0x420800, + 0x484, + 0x14100, + 0x42020, + 0x1018, + 0x488, + 0x300020, + 0x8c000, + 0x1014, + 0x20240, + 0x1012, + 0x1011, + 0x1010, + 0x490, + 0x82200, + 0x110040, + 0x100c, + 0x608000, + 0x100a, + 0x1009, + 0x1008, + 0x40900, + 0x1006, + 0x1005, + 0x1004, + 0x1003, + 0x1002, + 0x1001, + 0x1000, + 0x4a0, + 0x300008, + 0x42004, + 0x4240, + 0x42002, + 0xa8000, + 0x42000, + 0x42001, + 0x300001, + 0x300000, + 0x30100, + 0x300002, + 0x404800, + 0x300004, + 0x42008, + 0x1030, + 0x25000, + 0x450000, + 0x280800, + 0x8500, + 0x100300, + 0x8c0, + 0x42010, + 0x1028, + 0xa040, + 0x300010, + 0x400280, + 0x1024, + 0x90400, + 0x1022, + 0x1021, + 0x1020, + 0x4c0, + 0x49000, + 0x110010, + 0x4220, + 0x20208, + 0x502000, + 0x8900, + 0x280400, + 0x20204, + 0x90800, + 0x640000, + 0x2180, + 0x20200, + 0x20201, + 0x20202, + 0x1050, + 0x110002, + 0x220100, + 0x110000, + 0x110001, + 0xc4000, + 0x8a0, + 0x110004, + 0x1048, + 0xa020, + 0x404400, + 0x110008, + 0x1044, + 0x20210, + 0x1042, + 0x1041, + 0x1040, + 0x480100, + 0x4202, + 0x4201, + 0x4200, + 0x211000, + 0x890, + 0x42040, + 0x4204, + 0xa010, + 0x300040, + 0x1c00, + 0x4208, + 0x20220, + 0x40500, + 0x180080, + 0x418000, + 0xa008, + 0x884, + 0x110020, + 0x4210, + 0x881, + 0x880, + 0x420400, + 0x882, + 0xa000, + 0xa001, + 0xa002, + 0xe0000, + 0xa004, + 0x888, + 0x204100, + 0x1060, + 0x500, + 0x501, + 0x502, + 0x2048, + 0x504, + 0x14080, + 0xa0010, + 0x600020, + 0x508, + 0x2042, + 0x2041, + 0x2040, + 0x9020, + 0x120800, + 0x44200, + 0x2044, + 0x510, + 0x501000, + 0xa0004, + 0x10a00, + 0xa0002, + 0x4a000, + 0xa0000, + 0xa0001, + 0x40880, + 0x84020, + 0x308000, + 0x2050, + 0x410040, + 0x200600, + 0xa0008, + 0x1180, + 0x520, + 0x60200, + 0x104800, + 0x600004, + 0x9008, + 0x600002, + 0x600001, + 0x600000, + 0x9004, + 0x84010, + 0x30080, + 0x2060, + 0x9000, + 0x9001, + 0x9002, + 0x600008, + 0x212000, + 0x84008, + 0x41040, + 0x8480, + 0x100280, + 0x940, + 0xa0020, + 0x600010, + 0x84001, + 0x84000, + 0x400300, + 0x84002, + 0x9010, + 0x84004, + 0x2c00, + 0x150000, + 0x540, + 0x200a, + 0x2009, + 0x2008, + 0x340000, + 0x81200, + 0x8880, + 0x200c, + 0x2003, + 0x2002, + 0x2001, + 0x2000, + 0x410010, + 0x2006, + 0x2005, + 0x2004, + 0xc200, + 0x220080, + 0x41020, + 0x2018, + 0x410008, + 0x920, + 0xa0040, + 0x104400, + 0x410004, + 0x2012, + 0x2011, + 0x2010, + 0x410000, + 0x410001, + 0x410002, + 0x2014, + 0x480080, + 0x118000, + 0x41010, + 0x2028, + 0x26000, + 0x910, + 0x10600, + 0x600040, + 0x200a00, + 0x2022, + 0x2021, + 0x2020, + 0x9040, + 0x40480, + 0x180100, + 0x2024, + 0x41002, + 0x904, + 0x41000, + 0x41001, + 0x901, + 0x900, + 0x41004, + 0x902, + 0x120400, + 0x84040, + 0x41008, + 0x2030, + 0x410020, + 0x908, + 0x204080, + 0x28200, + 0x580, + 0x14004, + 0x201200, + 0x1c0000, + 0x14001, + 0x14000, + 0x8840, + 0x14002, + 0x40810, + 0x408200, + 0x30020, + 0x20c0, + 0x282000, + 0x14008, + 0x500400, + 0x1110, + 0x40808, + 0x220040, + 0x406000, + 0x8420, + 0x100220, + 0x14010, + 0xa0080, + 0x1108, + 0x40800, + 0x40801, + 0x40802, + 0x1104, + 0x40804, + 0x1102, + 0x1101, + 0x1100, + 0x480040, + 0x3800, + 0x30008, + 0x8410, + 0x100210, + 0x14020, + 0x42100, + 0x600080, + 0x30002, + 0x300100, + 0x30000, + 0x30001, + 0x9080, + 0x40440, + 0x30004, + 0x80a00, + 0x100204, + 0x8402, + 0x8401, + 0x8400, + 0x100200, + 0x100201, + 0x100202, + 0x8404, + 0x40820, + 0x84080, + 0x30010, + 0x8408, + 0x100208, + 0x422000, + 0x204040, + 0x1120, + 0x480020, + 0x220010, + 0x8804, + 0x2088, + 0x8802, + 0x14040, + 0x8800, + 0x8801, + 0x105000, + 0x2082, + 0x2081, + 0x2080, + 0x20300, + 0x40420, + 0x8808, + 0x2084, + 0x220001, + 0x220000, + 0x110100, + 0x220002, + 0x3400, + 0x220004, + 0x8810, + 0x440200, + 0x40840, + 0x220008, + 0x80600, + 0x2090, + 0x410080, + 0x188000, + 0x204020, + 0x1140, + 0x480000, + 0x480001, + 0x480002, + 0x4300, + 0x480004, + 0x40408, + 0x8820, + 0x121000, + 0x480008, + 0x40404, + 0x30040, + 0x20a0, + 0x40401, + 0x40400, + 0x204010, + 0x40402, + 0x480010, + 0x220020, + 0x41080, + 0x8440, + 0x100240, + 0x980, + 0x204008, + 0x92000, + 0xa100, + 0x11200, + 0x204004, + 0x500800, + 0x204002, + 0x40410, + 0x204000, + 0x204001, + 0x600, + 0x601, + 0x602, + 0x108004, + 0x604, + 0x108002, + 0x108001, + 0x108000, + 0x608, + 0x5800, + 0x400030, + 0x2a0000, + 0x200c0, + 0x12020, + 0x44100, + 0x108008, + 0x610, + 0x82080, + 0x400028, + 0x10900, + 0x51000, + 0x424000, + 0x202040, + 0x108010, + 0x400022, + 0x140040, + 0x400020, + 0x400021, + 0x88800, + 0x200500, + 0x400024, + 0x1280, + 0x620, + 0x60100, + 0x400018, + 0x40c0, + 0x284000, + 0x12008, + 0x21800, + 0x108020, + 0x400012, + 0x12004, + 0x400010, + 0x400011, + 0x12001, + 0x12000, + 0x400014, + 0x12002, + 0x40000a, + 0x209000, + 0x400008, + 0x400009, + 0x100180, + 0xa40, + 0x40000c, + 0xc0400, + 0x400002, + 0x400003, + 0x400000, + 0x400001, + 0x400006, + 0x12010, + 0x400004, + 0x400005, + 0x640, + 0x610000, + 0xc0800, + 0x40a0, + 0x20088, + 0x81100, + 0x202010, + 0x108040, + 0x20084, + 0x140010, + 0x19000, + 0x2300, + 0x20080, + 0x20081, + 0x20082, + 0x400c00, + 0xc100, + 0x140008, + 0x202004, + 0x21400, + 0x202002, + 0xa20, + 0x202000, + 0x202001, + 0x140001, + 0x140000, + 0x400060, + 0x140002, + 0x20090, + 0x140004, + 0x202008, + 0x94000, + 0x103000, + 0x4082, + 0x4081, + 0x4080, + 0x448000, + 0xa10, + 0x10500, + 0x4084, + 0x200900, + 0x88400, + 0x400050, + 0x4088, + 0x200a0, + 0x12040, + 0x180200, + 0x241000, + 0xb0000, + 0xa04, + 0x400048, + 0x4090, + 0xa01, + 0xa00, + 0x202020, + 0xa02, + 0x400042, + 0x140020, + 0x400040, + 0x400041, + 0x5400, + 0xa08, + 0x400044, + 0x28100, + 0x680, + 0x82010, + 0x201100, + 0x4060, + 0x20048, + 0x240800, + 0x490000, + 0x108080, + 0x20044, + 0x408100, + 0x102800, + 0x50400, + 0x20040, + 0x20041, + 0x20042, + 0x1210, + 0x82001, + 0x82000, + 0x68000, + 0x82002, + 0x100120, + 0x82004, + 0x4c00, + 0x1208, + 0x214000, + 0x82008, + 0x4000a0, + 0x1204, + 0x20050, + 0x1202, + 0x1201, + 0x1200, + 0x18800, + 0x4042, + 0x4041, + 0x4040, + 0x100110, + 0x401400, + 0x42200, + 0x4044, + 0xc1000, + 0x300200, + 0x400090, + 0x4048, + 0x20060, + 0x12080, + 0x208400, + 0x80900, + 0x100104, + 0x82020, + 0x400088, + 0x4050, + 0x100100, + 0x100101, + 0x100102, + 0x230000, + 0x400082, + 0x20c00, + 0x400080, + 0x400081, + 0x100108, + 0x4c000, + 0x400084, + 0x1220, + 0x2000c, + 0x4022, + 0x4021, + 0x4020, + 0x20008, + 0x20009, + 0x2000a, + 0x4024, + 0x20004, + 0x20005, + 0x20006, + 0x4028, + 0x20000, + 0x20001, + 0x20002, + 0x20003, + 0x401800, + 0x82040, + 0x110200, + 0x4030, + 0x20018, + 0x18400, + 0x202080, + 0x440100, + 0x20014, + 0x140080, + 0x80500, + 0x208800, + 0x20010, + 0x20011, + 0x20012, + 0x1240, + 0x4003, + 0x4002, + 0x4001, + 0x4000, + 0x20028, + 0x4006, + 0x4005, + 0x4004, + 0x20024, + 0x400a, + 0x4009, + 0x4008, + 0x20020, + 0x20021, + 0x20022, + 0x400c, + 0x240400, + 0x4012, + 0x4011, + 0x4010, + 0x100140, + 0xa80, + 0x89000, + 0x4014, + 0xa200, + 0x11100, + 0x4000c0, + 0x4018, + 0x20030, + 0x680000, + 0x50800, + 0x102400, + 0x700, + 0x60020, + 0x201080, + 0x10810, + 0x402800, + 0x81040, + 0x44008, + 0x108100, + 0x190000, + 0x408080, + 0x44004, + 0x2240, + 0x44002, + 0x200410, + 0x44000, + 0x44001, + 0xc040, + 0x10802, + 0x10801, + 0x10800, + 0x1000a0, + 0x200408, + 0xa0200, + 0x10804, + 0x23000, + 0x200404, + 0x400120, + 0x10808, + 0x200401, + 0x200400, + 0x44010, + 0x200402, + 0x60001, + 0x60000, + 0x8a000, + 0x60002, + 0x100090, + 0x60004, + 0x10440, + 0x600200, + 0x200840, + 0x60008, + 0x400110, + 0x101400, + 0x9200, + 0x12100, + 0x44020, + 0x80880, + 0x100084, + 0x60010, + 0x400108, + 0x10820, + 0x100080, + 0x100081, + 0x100082, + 0x7000, + 0x400102, + 0x84200, + 0x400100, + 0x400101, + 0x100088, + 0x200420, + 0x400104, + 0x28040, + 0xc010, + 0x81004, + 0x520000, + 0x2208, + 0x81001, + 0x81000, + 0x10420, + 0x81002, + 0x200820, + 0x2202, + 0x2201, + 0x2200, + 0x20180, + 0x81008, + 0x44040, + 0x2204, + 0xc000, + 0xc001, + 0xc002, + 0x10840, + 0xc004, + 0x81010, + 0x202100, + 0x440080, + 0xc008, + 0x140100, + 0x80480, + 0x2210, + 0x410200, + 0x200440, + 0x101800, + 0x28020, + 0x200808, + 0x60040, + 0x10404, + 0x4180, + 0x10402, + 0x81020, + 0x10400, + 0x10401, + 0x200800, + 0x200801, + 0x200802, + 0x2220, + 0x200804, + 0x504000, + 0x10408, + 0x28010, + 0xc020, + 0x402400, + 0x41200, + 0x380000, + 0x1000c0, + 0xb00, + 0x10410, + 0x28008, + 0x200810, + 0x11080, + 0x400140, + 0x28004, + 0xc2000, + 0x28002, + 0x28001, + 0x28000, + 0x201002, + 0x408008, + 0x201000, + 0x201001, + 0x100030, + 0x14200, + 0x201004, + 0x22400, + 0x408001, + 0x408000, + 0x201008, + 0x408002, + 0x20140, + 0x408004, + 0x44080, + 0x80820, + 0x100024, + 0x82100, + 0x201010, + 0x10880, + 0x100020, + 0x100021, + 0x100022, + 0x440040, + 0x40a00, + 0x408010, + 0x80440, + 0x124000, + 0x100028, + 0x200480, + 0x1a000, + 0x1300, + 0x100014, + 0x60080, + 0x201020, + 0x4140, + 0x100010, + 0x100011, + 0x100012, + 0x80808, + 0x6400, + 0x408020, + 0x30200, + 0x80804, + 0x100018, + 0x80802, + 0x80801, + 0x80800, + 0x100004, + 0x100005, + 0x100006, + 0x8600, + 0x100000, + 0x100001, + 0x100002, + 0x100003, + 0x10000c, + 0x11040, + 0x400180, + 0x242000, + 0x100008, + 0x100009, + 0x10000a, + 0x80810, + 0x52000, + 0x100c00, + 0x201040, + 0x4120, + 0x20108, + 0x81080, + 0x8a00, + 0x440010, + 0x20104, + 0x408040, + 0x80410, + 0x2280, + 0x20100, + 0x20101, + 0x20102, + 0x310000, + 0xc080, + 0x220200, + 0x80408, + 0x440004, + 0x100060, + 0x440002, + 0x440001, + 0x440000, + 0x80402, + 0x11020, + 0x80400, + 0x80401, + 0x20110, + 0x6800, + 0x80404, + 0x440008, + 0x480200, + 0x4102, + 0x4101, + 0x4100, + 0x100050, + 0x20a000, + 0x10480, + 0x4104, + 0x200880, + 0x11010, + 0x148000, + 0x4108, + 0x20120, + 0x40600, + 0x403000, + 0x80840, + 0x100044, + 0x11008, + 0x22800, + 0x4110, + 0x100040, + 0x100041, + 0x100042, + 0x440020, + 0x11001, + 0x11000, + 0x80420, + 0x11002, + 0x100048, + 0x11004, + 0x204200, + 0x28080 +}; diff --git a/src/golayenctable.h b/src/golayenctable.h new file mode 100644 index 0000000..1574652 --- /dev/null +++ b/src/golayenctable.h @@ -0,0 +1,4100 @@ +/* Generated by golay23.c -DGOLAY23_MAKETABLE */ + +static const int encoding_table[]={ + 0x0, + 0xc75, + 0x149f, + 0x18ea, + 0x254b, + 0x293e, + 0x31d4, + 0x3da1, + 0x46e3, + 0x4a96, + 0x527c, + 0x5e09, + 0x63a8, + 0x6fdd, + 0x7737, + 0x7b42, + 0x81b3, + 0x8dc6, + 0x952c, + 0x9959, + 0xa4f8, + 0xa88d, + 0xb067, + 0xbc12, + 0xc750, + 0xcb25, + 0xd3cf, + 0xdfba, + 0xe21b, + 0xee6e, + 0xf684, + 0xfaf1, + 0x10366, + 0x10f13, + 0x117f9, + 0x11b8c, + 0x1262d, + 0x12a58, + 0x132b2, + 0x13ec7, + 0x14585, + 0x149f0, + 0x1511a, + 0x15d6f, + 0x160ce, + 0x16cbb, + 0x17451, + 0x17824, + 0x182d5, + 0x18ea0, + 0x1964a, + 0x19a3f, + 0x1a79e, + 0x1abeb, + 0x1b301, + 0x1bf74, + 0x1c436, + 0x1c843, + 0x1d0a9, + 0x1dcdc, + 0x1e17d, + 0x1ed08, + 0x1f5e2, + 0x1f997, + 0x206cc, + 0x20ab9, + 0x21253, + 0x21e26, + 0x22387, + 0x22ff2, + 0x23718, + 0x23b6d, + 0x2402f, + 0x24c5a, + 0x254b0, + 0x258c5, + 0x26564, + 0x26911, + 0x271fb, + 0x27d8e, + 0x2877f, + 0x28b0a, + 0x293e0, + 0x29f95, + 0x2a234, + 0x2ae41, + 0x2b6ab, + 0x2bade, + 0x2c19c, + 0x2cde9, + 0x2d503, + 0x2d976, + 0x2e4d7, + 0x2e8a2, + 0x2f048, + 0x2fc3d, + 0x305aa, + 0x309df, + 0x31135, + 0x31d40, + 0x320e1, + 0x32c94, + 0x3347e, + 0x3380b, + 0x34349, + 0x34f3c, + 0x357d6, + 0x35ba3, + 0x36602, + 0x36a77, + 0x3729d, + 0x37ee8, + 0x38419, + 0x3886c, + 0x39086, + 0x39cf3, + 0x3a152, + 0x3ad27, + 0x3b5cd, + 0x3b9b8, + 0x3c2fa, + 0x3ce8f, + 0x3d665, + 0x3da10, + 0x3e7b1, + 0x3ebc4, + 0x3f32e, + 0x3ff5b, + 0x401ed, + 0x40d98, + 0x41572, + 0x41907, + 0x424a6, + 0x428d3, + 0x43039, + 0x43c4c, + 0x4470e, + 0x44b7b, + 0x45391, + 0x45fe4, + 0x46245, + 0x46e30, + 0x476da, + 0x47aaf, + 0x4805e, + 0x48c2b, + 0x494c1, + 0x498b4, + 0x4a515, + 0x4a960, + 0x4b18a, + 0x4bdff, + 0x4c6bd, + 0x4cac8, + 0x4d222, + 0x4de57, + 0x4e3f6, + 0x4ef83, + 0x4f769, + 0x4fb1c, + 0x5028b, + 0x50efe, + 0x51614, + 0x51a61, + 0x527c0, + 0x52bb5, + 0x5335f, + 0x53f2a, + 0x54468, + 0x5481d, + 0x550f7, + 0x55c82, + 0x56123, + 0x56d56, + 0x575bc, + 0x579c9, + 0x58338, + 0x58f4d, + 0x597a7, + 0x59bd2, + 0x5a673, + 0x5aa06, + 0x5b2ec, + 0x5be99, + 0x5c5db, + 0x5c9ae, + 0x5d144, + 0x5dd31, + 0x5e090, + 0x5ece5, + 0x5f40f, + 0x5f87a, + 0x60721, + 0x60b54, + 0x613be, + 0x61fcb, + 0x6226a, + 0x62e1f, + 0x636f5, + 0x63a80, + 0x641c2, + 0x64db7, + 0x6555d, + 0x65928, + 0x66489, + 0x668fc, + 0x67016, + 0x67c63, + 0x68692, + 0x68ae7, + 0x6920d, + 0x69e78, + 0x6a3d9, + 0x6afac, + 0x6b746, + 0x6bb33, + 0x6c071, + 0x6cc04, + 0x6d4ee, + 0x6d89b, + 0x6e53a, + 0x6e94f, + 0x6f1a5, + 0x6fdd0, + 0x70447, + 0x70832, + 0x710d8, + 0x71cad, + 0x7210c, + 0x72d79, + 0x73593, + 0x739e6, + 0x742a4, + 0x74ed1, + 0x7563b, + 0x75a4e, + 0x767ef, + 0x76b9a, + 0x77370, + 0x77f05, + 0x785f4, + 0x78981, + 0x7916b, + 0x79d1e, + 0x7a0bf, + 0x7acca, + 0x7b420, + 0x7b855, + 0x7c317, + 0x7cf62, + 0x7d788, + 0x7dbfd, + 0x7e65c, + 0x7ea29, + 0x7f2c3, + 0x7feb6, + 0x803da, + 0x80faf, + 0x81745, + 0x81b30, + 0x82691, + 0x82ae4, + 0x8320e, + 0x83e7b, + 0x84539, + 0x8494c, + 0x851a6, + 0x85dd3, + 0x86072, + 0x86c07, + 0x874ed, + 0x87898, + 0x88269, + 0x88e1c, + 0x896f6, + 0x89a83, + 0x8a722, + 0x8ab57, + 0x8b3bd, + 0x8bfc8, + 0x8c48a, + 0x8c8ff, + 0x8d015, + 0x8dc60, + 0x8e1c1, + 0x8edb4, + 0x8f55e, + 0x8f92b, + 0x900bc, + 0x90cc9, + 0x91423, + 0x91856, + 0x925f7, + 0x92982, + 0x93168, + 0x93d1d, + 0x9465f, + 0x94a2a, + 0x952c0, + 0x95eb5, + 0x96314, + 0x96f61, + 0x9778b, + 0x97bfe, + 0x9810f, + 0x98d7a, + 0x99590, + 0x999e5, + 0x9a444, + 0x9a831, + 0x9b0db, + 0x9bcae, + 0x9c7ec, + 0x9cb99, + 0x9d373, + 0x9df06, + 0x9e2a7, + 0x9eed2, + 0x9f638, + 0x9fa4d, + 0xa0516, + 0xa0963, + 0xa1189, + 0xa1dfc, + 0xa205d, + 0xa2c28, + 0xa34c2, + 0xa38b7, + 0xa43f5, + 0xa4f80, + 0xa576a, + 0xa5b1f, + 0xa66be, + 0xa6acb, + 0xa7221, + 0xa7e54, + 0xa84a5, + 0xa88d0, + 0xa903a, + 0xa9c4f, + 0xaa1ee, + 0xaad9b, + 0xab571, + 0xab904, + 0xac246, + 0xace33, + 0xad6d9, + 0xadaac, + 0xae70d, + 0xaeb78, + 0xaf392, + 0xaffe7, + 0xb0670, + 0xb0a05, + 0xb12ef, + 0xb1e9a, + 0xb233b, + 0xb2f4e, + 0xb37a4, + 0xb3bd1, + 0xb4093, + 0xb4ce6, + 0xb540c, + 0xb5879, + 0xb65d8, + 0xb69ad, + 0xb7147, + 0xb7d32, + 0xb87c3, + 0xb8bb6, + 0xb935c, + 0xb9f29, + 0xba288, + 0xbaefd, + 0xbb617, + 0xbba62, + 0xbc120, + 0xbcd55, + 0xbd5bf, + 0xbd9ca, + 0xbe46b, + 0xbe81e, + 0xbf0f4, + 0xbfc81, + 0xc0237, + 0xc0e42, + 0xc16a8, + 0xc1add, + 0xc277c, + 0xc2b09, + 0xc33e3, + 0xc3f96, + 0xc44d4, + 0xc48a1, + 0xc504b, + 0xc5c3e, + 0xc619f, + 0xc6dea, + 0xc7500, + 0xc7975, + 0xc8384, + 0xc8ff1, + 0xc971b, + 0xc9b6e, + 0xca6cf, + 0xcaaba, + 0xcb250, + 0xcbe25, + 0xcc567, + 0xcc912, + 0xcd1f8, + 0xcdd8d, + 0xce02c, + 0xcec59, + 0xcf4b3, + 0xcf8c6, + 0xd0151, + 0xd0d24, + 0xd15ce, + 0xd19bb, + 0xd241a, + 0xd286f, + 0xd3085, + 0xd3cf0, + 0xd47b2, + 0xd4bc7, + 0xd532d, + 0xd5f58, + 0xd62f9, + 0xd6e8c, + 0xd7666, + 0xd7a13, + 0xd80e2, + 0xd8c97, + 0xd947d, + 0xd9808, + 0xda5a9, + 0xda9dc, + 0xdb136, + 0xdbd43, + 0xdc601, + 0xdca74, + 0xdd29e, + 0xddeeb, + 0xde34a, + 0xdef3f, + 0xdf7d5, + 0xdfba0, + 0xe04fb, + 0xe088e, + 0xe1064, + 0xe1c11, + 0xe21b0, + 0xe2dc5, + 0xe352f, + 0xe395a, + 0xe4218, + 0xe4e6d, + 0xe5687, + 0xe5af2, + 0xe6753, + 0xe6b26, + 0xe73cc, + 0xe7fb9, + 0xe8548, + 0xe893d, + 0xe91d7, + 0xe9da2, + 0xea003, + 0xeac76, + 0xeb49c, + 0xeb8e9, + 0xec3ab, + 0xecfde, + 0xed734, + 0xedb41, + 0xee6e0, + 0xeea95, + 0xef27f, + 0xefe0a, + 0xf079d, + 0xf0be8, + 0xf1302, + 0xf1f77, + 0xf22d6, + 0xf2ea3, + 0xf3649, + 0xf3a3c, + 0xf417e, + 0xf4d0b, + 0xf55e1, + 0xf5994, + 0xf6435, + 0xf6840, + 0xf70aa, + 0xf7cdf, + 0xf862e, + 0xf8a5b, + 0xf92b1, + 0xf9ec4, + 0xfa365, + 0xfaf10, + 0xfb7fa, + 0xfbb8f, + 0xfc0cd, + 0xfccb8, + 0xfd452, + 0xfd827, + 0xfe586, + 0xfe9f3, + 0xff119, + 0xffd6c, + 0x1007b4, + 0x100bc1, + 0x10132b, + 0x101f5e, + 0x1022ff, + 0x102e8a, + 0x103660, + 0x103a15, + 0x104157, + 0x104d22, + 0x1055c8, + 0x1059bd, + 0x10641c, + 0x106869, + 0x107083, + 0x107cf6, + 0x108607, + 0x108a72, + 0x109298, + 0x109eed, + 0x10a34c, + 0x10af39, + 0x10b7d3, + 0x10bba6, + 0x10c0e4, + 0x10cc91, + 0x10d47b, + 0x10d80e, + 0x10e5af, + 0x10e9da, + 0x10f130, + 0x10fd45, + 0x1104d2, + 0x1108a7, + 0x11104d, + 0x111c38, + 0x112199, + 0x112dec, + 0x113506, + 0x113973, + 0x114231, + 0x114e44, + 0x1156ae, + 0x115adb, + 0x11677a, + 0x116b0f, + 0x1173e5, + 0x117f90, + 0x118561, + 0x118914, + 0x1191fe, + 0x119d8b, + 0x11a02a, + 0x11ac5f, + 0x11b4b5, + 0x11b8c0, + 0x11c382, + 0x11cff7, + 0x11d71d, + 0x11db68, + 0x11e6c9, + 0x11eabc, + 0x11f256, + 0x11fe23, + 0x120178, + 0x120d0d, + 0x1215e7, + 0x121992, + 0x122433, + 0x122846, + 0x1230ac, + 0x123cd9, + 0x12479b, + 0x124bee, + 0x125304, + 0x125f71, + 0x1262d0, + 0x126ea5, + 0x12764f, + 0x127a3a, + 0x1280cb, + 0x128cbe, + 0x129454, + 0x129821, + 0x12a580, + 0x12a9f5, + 0x12b11f, + 0x12bd6a, + 0x12c628, + 0x12ca5d, + 0x12d2b7, + 0x12dec2, + 0x12e363, + 0x12ef16, + 0x12f7fc, + 0x12fb89, + 0x13021e, + 0x130e6b, + 0x131681, + 0x131af4, + 0x132755, + 0x132b20, + 0x1333ca, + 0x133fbf, + 0x1344fd, + 0x134888, + 0x135062, + 0x135c17, + 0x1361b6, + 0x136dc3, + 0x137529, + 0x13795c, + 0x1383ad, + 0x138fd8, + 0x139732, + 0x139b47, + 0x13a6e6, + 0x13aa93, + 0x13b279, + 0x13be0c, + 0x13c54e, + 0x13c93b, + 0x13d1d1, + 0x13dda4, + 0x13e005, + 0x13ec70, + 0x13f49a, + 0x13f8ef, + 0x140659, + 0x140a2c, + 0x1412c6, + 0x141eb3, + 0x142312, + 0x142f67, + 0x14378d, + 0x143bf8, + 0x1440ba, + 0x144ccf, + 0x145425, + 0x145850, + 0x1465f1, + 0x146984, + 0x14716e, + 0x147d1b, + 0x1487ea, + 0x148b9f, + 0x149375, + 0x149f00, + 0x14a2a1, + 0x14aed4, + 0x14b63e, + 0x14ba4b, + 0x14c109, + 0x14cd7c, + 0x14d596, + 0x14d9e3, + 0x14e442, + 0x14e837, + 0x14f0dd, + 0x14fca8, + 0x15053f, + 0x15094a, + 0x1511a0, + 0x151dd5, + 0x152074, + 0x152c01, + 0x1534eb, + 0x15389e, + 0x1543dc, + 0x154fa9, + 0x155743, + 0x155b36, + 0x156697, + 0x156ae2, + 0x157208, + 0x157e7d, + 0x15848c, + 0x1588f9, + 0x159013, + 0x159c66, + 0x15a1c7, + 0x15adb2, + 0x15b558, + 0x15b92d, + 0x15c26f, + 0x15ce1a, + 0x15d6f0, + 0x15da85, + 0x15e724, + 0x15eb51, + 0x15f3bb, + 0x15ffce, + 0x160095, + 0x160ce0, + 0x16140a, + 0x16187f, + 0x1625de, + 0x1629ab, + 0x163141, + 0x163d34, + 0x164676, + 0x164a03, + 0x1652e9, + 0x165e9c, + 0x16633d, + 0x166f48, + 0x1677a2, + 0x167bd7, + 0x168126, + 0x168d53, + 0x1695b9, + 0x1699cc, + 0x16a46d, + 0x16a818, + 0x16b0f2, + 0x16bc87, + 0x16c7c5, + 0x16cbb0, + 0x16d35a, + 0x16df2f, + 0x16e28e, + 0x16eefb, + 0x16f611, + 0x16fa64, + 0x1703f3, + 0x170f86, + 0x17176c, + 0x171b19, + 0x1726b8, + 0x172acd, + 0x173227, + 0x173e52, + 0x174510, + 0x174965, + 0x17518f, + 0x175dfa, + 0x17605b, + 0x176c2e, + 0x1774c4, + 0x1778b1, + 0x178240, + 0x178e35, + 0x1796df, + 0x179aaa, + 0x17a70b, + 0x17ab7e, + 0x17b394, + 0x17bfe1, + 0x17c4a3, + 0x17c8d6, + 0x17d03c, + 0x17dc49, + 0x17e1e8, + 0x17ed9d, + 0x17f577, + 0x17f902, + 0x18046e, + 0x18081b, + 0x1810f1, + 0x181c84, + 0x182125, + 0x182d50, + 0x1835ba, + 0x1839cf, + 0x18428d, + 0x184ef8, + 0x185612, + 0x185a67, + 0x1867c6, + 0x186bb3, + 0x187359, + 0x187f2c, + 0x1885dd, + 0x1889a8, + 0x189142, + 0x189d37, + 0x18a096, + 0x18ace3, + 0x18b409, + 0x18b87c, + 0x18c33e, + 0x18cf4b, + 0x18d7a1, + 0x18dbd4, + 0x18e675, + 0x18ea00, + 0x18f2ea, + 0x18fe9f, + 0x190708, + 0x190b7d, + 0x191397, + 0x191fe2, + 0x192243, + 0x192e36, + 0x1936dc, + 0x193aa9, + 0x1941eb, + 0x194d9e, + 0x195574, + 0x195901, + 0x1964a0, + 0x1968d5, + 0x19703f, + 0x197c4a, + 0x1986bb, + 0x198ace, + 0x199224, + 0x199e51, + 0x19a3f0, + 0x19af85, + 0x19b76f, + 0x19bb1a, + 0x19c058, + 0x19cc2d, + 0x19d4c7, + 0x19d8b2, + 0x19e513, + 0x19e966, + 0x19f18c, + 0x19fdf9, + 0x1a02a2, + 0x1a0ed7, + 0x1a163d, + 0x1a1a48, + 0x1a27e9, + 0x1a2b9c, + 0x1a3376, + 0x1a3f03, + 0x1a4441, + 0x1a4834, + 0x1a50de, + 0x1a5cab, + 0x1a610a, + 0x1a6d7f, + 0x1a7595, + 0x1a79e0, + 0x1a8311, + 0x1a8f64, + 0x1a978e, + 0x1a9bfb, + 0x1aa65a, + 0x1aaa2f, + 0x1ab2c5, + 0x1abeb0, + 0x1ac5f2, + 0x1ac987, + 0x1ad16d, + 0x1add18, + 0x1ae0b9, + 0x1aeccc, + 0x1af426, + 0x1af853, + 0x1b01c4, + 0x1b0db1, + 0x1b155b, + 0x1b192e, + 0x1b248f, + 0x1b28fa, + 0x1b3010, + 0x1b3c65, + 0x1b4727, + 0x1b4b52, + 0x1b53b8, + 0x1b5fcd, + 0x1b626c, + 0x1b6e19, + 0x1b76f3, + 0x1b7a86, + 0x1b8077, + 0x1b8c02, + 0x1b94e8, + 0x1b989d, + 0x1ba53c, + 0x1ba949, + 0x1bb1a3, + 0x1bbdd6, + 0x1bc694, + 0x1bcae1, + 0x1bd20b, + 0x1bde7e, + 0x1be3df, + 0x1befaa, + 0x1bf740, + 0x1bfb35, + 0x1c0583, + 0x1c09f6, + 0x1c111c, + 0x1c1d69, + 0x1c20c8, + 0x1c2cbd, + 0x1c3457, + 0x1c3822, + 0x1c4360, + 0x1c4f15, + 0x1c57ff, + 0x1c5b8a, + 0x1c662b, + 0x1c6a5e, + 0x1c72b4, + 0x1c7ec1, + 0x1c8430, + 0x1c8845, + 0x1c90af, + 0x1c9cda, + 0x1ca17b, + 0x1cad0e, + 0x1cb5e4, + 0x1cb991, + 0x1cc2d3, + 0x1ccea6, + 0x1cd64c, + 0x1cda39, + 0x1ce798, + 0x1cebed, + 0x1cf307, + 0x1cff72, + 0x1d06e5, + 0x1d0a90, + 0x1d127a, + 0x1d1e0f, + 0x1d23ae, + 0x1d2fdb, + 0x1d3731, + 0x1d3b44, + 0x1d4006, + 0x1d4c73, + 0x1d5499, + 0x1d58ec, + 0x1d654d, + 0x1d6938, + 0x1d71d2, + 0x1d7da7, + 0x1d8756, + 0x1d8b23, + 0x1d93c9, + 0x1d9fbc, + 0x1da21d, + 0x1dae68, + 0x1db682, + 0x1dbaf7, + 0x1dc1b5, + 0x1dcdc0, + 0x1dd52a, + 0x1dd95f, + 0x1de4fe, + 0x1de88b, + 0x1df061, + 0x1dfc14, + 0x1e034f, + 0x1e0f3a, + 0x1e17d0, + 0x1e1ba5, + 0x1e2604, + 0x1e2a71, + 0x1e329b, + 0x1e3eee, + 0x1e45ac, + 0x1e49d9, + 0x1e5133, + 0x1e5d46, + 0x1e60e7, + 0x1e6c92, + 0x1e7478, + 0x1e780d, + 0x1e82fc, + 0x1e8e89, + 0x1e9663, + 0x1e9a16, + 0x1ea7b7, + 0x1eabc2, + 0x1eb328, + 0x1ebf5d, + 0x1ec41f, + 0x1ec86a, + 0x1ed080, + 0x1edcf5, + 0x1ee154, + 0x1eed21, + 0x1ef5cb, + 0x1ef9be, + 0x1f0029, + 0x1f0c5c, + 0x1f14b6, + 0x1f18c3, + 0x1f2562, + 0x1f2917, + 0x1f31fd, + 0x1f3d88, + 0x1f46ca, + 0x1f4abf, + 0x1f5255, + 0x1f5e20, + 0x1f6381, + 0x1f6ff4, + 0x1f771e, + 0x1f7b6b, + 0x1f819a, + 0x1f8def, + 0x1f9505, + 0x1f9970, + 0x1fa4d1, + 0x1fa8a4, + 0x1fb04e, + 0x1fbc3b, + 0x1fc779, + 0x1fcb0c, + 0x1fd3e6, + 0x1fdf93, + 0x1fe232, + 0x1fee47, + 0x1ff6ad, + 0x1ffad8, + 0x20031d, + 0x200f68, + 0x201782, + 0x201bf7, + 0x202656, + 0x202a23, + 0x2032c9, + 0x203ebc, + 0x2045fe, + 0x20498b, + 0x205161, + 0x205d14, + 0x2060b5, + 0x206cc0, + 0x20742a, + 0x20785f, + 0x2082ae, + 0x208edb, + 0x209631, + 0x209a44, + 0x20a7e5, + 0x20ab90, + 0x20b37a, + 0x20bf0f, + 0x20c44d, + 0x20c838, + 0x20d0d2, + 0x20dca7, + 0x20e106, + 0x20ed73, + 0x20f599, + 0x20f9ec, + 0x21007b, + 0x210c0e, + 0x2114e4, + 0x211891, + 0x212530, + 0x212945, + 0x2131af, + 0x213dda, + 0x214698, + 0x214aed, + 0x215207, + 0x215e72, + 0x2163d3, + 0x216fa6, + 0x21774c, + 0x217b39, + 0x2181c8, + 0x218dbd, + 0x219557, + 0x219922, + 0x21a483, + 0x21a8f6, + 0x21b01c, + 0x21bc69, + 0x21c72b, + 0x21cb5e, + 0x21d3b4, + 0x21dfc1, + 0x21e260, + 0x21ee15, + 0x21f6ff, + 0x21fa8a, + 0x2205d1, + 0x2209a4, + 0x22114e, + 0x221d3b, + 0x22209a, + 0x222cef, + 0x223405, + 0x223870, + 0x224332, + 0x224f47, + 0x2257ad, + 0x225bd8, + 0x226679, + 0x226a0c, + 0x2272e6, + 0x227e93, + 0x228462, + 0x228817, + 0x2290fd, + 0x229c88, + 0x22a129, + 0x22ad5c, + 0x22b5b6, + 0x22b9c3, + 0x22c281, + 0x22cef4, + 0x22d61e, + 0x22da6b, + 0x22e7ca, + 0x22ebbf, + 0x22f355, + 0x22ff20, + 0x2306b7, + 0x230ac2, + 0x231228, + 0x231e5d, + 0x2323fc, + 0x232f89, + 0x233763, + 0x233b16, + 0x234054, + 0x234c21, + 0x2354cb, + 0x2358be, + 0x23651f, + 0x23696a, + 0x237180, + 0x237df5, + 0x238704, + 0x238b71, + 0x23939b, + 0x239fee, + 0x23a24f, + 0x23ae3a, + 0x23b6d0, + 0x23baa5, + 0x23c1e7, + 0x23cd92, + 0x23d578, + 0x23d90d, + 0x23e4ac, + 0x23e8d9, + 0x23f033, + 0x23fc46, + 0x2402f0, + 0x240e85, + 0x24166f, + 0x241a1a, + 0x2427bb, + 0x242bce, + 0x243324, + 0x243f51, + 0x244413, + 0x244866, + 0x24508c, + 0x245cf9, + 0x246158, + 0x246d2d, + 0x2475c7, + 0x2479b2, + 0x248343, + 0x248f36, + 0x2497dc, + 0x249ba9, + 0x24a608, + 0x24aa7d, + 0x24b297, + 0x24bee2, + 0x24c5a0, + 0x24c9d5, + 0x24d13f, + 0x24dd4a, + 0x24e0eb, + 0x24ec9e, + 0x24f474, + 0x24f801, + 0x250196, + 0x250de3, + 0x251509, + 0x25197c, + 0x2524dd, + 0x2528a8, + 0x253042, + 0x253c37, + 0x254775, + 0x254b00, + 0x2553ea, + 0x255f9f, + 0x25623e, + 0x256e4b, + 0x2576a1, + 0x257ad4, + 0x258025, + 0x258c50, + 0x2594ba, + 0x2598cf, + 0x25a56e, + 0x25a91b, + 0x25b1f1, + 0x25bd84, + 0x25c6c6, + 0x25cab3, + 0x25d259, + 0x25de2c, + 0x25e38d, + 0x25eff8, + 0x25f712, + 0x25fb67, + 0x26043c, + 0x260849, + 0x2610a3, + 0x261cd6, + 0x262177, + 0x262d02, + 0x2635e8, + 0x26399d, + 0x2642df, + 0x264eaa, + 0x265640, + 0x265a35, + 0x266794, + 0x266be1, + 0x26730b, + 0x267f7e, + 0x26858f, + 0x2689fa, + 0x269110, + 0x269d65, + 0x26a0c4, + 0x26acb1, + 0x26b45b, + 0x26b82e, + 0x26c36c, + 0x26cf19, + 0x26d7f3, + 0x26db86, + 0x26e627, + 0x26ea52, + 0x26f2b8, + 0x26fecd, + 0x27075a, + 0x270b2f, + 0x2713c5, + 0x271fb0, + 0x272211, + 0x272e64, + 0x27368e, + 0x273afb, + 0x2741b9, + 0x274dcc, + 0x275526, + 0x275953, + 0x2764f2, + 0x276887, + 0x27706d, + 0x277c18, + 0x2786e9, + 0x278a9c, + 0x279276, + 0x279e03, + 0x27a3a2, + 0x27afd7, + 0x27b73d, + 0x27bb48, + 0x27c00a, + 0x27cc7f, + 0x27d495, + 0x27d8e0, + 0x27e541, + 0x27e934, + 0x27f1de, + 0x27fdab, + 0x2800c7, + 0x280cb2, + 0x281458, + 0x28182d, + 0x28258c, + 0x2829f9, + 0x283113, + 0x283d66, + 0x284624, + 0x284a51, + 0x2852bb, + 0x285ece, + 0x28636f, + 0x286f1a, + 0x2877f0, + 0x287b85, + 0x288174, + 0x288d01, + 0x2895eb, + 0x28999e, + 0x28a43f, + 0x28a84a, + 0x28b0a0, + 0x28bcd5, + 0x28c797, + 0x28cbe2, + 0x28d308, + 0x28df7d, + 0x28e2dc, + 0x28eea9, + 0x28f643, + 0x28fa36, + 0x2903a1, + 0x290fd4, + 0x29173e, + 0x291b4b, + 0x2926ea, + 0x292a9f, + 0x293275, + 0x293e00, + 0x294542, + 0x294937, + 0x2951dd, + 0x295da8, + 0x296009, + 0x296c7c, + 0x297496, + 0x2978e3, + 0x298212, + 0x298e67, + 0x29968d, + 0x299af8, + 0x29a759, + 0x29ab2c, + 0x29b3c6, + 0x29bfb3, + 0x29c4f1, + 0x29c884, + 0x29d06e, + 0x29dc1b, + 0x29e1ba, + 0x29edcf, + 0x29f525, + 0x29f950, + 0x2a060b, + 0x2a0a7e, + 0x2a1294, + 0x2a1ee1, + 0x2a2340, + 0x2a2f35, + 0x2a37df, + 0x2a3baa, + 0x2a40e8, + 0x2a4c9d, + 0x2a5477, + 0x2a5802, + 0x2a65a3, + 0x2a69d6, + 0x2a713c, + 0x2a7d49, + 0x2a87b8, + 0x2a8bcd, + 0x2a9327, + 0x2a9f52, + 0x2aa2f3, + 0x2aae86, + 0x2ab66c, + 0x2aba19, + 0x2ac15b, + 0x2acd2e, + 0x2ad5c4, + 0x2ad9b1, + 0x2ae410, + 0x2ae865, + 0x2af08f, + 0x2afcfa, + 0x2b056d, + 0x2b0918, + 0x2b11f2, + 0x2b1d87, + 0x2b2026, + 0x2b2c53, + 0x2b34b9, + 0x2b38cc, + 0x2b438e, + 0x2b4ffb, + 0x2b5711, + 0x2b5b64, + 0x2b66c5, + 0x2b6ab0, + 0x2b725a, + 0x2b7e2f, + 0x2b84de, + 0x2b88ab, + 0x2b9041, + 0x2b9c34, + 0x2ba195, + 0x2bade0, + 0x2bb50a, + 0x2bb97f, + 0x2bc23d, + 0x2bce48, + 0x2bd6a2, + 0x2bdad7, + 0x2be776, + 0x2beb03, + 0x2bf3e9, + 0x2bff9c, + 0x2c012a, + 0x2c0d5f, + 0x2c15b5, + 0x2c19c0, + 0x2c2461, + 0x2c2814, + 0x2c30fe, + 0x2c3c8b, + 0x2c47c9, + 0x2c4bbc, + 0x2c5356, + 0x2c5f23, + 0x2c6282, + 0x2c6ef7, + 0x2c761d, + 0x2c7a68, + 0x2c8099, + 0x2c8cec, + 0x2c9406, + 0x2c9873, + 0x2ca5d2, + 0x2ca9a7, + 0x2cb14d, + 0x2cbd38, + 0x2cc67a, + 0x2cca0f, + 0x2cd2e5, + 0x2cde90, + 0x2ce331, + 0x2cef44, + 0x2cf7ae, + 0x2cfbdb, + 0x2d024c, + 0x2d0e39, + 0x2d16d3, + 0x2d1aa6, + 0x2d2707, + 0x2d2b72, + 0x2d3398, + 0x2d3fed, + 0x2d44af, + 0x2d48da, + 0x2d5030, + 0x2d5c45, + 0x2d61e4, + 0x2d6d91, + 0x2d757b, + 0x2d790e, + 0x2d83ff, + 0x2d8f8a, + 0x2d9760, + 0x2d9b15, + 0x2da6b4, + 0x2daac1, + 0x2db22b, + 0x2dbe5e, + 0x2dc51c, + 0x2dc969, + 0x2dd183, + 0x2dddf6, + 0x2de057, + 0x2dec22, + 0x2df4c8, + 0x2df8bd, + 0x2e07e6, + 0x2e0b93, + 0x2e1379, + 0x2e1f0c, + 0x2e22ad, + 0x2e2ed8, + 0x2e3632, + 0x2e3a47, + 0x2e4105, + 0x2e4d70, + 0x2e559a, + 0x2e59ef, + 0x2e644e, + 0x2e683b, + 0x2e70d1, + 0x2e7ca4, + 0x2e8655, + 0x2e8a20, + 0x2e92ca, + 0x2e9ebf, + 0x2ea31e, + 0x2eaf6b, + 0x2eb781, + 0x2ebbf4, + 0x2ec0b6, + 0x2eccc3, + 0x2ed429, + 0x2ed85c, + 0x2ee5fd, + 0x2ee988, + 0x2ef162, + 0x2efd17, + 0x2f0480, + 0x2f08f5, + 0x2f101f, + 0x2f1c6a, + 0x2f21cb, + 0x2f2dbe, + 0x2f3554, + 0x2f3921, + 0x2f4263, + 0x2f4e16, + 0x2f56fc, + 0x2f5a89, + 0x2f6728, + 0x2f6b5d, + 0x2f73b7, + 0x2f7fc2, + 0x2f8533, + 0x2f8946, + 0x2f91ac, + 0x2f9dd9, + 0x2fa078, + 0x2fac0d, + 0x2fb4e7, + 0x2fb892, + 0x2fc3d0, + 0x2fcfa5, + 0x2fd74f, + 0x2fdb3a, + 0x2fe69b, + 0x2feaee, + 0x2ff204, + 0x2ffe71, + 0x3004a9, + 0x3008dc, + 0x301036, + 0x301c43, + 0x3021e2, + 0x302d97, + 0x30357d, + 0x303908, + 0x30424a, + 0x304e3f, + 0x3056d5, + 0x305aa0, + 0x306701, + 0x306b74, + 0x30739e, + 0x307feb, + 0x30851a, + 0x30896f, + 0x309185, + 0x309df0, + 0x30a051, + 0x30ac24, + 0x30b4ce, + 0x30b8bb, + 0x30c3f9, + 0x30cf8c, + 0x30d766, + 0x30db13, + 0x30e6b2, + 0x30eac7, + 0x30f22d, + 0x30fe58, + 0x3107cf, + 0x310bba, + 0x311350, + 0x311f25, + 0x312284, + 0x312ef1, + 0x31361b, + 0x313a6e, + 0x31412c, + 0x314d59, + 0x3155b3, + 0x3159c6, + 0x316467, + 0x316812, + 0x3170f8, + 0x317c8d, + 0x31867c, + 0x318a09, + 0x3192e3, + 0x319e96, + 0x31a337, + 0x31af42, + 0x31b7a8, + 0x31bbdd, + 0x31c09f, + 0x31ccea, + 0x31d400, + 0x31d875, + 0x31e5d4, + 0x31e9a1, + 0x31f14b, + 0x31fd3e, + 0x320265, + 0x320e10, + 0x3216fa, + 0x321a8f, + 0x32272e, + 0x322b5b, + 0x3233b1, + 0x323fc4, + 0x324486, + 0x3248f3, + 0x325019, + 0x325c6c, + 0x3261cd, + 0x326db8, + 0x327552, + 0x327927, + 0x3283d6, + 0x328fa3, + 0x329749, + 0x329b3c, + 0x32a69d, + 0x32aae8, + 0x32b202, + 0x32be77, + 0x32c535, + 0x32c940, + 0x32d1aa, + 0x32dddf, + 0x32e07e, + 0x32ec0b, + 0x32f4e1, + 0x32f894, + 0x330103, + 0x330d76, + 0x33159c, + 0x3319e9, + 0x332448, + 0x33283d, + 0x3330d7, + 0x333ca2, + 0x3347e0, + 0x334b95, + 0x33537f, + 0x335f0a, + 0x3362ab, + 0x336ede, + 0x337634, + 0x337a41, + 0x3380b0, + 0x338cc5, + 0x33942f, + 0x33985a, + 0x33a5fb, + 0x33a98e, + 0x33b164, + 0x33bd11, + 0x33c653, + 0x33ca26, + 0x33d2cc, + 0x33deb9, + 0x33e318, + 0x33ef6d, + 0x33f787, + 0x33fbf2, + 0x340544, + 0x340931, + 0x3411db, + 0x341dae, + 0x34200f, + 0x342c7a, + 0x343490, + 0x3438e5, + 0x3443a7, + 0x344fd2, + 0x345738, + 0x345b4d, + 0x3466ec, + 0x346a99, + 0x347273, + 0x347e06, + 0x3484f7, + 0x348882, + 0x349068, + 0x349c1d, + 0x34a1bc, + 0x34adc9, + 0x34b523, + 0x34b956, + 0x34c214, + 0x34ce61, + 0x34d68b, + 0x34dafe, + 0x34e75f, + 0x34eb2a, + 0x34f3c0, + 0x34ffb5, + 0x350622, + 0x350a57, + 0x3512bd, + 0x351ec8, + 0x352369, + 0x352f1c, + 0x3537f6, + 0x353b83, + 0x3540c1, + 0x354cb4, + 0x35545e, + 0x35582b, + 0x35658a, + 0x3569ff, + 0x357115, + 0x357d60, + 0x358791, + 0x358be4, + 0x35930e, + 0x359f7b, + 0x35a2da, + 0x35aeaf, + 0x35b645, + 0x35ba30, + 0x35c172, + 0x35cd07, + 0x35d5ed, + 0x35d998, + 0x35e439, + 0x35e84c, + 0x35f0a6, + 0x35fcd3, + 0x360388, + 0x360ffd, + 0x361717, + 0x361b62, + 0x3626c3, + 0x362ab6, + 0x36325c, + 0x363e29, + 0x36456b, + 0x36491e, + 0x3651f4, + 0x365d81, + 0x366020, + 0x366c55, + 0x3674bf, + 0x3678ca, + 0x36823b, + 0x368e4e, + 0x3696a4, + 0x369ad1, + 0x36a770, + 0x36ab05, + 0x36b3ef, + 0x36bf9a, + 0x36c4d8, + 0x36c8ad, + 0x36d047, + 0x36dc32, + 0x36e193, + 0x36ede6, + 0x36f50c, + 0x36f979, + 0x3700ee, + 0x370c9b, + 0x371471, + 0x371804, + 0x3725a5, + 0x3729d0, + 0x37313a, + 0x373d4f, + 0x37460d, + 0x374a78, + 0x375292, + 0x375ee7, + 0x376346, + 0x376f33, + 0x3777d9, + 0x377bac, + 0x37815d, + 0x378d28, + 0x3795c2, + 0x3799b7, + 0x37a416, + 0x37a863, + 0x37b089, + 0x37bcfc, + 0x37c7be, + 0x37cbcb, + 0x37d321, + 0x37df54, + 0x37e2f5, + 0x37ee80, + 0x37f66a, + 0x37fa1f, + 0x380773, + 0x380b06, + 0x3813ec, + 0x381f99, + 0x382238, + 0x382e4d, + 0x3836a7, + 0x383ad2, + 0x384190, + 0x384de5, + 0x38550f, + 0x38597a, + 0x3864db, + 0x3868ae, + 0x387044, + 0x387c31, + 0x3886c0, + 0x388ab5, + 0x38925f, + 0x389e2a, + 0x38a38b, + 0x38affe, + 0x38b714, + 0x38bb61, + 0x38c023, + 0x38cc56, + 0x38d4bc, + 0x38d8c9, + 0x38e568, + 0x38e91d, + 0x38f1f7, + 0x38fd82, + 0x390415, + 0x390860, + 0x39108a, + 0x391cff, + 0x39215e, + 0x392d2b, + 0x3935c1, + 0x3939b4, + 0x3942f6, + 0x394e83, + 0x395669, + 0x395a1c, + 0x3967bd, + 0x396bc8, + 0x397322, + 0x397f57, + 0x3985a6, + 0x3989d3, + 0x399139, + 0x399d4c, + 0x39a0ed, + 0x39ac98, + 0x39b472, + 0x39b807, + 0x39c345, + 0x39cf30, + 0x39d7da, + 0x39dbaf, + 0x39e60e, + 0x39ea7b, + 0x39f291, + 0x39fee4, + 0x3a01bf, + 0x3a0dca, + 0x3a1520, + 0x3a1955, + 0x3a24f4, + 0x3a2881, + 0x3a306b, + 0x3a3c1e, + 0x3a475c, + 0x3a4b29, + 0x3a53c3, + 0x3a5fb6, + 0x3a6217, + 0x3a6e62, + 0x3a7688, + 0x3a7afd, + 0x3a800c, + 0x3a8c79, + 0x3a9493, + 0x3a98e6, + 0x3aa547, + 0x3aa932, + 0x3ab1d8, + 0x3abdad, + 0x3ac6ef, + 0x3aca9a, + 0x3ad270, + 0x3ade05, + 0x3ae3a4, + 0x3aefd1, + 0x3af73b, + 0x3afb4e, + 0x3b02d9, + 0x3b0eac, + 0x3b1646, + 0x3b1a33, + 0x3b2792, + 0x3b2be7, + 0x3b330d, + 0x3b3f78, + 0x3b443a, + 0x3b484f, + 0x3b50a5, + 0x3b5cd0, + 0x3b6171, + 0x3b6d04, + 0x3b75ee, + 0x3b799b, + 0x3b836a, + 0x3b8f1f, + 0x3b97f5, + 0x3b9b80, + 0x3ba621, + 0x3baa54, + 0x3bb2be, + 0x3bbecb, + 0x3bc589, + 0x3bc9fc, + 0x3bd116, + 0x3bdd63, + 0x3be0c2, + 0x3becb7, + 0x3bf45d, + 0x3bf828, + 0x3c069e, + 0x3c0aeb, + 0x3c1201, + 0x3c1e74, + 0x3c23d5, + 0x3c2fa0, + 0x3c374a, + 0x3c3b3f, + 0x3c407d, + 0x3c4c08, + 0x3c54e2, + 0x3c5897, + 0x3c6536, + 0x3c6943, + 0x3c71a9, + 0x3c7ddc, + 0x3c872d, + 0x3c8b58, + 0x3c93b2, + 0x3c9fc7, + 0x3ca266, + 0x3cae13, + 0x3cb6f9, + 0x3cba8c, + 0x3cc1ce, + 0x3ccdbb, + 0x3cd551, + 0x3cd924, + 0x3ce485, + 0x3ce8f0, + 0x3cf01a, + 0x3cfc6f, + 0x3d05f8, + 0x3d098d, + 0x3d1167, + 0x3d1d12, + 0x3d20b3, + 0x3d2cc6, + 0x3d342c, + 0x3d3859, + 0x3d431b, + 0x3d4f6e, + 0x3d5784, + 0x3d5bf1, + 0x3d6650, + 0x3d6a25, + 0x3d72cf, + 0x3d7eba, + 0x3d844b, + 0x3d883e, + 0x3d90d4, + 0x3d9ca1, + 0x3da100, + 0x3dad75, + 0x3db59f, + 0x3db9ea, + 0x3dc2a8, + 0x3dcedd, + 0x3dd637, + 0x3dda42, + 0x3de7e3, + 0x3deb96, + 0x3df37c, + 0x3dff09, + 0x3e0052, + 0x3e0c27, + 0x3e14cd, + 0x3e18b8, + 0x3e2519, + 0x3e296c, + 0x3e3186, + 0x3e3df3, + 0x3e46b1, + 0x3e4ac4, + 0x3e522e, + 0x3e5e5b, + 0x3e63fa, + 0x3e6f8f, + 0x3e7765, + 0x3e7b10, + 0x3e81e1, + 0x3e8d94, + 0x3e957e, + 0x3e990b, + 0x3ea4aa, + 0x3ea8df, + 0x3eb035, + 0x3ebc40, + 0x3ec702, + 0x3ecb77, + 0x3ed39d, + 0x3edfe8, + 0x3ee249, + 0x3eee3c, + 0x3ef6d6, + 0x3efaa3, + 0x3f0334, + 0x3f0f41, + 0x3f17ab, + 0x3f1bde, + 0x3f267f, + 0x3f2a0a, + 0x3f32e0, + 0x3f3e95, + 0x3f45d7, + 0x3f49a2, + 0x3f5148, + 0x3f5d3d, + 0x3f609c, + 0x3f6ce9, + 0x3f7403, + 0x3f7876, + 0x3f8287, + 0x3f8ef2, + 0x3f9618, + 0x3f9a6d, + 0x3fa7cc, + 0x3fabb9, + 0x3fb353, + 0x3fbf26, + 0x3fc464, + 0x3fc811, + 0x3fd0fb, + 0x3fdc8e, + 0x3fe12f, + 0x3fed5a, + 0x3ff5b0, + 0x3ff9c5, + 0x40063a, + 0x400a4f, + 0x4012a5, + 0x401ed0, + 0x402371, + 0x402f04, + 0x4037ee, + 0x403b9b, + 0x4040d9, + 0x404cac, + 0x405446, + 0x405833, + 0x406592, + 0x4069e7, + 0x40710d, + 0x407d78, + 0x408789, + 0x408bfc, + 0x409316, + 0x409f63, + 0x40a2c2, + 0x40aeb7, + 0x40b65d, + 0x40ba28, + 0x40c16a, + 0x40cd1f, + 0x40d5f5, + 0x40d980, + 0x40e421, + 0x40e854, + 0x40f0be, + 0x40fccb, + 0x41055c, + 0x410929, + 0x4111c3, + 0x411db6, + 0x412017, + 0x412c62, + 0x413488, + 0x4138fd, + 0x4143bf, + 0x414fca, + 0x415720, + 0x415b55, + 0x4166f4, + 0x416a81, + 0x41726b, + 0x417e1e, + 0x4184ef, + 0x41889a, + 0x419070, + 0x419c05, + 0x41a1a4, + 0x41add1, + 0x41b53b, + 0x41b94e, + 0x41c20c, + 0x41ce79, + 0x41d693, + 0x41dae6, + 0x41e747, + 0x41eb32, + 0x41f3d8, + 0x41ffad, + 0x4200f6, + 0x420c83, + 0x421469, + 0x42181c, + 0x4225bd, + 0x4229c8, + 0x423122, + 0x423d57, + 0x424615, + 0x424a60, + 0x42528a, + 0x425eff, + 0x42635e, + 0x426f2b, + 0x4277c1, + 0x427bb4, + 0x428145, + 0x428d30, + 0x4295da, + 0x4299af, + 0x42a40e, + 0x42a87b, + 0x42b091, + 0x42bce4, + 0x42c7a6, + 0x42cbd3, + 0x42d339, + 0x42df4c, + 0x42e2ed, + 0x42ee98, + 0x42f672, + 0x42fa07, + 0x430390, + 0x430fe5, + 0x43170f, + 0x431b7a, + 0x4326db, + 0x432aae, + 0x433244, + 0x433e31, + 0x434573, + 0x434906, + 0x4351ec, + 0x435d99, + 0x436038, + 0x436c4d, + 0x4374a7, + 0x4378d2, + 0x438223, + 0x438e56, + 0x4396bc, + 0x439ac9, + 0x43a768, + 0x43ab1d, + 0x43b3f7, + 0x43bf82, + 0x43c4c0, + 0x43c8b5, + 0x43d05f, + 0x43dc2a, + 0x43e18b, + 0x43edfe, + 0x43f514, + 0x43f961, + 0x4407d7, + 0x440ba2, + 0x441348, + 0x441f3d, + 0x44229c, + 0x442ee9, + 0x443603, + 0x443a76, + 0x444134, + 0x444d41, + 0x4455ab, + 0x4459de, + 0x44647f, + 0x44680a, + 0x4470e0, + 0x447c95, + 0x448664, + 0x448a11, + 0x4492fb, + 0x449e8e, + 0x44a32f, + 0x44af5a, + 0x44b7b0, + 0x44bbc5, + 0x44c087, + 0x44ccf2, + 0x44d418, + 0x44d86d, + 0x44e5cc, + 0x44e9b9, + 0x44f153, + 0x44fd26, + 0x4504b1, + 0x4508c4, + 0x45102e, + 0x451c5b, + 0x4521fa, + 0x452d8f, + 0x453565, + 0x453910, + 0x454252, + 0x454e27, + 0x4556cd, + 0x455ab8, + 0x456719, + 0x456b6c, + 0x457386, + 0x457ff3, + 0x458502, + 0x458977, + 0x45919d, + 0x459de8, + 0x45a049, + 0x45ac3c, + 0x45b4d6, + 0x45b8a3, + 0x45c3e1, + 0x45cf94, + 0x45d77e, + 0x45db0b, + 0x45e6aa, + 0x45eadf, + 0x45f235, + 0x45fe40, + 0x46011b, + 0x460d6e, + 0x461584, + 0x4619f1, + 0x462450, + 0x462825, + 0x4630cf, + 0x463cba, + 0x4647f8, + 0x464b8d, + 0x465367, + 0x465f12, + 0x4662b3, + 0x466ec6, + 0x46762c, + 0x467a59, + 0x4680a8, + 0x468cdd, + 0x469437, + 0x469842, + 0x46a5e3, + 0x46a996, + 0x46b17c, + 0x46bd09, + 0x46c64b, + 0x46ca3e, + 0x46d2d4, + 0x46dea1, + 0x46e300, + 0x46ef75, + 0x46f79f, + 0x46fbea, + 0x47027d, + 0x470e08, + 0x4716e2, + 0x471a97, + 0x472736, + 0x472b43, + 0x4733a9, + 0x473fdc, + 0x47449e, + 0x4748eb, + 0x475001, + 0x475c74, + 0x4761d5, + 0x476da0, + 0x47754a, + 0x47793f, + 0x4783ce, + 0x478fbb, + 0x479751, + 0x479b24, + 0x47a685, + 0x47aaf0, + 0x47b21a, + 0x47be6f, + 0x47c52d, + 0x47c958, + 0x47d1b2, + 0x47ddc7, + 0x47e066, + 0x47ec13, + 0x47f4f9, + 0x47f88c, + 0x4805e0, + 0x480995, + 0x48117f, + 0x481d0a, + 0x4820ab, + 0x482cde, + 0x483434, + 0x483841, + 0x484303, + 0x484f76, + 0x48579c, + 0x485be9, + 0x486648, + 0x486a3d, + 0x4872d7, + 0x487ea2, + 0x488453, + 0x488826, + 0x4890cc, + 0x489cb9, + 0x48a118, + 0x48ad6d, + 0x48b587, + 0x48b9f2, + 0x48c2b0, + 0x48cec5, + 0x48d62f, + 0x48da5a, + 0x48e7fb, + 0x48eb8e, + 0x48f364, + 0x48ff11, + 0x490686, + 0x490af3, + 0x491219, + 0x491e6c, + 0x4923cd, + 0x492fb8, + 0x493752, + 0x493b27, + 0x494065, + 0x494c10, + 0x4954fa, + 0x49588f, + 0x49652e, + 0x49695b, + 0x4971b1, + 0x497dc4, + 0x498735, + 0x498b40, + 0x4993aa, + 0x499fdf, + 0x49a27e, + 0x49ae0b, + 0x49b6e1, + 0x49ba94, + 0x49c1d6, + 0x49cda3, + 0x49d549, + 0x49d93c, + 0x49e49d, + 0x49e8e8, + 0x49f002, + 0x49fc77, + 0x4a032c, + 0x4a0f59, + 0x4a17b3, + 0x4a1bc6, + 0x4a2667, + 0x4a2a12, + 0x4a32f8, + 0x4a3e8d, + 0x4a45cf, + 0x4a49ba, + 0x4a5150, + 0x4a5d25, + 0x4a6084, + 0x4a6cf1, + 0x4a741b, + 0x4a786e, + 0x4a829f, + 0x4a8eea, + 0x4a9600, + 0x4a9a75, + 0x4aa7d4, + 0x4aaba1, + 0x4ab34b, + 0x4abf3e, + 0x4ac47c, + 0x4ac809, + 0x4ad0e3, + 0x4adc96, + 0x4ae137, + 0x4aed42, + 0x4af5a8, + 0x4af9dd, + 0x4b004a, + 0x4b0c3f, + 0x4b14d5, + 0x4b18a0, + 0x4b2501, + 0x4b2974, + 0x4b319e, + 0x4b3deb, + 0x4b46a9, + 0x4b4adc, + 0x4b5236, + 0x4b5e43, + 0x4b63e2, + 0x4b6f97, + 0x4b777d, + 0x4b7b08, + 0x4b81f9, + 0x4b8d8c, + 0x4b9566, + 0x4b9913, + 0x4ba4b2, + 0x4ba8c7, + 0x4bb02d, + 0x4bbc58, + 0x4bc71a, + 0x4bcb6f, + 0x4bd385, + 0x4bdff0, + 0x4be251, + 0x4bee24, + 0x4bf6ce, + 0x4bfabb, + 0x4c040d, + 0x4c0878, + 0x4c1092, + 0x4c1ce7, + 0x4c2146, + 0x4c2d33, + 0x4c35d9, + 0x4c39ac, + 0x4c42ee, + 0x4c4e9b, + 0x4c5671, + 0x4c5a04, + 0x4c67a5, + 0x4c6bd0, + 0x4c733a, + 0x4c7f4f, + 0x4c85be, + 0x4c89cb, + 0x4c9121, + 0x4c9d54, + 0x4ca0f5, + 0x4cac80, + 0x4cb46a, + 0x4cb81f, + 0x4cc35d, + 0x4ccf28, + 0x4cd7c2, + 0x4cdbb7, + 0x4ce616, + 0x4cea63, + 0x4cf289, + 0x4cfefc, + 0x4d076b, + 0x4d0b1e, + 0x4d13f4, + 0x4d1f81, + 0x4d2220, + 0x4d2e55, + 0x4d36bf, + 0x4d3aca, + 0x4d4188, + 0x4d4dfd, + 0x4d5517, + 0x4d5962, + 0x4d64c3, + 0x4d68b6, + 0x4d705c, + 0x4d7c29, + 0x4d86d8, + 0x4d8aad, + 0x4d9247, + 0x4d9e32, + 0x4da393, + 0x4dafe6, + 0x4db70c, + 0x4dbb79, + 0x4dc03b, + 0x4dcc4e, + 0x4dd4a4, + 0x4dd8d1, + 0x4de570, + 0x4de905, + 0x4df1ef, + 0x4dfd9a, + 0x4e02c1, + 0x4e0eb4, + 0x4e165e, + 0x4e1a2b, + 0x4e278a, + 0x4e2bff, + 0x4e3315, + 0x4e3f60, + 0x4e4422, + 0x4e4857, + 0x4e50bd, + 0x4e5cc8, + 0x4e6169, + 0x4e6d1c, + 0x4e75f6, + 0x4e7983, + 0x4e8372, + 0x4e8f07, + 0x4e97ed, + 0x4e9b98, + 0x4ea639, + 0x4eaa4c, + 0x4eb2a6, + 0x4ebed3, + 0x4ec591, + 0x4ec9e4, + 0x4ed10e, + 0x4edd7b, + 0x4ee0da, + 0x4eecaf, + 0x4ef445, + 0x4ef830, + 0x4f01a7, + 0x4f0dd2, + 0x4f1538, + 0x4f194d, + 0x4f24ec, + 0x4f2899, + 0x4f3073, + 0x4f3c06, + 0x4f4744, + 0x4f4b31, + 0x4f53db, + 0x4f5fae, + 0x4f620f, + 0x4f6e7a, + 0x4f7690, + 0x4f7ae5, + 0x4f8014, + 0x4f8c61, + 0x4f948b, + 0x4f98fe, + 0x4fa55f, + 0x4fa92a, + 0x4fb1c0, + 0x4fbdb5, + 0x4fc6f7, + 0x4fca82, + 0x4fd268, + 0x4fde1d, + 0x4fe3bc, + 0x4fefc9, + 0x4ff723, + 0x4ffb56, + 0x50018e, + 0x500dfb, + 0x501511, + 0x501964, + 0x5024c5, + 0x5028b0, + 0x50305a, + 0x503c2f, + 0x50476d, + 0x504b18, + 0x5053f2, + 0x505f87, + 0x506226, + 0x506e53, + 0x5076b9, + 0x507acc, + 0x50803d, + 0x508c48, + 0x5094a2, + 0x5098d7, + 0x50a576, + 0x50a903, + 0x50b1e9, + 0x50bd9c, + 0x50c6de, + 0x50caab, + 0x50d241, + 0x50de34, + 0x50e395, + 0x50efe0, + 0x50f70a, + 0x50fb7f, + 0x5102e8, + 0x510e9d, + 0x511677, + 0x511a02, + 0x5127a3, + 0x512bd6, + 0x51333c, + 0x513f49, + 0x51440b, + 0x51487e, + 0x515094, + 0x515ce1, + 0x516140, + 0x516d35, + 0x5175df, + 0x5179aa, + 0x51835b, + 0x518f2e, + 0x5197c4, + 0x519bb1, + 0x51a610, + 0x51aa65, + 0x51b28f, + 0x51befa, + 0x51c5b8, + 0x51c9cd, + 0x51d127, + 0x51dd52, + 0x51e0f3, + 0x51ec86, + 0x51f46c, + 0x51f819, + 0x520742, + 0x520b37, + 0x5213dd, + 0x521fa8, + 0x522209, + 0x522e7c, + 0x523696, + 0x523ae3, + 0x5241a1, + 0x524dd4, + 0x52553e, + 0x52594b, + 0x5264ea, + 0x52689f, + 0x527075, + 0x527c00, + 0x5286f1, + 0x528a84, + 0x52926e, + 0x529e1b, + 0x52a3ba, + 0x52afcf, + 0x52b725, + 0x52bb50, + 0x52c012, + 0x52cc67, + 0x52d48d, + 0x52d8f8, + 0x52e559, + 0x52e92c, + 0x52f1c6, + 0x52fdb3, + 0x530424, + 0x530851, + 0x5310bb, + 0x531cce, + 0x53216f, + 0x532d1a, + 0x5335f0, + 0x533985, + 0x5342c7, + 0x534eb2, + 0x535658, + 0x535a2d, + 0x53678c, + 0x536bf9, + 0x537313, + 0x537f66, + 0x538597, + 0x5389e2, + 0x539108, + 0x539d7d, + 0x53a0dc, + 0x53aca9, + 0x53b443, + 0x53b836, + 0x53c374, + 0x53cf01, + 0x53d7eb, + 0x53db9e, + 0x53e63f, + 0x53ea4a, + 0x53f2a0, + 0x53fed5, + 0x540063, + 0x540c16, + 0x5414fc, + 0x541889, + 0x542528, + 0x54295d, + 0x5431b7, + 0x543dc2, + 0x544680, + 0x544af5, + 0x54521f, + 0x545e6a, + 0x5463cb, + 0x546fbe, + 0x547754, + 0x547b21, + 0x5481d0, + 0x548da5, + 0x54954f, + 0x54993a, + 0x54a49b, + 0x54a8ee, + 0x54b004, + 0x54bc71, + 0x54c733, + 0x54cb46, + 0x54d3ac, + 0x54dfd9, + 0x54e278, + 0x54ee0d, + 0x54f6e7, + 0x54fa92, + 0x550305, + 0x550f70, + 0x55179a, + 0x551bef, + 0x55264e, + 0x552a3b, + 0x5532d1, + 0x553ea4, + 0x5545e6, + 0x554993, + 0x555179, + 0x555d0c, + 0x5560ad, + 0x556cd8, + 0x557432, + 0x557847, + 0x5582b6, + 0x558ec3, + 0x559629, + 0x559a5c, + 0x55a7fd, + 0x55ab88, + 0x55b362, + 0x55bf17, + 0x55c455, + 0x55c820, + 0x55d0ca, + 0x55dcbf, + 0x55e11e, + 0x55ed6b, + 0x55f581, + 0x55f9f4, + 0x5606af, + 0x560ada, + 0x561230, + 0x561e45, + 0x5623e4, + 0x562f91, + 0x56377b, + 0x563b0e, + 0x56404c, + 0x564c39, + 0x5654d3, + 0x5658a6, + 0x566507, + 0x566972, + 0x567198, + 0x567ded, + 0x56871c, + 0x568b69, + 0x569383, + 0x569ff6, + 0x56a257, + 0x56ae22, + 0x56b6c8, + 0x56babd, + 0x56c1ff, + 0x56cd8a, + 0x56d560, + 0x56d915, + 0x56e4b4, + 0x56e8c1, + 0x56f02b, + 0x56fc5e, + 0x5705c9, + 0x5709bc, + 0x571156, + 0x571d23, + 0x572082, + 0x572cf7, + 0x57341d, + 0x573868, + 0x57432a, + 0x574f5f, + 0x5757b5, + 0x575bc0, + 0x576661, + 0x576a14, + 0x5772fe, + 0x577e8b, + 0x57847a, + 0x57880f, + 0x5790e5, + 0x579c90, + 0x57a131, + 0x57ad44, + 0x57b5ae, + 0x57b9db, + 0x57c299, + 0x57ceec, + 0x57d606, + 0x57da73, + 0x57e7d2, + 0x57eba7, + 0x57f34d, + 0x57ff38, + 0x580254, + 0x580e21, + 0x5816cb, + 0x581abe, + 0x58271f, + 0x582b6a, + 0x583380, + 0x583ff5, + 0x5844b7, + 0x5848c2, + 0x585028, + 0x585c5d, + 0x5861fc, + 0x586d89, + 0x587563, + 0x587916, + 0x5883e7, + 0x588f92, + 0x589778, + 0x589b0d, + 0x58a6ac, + 0x58aad9, + 0x58b233, + 0x58be46, + 0x58c504, + 0x58c971, + 0x58d19b, + 0x58ddee, + 0x58e04f, + 0x58ec3a, + 0x58f4d0, + 0x58f8a5, + 0x590132, + 0x590d47, + 0x5915ad, + 0x5919d8, + 0x592479, + 0x59280c, + 0x5930e6, + 0x593c93, + 0x5947d1, + 0x594ba4, + 0x59534e, + 0x595f3b, + 0x59629a, + 0x596eef, + 0x597605, + 0x597a70, + 0x598081, + 0x598cf4, + 0x59941e, + 0x59986b, + 0x59a5ca, + 0x59a9bf, + 0x59b155, + 0x59bd20, + 0x59c662, + 0x59ca17, + 0x59d2fd, + 0x59de88, + 0x59e329, + 0x59ef5c, + 0x59f7b6, + 0x59fbc3, + 0x5a0498, + 0x5a08ed, + 0x5a1007, + 0x5a1c72, + 0x5a21d3, + 0x5a2da6, + 0x5a354c, + 0x5a3939, + 0x5a427b, + 0x5a4e0e, + 0x5a56e4, + 0x5a5a91, + 0x5a6730, + 0x5a6b45, + 0x5a73af, + 0x5a7fda, + 0x5a852b, + 0x5a895e, + 0x5a91b4, + 0x5a9dc1, + 0x5aa060, + 0x5aac15, + 0x5ab4ff, + 0x5ab88a, + 0x5ac3c8, + 0x5acfbd, + 0x5ad757, + 0x5adb22, + 0x5ae683, + 0x5aeaf6, + 0x5af21c, + 0x5afe69, + 0x5b07fe, + 0x5b0b8b, + 0x5b1361, + 0x5b1f14, + 0x5b22b5, + 0x5b2ec0, + 0x5b362a, + 0x5b3a5f, + 0x5b411d, + 0x5b4d68, + 0x5b5582, + 0x5b59f7, + 0x5b6456, + 0x5b6823, + 0x5b70c9, + 0x5b7cbc, + 0x5b864d, + 0x5b8a38, + 0x5b92d2, + 0x5b9ea7, + 0x5ba306, + 0x5baf73, + 0x5bb799, + 0x5bbbec, + 0x5bc0ae, + 0x5bccdb, + 0x5bd431, + 0x5bd844, + 0x5be5e5, + 0x5be990, + 0x5bf17a, + 0x5bfd0f, + 0x5c03b9, + 0x5c0fcc, + 0x5c1726, + 0x5c1b53, + 0x5c26f2, + 0x5c2a87, + 0x5c326d, + 0x5c3e18, + 0x5c455a, + 0x5c492f, + 0x5c51c5, + 0x5c5db0, + 0x5c6011, + 0x5c6c64, + 0x5c748e, + 0x5c78fb, + 0x5c820a, + 0x5c8e7f, + 0x5c9695, + 0x5c9ae0, + 0x5ca741, + 0x5cab34, + 0x5cb3de, + 0x5cbfab, + 0x5cc4e9, + 0x5cc89c, + 0x5cd076, + 0x5cdc03, + 0x5ce1a2, + 0x5cedd7, + 0x5cf53d, + 0x5cf948, + 0x5d00df, + 0x5d0caa, + 0x5d1440, + 0x5d1835, + 0x5d2594, + 0x5d29e1, + 0x5d310b, + 0x5d3d7e, + 0x5d463c, + 0x5d4a49, + 0x5d52a3, + 0x5d5ed6, + 0x5d6377, + 0x5d6f02, + 0x5d77e8, + 0x5d7b9d, + 0x5d816c, + 0x5d8d19, + 0x5d95f3, + 0x5d9986, + 0x5da427, + 0x5da852, + 0x5db0b8, + 0x5dbccd, + 0x5dc78f, + 0x5dcbfa, + 0x5dd310, + 0x5ddf65, + 0x5de2c4, + 0x5deeb1, + 0x5df65b, + 0x5dfa2e, + 0x5e0575, + 0x5e0900, + 0x5e11ea, + 0x5e1d9f, + 0x5e203e, + 0x5e2c4b, + 0x5e34a1, + 0x5e38d4, + 0x5e4396, + 0x5e4fe3, + 0x5e5709, + 0x5e5b7c, + 0x5e66dd, + 0x5e6aa8, + 0x5e7242, + 0x5e7e37, + 0x5e84c6, + 0x5e88b3, + 0x5e9059, + 0x5e9c2c, + 0x5ea18d, + 0x5eadf8, + 0x5eb512, + 0x5eb967, + 0x5ec225, + 0x5ece50, + 0x5ed6ba, + 0x5edacf, + 0x5ee76e, + 0x5eeb1b, + 0x5ef3f1, + 0x5eff84, + 0x5f0613, + 0x5f0a66, + 0x5f128c, + 0x5f1ef9, + 0x5f2358, + 0x5f2f2d, + 0x5f37c7, + 0x5f3bb2, + 0x5f40f0, + 0x5f4c85, + 0x5f546f, + 0x5f581a, + 0x5f65bb, + 0x5f69ce, + 0x5f7124, + 0x5f7d51, + 0x5f87a0, + 0x5f8bd5, + 0x5f933f, + 0x5f9f4a, + 0x5fa2eb, + 0x5fae9e, + 0x5fb674, + 0x5fba01, + 0x5fc143, + 0x5fcd36, + 0x5fd5dc, + 0x5fd9a9, + 0x5fe408, + 0x5fe87d, + 0x5ff097, + 0x5ffce2, + 0x600527, + 0x600952, + 0x6011b8, + 0x601dcd, + 0x60206c, + 0x602c19, + 0x6034f3, + 0x603886, + 0x6043c4, + 0x604fb1, + 0x60575b, + 0x605b2e, + 0x60668f, + 0x606afa, + 0x607210, + 0x607e65, + 0x608494, + 0x6088e1, + 0x60900b, + 0x609c7e, + 0x60a1df, + 0x60adaa, + 0x60b540, + 0x60b935, + 0x60c277, + 0x60ce02, + 0x60d6e8, + 0x60da9d, + 0x60e73c, + 0x60eb49, + 0x60f3a3, + 0x60ffd6, + 0x610641, + 0x610a34, + 0x6112de, + 0x611eab, + 0x61230a, + 0x612f7f, + 0x613795, + 0x613be0, + 0x6140a2, + 0x614cd7, + 0x61543d, + 0x615848, + 0x6165e9, + 0x61699c, + 0x617176, + 0x617d03, + 0x6187f2, + 0x618b87, + 0x61936d, + 0x619f18, + 0x61a2b9, + 0x61aecc, + 0x61b626, + 0x61ba53, + 0x61c111, + 0x61cd64, + 0x61d58e, + 0x61d9fb, + 0x61e45a, + 0x61e82f, + 0x61f0c5, + 0x61fcb0, + 0x6203eb, + 0x620f9e, + 0x621774, + 0x621b01, + 0x6226a0, + 0x622ad5, + 0x62323f, + 0x623e4a, + 0x624508, + 0x62497d, + 0x625197, + 0x625de2, + 0x626043, + 0x626c36, + 0x6274dc, + 0x6278a9, + 0x628258, + 0x628e2d, + 0x6296c7, + 0x629ab2, + 0x62a713, + 0x62ab66, + 0x62b38c, + 0x62bff9, + 0x62c4bb, + 0x62c8ce, + 0x62d024, + 0x62dc51, + 0x62e1f0, + 0x62ed85, + 0x62f56f, + 0x62f91a, + 0x63008d, + 0x630cf8, + 0x631412, + 0x631867, + 0x6325c6, + 0x6329b3, + 0x633159, + 0x633d2c, + 0x63466e, + 0x634a1b, + 0x6352f1, + 0x635e84, + 0x636325, + 0x636f50, + 0x6377ba, + 0x637bcf, + 0x63813e, + 0x638d4b, + 0x6395a1, + 0x6399d4, + 0x63a475, + 0x63a800, + 0x63b0ea, + 0x63bc9f, + 0x63c7dd, + 0x63cba8, + 0x63d342, + 0x63df37, + 0x63e296, + 0x63eee3, + 0x63f609, + 0x63fa7c, + 0x6404ca, + 0x6408bf, + 0x641055, + 0x641c20, + 0x642181, + 0x642df4, + 0x64351e, + 0x64396b, + 0x644229, + 0x644e5c, + 0x6456b6, + 0x645ac3, + 0x646762, + 0x646b17, + 0x6473fd, + 0x647f88, + 0x648579, + 0x64890c, + 0x6491e6, + 0x649d93, + 0x64a032, + 0x64ac47, + 0x64b4ad, + 0x64b8d8, + 0x64c39a, + 0x64cfef, + 0x64d705, + 0x64db70, + 0x64e6d1, + 0x64eaa4, + 0x64f24e, + 0x64fe3b, + 0x6507ac, + 0x650bd9, + 0x651333, + 0x651f46, + 0x6522e7, + 0x652e92, + 0x653678, + 0x653a0d, + 0x65414f, + 0x654d3a, + 0x6555d0, + 0x6559a5, + 0x656404, + 0x656871, + 0x65709b, + 0x657cee, + 0x65861f, + 0x658a6a, + 0x659280, + 0x659ef5, + 0x65a354, + 0x65af21, + 0x65b7cb, + 0x65bbbe, + 0x65c0fc, + 0x65cc89, + 0x65d463, + 0x65d816, + 0x65e5b7, + 0x65e9c2, + 0x65f128, + 0x65fd5d, + 0x660206, + 0x660e73, + 0x661699, + 0x661aec, + 0x66274d, + 0x662b38, + 0x6633d2, + 0x663fa7, + 0x6644e5, + 0x664890, + 0x66507a, + 0x665c0f, + 0x6661ae, + 0x666ddb, + 0x667531, + 0x667944, + 0x6683b5, + 0x668fc0, + 0x66972a, + 0x669b5f, + 0x66a6fe, + 0x66aa8b, + 0x66b261, + 0x66be14, + 0x66c556, + 0x66c923, + 0x66d1c9, + 0x66ddbc, + 0x66e01d, + 0x66ec68, + 0x66f482, + 0x66f8f7, + 0x670160, + 0x670d15, + 0x6715ff, + 0x67198a, + 0x67242b, + 0x67285e, + 0x6730b4, + 0x673cc1, + 0x674783, + 0x674bf6, + 0x67531c, + 0x675f69, + 0x6762c8, + 0x676ebd, + 0x677657, + 0x677a22, + 0x6780d3, + 0x678ca6, + 0x67944c, + 0x679839, + 0x67a598, + 0x67a9ed, + 0x67b107, + 0x67bd72, + 0x67c630, + 0x67ca45, + 0x67d2af, + 0x67deda, + 0x67e37b, + 0x67ef0e, + 0x67f7e4, + 0x67fb91, + 0x6806fd, + 0x680a88, + 0x681262, + 0x681e17, + 0x6823b6, + 0x682fc3, + 0x683729, + 0x683b5c, + 0x68401e, + 0x684c6b, + 0x685481, + 0x6858f4, + 0x686555, + 0x686920, + 0x6871ca, + 0x687dbf, + 0x68874e, + 0x688b3b, + 0x6893d1, + 0x689fa4, + 0x68a205, + 0x68ae70, + 0x68b69a, + 0x68baef, + 0x68c1ad, + 0x68cdd8, + 0x68d532, + 0x68d947, + 0x68e4e6, + 0x68e893, + 0x68f079, + 0x68fc0c, + 0x69059b, + 0x6909ee, + 0x691104, + 0x691d71, + 0x6920d0, + 0x692ca5, + 0x69344f, + 0x69383a, + 0x694378, + 0x694f0d, + 0x6957e7, + 0x695b92, + 0x696633, + 0x696a46, + 0x6972ac, + 0x697ed9, + 0x698428, + 0x69885d, + 0x6990b7, + 0x699cc2, + 0x69a163, + 0x69ad16, + 0x69b5fc, + 0x69b989, + 0x69c2cb, + 0x69cebe, + 0x69d654, + 0x69da21, + 0x69e780, + 0x69ebf5, + 0x69f31f, + 0x69ff6a, + 0x6a0031, + 0x6a0c44, + 0x6a14ae, + 0x6a18db, + 0x6a257a, + 0x6a290f, + 0x6a31e5, + 0x6a3d90, + 0x6a46d2, + 0x6a4aa7, + 0x6a524d, + 0x6a5e38, + 0x6a6399, + 0x6a6fec, + 0x6a7706, + 0x6a7b73, + 0x6a8182, + 0x6a8df7, + 0x6a951d, + 0x6a9968, + 0x6aa4c9, + 0x6aa8bc, + 0x6ab056, + 0x6abc23, + 0x6ac761, + 0x6acb14, + 0x6ad3fe, + 0x6adf8b, + 0x6ae22a, + 0x6aee5f, + 0x6af6b5, + 0x6afac0, + 0x6b0357, + 0x6b0f22, + 0x6b17c8, + 0x6b1bbd, + 0x6b261c, + 0x6b2a69, + 0x6b3283, + 0x6b3ef6, + 0x6b45b4, + 0x6b49c1, + 0x6b512b, + 0x6b5d5e, + 0x6b60ff, + 0x6b6c8a, + 0x6b7460, + 0x6b7815, + 0x6b82e4, + 0x6b8e91, + 0x6b967b, + 0x6b9a0e, + 0x6ba7af, + 0x6babda, + 0x6bb330, + 0x6bbf45, + 0x6bc407, + 0x6bc872, + 0x6bd098, + 0x6bdced, + 0x6be14c, + 0x6bed39, + 0x6bf5d3, + 0x6bf9a6, + 0x6c0710, + 0x6c0b65, + 0x6c138f, + 0x6c1ffa, + 0x6c225b, + 0x6c2e2e, + 0x6c36c4, + 0x6c3ab1, + 0x6c41f3, + 0x6c4d86, + 0x6c556c, + 0x6c5919, + 0x6c64b8, + 0x6c68cd, + 0x6c7027, + 0x6c7c52, + 0x6c86a3, + 0x6c8ad6, + 0x6c923c, + 0x6c9e49, + 0x6ca3e8, + 0x6caf9d, + 0x6cb777, + 0x6cbb02, + 0x6cc040, + 0x6ccc35, + 0x6cd4df, + 0x6cd8aa, + 0x6ce50b, + 0x6ce97e, + 0x6cf194, + 0x6cfde1, + 0x6d0476, + 0x6d0803, + 0x6d10e9, + 0x6d1c9c, + 0x6d213d, + 0x6d2d48, + 0x6d35a2, + 0x6d39d7, + 0x6d4295, + 0x6d4ee0, + 0x6d560a, + 0x6d5a7f, + 0x6d67de, + 0x6d6bab, + 0x6d7341, + 0x6d7f34, + 0x6d85c5, + 0x6d89b0, + 0x6d915a, + 0x6d9d2f, + 0x6da08e, + 0x6dacfb, + 0x6db411, + 0x6db864, + 0x6dc326, + 0x6dcf53, + 0x6dd7b9, + 0x6ddbcc, + 0x6de66d, + 0x6dea18, + 0x6df2f2, + 0x6dfe87, + 0x6e01dc, + 0x6e0da9, + 0x6e1543, + 0x6e1936, + 0x6e2497, + 0x6e28e2, + 0x6e3008, + 0x6e3c7d, + 0x6e473f, + 0x6e4b4a, + 0x6e53a0, + 0x6e5fd5, + 0x6e6274, + 0x6e6e01, + 0x6e76eb, + 0x6e7a9e, + 0x6e806f, + 0x6e8c1a, + 0x6e94f0, + 0x6e9885, + 0x6ea524, + 0x6ea951, + 0x6eb1bb, + 0x6ebdce, + 0x6ec68c, + 0x6ecaf9, + 0x6ed213, + 0x6ede66, + 0x6ee3c7, + 0x6eefb2, + 0x6ef758, + 0x6efb2d, + 0x6f02ba, + 0x6f0ecf, + 0x6f1625, + 0x6f1a50, + 0x6f27f1, + 0x6f2b84, + 0x6f336e, + 0x6f3f1b, + 0x6f4459, + 0x6f482c, + 0x6f50c6, + 0x6f5cb3, + 0x6f6112, + 0x6f6d67, + 0x6f758d, + 0x6f79f8, + 0x6f8309, + 0x6f8f7c, + 0x6f9796, + 0x6f9be3, + 0x6fa642, + 0x6faa37, + 0x6fb2dd, + 0x6fbea8, + 0x6fc5ea, + 0x6fc99f, + 0x6fd175, + 0x6fdd00, + 0x6fe0a1, + 0x6fecd4, + 0x6ff43e, + 0x6ff84b, + 0x700293, + 0x700ee6, + 0x70160c, + 0x701a79, + 0x7027d8, + 0x702bad, + 0x703347, + 0x703f32, + 0x704470, + 0x704805, + 0x7050ef, + 0x705c9a, + 0x70613b, + 0x706d4e, + 0x7075a4, + 0x7079d1, + 0x708320, + 0x708f55, + 0x7097bf, + 0x709bca, + 0x70a66b, + 0x70aa1e, + 0x70b2f4, + 0x70be81, + 0x70c5c3, + 0x70c9b6, + 0x70d15c, + 0x70dd29, + 0x70e088, + 0x70ecfd, + 0x70f417, + 0x70f862, + 0x7101f5, + 0x710d80, + 0x71156a, + 0x71191f, + 0x7124be, + 0x7128cb, + 0x713021, + 0x713c54, + 0x714716, + 0x714b63, + 0x715389, + 0x715ffc, + 0x71625d, + 0x716e28, + 0x7176c2, + 0x717ab7, + 0x718046, + 0x718c33, + 0x7194d9, + 0x7198ac, + 0x71a50d, + 0x71a978, + 0x71b192, + 0x71bde7, + 0x71c6a5, + 0x71cad0, + 0x71d23a, + 0x71de4f, + 0x71e3ee, + 0x71ef9b, + 0x71f771, + 0x71fb04, + 0x72045f, + 0x72082a, + 0x7210c0, + 0x721cb5, + 0x722114, + 0x722d61, + 0x72358b, + 0x7239fe, + 0x7242bc, + 0x724ec9, + 0x725623, + 0x725a56, + 0x7267f7, + 0x726b82, + 0x727368, + 0x727f1d, + 0x7285ec, + 0x728999, + 0x729173, + 0x729d06, + 0x72a0a7, + 0x72acd2, + 0x72b438, + 0x72b84d, + 0x72c30f, + 0x72cf7a, + 0x72d790, + 0x72dbe5, + 0x72e644, + 0x72ea31, + 0x72f2db, + 0x72feae, + 0x730739, + 0x730b4c, + 0x7313a6, + 0x731fd3, + 0x732272, + 0x732e07, + 0x7336ed, + 0x733a98, + 0x7341da, + 0x734daf, + 0x735545, + 0x735930, + 0x736491, + 0x7368e4, + 0x73700e, + 0x737c7b, + 0x73868a, + 0x738aff, + 0x739215, + 0x739e60, + 0x73a3c1, + 0x73afb4, + 0x73b75e, + 0x73bb2b, + 0x73c069, + 0x73cc1c, + 0x73d4f6, + 0x73d883, + 0x73e522, + 0x73e957, + 0x73f1bd, + 0x73fdc8, + 0x74037e, + 0x740f0b, + 0x7417e1, + 0x741b94, + 0x742635, + 0x742a40, + 0x7432aa, + 0x743edf, + 0x74459d, + 0x7449e8, + 0x745102, + 0x745d77, + 0x7460d6, + 0x746ca3, + 0x747449, + 0x74783c, + 0x7482cd, + 0x748eb8, + 0x749652, + 0x749a27, + 0x74a786, + 0x74abf3, + 0x74b319, + 0x74bf6c, + 0x74c42e, + 0x74c85b, + 0x74d0b1, + 0x74dcc4, + 0x74e165, + 0x74ed10, + 0x74f5fa, + 0x74f98f, + 0x750018, + 0x750c6d, + 0x751487, + 0x7518f2, + 0x752553, + 0x752926, + 0x7531cc, + 0x753db9, + 0x7546fb, + 0x754a8e, + 0x755264, + 0x755e11, + 0x7563b0, + 0x756fc5, + 0x75772f, + 0x757b5a, + 0x7581ab, + 0x758dde, + 0x759534, + 0x759941, + 0x75a4e0, + 0x75a895, + 0x75b07f, + 0x75bc0a, + 0x75c748, + 0x75cb3d, + 0x75d3d7, + 0x75dfa2, + 0x75e203, + 0x75ee76, + 0x75f69c, + 0x75fae9, + 0x7605b2, + 0x7609c7, + 0x76112d, + 0x761d58, + 0x7620f9, + 0x762c8c, + 0x763466, + 0x763813, + 0x764351, + 0x764f24, + 0x7657ce, + 0x765bbb, + 0x76661a, + 0x766a6f, + 0x767285, + 0x767ef0, + 0x768401, + 0x768874, + 0x76909e, + 0x769ceb, + 0x76a14a, + 0x76ad3f, + 0x76b5d5, + 0x76b9a0, + 0x76c2e2, + 0x76ce97, + 0x76d67d, + 0x76da08, + 0x76e7a9, + 0x76ebdc, + 0x76f336, + 0x76ff43, + 0x7706d4, + 0x770aa1, + 0x77124b, + 0x771e3e, + 0x77239f, + 0x772fea, + 0x773700, + 0x773b75, + 0x774037, + 0x774c42, + 0x7754a8, + 0x7758dd, + 0x77657c, + 0x776909, + 0x7771e3, + 0x777d96, + 0x778767, + 0x778b12, + 0x7793f8, + 0x779f8d, + 0x77a22c, + 0x77ae59, + 0x77b6b3, + 0x77bac6, + 0x77c184, + 0x77cdf1, + 0x77d51b, + 0x77d96e, + 0x77e4cf, + 0x77e8ba, + 0x77f050, + 0x77fc25, + 0x780149, + 0x780d3c, + 0x7815d6, + 0x7819a3, + 0x782402, + 0x782877, + 0x78309d, + 0x783ce8, + 0x7847aa, + 0x784bdf, + 0x785335, + 0x785f40, + 0x7862e1, + 0x786e94, + 0x78767e, + 0x787a0b, + 0x7880fa, + 0x788c8f, + 0x789465, + 0x789810, + 0x78a5b1, + 0x78a9c4, + 0x78b12e, + 0x78bd5b, + 0x78c619, + 0x78ca6c, + 0x78d286, + 0x78def3, + 0x78e352, + 0x78ef27, + 0x78f7cd, + 0x78fbb8, + 0x79022f, + 0x790e5a, + 0x7916b0, + 0x791ac5, + 0x792764, + 0x792b11, + 0x7933fb, + 0x793f8e, + 0x7944cc, + 0x7948b9, + 0x795053, + 0x795c26, + 0x796187, + 0x796df2, + 0x797518, + 0x79796d, + 0x79839c, + 0x798fe9, + 0x799703, + 0x799b76, + 0x79a6d7, + 0x79aaa2, + 0x79b248, + 0x79be3d, + 0x79c57f, + 0x79c90a, + 0x79d1e0, + 0x79dd95, + 0x79e034, + 0x79ec41, + 0x79f4ab, + 0x79f8de, + 0x7a0785, + 0x7a0bf0, + 0x7a131a, + 0x7a1f6f, + 0x7a22ce, + 0x7a2ebb, + 0x7a3651, + 0x7a3a24, + 0x7a4166, + 0x7a4d13, + 0x7a55f9, + 0x7a598c, + 0x7a642d, + 0x7a6858, + 0x7a70b2, + 0x7a7cc7, + 0x7a8636, + 0x7a8a43, + 0x7a92a9, + 0x7a9edc, + 0x7aa37d, + 0x7aaf08, + 0x7ab7e2, + 0x7abb97, + 0x7ac0d5, + 0x7acca0, + 0x7ad44a, + 0x7ad83f, + 0x7ae59e, + 0x7ae9eb, + 0x7af101, + 0x7afd74, + 0x7b04e3, + 0x7b0896, + 0x7b107c, + 0x7b1c09, + 0x7b21a8, + 0x7b2ddd, + 0x7b3537, + 0x7b3942, + 0x7b4200, + 0x7b4e75, + 0x7b569f, + 0x7b5aea, + 0x7b674b, + 0x7b6b3e, + 0x7b73d4, + 0x7b7fa1, + 0x7b8550, + 0x7b8925, + 0x7b91cf, + 0x7b9dba, + 0x7ba01b, + 0x7bac6e, + 0x7bb484, + 0x7bb8f1, + 0x7bc3b3, + 0x7bcfc6, + 0x7bd72c, + 0x7bdb59, + 0x7be6f8, + 0x7bea8d, + 0x7bf267, + 0x7bfe12, + 0x7c00a4, + 0x7c0cd1, + 0x7c143b, + 0x7c184e, + 0x7c25ef, + 0x7c299a, + 0x7c3170, + 0x7c3d05, + 0x7c4647, + 0x7c4a32, + 0x7c52d8, + 0x7c5ead, + 0x7c630c, + 0x7c6f79, + 0x7c7793, + 0x7c7be6, + 0x7c8117, + 0x7c8d62, + 0x7c9588, + 0x7c99fd, + 0x7ca45c, + 0x7ca829, + 0x7cb0c3, + 0x7cbcb6, + 0x7cc7f4, + 0x7ccb81, + 0x7cd36b, + 0x7cdf1e, + 0x7ce2bf, + 0x7ceeca, + 0x7cf620, + 0x7cfa55, + 0x7d03c2, + 0x7d0fb7, + 0x7d175d, + 0x7d1b28, + 0x7d2689, + 0x7d2afc, + 0x7d3216, + 0x7d3e63, + 0x7d4521, + 0x7d4954, + 0x7d51be, + 0x7d5dcb, + 0x7d606a, + 0x7d6c1f, + 0x7d74f5, + 0x7d7880, + 0x7d8271, + 0x7d8e04, + 0x7d96ee, + 0x7d9a9b, + 0x7da73a, + 0x7dab4f, + 0x7db3a5, + 0x7dbfd0, + 0x7dc492, + 0x7dc8e7, + 0x7dd00d, + 0x7ddc78, + 0x7de1d9, + 0x7dedac, + 0x7df546, + 0x7df933, + 0x7e0668, + 0x7e0a1d, + 0x7e12f7, + 0x7e1e82, + 0x7e2323, + 0x7e2f56, + 0x7e37bc, + 0x7e3bc9, + 0x7e408b, + 0x7e4cfe, + 0x7e5414, + 0x7e5861, + 0x7e65c0, + 0x7e69b5, + 0x7e715f, + 0x7e7d2a, + 0x7e87db, + 0x7e8bae, + 0x7e9344, + 0x7e9f31, + 0x7ea290, + 0x7eaee5, + 0x7eb60f, + 0x7eba7a, + 0x7ec138, + 0x7ecd4d, + 0x7ed5a7, + 0x7ed9d2, + 0x7ee473, + 0x7ee806, + 0x7ef0ec, + 0x7efc99, + 0x7f050e, + 0x7f097b, + 0x7f1191, + 0x7f1de4, + 0x7f2045, + 0x7f2c30, + 0x7f34da, + 0x7f38af, + 0x7f43ed, + 0x7f4f98, + 0x7f5772, + 0x7f5b07, + 0x7f66a6, + 0x7f6ad3, + 0x7f7239, + 0x7f7e4c, + 0x7f84bd, + 0x7f88c8, + 0x7f9022, + 0x7f9c57, + 0x7fa1f6, + 0x7fad83, + 0x7fb569, + 0x7fb91c, + 0x7fc25e, + 0x7fce2b, + 0x7fd6c1, + 0x7fdab4, + 0x7fe715, + 0x7feb60, + 0x7ff38a, + 0x7fffff +}; diff --git a/src/horus_api.c b/src/horus_api.c new file mode 100644 index 0000000..38a1cd3 --- /dev/null +++ b/src/horus_api.c @@ -0,0 +1,516 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: horus_api.c + AUTHOR......: David Rowe + DATE CREATED: March 2018 + + Library of API functions that implement High Altitude Balloon (HAB) + telemetry modems and protocols for Project Horus. May also be useful for + other HAB projects. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2018 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#include +#include +#include + +#include "horus_api.h" +#include "fsk.h" +#include "horus_l2.h" + +#define MAX_UW_LENGTH 100 +#define HORUS_API_VERSION 1 /* unique number that is bumped if API changes */ +#define HORUS_BINARY_NUM_BITS 360 /* fixed number of bytes in binary payload */ +#define HORUS_BINARY_NUM_PAYLOAD_BYTES 22 /* fixed number of bytes in binary payload */ + +struct horus { + int mode; + int verbose; + struct FSK *fsk; /* states for FSK modem */ + int Fs; /* sample rate in Hz */ + int mFSK; /* number of FSK tones */ + int Rs; /* symbol rate in Hz */ + int uw[MAX_UW_LENGTH]; /* unique word bits mapped to +/-1 */ + int uw_thresh; /* threshold for UW detection */ + int uw_len; /* length of unique word */ + int max_packet_len; /* max length of a telemetry packet */ + uint8_t *rx_bits; /* buffer of received bits */ + int rx_bits_len; /* length of rx_bits buffer */ + int crc_ok; /* most recent packet checksum results */ + int total_payload_bits; /* num bits rx-ed in last RTTY packet */ +}; + +/* Unique word for Horus RTTY 7 bit '$' character, 3 sync bits, + repeated 5 times */ + +int8_t uw_horus_rtty[] = { + 0,0,1,0,0,1,0,1,1,0, + 0,0,1,0,0,1,0,1,1,0, + 0,0,1,0,0,1,0,1,1,0, + 0,0,1,0,0,1,0,1,1,0, + 0,0,1,0,0,1,0,1,1,0 +}; + +/* Unique word for Horus Binary */ + +int8_t uw_horus_binary[] = { + 0,0,1,0,0,1,0,0, + 0,0,1,0,0,1,0,0 +}; + +struct horus *horus_open (int mode, int Rs) { + int i; + assert((mode == HORUS_MODE_RTTY) || (mode == HORUS_MODE_BINARY)); + + struct horus *hstates = (struct horus *)malloc(sizeof(struct horus)); + assert(hstates != NULL); + + hstates->Fs = 48000; hstates->Rs = Rs; hstates->verbose = 0; hstates->mode = mode; + + if (mode == HORUS_MODE_RTTY) { + hstates->mFSK = 2; + hstates->max_packet_len = 1000; + + /* map UW to make it easier to search for */ + + for (i=0; iuw[i] = 2*uw_horus_rtty[i] - 1; + } + hstates->uw_len = sizeof(uw_horus_rtty); + hstates->uw_thresh = sizeof(uw_horus_rtty) - 2; /* allow a few bit errors in UW detection */ + hstates->rx_bits_len = hstates->max_packet_len; + } + + if (mode == HORUS_MODE_BINARY) { + hstates->mFSK = 4; + hstates->max_packet_len = HORUS_BINARY_NUM_BITS; + for (i=0; iuw[i] = 2*uw_horus_binary[i] - 1; + } + hstates->uw_len = sizeof(uw_horus_binary); + hstates->uw_thresh = sizeof(uw_horus_binary) - 2; /* allow a few bit errors in UW detection */ + horus_l2_init(); + hstates->rx_bits_len = hstates->max_packet_len; + } + + hstates->fsk = fsk_create(hstates->Fs, hstates->Rs, hstates->mFSK, 1000, 2*hstates->Rs); + + /* allocate enough room for two packets so we know there will be + one complete packet if we find a UW at start */ + + hstates->rx_bits_len += hstates->fsk->Nbits; + hstates->rx_bits = (uint8_t*)malloc(hstates->rx_bits_len); + assert(hstates->rx_bits != NULL); + for(i=0; irx_bits_len; i++) { + hstates->rx_bits[i] = 0; + } + + hstates->crc_ok = 0; + hstates->total_payload_bits = 0; + + return hstates; +} + +void horus_close (struct horus *hstates) { + assert(hstates != NULL); + fsk_destroy(hstates->fsk); + free(hstates->rx_bits); + free(hstates); +} + +uint32_t horus_nin(struct horus *hstates) { + assert(hstates != NULL); + int nin = fsk_nin(hstates->fsk); + assert(nin <= horus_get_max_demod_in(hstates)); + return nin; +} + +int horus_find_uw(struct horus *hstates, int n) { + int i, j, corr, mx, mx_ind; + int rx_bits_mapped[n+hstates->uw_len]; + + /* map rx_bits to +/-1 for UW search */ + + for(i=0; iuw_len; i++) { + rx_bits_mapped[i] = 2*hstates->rx_bits[i] - 1; + } + + /* look for UW */ + + mx = 0; mx_ind = 0; + for(i=0; iuw_len; j++) { + corr += rx_bits_mapped[i+j]*hstates->uw[j]; + } + + /* peak pick maximum */ + + if (corr > mx) { + mx = corr; + mx_ind = i; + } + } + + if (hstates->verbose) { + fprintf(stderr, " horus_find_uw: mx_ind: %d mx: %d uw_thresh: %d n: %d\n", mx_ind, mx, hstates->uw_thresh, n); + } + + if (mx >= hstates->uw_thresh) { + return mx_ind; + } else { + return -1; + } +} + +int hex2int(char ch) { + if (ch >= '0' && ch <= '9') + return ch - '0'; + if (ch >= 'A' && ch <= 'F') + return ch - 'A' + 10; + if (ch >= 'a' && ch <= 'f') + return ch - 'a' + 10; + return -1; +} + + +int extract_horus_rtty(struct horus *hstates, char ascii_out[], int uw_loc) { + const int nfield = 7; /* 7 bit ASCII */ + const int npad = 3; /* 3 sync bits between characters */ + int st = uw_loc; /* first bit of first char */ + int en = hstates->max_packet_len - nfield; /* last bit of max length packet */ + + int i, j, endpacket, nout, crc_ok; + uint8_t char_dec; + char *pout, *ptx_crc; + uint16_t rx_crc, tx_crc; + + pout = ascii_out; nout = 0; crc_ok = 0; endpacket = 0; rx_crc = tx_crc = 0; + + for (i=st; irx_bits[i+j] <= 1); + char_dec |= hstates->rx_bits[i+j] * (1<verbose) { + fprintf(stderr, " extract_horus_rtty i: %4d 0x%02x %c ", i, char_dec, char_dec); + if ((nout % 6) == 0) { + fprintf(stderr, "\n"); + } + } + + /* if we find a '*' that's the end of the packet for RX CRC calculations */ + + if (!endpacket && (char_dec == 42)) { + endpacket = 1; + rx_crc = horus_l2_gen_crc16((uint8_t*)&ascii_out[5], nout-5); + ptx_crc = pout + 1; /* start of tx CRC */ + } + + /* build up output array, really only need up to tx crc but + may end up going further */ + + *pout++ = (char)char_dec; + nout++; + + } + + /* if we found the end of packet flag and have enough chars to compute checksum ... */ + + //fprintf(stderr, "\n\ntx CRC...\n"); + if (endpacket && (pout > (ptx_crc+3))) { + tx_crc = 0; + for(i=0; i<4; i++) { + tx_crc <<= 4; + tx_crc |= hex2int(ptx_crc[i]); + //fprintf(stderr, "ptx_crc[%d] %c 0x%02X tx_crc: 0x%04X\n", i, ptx_crc[i], hex2int(ptx_crc[i]), tx_crc); + } + crc_ok = (tx_crc == rx_crc); + *(ptx_crc+4) = 0; /* terminate ASCII string */ + + if (crc_ok) { + hstates->total_payload_bits = strlen(ascii_out)*7; + } + } + else { + *ascii_out = 0; + } + + if (hstates->verbose) { + fprintf(stderr, "\n endpacket: %d nout: %d tx_crc: 0x%04x rx_crc: 0x%04x\n", + endpacket, nout, tx_crc, rx_crc); + } + + /* make sure we don't overrun storage */ + + assert(nout <= horus_get_max_ascii_out_len(hstates)); + + hstates->crc_ok = crc_ok; + + return crc_ok; +} + + +int extract_horus_binary(struct horus *hstates, char hex_out[], int uw_loc) { + const int nfield = 8; /* 8 bit binary */ + int st = uw_loc; /* first bit of first char */ + int en = uw_loc + hstates->max_packet_len; /* last bit of max length packet */ + + int j, b, nout; + uint8_t rxpacket[hstates->max_packet_len]; + uint8_t rxbyte, *pout; + + /* convert bits to a packet of bytes */ + + pout = rxpacket; nout = 0; + + for (b=st; brx_bits[b+j] <= 1); + rxbyte <<= 1; + rxbyte |= hstates->rx_bits[b+j]; + } + + /* build up output array */ + + *pout++ = rxbyte; + nout++; + } + + if (hstates->verbose) { + fprintf(stderr, " extract_horus_binary nout: %d\n Received Packet before decoding:\n ", nout); + for (b=0; bverbose) { + fprintf(stderr, " extract_horus_binary crc_tx: %04X crc_rx: %04X\n", crc_tx, crc_rx); + } + + /* convert to ASCII string of hex characters */ + + hex_out[0] = 0; + char hex[3]; + for (b=0; bverbose) { + fprintf(stderr, " nout: %d Decoded Payload bytes:\n %s", nout, hex_out); + } + + /* With noise input to FSK demod we can get occasinal UW matches, + so a good idea to only pass on any packets that pass CRC */ + + hstates->crc_ok = (crc_tx == crc_rx); + if ( hstates->crc_ok) { + hstates->total_payload_bits += HORUS_BINARY_NUM_PAYLOAD_BYTES; + } + return hstates->crc_ok; +} + + +int horus_rx(struct horus *hstates, char ascii_out[], short demod_in[], int quadrature) { + int i, j, uw_loc, packet_detected; + + assert(hstates != NULL); + packet_detected = 0; + + int Nbits = hstates->fsk->Nbits; + int rx_bits_len = hstates->rx_bits_len; + + if (hstates->verbose) { + fprintf(stderr, " horus_rx max_packet_len: %d rx_bits_len: %d Nbits: %d nin: %d\n", + hstates->max_packet_len, rx_bits_len, Nbits, hstates->fsk->nin); + } + + /* shift buffer of bits to make room for new bits */ + + for(i=0,j=Nbits; jrx_bits[i] = hstates->rx_bits[j]; + } + + /* demodulate latest bits */ + + /* Note: allocating this array as an automatic variable caused OSX to + "Bus Error 10" (segfault), so lets malloc() it. */ + + COMP *demod_in_comp = (COMP*)malloc(sizeof(COMP)*hstates->fsk->nin); + + for (i=0; ifsk->nin; i++) { + if (quadrature) { + demod_in_comp[i].real = demod_in[i * 2]; + demod_in_comp[i].imag = demod_in[i * 2 + 1]; + } else { + demod_in_comp[i].real = demod_in[i]; + demod_in_comp[i].imag = 0; + } + } + fsk_demod(hstates->fsk, &hstates->rx_bits[rx_bits_len-Nbits], demod_in_comp); + free(demod_in_comp); + + /* UW search to see if we can find the start of a packet in the buffer */ + + if ((uw_loc = horus_find_uw(hstates, Nbits)) != -1) { + + if (hstates->verbose) { + fprintf(stderr, " horus_rx uw_loc: %d mode: %d\n", uw_loc, hstates->mode); + } + + /* OK we have found a unique word, and therefore the start of + a packet, so lets try to extract valid packets */ + + if (hstates->mode == HORUS_MODE_RTTY) { + packet_detected = extract_horus_rtty(hstates, ascii_out, uw_loc); + } + if (hstates->mode == HORUS_MODE_BINARY) { + packet_detected = extract_horus_binary(hstates, ascii_out, uw_loc); + //#define DUMP_BINARY_PACKET + #ifdef DUMP_BINARY_PACKET + FILE *f = fopen("packetbits.txt", "wt"); assert(f != NULL); + for(i=0; imax_packet_len; i++) { + fprintf(f,"%d ", hstates->rx_bits[uw_loc+i]); + } + fclose(f); + exit(0); + #endif + } + } + + return packet_detected; +} + +int horus_get_version(void) { + return HORUS_API_VERSION; +} + +int horus_get_mode(struct horus *hstates) { + assert(hstates != NULL); + return hstates->mode; +} + +int horus_get_Fs(struct horus *hstates) { + assert(hstates != NULL); + return hstates->Fs; +} + +int horus_get_mFSK(struct horus *hstates) { + assert(hstates != NULL); + return hstates->mFSK; +} + +int horus_get_max_demod_in(struct horus *hstates) { + /* copied from fsk_demod.c, a nicer fsk_max_nin function would be useful */ + return sizeof(short)*(hstates->fsk->N + hstates->fsk->Ts*2); +} + +int horus_get_max_ascii_out_len(struct horus *hstates) { + assert(hstates != NULL); + if (hstates->mode == HORUS_MODE_RTTY) { + return hstates->max_packet_len/10; /* 7 bit ASCII, plus 3 sync bits */ + } + if (hstates->mode == HORUS_MODE_BINARY) { + return (HORUS_BINARY_NUM_PAYLOAD_BYTES*2+1); /* Hexadecimal encoded */ + //return HORUS_BINARY_NUM_PAYLOAD_BYTES; + } + assert(0); /* should never get here */ + return 0; +} + +void horus_get_modem_stats(struct horus *hstates, int *sync, float *snr_est) { + struct MODEM_STATS stats; + assert(hstates != NULL); + + /* TODO set sync if UW found "recently", but WTF is recently? Maybe need a little state + machine to "blink" sync when we get a packet */ + + *sync = 0; + + /* SNR scaled from Eb/No est returned by FSK to SNR in 3000 Hz */ + + fsk_get_demod_stats(hstates->fsk, &stats); + *snr_est = stats.snr_est + 10*log10((float)hstates->Rs*log2(hstates->mFSK)/3000); +} + +void horus_get_modem_extended_stats (struct horus *hstates, struct MODEM_STATS *stats) { + int i; + + assert(hstates != NULL); + + fsk_get_demod_stats(hstates->fsk, stats); + if (hstates->verbose) { + fprintf(stderr, " horus_get_modem_extended_stats stats->snr_est: %f\n", stats->snr_est); + } + stats->snr_est = stats->snr_est + 10*log10((float)hstates->Rs*log2(hstates->mFSK)/3000); + + assert(hstates->mFSK <= MODEM_STATS_MAX_F_EST); + for (i=0; imFSK; i++) { + stats->f_est[i] = hstates->fsk->f_est[i]; + } +} + +void horus_set_verbose(struct horus *hstates, int verbose) { + assert(hstates != NULL); + hstates->verbose = verbose; +} + +int horus_crc_ok(struct horus *hstates) { + assert(hstates != NULL); + return hstates->crc_ok; +} + +int horus_get_total_payload_bits(struct horus *hstates) { + assert(hstates != NULL); + return hstates->total_payload_bits; +} + +void horus_set_total_payload_bits(struct horus *hstates, int val) { + assert(hstates != NULL); + hstates->total_payload_bits = val; +} + +void horus_set_freq_est_limits(struct horus *hstates, float fsk_lower, float fsk_upper) { + assert(hstates != NULL); + assert(fsk_upper > fsk_lower); + hstates->fsk->est_min = fsk_lower; + hstates->fsk->est_max = fsk_upper; +} diff --git a/src/horus_api.h b/src/horus_api.h new file mode 100644 index 0000000..ae712e7 --- /dev/null +++ b/src/horus_api.h @@ -0,0 +1,81 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: horus_api.h + AUTHOR......: David Rowe + DATE CREATED: March 2018 + + Library of API functions that implement High Altitude Balloon (HAB) + telemetry modems and protocols. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2018 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __HORUS_API__ + +#include +#include "modem_stats.h" + +#define HORUS_MODE_BINARY 0 +#define HORUS_MODE_RTTY 1 + +struct horus; +struct MODEM_STATS; + +struct horus *horus_open (int mode, int Rs); +void horus_close (struct horus *hstates); + +/* call before horus_rx() to determine how many shorts to pass in */ + +uint32_t horus_nin (struct horus *hstates); + +/* returns 1 if ascii_out[] is valid */ + +int horus_rx (struct horus *hstates, char ascii_out[], short demod_in[], int quadrature); + +/* set verbose level */ + +void horus_set_verbose(struct horus *hstates, int verbose); + +/* functions to get information from API */ + +int horus_get_version (void); +int horus_get_mode (struct horus *hstates); +int horus_get_Fs (struct horus *hstates); +int horus_get_mFSK (struct horus *hstates); +void horus_get_modem_stats (struct horus *hstates, int *sync, float *snr_est); +void horus_get_modem_extended_stats (struct horus *hstates, struct MODEM_STATS *stats); +int horus_crc_ok (struct horus *hstates); +int horus_get_total_payload_bits (struct horus *hstates); +void horus_set_total_payload_bits (struct horus *hstates, int val); +void horus_set_freq_est_limits (struct horus *hstates, float fsk_lower, float fsk_upper); + +/* how much storage you need for demod_in[] and ascii_out[] */ + +int horus_get_max_demod_in (struct horus *hstates); +int horus_get_max_ascii_out_len (struct horus *hstates); + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/src/horus_demod.c b/src/horus_demod.c new file mode 100644 index 0000000..b3d8af8 --- /dev/null +++ b/src/horus_demod.c @@ -0,0 +1,296 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: horus_demod.c + AUTHOR......: David Rowe + DATE CREATED: April 2018 + + Command line demo program for the Horus API, that exercises + horus_api.c using file input/output (can be stdin/stdout for real + time operation). Prints JSON stats, just like Brady's fsk_demod.c + + Can operate in Horus RTTY or Binary mode. + + Testing with a 8000Hz sample rate wave file: + + $ sox ~/Desktop/horus.wav -r 48000 -t raw - | ./horus_demod -m RTTY -v - /dev/null + + $ sox ~/Desktop/4FSK_binary_100Rb_8khzfs.wav -r 48000 -t raw - | ./horus_demod -m binary - - + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2018 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#include +#include +#include +#include + +#include "horus_api.h" +#include "fsk.h" +#include "horus_l2.h" + +int main(int argc, char *argv[]) { + struct horus *hstates; + struct MODEM_STATS stats; + FILE *fin,*fout; + int i,j,Ndft,mode; + int stats_ctr,stats_loop, stats_rate, verbose, crc_results; + float loop_time; + int enable_stats = 0; + int quadrature = 0; + int fsk_lower = -1; + int fsk_upper = -1; + int Rs = 100; + + stats_loop = 0; + stats_rate = 8; + mode = -1; + verbose = crc_results = 0; + + int o = 0; + int opt_idx = 0; + while ( o != -1 ) { + static struct option long_opts[] = { + {"help", no_argument, 0, 'h'}, + {"mode", required_argument, 0, 'm'}, + {"rate", optional_argument, 0, 'r'}, + {"stats", optional_argument, 0, 't'}, + {"fsk_lower", optional_argument, 0, 'b'}, + {"fsk_upper", optional_argument, 0, 'u'}, + {0, 0, 0, 0} + }; + + o = getopt_long(argc,argv,"hvcqm:t::",long_opts,&opt_idx); + + switch(o) { + case 'm': + if ((strcmp(optarg, "RTTY") == 0) || (strcmp(optarg, "rtty") == 0)) { + mode = HORUS_MODE_RTTY; + } + if ((strcmp(optarg, "BINARY") == 0) || (strcmp(optarg, "binary") == 0)) { + mode = HORUS_MODE_BINARY; + } + if (mode == -1) { + fprintf(stderr, "use --mode RTTY or --mode binary\n"); + exit(1); + } + break; + case 't': + enable_stats = 1; + if (optarg != NULL){ + stats_rate = atoi(optarg); + if (stats_rate == 0) { + stats_rate = 8; + } + } + break; + case 'v': + verbose = 1; + break; + case 'c': + crc_results = 1; + break; + case 'h': + case '?': + goto helpmsg; + break; + case 'q': + quadrature = 1; + break; + case 'b': + if (optarg != NULL){ + fsk_lower = atoi(optarg); + } + break; + case 'u': + if (optarg != NULL){ + fsk_upper = atoi(optarg); + } + break; + case 'r': + if (optarg != NULL){ + Rs = atoi(optarg); + } + break; + break; + } + } + + int dx = optind; + + if( (argc - dx) < 2) { + fprintf(stderr, "Too few arguments\n"); + goto helpmsg; + } + + if( (argc - dx) > 5) { + fprintf(stderr, "Too many arguments\n"); + helpmsg: + fprintf(stderr,"usage: %s -m RTTY|binary [-q] [-v] [-c] [-t [r]] InputModemRawFile OutputAsciiFile\n",argv[0]); + fprintf(stderr,"\n"); + fprintf(stderr,"InputModemRawFile 48 kHz 16 bit shorts real modem signal from radio\n"); + fprintf(stderr," -m RTTY|binary\n"); + fprintf(stderr,"--mode=RTTY|binary RTTY or binary Horus protcols\n"); + fprintf(stderr,"--rate=[Rs] Modem baud rate. Default: 100\n"); + fprintf(stderr," -t[r] --stats=[r] Print out modem statistics to stderr in JSON.\n"); + fprintf(stderr," r, if provided, sets the number of modem frames\n" + " between statistic printouts\n"); + fprintf(stderr," -q use stereo (IQ) input\n"); + fprintf(stderr," -v verbose debug info\n"); + fprintf(stderr," -c display CRC results for each packet\n"); + exit(1); + } + + /* Open files */ + + if (verbose) { + fprintf(stderr, "mode: %d verbose: %d stats_loop: %d stats_rate: %d Rs: %d\n",mode, verbose, stats_loop, stats_rate, Rs); + } + if (strcmp(argv[dx],"-")==0) { + fin = stdin; + } else { + fin = fopen(argv[dx],"rb"); + } + + if (strcmp(argv[dx + 1],"-")==0) { + fout = stdout; + } else { + fout = fopen(argv[dx + 1],"w"); + } + + if ((fin==NULL) || (fout==NULL)) { + fprintf(stderr,"Couldn't open test vector files\n"); + exit(1); + } + + /* end command line processing */ + + hstates = horus_open(mode, Rs); + horus_set_verbose(hstates, verbose); + + if (hstates == NULL) { + fprintf(stderr, "Couldn't open Horus API\n"); + exit(1); + } + + if (enable_stats) { + loop_time = (float)horus_nin(hstates)/horus_get_Fs(hstates); + stats_loop = (int)(1.0/(stats_rate*loop_time)); + stats_ctr = 0; + } + + if((fsk_lower> 0) && (fsk_upper > fsk_lower)){ + horus_set_freq_est_limits(hstates, fsk_lower, fsk_upper); + fprintf(stderr,"Setting estimator limits to %d to %d Hz.\n",fsk_lower, fsk_upper); + } + + + int max_demod_in = horus_get_max_demod_in(hstates); + int hsize = quadrature ? 2 : 1; + short demod_in[max_demod_in * hsize]; + int max_ascii_out = horus_get_max_ascii_out_len(hstates); + char ascii_out[max_ascii_out]; + + /* Main loop ----------------------------------------------------------------------- */ + + while(fread(demod_in, hsize * sizeof(short), horus_nin(hstates), fin) == horus_nin(hstates)) { + + if (verbose) { + fprintf(stderr, "read nin %d\n", horus_nin(hstates)); + } + if (horus_rx(hstates, ascii_out, demod_in, quadrature)) { + fprintf(stdout, "%s", ascii_out); + if (crc_results) { + if (horus_crc_ok(hstates)) { + fprintf(stdout, " CRC OK"); + } else { + fprintf(stdout, " CRC BAD"); + } + } + fprintf(stdout, "\n"); + } + + if (enable_stats && stats_ctr <= 0) { + + horus_get_modem_extended_stats(hstates, &stats); + + /* Print standard 2FSK stats */ + + fprintf(stderr,"{\"EbNodB\": %2.2f,\t\"ppm\": %d,",stats.snr_est, (int)stats.clock_offset); + fprintf(stderr,"\t\"f1_est\":%.1f,\t\"f2_est\":%.1f",stats.f_est[0], stats.f_est[1]); + + /* Print 4FSK stats if in 4FSK mode */ + + if (horus_get_mFSK(hstates) == 4) { + fprintf(stderr,",\t\"f3_est\":%.1f,\t\"f4_est\":%.1f", stats.f_est[2], stats.f_est[3]); + } + + /* Print the eye diagram */ + + fprintf(stderr,",\t\"eye_diagram\":["); + for(i=0;ifsk->Ndft/2; + for(i=0; ifsk->fft_est)[i]); + if(i +#include +#include +#include +#include +#include + +#include "horus_l2.h" + +// TODO: Move these packet format definitions to somehwere common. + +/* Horus Mode 0 (Legacy 22-byte) Binary Packet */ +struct TBinaryPacket0 +{ + uint8_t PayloadID; + uint16_t Counter; + uint8_t Hours; + uint8_t Minutes; + uint8_t Seconds; + float Latitude; + float Longitude; + uint16_t Altitude; + uint8_t Speed; // Speed in Knots (1-255 knots) + uint8_t Sats; + int8_t Temp; // Twos Complement Temp value. + uint8_t BattVoltage; // 0 = 0.5v, 255 = 2.0V, linear steps in-between. + uint16_t Checksum; // CRC16-CCITT Checksum. +} __attribute__ ((packed)); + +/* Horus Mode 1 (32-byte) Binary Packet */ +struct TBinaryPacket1 +{ + uint16_t PayloadID; + uint16_t Counter; + uint8_t Hours; + uint8_t Minutes; + uint8_t Seconds; + float Latitude; + float Longitude; + uint16_t Altitude; + uint8_t Speed; // Speed in Knots (1-255 knots) + uint8_t Sats; + int8_t Temp; // Twos Complement Temp value. + uint8_t BattVoltage; // 0 = 0.5v, 255 = 2.0V, linear steps in-between. + uint8_t dummy1; // Dummy values for user-configurable section. + uint8_t dummy2; + uint8_t dummy3; + uint8_t dummy4; + uint8_t dummy5; + uint8_t dummy6; + uint8_t dummy7; + uint8_t dummy8; + uint8_t dummy9; + uint16_t Checksum; // CRC16-CCITT Checksum. +} __attribute__ ((packed)); + +/* Horus Mode 2 (16-byte) Binary Packet */ +struct TBinaryPacket2 +{ + uint8_t PayloadID; + uint8_t Counter; + uint16_t BiSeconds; + uint8_t LatitudeMSB; + uint16_t Latitude; + uint8_t LongitudeMSB; + uint16_t Longitude; + uint16_t Altitude; + uint8_t BattVoltage; // 0 = 0.5v, 255 = 2.0V, linear steps in-between. + uint8_t flags; // Dummy values for user-configurable section. + uint16_t Checksum; // CRC16-CCITT Checksum. +} __attribute__ ((packed)); + + + + +int main(int argc,char *argv[]) { + int i, framecnt; + int horus_mode = 0; + + char usage[] = "usage: %s horus_mode numFrames\nMode 0 = Legacy 22-byte Golay FEC\nMode 1 = 32-byte LDPC FEC\nMode 2 = 16-byte LDPC FEC\n"; + + if (argc < 3) { + fprintf(stderr, usage, argv[0]); + exit(1); + } + + horus_mode = atoi(argv[1]); + fprintf(stderr, "Using Horus Mode %d.\n", horus_mode); + + framecnt = atoi(argv[2]); + fprintf(stderr, "Generating %d frames.\n", framecnt); + + if(horus_mode == 0){ + int nbytes = sizeof(struct TBinaryPacket0); + struct TBinaryPacket0 input_payload; + int num_tx_data_bytes = horus_l2_get_num_tx_data_bytes(nbytes); + unsigned char tx[num_tx_data_bytes]; + + /* all zeros is nastiest sequence for demod before scrambling */ + + memset(&input_payload, 0, nbytes); + input_payload.Checksum = horus_l2_gen_crc16((unsigned char*)&input_payload, nbytes-2); + + horus_l2_encode_tx_packet(tx, (unsigned char*)&input_payload, nbytes); + + int b; + uint8_t tx_bit; + while(framecnt > 0){ + for(i=0; i> (7-b)) & 0x1; /* msb first */ + fwrite(&tx_bit,sizeof(uint8_t),1,stdout); + fflush(stdout); + } + } + framecnt -= 1; + } + + } else if(horus_mode == 1){ + // 32-Byte LDPC Encoded mode. + int nbytes = sizeof(struct TBinaryPacket1); + struct TBinaryPacket1 input_payload; + + // TODO: Add Calculation of expected number of TX bytes based on LDPC code. + int num_tx_data_bytes = nbytes; + unsigned char tx[num_tx_data_bytes]; + + /* all zeros is nastiest sequence for demod before scrambling */ + memset(&input_payload, 0, nbytes); + input_payload.Checksum = horus_l2_gen_crc16((unsigned char*)&input_payload, nbytes-2); + + + // TODO: Replaced with LDPC Encoding + memcpy(tx, (unsigned char*)&input_payload, nbytes); + + int b; + uint8_t tx_bit; + while(framecnt > 0){ + for(i=0; i> (7-b)) & 0x1; /* msb first */ + fwrite(&tx_bit,sizeof(uint8_t),1,stdout); + fflush(stdout); + } + } + framecnt -= 1; + } + } else if(horus_mode == 2){ + // 16-Byte LDPC Encoded mode. + int nbytes = sizeof(struct TBinaryPacket2); + struct TBinaryPacket2 input_payload; + + // TODO: Add Calculation of expected number of TX bytes based on LDPC code. + int num_tx_data_bytes = nbytes; + unsigned char tx[num_tx_data_bytes]; + + /* all zeros is nastiest sequence for demod before scrambling */ + memset(&input_payload, 0, nbytes); + input_payload.Checksum = horus_l2_gen_crc16((unsigned char*)&input_payload, nbytes-2); + + + // TODO: Replaced with LDPC Encoding + memcpy(tx, (unsigned char*)&input_payload, nbytes); + + int b; + uint8_t tx_bit; + while(framecnt > 0){ + for(i=0; i> (7-b)) & 0x1; /* msb first */ + fwrite(&tx_bit,sizeof(uint8_t),1,stdout); + fflush(stdout); + } + } + framecnt -= 1; + } + } else { + fprintf(stderr, "Unknown Mode!"); + } + + return 0; +} \ No newline at end of file diff --git a/src/horus_l2.c b/src/horus_l2.c new file mode 100644 index 0000000..78fa85a --- /dev/null +++ b/src/horus_l2.c @@ -0,0 +1,946 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: horus_l2.c + AUTHOR......: David Rowe + DATE CREATED: Dec 2015 + + Horus telemetry layer 2 processing. Takes an array of 8 bit payload + data, generates parity bits for a (23,12) Golay code, interleaves + data and parity bits, pre-pends a Unique Word for modem sync. + Caller is responsible for providing storage for output packet. + + 1/ Unit test on a PC: + + $ gcc horus_l2.c -o horus_l2 -Wall -DHORUS_L2_UNITTEST + $ ./horus_l2 + + test 0: 22 bytes of payload data BER: 0.00 errors: 0 + test 0: 22 bytes of payload data BER: 0.01 errors: 0 + test 0: 22 bytes of payload data BER: 0.05 errors: 0 + test 0: 22 bytes of payload data BER: 0.10 errors: 7 + + This indicates it's correcting all channel errors for 22 bytes of + payload data, at bit error rate (BER) of 0, 0.01, 0.05. It falls + over at a BER of 0.10 which is expected. + + 2/ To build with just the tx function, ie for linking with the payload + firmware: + + $ gcc horus_l2.c golay23.c -c -Wall + + By default the RX side is #ifdef-ed out, leaving the minimal amount + of code for tx. + + 3/ Generate some tx_bits as input for testing with fsk_horus: + + $ gcc horus_l2.c golay23.c -o horus_l2 -Wall -DGEN_TX_BITS -DSCRAMBLER -DINTERLEAVER + $ ./horus_l2 + $ more ../octave/horus_tx_bits_binary.txt + + 4/ Streaming test bits to stdout, for 'live' testing with fsk_mod and horus_demod: + + $ gcc horus_l2.c golay23.c -o horus_l2 -Wall -DGEN_TX_BITSTREAM -DSCRAMBLER -DINTERLEAVER + $ cp horus_l2 ../build/src/ + $ cd ../build/src/ + $ ./horus_l2 100 | ./fsk_mod 4 48000 100 750 250 - - | ./horus_demod -m binary - - + + 5/ Unit testing interleaver: + + $ gcc horus_l2.c golay23.c -o horus_l2 -Wall -DINTERLEAVER -DTEST_INTERLEAVER -DSCRAMBLER + + 6/ Compile for use as decoder called by fsk_horus.m and fsk_horus_stream.m: + + $ gcc horus_l2.c golay23.c -o horus_l2 -Wall -DDEC_RX_BITS -DHORUS_L2_RX + +\*---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include +#include "horus_l2.h" +#include "golay23.h" + +#ifdef HORUS_L2_UNITTEST +#define HORUS_L2_RX +#endif + +static char uw[] = {'$','$'}; + +/* Function Prototypes ------------------------------------------------*/ + +#ifdef INTERLEAVER +static void interleave(unsigned char *inout, int nbytes, int dir); +#endif +#ifdef SCRAMBLER +static void scramble(unsigned char *inout, int nbytes); +#endif + +/* Functions ----------------------------------------------------------*/ + +/* + We are using a Golay (23,12) code which has a codeword 23 bits + long. The tx packet format is: + + | Unique Word | payload data bits | parity bits | + + This function works out how much storage the caller of + horus_l2_encode_tx_packet() will need to store the tx packet + */ + +int horus_l2_get_num_tx_data_bytes(int num_payload_data_bytes) { + int num_payload_data_bits, num_golay_codewords; + int num_tx_data_bits, num_tx_data_bytes; + + num_payload_data_bits = num_payload_data_bytes*8; + num_golay_codewords = num_payload_data_bits/12; + if (num_payload_data_bits % 12) /* round up to 12 bits, may mean some unused bits */ + num_golay_codewords++; + + num_tx_data_bits = sizeof(uw)*8 + num_payload_data_bits + num_golay_codewords*11; + num_tx_data_bytes = num_tx_data_bits/8; + if (num_tx_data_bits % 8) /* round up to nearest byte, may mean some unused bits */ + num_tx_data_bytes++; + + #ifdef DEBUG0 + fprintf(stderr, "\nnum_payload_data_bytes: %d\n", num_payload_data_bytes); + fprintf(stderr, "num_golay_codewords...: %d\n", num_golay_codewords); + fprintf(stderr, "num_tx_data_bits......: %d\n", num_tx_data_bits); + fprintf(stderr, "num_tx_data_bytes.....: %d\n\n", num_tx_data_bytes); + #endif + + return num_tx_data_bytes; +} + +void horus_l2_init(void) { + golay23_init(); +} + +/* + Takes an array of payload data bytes, prepends a unique word and appends + parity bits. + + The encoder will run on the payload on a small 8-bit uC. As we are + memory constrained so we do a lot of burrowing for bits out of + packed arrays, and don't use a LUT for Golay encoding. Hopefully it + will run fast enough. This was quite difficult to get going, + suspect there is a better way to write this. Oh well, have to start + somewhere. + */ + +int horus_l2_encode_tx_packet(unsigned char *output_tx_data, + unsigned char *input_payload_data, + int num_payload_data_bytes) +{ + int num_tx_data_bytes, num_payload_data_bits; + unsigned char *pout = output_tx_data; + int ninbit, ningolay, nparitybits; + int32_t ingolay, paritybyte, inbit, golayparity; + int ninbyte, shift, golayparitybit, i; + + num_tx_data_bytes = horus_l2_get_num_tx_data_bytes(num_payload_data_bytes); + memcpy(pout, uw, sizeof(uw)); pout += sizeof(uw); + memcpy(pout, input_payload_data, num_payload_data_bytes); pout += num_payload_data_bytes; + + /* Read input bits one at a time. Fill input Golay codeword. Find output Golay codeword. + Write this to parity bits. Write parity bytes when we have 8 parity bits. Bits are + written MSB first. */ + + num_payload_data_bits = num_payload_data_bytes*8; + ninbit = 0; + ingolay = 0; + ningolay = 0; + paritybyte = 0; + nparitybits = 0; + + while (ninbit < num_payload_data_bits) { + + /* extract input data bit */ + + ninbyte = ninbit/8; + shift = 7 - (ninbit % 8); + inbit = (input_payload_data[ninbyte] >> shift) & 0x1; + #ifdef DEBUG1 + fprintf(stderr, "inbit %d ninbyte: %d inbyte: 0x%02x inbit: %d\n", + ninbit, ninbyte, input_payload_data[ninbyte], inbit); + #endif + ninbit++; + + /* build up input golay codeword */ + + ingolay = ingolay | inbit; + ningolay++; + + /* when we get 12 bits do a Golay encode */ + + if (ningolay % 12) { + ingolay <<= 1; + } + else { + #ifdef DEBUG0 + fprintf(stderr, " ningolay: %d ingolay: 0x%04x\n", ningolay, ingolay); + #endif + golayparity = golay23_syndrome(ingolay<<11); + ingolay = 0; + + #ifdef DEBUG0 + fprintf(stderr, " golayparity: 0x%04x\n", golayparity); + #endif + + /* write parity bits to output data */ + + for (i=0; i<11; i++) { + golayparitybit = (golayparity >> (10-i)) & 0x1; + paritybyte = paritybyte | golayparitybit; + #ifdef DEBUG0 + fprintf(stderr, " i: %d golayparitybit: %d paritybyte: 0x%02x\n", + i, golayparitybit, paritybyte); + #endif + nparitybits++; + if (nparitybits % 8) { + paritybyte <<= 1; + } + else { + /* OK we have a full byte ready */ + *pout = paritybyte; + #ifdef DEBUG0 + fprintf(stderr," Write paritybyte: 0x%02x\n", paritybyte); + #endif + pout++; + paritybyte = 0; + } + } + } + } /* while(.... */ + + + /* Complete final Golay encode, we may have partially finished ingolay, paritybyte */ + + #ifdef DEBUG0 + fprintf(stderr, "finishing up .....\n"); + #endif + + if (ningolay % 12) { + ingolay >>= 1; + golayparity = golay23_syndrome(ingolay<<12); + #ifdef DEBUG0 + fprintf(stderr, " ningolay: %d ingolay: 0x%04x\n", ningolay, ingolay); + fprintf(stderr, " golayparity: 0x%04x\n", golayparity); + #endif + + /* write parity bits to output data */ + + for (i=0; i<11; i++) { + golayparitybit = (golayparity >> (10 - i)) & 0x1; + paritybyte = paritybyte | golayparitybit; + #ifdef DEBUG1 + fprintf(stderr, " i: %d golayparitybit: %d paritybyte: 0x%02x\n", + i, golayparitybit, paritybyte); + #endif + nparitybits++; + if (nparitybits % 8) { + paritybyte <<= 1; + } + else { + /* OK we have a full byte ready */ + *pout++ = (unsigned char)paritybyte; + #ifdef DEBUG0 + fprintf(stderr," Write paritybyte: 0x%02x\n", paritybyte); + #endif + paritybyte = 0; + } + } + } + + /* and final, partially complete, parity byte */ + + if (nparitybits % 8) { + paritybyte <<= 7 - (nparitybits % 8); // use MS bits first + *pout++ = (unsigned char)paritybyte; + #ifdef DEBUG0 + fprintf(stderr," Write last paritybyte: 0x%02x nparitybits: %d \n", paritybyte, nparitybits); + #endif + } + + #ifdef DEBUG0 + fprintf(stderr, "\npout - output_tx_data: %ld num_tx_data_bytes: %d\n", + pout - output_tx_data, num_tx_data_bytes); + #endif + assert(pout == (output_tx_data + num_tx_data_bytes)); + + /* optional interleaver - we dont interleave UW */ + + #ifdef INTERLEAVER + interleave(&output_tx_data[sizeof(uw)], num_tx_data_bytes-2, 0); + #endif + + /* optional scrambler to prevent long strings of the same symbol + which upsets the modem - we dont scramble UW */ + + #ifdef SCRAMBLER + scramble(&output_tx_data[sizeof(uw)], num_tx_data_bytes-2); + #endif + + return num_tx_data_bytes; +} + + +#ifdef HORUS_L2_RX +void horus_l2_decode_rx_packet(unsigned char *output_payload_data, + unsigned char *input_rx_data, + int num_payload_data_bytes) +{ + int num_payload_data_bits; + unsigned char *pout = output_payload_data; + unsigned char *pin = input_rx_data; + int ninbit, ingolay, ningolay, paritybyte, nparitybits; + int ninbyte, shift, inbit, golayparitybit, i, outbit, outbyte, noutbits, outdata; + #if defined(SCRAMBLER) || defined(INTERLEAVER) + int num_tx_data_bytes = horus_l2_get_num_tx_data_bytes(num_payload_data_bytes); + #endif + + /* optional scrambler and interleaver - we dont interleave UW */ + + #ifdef SCRAMBLER + scramble(&input_rx_data[sizeof(uw)], num_tx_data_bytes-2); + #endif + + #ifdef INTERLEAVER + interleave(&input_rx_data[sizeof(uw)], num_tx_data_bytes-2, 1); + #endif + + pin = input_rx_data + sizeof(uw) + num_payload_data_bytes; + + /* Read input data bits one at a time. When we have 12 read 11 parity bits. Golay decode. + Write decoded (output data) bits every time we have 8 of them. */ + + num_payload_data_bits = num_payload_data_bytes*8; + ninbit = 0; + ingolay = 0; + ningolay = 0; + nparitybits = 0; + paritybyte = *pin++; + #ifdef DEBUG0 + fprintf(stderr," Read paritybyte: 0x%02x\n", paritybyte); + #endif + pout = output_payload_data; + noutbits = 0; + outbyte = 0; + + while (ninbit < num_payload_data_bits) { + + /* extract input data bit */ + + ninbyte = ninbit/8 + sizeof(uw); + shift = 7 - (ninbit % 8); + inbit = (input_rx_data[ninbyte] >> shift) & 0x1; + #ifdef DEBUG1 + fprintf(stderr, "inbit %d ninbyte: %d inbyte: 0x%02x inbit: %d\n", + ninbit, ninbyte, input_rx_data[ninbyte], inbit); + #endif + ninbit++; + + /* build up golay codeword */ + + ingolay = ingolay | inbit; + ningolay++; + ingolay <<= 1; + + /* when we get 12 data bits start reading parity bits */ + + if ((ningolay % 12) == 0) { + #ifdef DEBUG0 + fprintf(stderr, " ningolay: %d ingolay: 0x%04x\n", ningolay, ingolay>>1); + #endif + for (i=0; i<11; i++) { + shift = 7 - (nparitybits % 8); + golayparitybit = (paritybyte >> shift) & 0x1; + ingolay |= golayparitybit; + if (i != 10) + ingolay <<=1; + nparitybits++; + if ((nparitybits % 8) == 0) { + /* OK grab a new byte */ + paritybyte = *pin++; + #ifdef DEBUG0 + fprintf(stderr," Read paritybyte: 0x%02x\n", paritybyte); + #endif + } + } + + #ifdef DEBUG0 + fprintf(stderr, " golay code word: 0x%04x\n", ingolay); + fprintf(stderr, " golay decode...: 0x%04x\n", golay23_decode(ingolay)); + #endif + + /* write decoded/error corrected bits to output payload data */ + + outdata = golay23_decode(ingolay) >> 11; + #ifdef DEBUG0 + fprintf(stderr, " outdata...: 0x%04x\n", outdata); + #endif + + for(i=0; i<12; i++) { + shift = 11 - i; + outbit = (outdata >> shift) & 0x1; + outbyte |= outbit; + noutbits++; + if (noutbits % 8) { + outbyte <<= 1; + } + else { + #ifdef DEBUG0 + fprintf(stderr, " output payload byte: 0x%02x\n", outbyte); + #endif + *pout++ = outbyte; + outbyte = 0; + } + } + + ingolay = 0; + } + } /* while(.... */ + + + #ifdef DEBUG0 + fprintf(stderr, "finishing up .....\n"); + #endif + + /* Complete final Golay decode */ + + int golayparity = 0; + if (ningolay % 12) { + for (i=0; i<11; i++) { + shift = 7 - (nparitybits % 8); + golayparitybit = (paritybyte >> shift) & 0x1; + golayparity |= golayparitybit; + if (i != 10) + golayparity <<=1; + nparitybits++; + if ((nparitybits % 8) == 0) { + /* OK grab a new byte */ + paritybyte = *pin++; + #ifdef DEBUG0 + fprintf(stderr," Read paritybyte: 0x%02x\n", paritybyte); + #endif + } + } + + ingolay >>= 1; + int codeword = (ingolay<<12) + golayparity; + #ifdef DEBUG0 + fprintf(stderr, " ningolay: %d ingolay: 0x%04x\n", ningolay, ingolay); + fprintf(stderr, " golay code word: 0x%04x\n", codeword); + fprintf(stderr, " golay decode...: 0x%04x\n", golay23_decode(codeword)); + #endif + + outdata = golay23_decode(codeword) >> 11; + #ifdef DEBUG0 + fprintf(stderr, " outdata...: 0x%04x\n", outdata); + fprintf(stderr, " num_payload_data_bits: %d noutbits: %d\n", num_payload_data_bits, noutbits); + #endif + + /* write final byte */ + + int ntogo = num_payload_data_bits - noutbits; + for(i=0; i> shift) & 0x1; + outbyte |= outbit; + noutbits++; + if (noutbits % 8) { + outbyte <<= 1; + } + else { + #ifdef DEBUG0 + fprintf(stderr, " output payload byte: 0x%02x\n", outbyte); + #endif + *pout++ = outbyte; + outbyte = 0; + } + } + } + + #ifdef DEBUG0 + fprintf(stderr, "\npin - output_payload_data: %ld num_payload_data_bytes: %d\n", + pout - output_payload_data, num_payload_data_bytes); + #endif + + assert(pout == (output_payload_data + num_payload_data_bytes)); + +} +#endif + +#ifdef INTERLEAVER + +uint16_t primes[] = { + 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, + 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, + 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, + 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, + 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, + 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, + 283, 293, 307, 311, 313, 317, 331, 337, 347 +}; + +void interleave(unsigned char *inout, int nbytes, int dir) +{ + /* note: to work on small uCs (e.g. AVR) needed to declare specific words sizes */ + uint16_t nbits = (uint16_t)nbytes*8; + uint32_t i, j, n, ibit, ibyte, ishift, jbyte, jshift; + uint32_t b; + unsigned char out[nbytes]; + + memset(out, 0, nbytes); + + /* b chosen to be co-prime with nbits, I'm cheating by just finding the + nearest prime to nbits. It also uses storage, is run on every call, + and has an upper limit. Oh Well, still seems to interleave OK. */ + i = 1; + uint16_t imax = sizeof(primes)/sizeof(uint16_t); + while ((primes[i] < nbits) && (i < imax)) + i++; + b = primes[i-1]; + + for(n=0; n> ishift) & 0x1; + + jbyte = j/8; + jshift = j%8; + + /* write jbit to ibit position */ + + out[jbyte] |= ibit << jshift; // replace with i-th bit + //out[ibyte] |= ibit << ishift; // replace with i-th bit + } + + memcpy(inout, out, nbytes); + + #ifdef DEBUG0 + printf("\nInterleaver Out:\n"); + for (i=0; i> 1) ^ (scrambler & 0x1); + + /* modify i-th bit by xor-ing with scrambler output sequence */ + + ibyte = i/8; + ishift = i%8; + ibit = (inout[ibyte] >> ishift) & 0x1; + ibits = ibit ^ scrambler_out; // xor ibit with scrambler output + + mask = 1 << ishift; + inout[ibyte] &= ~mask; // clear i-th bit + inout[ibyte] |= ibits << ishift; // set to scrambled value + + /* update scrambler */ + + scrambler >>= 1; + scrambler |= scrambler_out << 14; + + #ifdef DEBUG0 + printf("i: %02d ibyte: %d ishift: %d ibit: %d ibits: %d scrambler_out: %d\n", + i, ibyte, ishift, ibit, ibits, scrambler_out); + #endif + + } + + #ifdef DEBUG0 + printf("\nScrambler Out:\n"); + for (i=0; i>b) & 0x1; + } + + return nerr; +} + +/* unit test designed to run on a PC */ + +int main(void) { + printf("test 0: BER: 0.00 ...........: %d\n", test_sending_bytes(22, 0.00, 0)); + printf("test 1: BER: 0.01 ...........: %d\n", test_sending_bytes(22, 0.01, 0)); + printf("test 2: BER: 0.05 ...........: %d\n", test_sending_bytes(22, 0.05, 0)); + + /* we expect this always to fail, as chance of > 3 errors/codeword is high */ + + printf("test 3: BER: 0.10 ...........: %d\n", test_sending_bytes(22, 0.10, 0)); + + /* -DINTERLEAVER will make this puppy pass */ + + printf("test 4: 8 bit burst error....: %d\n", test_sending_bytes(22, 0.00, 1)); + + /* Insert 2 errors in every codeword, the maximum correction + capability of a Golay (23,12) code. note this one will fail + with -DINTERLEAVER, as we can't guarantee <= 3 errors per + codeword after interleaving */ + + printf("test 5: 1 error every 12 bits: %d\n", test_sending_bytes(22, 0.00, 2)); + return 0; +} +#endif + +/* Horus binary packet */ + +struct TBinaryPacket +{ + uint8_t PayloadID; + uint16_t Counter; + uint8_t Hours; + uint8_t Minutes; + uint8_t Seconds; + float Latitude; + float Longitude; + uint16_t Altitude; + uint8_t Speed; // Speed in Knots (1-255 knots) + uint8_t Sats; + int8_t Temp; // Twos Complement Temp value. + uint8_t BattVoltage; // 0 = 0.5v, 255 = 2.0V, linear steps in-between. + uint16_t Checksum; // CRC16-CCITT Checksum. +} __attribute__ ((packed)); + +#ifdef GEN_TX_BITS +/* generate a file of tx_bits to modulate using fsk_horus.m for modem simulations */ + +int main(void) { + int nbytes = sizeof(struct TBinaryPacket); + struct TBinaryPacket input_payload; + int num_tx_data_bytes = horus_l2_get_num_tx_data_bytes(nbytes); + unsigned char tx[num_tx_data_bytes]; + int i; + + /* all zeros is nastiest sequence for demod before scrambling */ + + memset(&input_payload, 0, nbytes); + input_payload.Checksum = horus_l2_gen_crc16((unsigned char*)&input_payload, nbytes-2); + + horus_l2_encode_tx_packet(tx, (unsigned char*)&input_payload, nbytes); + + FILE *f = fopen("../octave/horus_tx_bits_binary.txt","wt"); + assert(f != NULL); + int b, tx_bit; + for(i=0; i> (7-b)) & 0x1; /* msb first */ + fprintf(f,"%d ", tx_bit); + } + } + fclose(f); + for(i=0; i= 0){ + for(i=0; i> (7-b)) & 0x1; /* msb first */ + fwrite(&tx_bit,sizeof(uint8_t),1,stdout); + fflush(stdout); + } + } + framecnt -= 1; + } + + return 0; +} +#endif + +// from http://stackoverflow.com/questions/10564491/function-to-calculate-a-crc16-checksum + +unsigned short horus_l2_gen_crc16(unsigned char* data_p, unsigned char length) { + unsigned char x; + unsigned short crc = 0xFFFF; + + while (length--){ + x = crc >> 8 ^ *data_p++; + x ^= x>>4; + crc = (crc << 8) ^ ((unsigned short)(x << 12)) ^ ((unsigned short)(x <<5)) ^ ((unsigned short)x); + } + return crc; +} + diff --git a/src/horus_l2.h b/src/horus_l2.h new file mode 100644 index 0000000..6cb42ba --- /dev/null +++ b/src/horus_l2.h @@ -0,0 +1,30 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: horus_l2.h + AUTHOR......: David Rowe + DATE CREATED: Dec 2015 + +\*---------------------------------------------------------------------------*/ + +#ifndef __HORUS_L2__ +#define __HORUS_L2__ + +int horus_l2_get_num_tx_data_bytes(int num_payload_data_bytes); + +/* call this first */ + +void horus_l2_init(void); + +/* returns number of output bytes in output_tx_data */ + +int horus_l2_encode_tx_packet(unsigned char *output_tx_data, + unsigned char *input_payload_data, + int num_payload_data_bytes); + +void horus_l2_decode_rx_packet(unsigned char *output_payload_data, + unsigned char *input_rx_data, + int num_payload_data_bytes); + +unsigned short horus_l2_gen_crc16(unsigned char* data_p, unsigned char length); + +#endif diff --git a/src/kiss_fft.c b/src/kiss_fft.c new file mode 100644 index 0000000..05f7f27 --- /dev/null +++ b/src/kiss_fft.c @@ -0,0 +1,408 @@ +/* +Copyright (c) 2003-2010, Mark Borgerding + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "_kiss_fft_guts.h" +/* The guts header contains all the multiplication and addition macros that are defined for + fixed or floating point complex numbers. It also delares the kf_ internal functions. + */ + +static void kf_bfly2( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + int m + ) +{ + kiss_fft_cpx * Fout2; + kiss_fft_cpx * tw1 = st->twiddles; + kiss_fft_cpx t; + Fout2 = Fout + m; + do{ + C_FIXDIV(*Fout,2); C_FIXDIV(*Fout2,2); + + C_MUL (t, *Fout2 , *tw1); + tw1 += fstride; + C_SUB( *Fout2 , *Fout , t ); + C_ADDTO( *Fout , t ); + ++Fout2; + ++Fout; + }while (--m); +} + +static void kf_bfly4( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + const size_t m + ) +{ + kiss_fft_cpx *tw1,*tw2,*tw3; + kiss_fft_cpx scratch[6]; + size_t k=m; + const size_t m2=2*m; + const size_t m3=3*m; + + + tw3 = tw2 = tw1 = st->twiddles; + + do { + C_FIXDIV(*Fout,4); C_FIXDIV(Fout[m],4); C_FIXDIV(Fout[m2],4); C_FIXDIV(Fout[m3],4); + + C_MUL(scratch[0],Fout[m] , *tw1 ); + C_MUL(scratch[1],Fout[m2] , *tw2 ); + C_MUL(scratch[2],Fout[m3] , *tw3 ); + + C_SUB( scratch[5] , *Fout, scratch[1] ); + C_ADDTO(*Fout, scratch[1]); + C_ADD( scratch[3] , scratch[0] , scratch[2] ); + C_SUB( scratch[4] , scratch[0] , scratch[2] ); + C_SUB( Fout[m2], *Fout, scratch[3] ); + tw1 += fstride; + tw2 += fstride*2; + tw3 += fstride*3; + C_ADDTO( *Fout , scratch[3] ); + + if(st->inverse) { + Fout[m].r = scratch[5].r - scratch[4].i; + Fout[m].i = scratch[5].i + scratch[4].r; + Fout[m3].r = scratch[5].r + scratch[4].i; + Fout[m3].i = scratch[5].i - scratch[4].r; + }else{ + Fout[m].r = scratch[5].r + scratch[4].i; + Fout[m].i = scratch[5].i - scratch[4].r; + Fout[m3].r = scratch[5].r - scratch[4].i; + Fout[m3].i = scratch[5].i + scratch[4].r; + } + ++Fout; + }while(--k); +} + +static void kf_bfly3( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + size_t m + ) +{ + size_t k=m; + const size_t m2 = 2*m; + kiss_fft_cpx *tw1,*tw2; + kiss_fft_cpx scratch[5]; + kiss_fft_cpx epi3; + epi3 = st->twiddles[fstride*m]; + + tw1=tw2=st->twiddles; + + do{ + C_FIXDIV(*Fout,3); C_FIXDIV(Fout[m],3); C_FIXDIV(Fout[m2],3); + + C_MUL(scratch[1],Fout[m] , *tw1); + C_MUL(scratch[2],Fout[m2] , *tw2); + + C_ADD(scratch[3],scratch[1],scratch[2]); + C_SUB(scratch[0],scratch[1],scratch[2]); + tw1 += fstride; + tw2 += fstride*2; + + Fout[m].r = Fout->r - HALF_OF(scratch[3].r); + Fout[m].i = Fout->i - HALF_OF(scratch[3].i); + + C_MULBYSCALAR( scratch[0] , epi3.i ); + + C_ADDTO(*Fout,scratch[3]); + + Fout[m2].r = Fout[m].r + scratch[0].i; + Fout[m2].i = Fout[m].i - scratch[0].r; + + Fout[m].r -= scratch[0].i; + Fout[m].i += scratch[0].r; + + ++Fout; + }while(--k); +} + +static void kf_bfly5( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + int m + ) +{ + kiss_fft_cpx *Fout0,*Fout1,*Fout2,*Fout3,*Fout4; + int u; + kiss_fft_cpx scratch[13]; + kiss_fft_cpx * twiddles = st->twiddles; + kiss_fft_cpx *tw; + kiss_fft_cpx ya,yb; + ya = twiddles[fstride*m]; + yb = twiddles[fstride*2*m]; + + Fout0=Fout; + Fout1=Fout0+m; + Fout2=Fout0+2*m; + Fout3=Fout0+3*m; + Fout4=Fout0+4*m; + + tw=st->twiddles; + for ( u=0; ur += scratch[7].r + scratch[8].r; + Fout0->i += scratch[7].i + scratch[8].i; + + scratch[5].r = scratch[0].r + S_MUL(scratch[7].r,ya.r) + S_MUL(scratch[8].r,yb.r); + scratch[5].i = scratch[0].i + S_MUL(scratch[7].i,ya.r) + S_MUL(scratch[8].i,yb.r); + + scratch[6].r = S_MUL(scratch[10].i,ya.i) + S_MUL(scratch[9].i,yb.i); + scratch[6].i = -S_MUL(scratch[10].r,ya.i) - S_MUL(scratch[9].r,yb.i); + + C_SUB(*Fout1,scratch[5],scratch[6]); + C_ADD(*Fout4,scratch[5],scratch[6]); + + scratch[11].r = scratch[0].r + S_MUL(scratch[7].r,yb.r) + S_MUL(scratch[8].r,ya.r); + scratch[11].i = scratch[0].i + S_MUL(scratch[7].i,yb.r) + S_MUL(scratch[8].i,ya.r); + scratch[12].r = - S_MUL(scratch[10].i,yb.i) + S_MUL(scratch[9].i,ya.i); + scratch[12].i = S_MUL(scratch[10].r,yb.i) - S_MUL(scratch[9].r,ya.i); + + C_ADD(*Fout2,scratch[11],scratch[12]); + C_SUB(*Fout3,scratch[11],scratch[12]); + + ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4; + } +} + +/* perform the butterfly for one stage of a mixed radix FFT */ +static void kf_bfly_generic( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + int m, + int p + ) +{ + int u,k,q1,q; + kiss_fft_cpx * twiddles = st->twiddles; + kiss_fft_cpx t; + int Norig = st->nfft; + + kiss_fft_cpx * scratch = (kiss_fft_cpx*)KISS_FFT_TMP_ALLOC(sizeof(kiss_fft_cpx)*p); + + for ( u=0; u=Norig) twidx-=Norig; + C_MUL(t,scratch[q] , twiddles[twidx] ); + C_ADDTO( Fout[ k ] ,t); + } + k += m; + } + } + KISS_FFT_TMP_FREE(scratch); +} + +static +void kf_work( + kiss_fft_cpx * Fout, + const kiss_fft_cpx * f, + const size_t fstride, + int in_stride, + int * factors, + const kiss_fft_cfg st + ) +{ + kiss_fft_cpx * Fout_beg=Fout; + const int p=*factors++; /* the radix */ + const int m=*factors++; /* stage's fft length/p */ + const kiss_fft_cpx * Fout_end = Fout + p*m; + +#ifdef _OPENMP + // use openmp extensions at the + // top-level (not recursive) + if (fstride==1 && p<=5) + { + int k; + + // execute the p different work units in different threads +# pragma omp parallel for + for (k=0;k floor_sqrt) + p = n; /* no more factors, skip to end */ + } + n /= p; + *facbuf++ = p; + *facbuf++ = n; + } while (n > 1); +} + +/* + * + * User-callable function to allocate all necessary storage space for the fft. + * + * The return value is a contiguous block of memory, allocated with malloc. As such, + * It can be freed with free(), rather than a kiss_fft-specific function. + * */ +kiss_fft_cfg kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem ) +{ + kiss_fft_cfg st=NULL; + size_t memneeded = sizeof(struct kiss_fft_state) + + sizeof(kiss_fft_cpx)*(nfft-1); /* twiddle factors*/ + + if ( lenmem==NULL ) { + st = ( kiss_fft_cfg)KISS_FFT_MALLOC( memneeded ); + }else{ + if (mem != NULL && *lenmem >= memneeded) + st = (kiss_fft_cfg)mem; + *lenmem = memneeded; + } + if (st) { + int i; + st->nfft=nfft; + st->inverse = inverse_fft; + + for (i=0;iinverse) + phase *= -1; + kf_cexp(st->twiddles+i, phase ); + } + + kf_factor(nfft,st->factors); + } + return st; +} + + +void kiss_fft_stride(kiss_fft_cfg st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int in_stride) +{ + if (fin == fout) { + //NOTE: this is not really an in-place FFT algorithm. + //It just performs an out-of-place FFT into a temp buffer + kiss_fft_cpx * tmpbuf = (kiss_fft_cpx*)KISS_FFT_TMP_ALLOC( sizeof(kiss_fft_cpx)*st->nfft); + kf_work(tmpbuf,fin,1,in_stride, st->factors,st); + memcpy(fout,tmpbuf,sizeof(kiss_fft_cpx)*st->nfft); + KISS_FFT_TMP_FREE(tmpbuf); + }else{ + kf_work( fout, fin, 1,in_stride, st->factors,st ); + } +} + +void kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout) +{ + kiss_fft_stride(cfg,fin,fout,1); +} + + +void kiss_fft_cleanup(void) +{ + // nothing needed any more +} + +int kiss_fft_next_fast_size(int n) +{ + while(1) { + int m=n; + while ( (m%2) == 0 ) m/=2; + while ( (m%3) == 0 ) m/=3; + while ( (m%5) == 0 ) m/=5; + if (m<=1) + break; /* n is completely factorable by twos, threes, and fives */ + n++; + } + return n; +} diff --git a/src/kiss_fft.h b/src/kiss_fft.h new file mode 100644 index 0000000..c01722c --- /dev/null +++ b/src/kiss_fft.h @@ -0,0 +1,124 @@ +#ifndef KISS_FFT_H +#define KISS_FFT_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + ATTENTION! + If you would like a : + -- a utility that will handle the caching of fft objects + -- real-only (no imaginary time component ) FFT + -- a multi-dimensional FFT + -- a command-line utility to perform ffts + -- a command-line utility to perform fast-convolution filtering + + Then see kfc.h kiss_fftr.h kiss_fftnd.h fftutil.c kiss_fastfir.c + in the tools/ directory. +*/ + +#ifdef USE_SIMD +# include +# define kiss_fft_scalar __m128 +#define KISS_FFT_MALLOC(nbytes) _mm_malloc(nbytes,16) +#define KISS_FFT_FREE _mm_free +#else +#define KISS_FFT_MALLOC malloc +#define KISS_FFT_FREE free +#endif + + +#ifdef FIXED_POINT +#include +# if (FIXED_POINT == 32) +# define kiss_fft_scalar int32_t +# else +# define kiss_fft_scalar int16_t +# endif +#else +# ifndef kiss_fft_scalar +/* default is float */ +# define kiss_fft_scalar float +# endif +#endif + +typedef struct { + kiss_fft_scalar r; + kiss_fft_scalar i; +}kiss_fft_cpx; + +typedef struct kiss_fft_state* kiss_fft_cfg; + +/* + * kiss_fft_alloc + * + * Initialize a FFT (or IFFT) algorithm's cfg/state buffer. + * + * typical usage: kiss_fft_cfg mycfg=kiss_fft_alloc(1024,0,NULL,NULL); + * + * The return value from fft_alloc is a cfg buffer used internally + * by the fft routine or NULL. + * + * If lenmem is NULL, then kiss_fft_alloc will allocate a cfg buffer using malloc. + * The returned value should be free()d when done to avoid memory leaks. + * + * The state can be placed in a user supplied buffer 'mem': + * If lenmem is not NULL and mem is not NULL and *lenmem is large enough, + * then the function places the cfg in mem and the size used in *lenmem + * and returns mem. + * + * If lenmem is not NULL and ( mem is NULL or *lenmem is not large enough), + * then the function returns NULL and places the minimum cfg + * buffer size in *lenmem. + * */ + +kiss_fft_cfg kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem); + +/* + * kiss_fft(cfg,in_out_buf) + * + * Perform an FFT on a complex input buffer. + * for a forward FFT, + * fin should be f[0] , f[1] , ... ,f[nfft-1] + * fout will be F[0] , F[1] , ... ,F[nfft-1] + * Note that each element is complex and can be accessed like + f[k].r and f[k].i + * */ +void kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout); + +/* + A more generic version of the above function. It reads its input from every Nth sample. + * */ +void kiss_fft_stride(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int fin_stride); + +/* If kiss_fft_alloc allocated a buffer, it is one contiguous + buffer and can be simply free()d when no longer needed*/ +#define kiss_fft_free free + +/* + Cleans up some memory that gets managed internally. Not necessary to call, but it might clean up + your compiler output to call this before you exit. +*/ +void kiss_fft_cleanup(void); + + +/* + * Returns the smallest integer k, such that k>=n and k has only "fast" factors (2,3,5) + */ +int kiss_fft_next_fast_size(int n); + +/* for real ffts, we need an even size */ +#define kiss_fftr_next_fast_size_real(n) \ + (kiss_fft_next_fast_size( ((n)+1)>>1)<<1) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/kiss_fftr.c b/src/kiss_fftr.c new file mode 100644 index 0000000..7cc0286 --- /dev/null +++ b/src/kiss_fftr.c @@ -0,0 +1,154 @@ +/* +Copyright (c) 2003-2004, Mark Borgerding + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "kiss_fftr.h" +#include "_kiss_fft_guts.h" +#include "assert.h" + +struct kiss_fftr_state{ + kiss_fft_cfg substate; + kiss_fft_cpx * tmpbuf; + kiss_fft_cpx * super_twiddles; +#ifdef USE_SIMD + void * pad; +#endif +}; + +kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem) +{ + int i; + kiss_fftr_cfg st = NULL; + size_t subsize, memneeded; + + if (nfft & 1) { + fprintf(stderr,"Real FFT optimization must be even.\n"); + return NULL; + } + nfft >>= 1; + + kiss_fft_alloc (nfft, inverse_fft, NULL, &subsize); + memneeded = sizeof(struct kiss_fftr_state) + subsize + sizeof(kiss_fft_cpx) * ( nfft * 3 / 2); + + if (lenmem == NULL) { + st = (kiss_fftr_cfg) KISS_FFT_MALLOC (memneeded); + } else { + if (*lenmem >= memneeded) + st = (kiss_fftr_cfg) mem; + *lenmem = memneeded; + } + if (!st) + return NULL; + + st->substate = (kiss_fft_cfg) (st + 1); /*just beyond kiss_fftr_state struct */ + st->tmpbuf = (kiss_fft_cpx *) (((char *) st->substate) + subsize); + st->super_twiddles = st->tmpbuf + nfft; + kiss_fft_alloc(nfft, inverse_fft, st->substate, &subsize); + + for (i = 0; i < nfft/2; ++i) { + float phase = + -3.14159265358979323846264338327 * ((float) (i+1) / nfft + .5); + if (inverse_fft) + phase *= -1; + kf_cexp (st->super_twiddles+i,phase); + } + return st; +} + +void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata) +{ + /* input buffer timedata is stored row-wise */ + int k,ncfft; + kiss_fft_cpx fpnk,fpk,f1k,f2k,tw,tdc; + + assert(st->substate->inverse==0); + + ncfft = st->substate->nfft; + + /*perform the parallel fft of two real signals packed in real,imag*/ + kiss_fft( st->substate , (const kiss_fft_cpx*)timedata, st->tmpbuf ); + /* The real part of the DC element of the frequency spectrum in st->tmpbuf + * contains the sum of the even-numbered elements of the input time sequence + * The imag part is the sum of the odd-numbered elements + * + * The sum of tdc.r and tdc.i is the sum of the input time sequence. + * yielding DC of input time sequence + * The difference of tdc.r - tdc.i is the sum of the input (dot product) [1,-1,1,-1... + * yielding Nyquist bin of input time sequence + */ + + tdc.r = st->tmpbuf[0].r; + tdc.i = st->tmpbuf[0].i; + C_FIXDIV(tdc,2); + CHECK_OVERFLOW_OP(tdc.r ,+, tdc.i); + CHECK_OVERFLOW_OP(tdc.r ,-, tdc.i); + freqdata[0].r = tdc.r + tdc.i; + freqdata[ncfft].r = tdc.r - tdc.i; +#ifdef USE_SIMD + freqdata[ncfft].i = freqdata[0].i = _mm_set1_ps(0); +#else + freqdata[ncfft].i = freqdata[0].i = 0; +#endif + + for ( k=1;k <= ncfft/2 ; ++k ) { + fpk = st->tmpbuf[k]; + fpnk.r = st->tmpbuf[ncfft-k].r; + fpnk.i = - st->tmpbuf[ncfft-k].i; + C_FIXDIV(fpk,2); + C_FIXDIV(fpnk,2); + + C_ADD( f1k, fpk , fpnk ); + C_SUB( f2k, fpk , fpnk ); + C_MUL( tw , f2k , st->super_twiddles[k-1]); + + freqdata[k].r = HALF_OF(f1k.r + tw.r); + freqdata[k].i = HALF_OF(f1k.i + tw.i); + freqdata[ncfft-k].r = HALF_OF(f1k.r - tw.r); + freqdata[ncfft-k].i = HALF_OF(tw.i - f1k.i); + } +} + +void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata) +{ + /* input buffer timedata is stored row-wise */ + int k, ncfft; + + assert(st->substate->inverse == 1); + + ncfft = st->substate->nfft; + + st->tmpbuf[0].r = freqdata[0].r + freqdata[ncfft].r; + st->tmpbuf[0].i = freqdata[0].r - freqdata[ncfft].r; + C_FIXDIV(st->tmpbuf[0],2); + + for (k = 1; k <= ncfft / 2; ++k) { + kiss_fft_cpx fk, fnkc, fek, fok, tmp; + fk = freqdata[k]; + fnkc.r = freqdata[ncfft - k].r; + fnkc.i = -freqdata[ncfft - k].i; + C_FIXDIV( fk , 2 ); + C_FIXDIV( fnkc , 2 ); + + C_ADD (fek, fk, fnkc); + C_SUB (tmp, fk, fnkc); + C_MUL (fok, tmp, st->super_twiddles[k-1]); + C_ADD (st->tmpbuf[k], fek, fok); + C_SUB (st->tmpbuf[ncfft - k], fek, fok); +#ifdef USE_SIMD + st->tmpbuf[ncfft - k].i *= _mm_set1_ps(-1.0); +#else + st->tmpbuf[ncfft - k].i *= -1; +#endif + } + kiss_fft (st->substate, st->tmpbuf, (kiss_fft_cpx *) timedata); +} diff --git a/src/kiss_fftr.h b/src/kiss_fftr.h new file mode 100644 index 0000000..72e5a57 --- /dev/null +++ b/src/kiss_fftr.h @@ -0,0 +1,46 @@ +#ifndef KISS_FTR_H +#define KISS_FTR_H + +#include "kiss_fft.h" +#ifdef __cplusplus +extern "C" { +#endif + + +/* + + Real optimized version can save about 45% cpu time vs. complex fft of a real seq. + + + + */ + +typedef struct kiss_fftr_state *kiss_fftr_cfg; + + +kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem); +/* + nfft must be even + + If you don't care to allocate space, use mem = lenmem = NULL +*/ + + +void kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata); +/* + input timedata has nfft scalar points + output freqdata has nfft/2+1 complex points +*/ + +void kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata); +/* + input freqdata has nfft/2+1 complex points + output timedata has nfft scalar points +*/ + +#define kiss_fftr_free free + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/modem_probe.c b/src/modem_probe.c new file mode 100644 index 0000000..b4a6165 --- /dev/null +++ b/src/modem_probe.c @@ -0,0 +1,241 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: modem_probe.c + AUTHOR......: Brady O'Brien + DATE CREATED: 9 January 2016 + + Library to easily extract debug traces from modems during development and + verification + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2016 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#include +#include +#include +#include +#include "comp.h" +#include "octave.h" + +#define TRACE_I 1 +#define TRACE_F 2 +#define TRACE_C 3 + + +typedef struct probe_trace_info_s probe_trace_info; +typedef struct datlink_s datlink; + +struct datlink_s{ + void * data; + size_t len; + datlink * next; +}; + +struct probe_trace_info_s{ + int type; + char name[255]; + datlink * data; + datlink * last; + probe_trace_info *next; +}; + +static char *run = NULL; +static char *mod = NULL; +static probe_trace_info *first_trace = NULL; + +/* Init the probing library */ +void modem_probe_init_int(char *modname, char *runname){ + mod = malloc((strlen(modname)+1)*sizeof(char)); + run = malloc((strlen(runname)+1)*sizeof(char)); + strcpy(run,runname); + strcpy(mod,modname); +} + +/* + * Gather the data stored in the linked list into a single blob, + * freeing links and buffers as it goes + */ +void * gather_data(datlink * d,size_t * len){ + size_t size = 0; + datlink * cur = d; + datlink * next; + while(cur!=NULL){ + size += d->len; + cur = cur->next; + } + cur = d; + size_t i = 0; + void * newbuf = malloc(size); + + while(cur!=NULL){ + memcpy(newbuf+i,cur->data,cur->len); + i += cur->len; + free(cur->data); + next = cur->next; + free(cur); + cur = next; + } + *len = size; + return newbuf; +} + +/* Dump all of the traces into a nice octave-able dump file */ +void modem_probe_close_int(){ + if(run==NULL) + return; + + probe_trace_info *cur,*next; + cur = first_trace; + FILE * dumpfile = fopen(run,"w"); + void * dbuf; + size_t len; + + while(cur != NULL){ + dbuf = gather_data(cur->data,&len); + switch(cur->type){ + case TRACE_I: + octave_save_int(dumpfile,cur->name,(int32_t*)dbuf,1,len/sizeof(int32_t)); + break; + case TRACE_F: + octave_save_float(dumpfile,cur->name,(float*)dbuf,1,len/sizeof(float),10); + break; + case TRACE_C: + octave_save_complex(dumpfile,cur->name,(COMP*)dbuf,1,len/sizeof(COMP),10); + break; + } + next = cur->next; + free(cur); + free(dbuf); + cur = next; + } + + fclose(dumpfile); + free(run); + free(mod); +} + +/* Look up or create a trace by name */ +probe_trace_info * modem_probe_get_trace(char * tracename){ + probe_trace_info *cur,*npti; + + /* Make sure probe session is open */ + if(run==NULL) + return NULL; + + cur = first_trace; + /* Walk through list, find trace with matching name */ + while(cur != NULL){ + /* We got one! */ + if(strcmp( cur->name, tracename) == 0){ + return cur; + } + cur = cur->next; + } + /* None found, open a new trace */ + + npti = (probe_trace_info *) malloc(sizeof(probe_trace_info)); + npti->next = first_trace; + npti->data = NULL; + npti->last = NULL; + strcpy(npti->name,tracename); + first_trace = npti; + + return npti; + +} + + +void modem_probe_samp_i_int(char * tracename,int32_t samp[],size_t cnt){ + probe_trace_info *pti; + datlink *ndat; + + pti = modem_probe_get_trace(tracename); + if(pti == NULL) + return; + + pti->type = TRACE_I; + + ndat = (datlink*) malloc(sizeof(datlink)); + ndat->data = malloc(sizeof(int32_t)*cnt); + + ndat->len = cnt*sizeof(int32_t); + ndat->next = NULL; + memcpy(ndat->data,(void*)&(samp[0]),sizeof(int32_t)*cnt); + + if(pti->last!=NULL){ + pti->last->next = ndat; + pti->last = ndat; + } else { + pti->data = ndat; + pti->last = ndat; + } + +} + +void modem_probe_samp_f_int(char * tracename,float samp[],size_t cnt){ + probe_trace_info *pti; + datlink *ndat; + + pti = modem_probe_get_trace(tracename); + if(pti == NULL) + return; + + pti->type = TRACE_F; + + ndat = (datlink*) malloc(sizeof(datlink)); + ndat->data = malloc(sizeof(float)*cnt); + + ndat->len = cnt*sizeof(float); + ndat->next = NULL; + memcpy(ndat->data,(void*)&(samp[0]),sizeof(float)*cnt); + + if(pti->last!=NULL){ + pti->last->next = ndat; + pti->last = ndat; + } else { + pti->data = ndat; + pti->last = ndat; + } +} + +void modem_probe_samp_c_int(char * tracename,COMP samp[],size_t cnt){ + probe_trace_info *pti; + datlink *ndat; + + pti = modem_probe_get_trace(tracename); + if(pti == NULL) + return; + + pti->type = TRACE_C; + + ndat = (datlink*) malloc(sizeof(datlink)); + ndat->data = malloc(sizeof(COMP)*cnt); + + ndat->len = cnt*sizeof(COMP); + ndat->next = NULL; + memcpy(ndat->data,(void*)&(samp[0]),sizeof(COMP)*cnt); + + if(pti->last!=NULL){ + pti->last->next = ndat; + pti->last = ndat; + } else { + pti->data = ndat; + pti->last = ndat; + } +} diff --git a/src/modem_probe.h b/src/modem_probe.h new file mode 100644 index 0000000..e038603 --- /dev/null +++ b/src/modem_probe.h @@ -0,0 +1,130 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: modem_probe.h + AUTHOR......: Brady O'Brien + DATE CREATED: 9 January 2016 + + Library to easily extract debug traces from modems during development + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2016 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __MODEMPROBE_H +#define __MODEMPROBE_H + +#include +#include +#include +#include "comp.h" + +#ifdef MODEMPROBE_ENABLE + +/* Internal functions */ +void modem_probe_init_int(char *modname, char *runname); +void modem_probe_close_int(); + +void modem_probe_samp_i_int(char * tracename,int samp[],size_t cnt); +void modem_probe_samp_f_int(char * tracename,float samp[],size_t cnt); +void modem_probe_samp_c_int(char * tracename,COMP samp[],size_t cnt); + +/* + * Init the probe library. + * char *modname - Name of the modem under test + * char *runname - Name/path of the file data is dumped to + */ +static inline void modem_probe_init(char *modname,char *runname){ + modem_probe_init_int(modname,runname); +} + +/* + * Dump traces to a file and clean up + */ +static inline void modem_probe_close(){ + modem_probe_close_int(); +} + +/* + * Save some number of int samples to a named trace + * char *tracename - name of trace being saved to + * int samp[] - int samples + * size_t cnt - how many samples to save + */ +static inline void modem_probe_samp_i(char *tracename,int samp[],size_t cnt){ + modem_probe_samp_i_int(tracename,samp,cnt); +} + +/* + * Save some number of float samples to a named trace + * char *tracename - name of trace being saved to + * float samp[] - int samples + * size_t cnt - how many samples to save + */ +static inline void modem_probe_samp_f(char *tracename,float samp[],size_t cnt){ + modem_probe_samp_f_int(tracename,samp,cnt); +} + +/* + * Save some number of complex samples to a named trace + * char *tracename - name of trace being saved to + * COMP samp[] - int samples + * size_t cnt - how many samples to save + */ +static inline void modem_probe_samp_c(char *tracename,COMP samp[],size_t cnt){ + modem_probe_samp_c_int(tracename,samp,cnt); +} + +/* + * Save some number of complex samples to a named trace + * char *tracename - name of trace being saved to + * float complex samp[] - int samples + * size_t cnt - how many samples to save + */ +static inline void modem_probe_samp_cft(char *tracename,complex float samp[],size_t cnt){ + modem_probe_samp_c_int(tracename,(COMP*)samp,cnt); +} + +#else + +static inline void modem_probe_init(char *modname,char *runname){ + return; +} + +static inline void modem_probe_close(){ + return; +} + +static inline void modem_probe_samp_i(char *name,int samp[],size_t sampcnt){ + return; +} + +static inline void modem_probe_samp_f(char *name,float samp[],size_t cnt){ + return; +} + +static inline void modem_probe_samp_c(char *name,COMP samp[],size_t cnt){ + return; +} + +static inline void modem_probe_samp_cft(char *name,complex float samp[],size_t cnt){ + return; +} + +#endif + +#endif diff --git a/src/modem_stats.c b/src/modem_stats.c new file mode 100644 index 0000000..d212e2b --- /dev/null +++ b/src/modem_stats.c @@ -0,0 +1,123 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: modem_stats.c + AUTHOR......: David Rowe + DATE CREATED: June 2015 + + Common functions for returning demod stats from fdmdv and cohpsk modems. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2015 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . +*/ + +#include +#include +#include "modem_stats.h" +#include "codec2_fdmdv.h" + +void modem_stats_open(struct MODEM_STATS *f) +{ + int i; + + /* zero out all the stats */ + + memset(f, 0, sizeof(struct MODEM_STATS)); + + /* init the FFT */ + +#ifndef __EMBEDDED__ + for(i=0; i<2*MODEM_STATS_NSPEC; i++) + f->fft_buf[i] = 0.0; + f->fft_cfg = kiss_fft_alloc (2*MODEM_STATS_NSPEC, 0, NULL, NULL); + assert(f->fft_cfg != NULL); +#endif +} + +void modem_stats_close(struct MODEM_STATS *f) +{ +#ifndef __EMBEDDED__ + KISS_FFT_FREE(f->fft_cfg); +#endif +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: modem_stats_get_rx_spectrum() + AUTHOR......: David Rowe + DATE CREATED: 9 June 2012 + + Returns the MODEM_STATS_NSPEC point magnitude spectrum of the rx signal in + dB. The spectral samples are scaled so that 0dB is the peak, a good + range for plotting is 0 to -40dB. + + Note only the real part of the complex input signal is used at + present. A complex variable is used for input for compatability + with the other rx signal procesing. + + Successive calls can be used to build up a waterfall or spectrogram + plot, by mapping the received levels to colours. + + The time-frequency resolution of the spectrum can be adjusted by varying + MODEM_STATS_NSPEC. Note that a 2* MODEM_STATS_NSPEC size FFT is reqd to get + MODEM_STATS_NSPEC output points. MODEM_STATS_NSPEC must be a power of 2. + + See octave/tget_spec.m for a demo real time spectral display using + Octave. This demo averages the output over time to get a smoother + display: + + av = 0.9*av + 0.1*mag_dB + +\*---------------------------------------------------------------------------*/ + +#ifndef __EMBEDDED__ +void modem_stats_get_rx_spectrum(struct MODEM_STATS *f, float mag_spec_dB[], COMP rx_fdm[], int nin) +{ + int i,j; + COMP fft_in[2*MODEM_STATS_NSPEC]; + COMP fft_out[2*MODEM_STATS_NSPEC]; + float full_scale_dB; + + /* update buffer of input samples */ + + for(i=0; i<2*MODEM_STATS_NSPEC-nin; i++) + f->fft_buf[i] = f->fft_buf[i+nin]; + for(j=0; jfft_buf[i] = rx_fdm[j].real; + assert(i == 2*MODEM_STATS_NSPEC); + + /* window and FFT */ + + for(i=0; i<2*MODEM_STATS_NSPEC; i++) { + fft_in[i].real = f->fft_buf[i] * (0.5 - 0.5*cosf((float)i*2.0*M_PI/(2*MODEM_STATS_NSPEC))); + fft_in[i].imag = 0.0; + } + + kiss_fft(f->fft_cfg, (kiss_fft_cpx *)fft_in, (kiss_fft_cpx *)fft_out); + + /* FFT scales up a signal of level 1 FDMDV_NSPEC */ + + full_scale_dB = 20*log10(MODEM_STATS_NSPEC*FDMDV_SCALE); + + /* scale and convert to dB */ + + for(i=0; i. +*/ + +#ifndef __MODEM_STATS__ +#define __MODEM_STATS__ + +#include "comp.h" +#include "kiss_fft.h" + +#ifdef __cplusplus + extern "C" { +#endif + +#define MODEM_STATS_NC_MAX 50 +#define MODEM_STATS_NR_MAX 8 +#define MODEM_STATS_ET_MAX 8 +#define MODEM_STATS_EYE_IND_MAX 160 +#define MODEM_STATS_NSPEC 512 +#define MODEM_STATS_MAX_F_HZ 4000 +#define MODEM_STATS_MAX_F_EST 4 + +struct MODEM_STATS { + int Nc; + float snr_est; /* estimated SNR of rx signal in dB (3 kHz noise BW) */ +#ifndef __EMBEDDED__ + COMP rx_symbols[MODEM_STATS_NR_MAX][MODEM_STATS_NC_MAX+1]; + /* latest received symbols, for scatter plot */ +#endif + int nr; /* number of rows in rx_symbols */ + int sync; /* demod sync state */ + float foff; /* estimated freq offset in Hz */ + float rx_timing; /* estimated optimum timing offset in samples */ + float clock_offset; /* Estimated tx/rx sample clock offset in ppm */ + float sync_metric; /* number between 0 and 1 indicating quality of sync */ + + /* eye diagram traces */ + /* Eye diagram plot -- first dim is trace number, second is the trace idx */ +#ifndef __EMBEDDED__ + float rx_eye[MODEM_STATS_ET_MAX][MODEM_STATS_EYE_IND_MAX]; + int neyetr; /* How many eye traces are plotted */ + int neyesamp; /* How many samples in the eye diagram */ + + /* optional for FSK modems - est tone freqs */ + + float f_est[MODEM_STATS_MAX_F_EST]; +#endif + + /* Buf for FFT/waterfall */ + +#ifndef __EMBEDDED__ + float fft_buf[2*MODEM_STATS_NSPEC]; + kiss_fft_cfg fft_cfg; +#endif +}; + +void modem_stats_open(struct MODEM_STATS *f); +void modem_stats_close(struct MODEM_STATS *f); +void modem_stats_get_rx_spectrum(struct MODEM_STATS *f, float mag_spec_dB[], COMP rx_fdm[], int nin); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/src/mpdecode_core.c b/src/mpdecode_core.c new file mode 100644 index 0000000..d840a28 --- /dev/null +++ b/src/mpdecode_core.c @@ -0,0 +1,709 @@ +/* + FILE...: mpdecode_core.c + AUTHOR.: Matthew C. Valenti, Rohit Iyer Seshadri, David Rowe + CREATED: Sep 2016 + + C-callable core functions moved from MpDecode.c, so they can be used for + Octave and C programs. +*/ + +#include +#include +#include +#include +#include +#include "mpdecode_core.h" +#ifndef USE_ORIGINAL_PHI0 +#include "phi0.h" +#endif + +#include "debug_alloc.h" + +#ifdef __EMBEDDED__ +#include "machdep.h" +#endif + +#define QPSK_CONSTELLATION_SIZE 4 +#define QPSK_BITS_PER_SYMBOL 2 + + +/* QPSK constellation for symbol likelihood calculations */ + +static COMP S_matrix[] = { + { 1.0f, 0.0f}, + { 0.0f, 1.0f}, + { 0.0f, -1.0f}, + {-1.0f, 0.0f} +}; + +// c_nodes will be an array of NumberParityBits of struct c_node +// Each c_node contains an array of c_sub_node elements +// This structure reduces the indexing caluclations in SumProduct() + +struct c_sub_node { // Order is important here to keep total size small. + uint16_t index; // Values from H_rows (except last 2 entries) + uint16_t socket; // The socket number at the v_node + float message; // modified during operation! +}; + +struct c_node { + int degree; // A count of elements in the following arrays + struct c_sub_node *subs; +}; + +// v_nodes will be an array of CodeLength of struct v_node + +struct v_sub_node { + uint16_t index; // the index of a c_node it is connected to + // Filled with values from H_cols (except last 2 entries) + uint16_t socket; // socket number at the c_node + float message; // Loaded with input data + // modified during operation! + uint8_t sign; // 1 if input is negative + // modified during operation! +}; + +struct v_node { + int degree; // A count of ??? + float initial_value; + struct v_sub_node *subs; +}; + +void encode(struct LDPC *ldpc, unsigned char ibits[], unsigned char pbits[]) { + unsigned int p, i, tmp, par, prev=0; + int ind; + uint16_t *H_rows = ldpc->H_rows; + + for (p=0; pNumberParityBits; p++) { + par = 0; + + for (i=0; imax_row_weight; i++) { + ind = H_rows[p + i*ldpc->NumberParityBits]; + par = par + ibits[ind-1]; + } + + tmp = par + prev; + + tmp &= 1; // only retain the lsb + prev = tmp; + pbits[p] = tmp; + } +} + +#ifdef USE_ORIGINAL_PHI0 +/* Phi function */ +static float phi0( + float x ) +{ + float z; + + if (x>10) + return( 0 ); + else if (x< 9.08e-5 ) + return( 10 ); + else if (x > 9) + return( 1.6881e-4 ); + /* return( 1.4970e-004 ); */ + else if (x > 8) + return( 4.5887e-4 ); + /* return( 4.0694e-004 ); */ + else if (x > 7) + return( 1.2473e-3 ); + /* return( 1.1062e-003 ); */ + else if (x > 6) + return( 3.3906e-3 ); + /* return( 3.0069e-003 ); */ + else if (x > 5) + return( 9.2168e-3 ); + /* return( 8.1736e-003 ); */ + else { + z = (float) exp(x); + return( (float) log( (z+1)/(z-1) ) ); + } +} +#endif + + +/* Values for linear approximation (DecoderType=5) */ + +#define AJIAN -0.24904163195436 +#define TJIAN 2.50681740420944 + +/* The linear-log-MAP algorithm */ + +static float max_star0( + float delta1, + float delta2 ) +{ + register float diff; + + diff = delta2 - delta1; + + if ( diff > TJIAN ) + return( delta2 ); + else if ( diff < -TJIAN ) + return( delta1 ); + else if ( diff > 0 ) + return( delta2 + AJIAN*(diff-TJIAN) ); + else + return( delta1 - AJIAN*(diff+TJIAN) ); +} + +void init_c_v_nodes(struct c_node *c_nodes, + int shift, + int NumberParityBits, + int max_row_weight, + uint16_t *H_rows, + int H1, + int CodeLength, + struct v_node *v_nodes, + int NumberRowsHcols, + uint16_t *H_cols, + int max_col_weight, + int dec_type, + float *input) +{ + int i, j, k, count, cnt, c_index, v_index; + + /* first determine the degree of each c-node */ + + if (shift ==0){ + for (i=0;i 0 ) { + count++; + } + } + c_nodes[i].degree = count; + if (H1){ + if (i==0){ + c_nodes[i].degree=count+1; + } + else{ + c_nodes[i].degree=count+2; + } + } + } + } + else{ + cnt=0; + for (i=0;i<(NumberParityBits/shift);i++) { + for (k=0;k 0 ) { + count++; + } + } + c_nodes[cnt].degree = count; + if ((i==0)||(i==(NumberParityBits/shift)-1)){ + c_nodes[cnt].degree=count+1; + } + else{ + c_nodes[cnt].degree=count+2; + } + cnt++; + } + } + } + + if (H1){ + + if (shift ==0){ + for (i=0;i0){ + cnt=0; + for (i=0;i<(NumberParityBits/shift);i++){ + + for (k =0;k 0 ) { + count++; + } + } + v_nodes[i].degree = count; + } + + for(i=CodeLength-NumberParityBits+shift;i 0 ) { + count++; + } + } + v_nodes[i].degree = count; + } + } + + if (shift>0){ + v_nodes[CodeLength-1].degree =v_nodes[CodeLength-1].degree+1; + } + + + /* set up v_nodes */ + + for (i=0;i=CodeLength-NumberParityBits+shift)){ + v_nodes[i].subs[j].index=i-(CodeLength-NumberParityBits+shift)+count; + if (shift ==0){ + count=count+1; + } + else{ + count=count+shift; + } + } else { + v_nodes[i].subs[j].index = (H_cols[i+j*NumberRowsHcols] - 1); + } + + /* search the connected c-node for the proper message value */ + for (c_index=0;c_indexindex ].subs[ cp->socket ]; + phi_sum += vp->message; + sign ^= vp->sign; + } + + if (sign==0) ssum++; + + for (i=0;iindex ].subs[ cp->socket ]; + if ( sign ^ vp->sign ) { + cp->message = -phi0( phi_sum - vp->message ); // *r_scale_factor; + } else + cp->message = phi0( phi_sum - vp->message ); // *r_scale_factor; + } + } + + /* update q */ + for (i=0;iindex ].subs[ vp->socket ].message; + } + + /* make hard decision */ + if (Qi < 0) { + DecodedBits[i] = 1; + } + + /* now subtract to get the extrinsic information */ + for (j=0;jindex ].subs[ vp->socket ].message; + + vp->message = phi0( fabs( temp_sum ) ); // *q_scale_factor; + if (temp_sum > 0) + vp->sign = 0; + else + vp->sign = 1; + } + } + + /* count data bit errors, assuming that it is systematic */ + for (i=0;imax_iter; + dec_type = ldpc->dec_type; + q_scale_factor = ldpc->q_scale_factor; + r_scale_factor = ldpc->r_scale_factor; + + CodeLength = ldpc->CodeLength; /* length of entire codeword */ + NumberParityBits = ldpc->NumberParityBits; + NumberRowsHcols = ldpc->NumberRowsHcols; + + char *DecodedBits = CALLOC( CodeLength, sizeof( char ) ); + assert(DecodedBits); + + /* derive some parameters */ + + shift = (NumberParityBits + NumberRowsHcols) - CodeLength; + if (NumberRowsHcols == CodeLength) { + H1=0; + shift=0; + } else { + H1=1; + } + + max_row_weight = ldpc->max_row_weight; + max_col_weight = ldpc->max_col_weight; + + /* initialize c-node and v-node structures */ + + c_nodes = CALLOC( NumberParityBits, sizeof( struct c_node ) ); + assert(c_nodes); + v_nodes = CALLOC( CodeLength, sizeof( struct v_node)); + assert(v_nodes); + + init_c_v_nodes(c_nodes, shift, NumberParityBits, max_row_weight, ldpc->H_rows, H1, CodeLength, + v_nodes, NumberRowsHcols, ldpc->H_cols, max_col_weight, dec_type, input); + + int DataLength = CodeLength - NumberParityBits; + int *data_int = CALLOC( DataLength, sizeof(int) ); + + /* need to clear these on each call */ + + for(i=0; i 0.0L) - (sd[i] < 0.0L); + x = (sd[i]/mean - sign); + sum += x; + sumsq += x*x; + } + estvar = (n * sumsq - sum * sum) / (n * (n - 1)); + //fprintf(stderr, "mean: %f var: %f\n", mean, estvar); + + estEsN0 = 1.0/(2.0L * estvar + 1E-3); + for(i=0; i> 1; + } + mask = 1 << (bps - 1); + + for (k=0;k> 1; + } + } + for (k=0;kmax_iter = %d\n", ldpc->max_iter); +fprintf(stderr, "ldpc->dec_type = %d\n", ldpc->dec_type); +fprintf(stderr, "ldpc->q_scale_factor = %d\n", ldpc->q_scale_factor); +fprintf(stderr, "ldpc->r_scale_factor = %d\n", ldpc->r_scale_factor); +fprintf(stderr, "ldpc->CodeLength = %d\n", ldpc->CodeLength); +fprintf(stderr, "ldpc->NumberParityBits = %d\n", ldpc->NumberParityBits); +fprintf(stderr, "ldpc->NumberRowsHcols = %d\n", ldpc->NumberRowsHcols); +fprintf(stderr, "ldpc->max_row_weight = %d\n", ldpc->max_row_weight); +fprintf(stderr, "ldpc->max_col_weight = %d\n", ldpc->max_col_weight); +fprintf(stderr, "ldpc->data_bits_per_frame = %d\n", ldpc->data_bits_per_frame); +fprintf(stderr, "ldpc->coded_bits_per_frame = %d\n", ldpc->coded_bits_per_frame); +fprintf(stderr, "ldpc->coded_syms_per_frame = %d\n", ldpc->coded_syms_per_frame); +} + +/* vi:set ts=4 et sts=4: */ diff --git a/src/mpdecode_core.h b/src/mpdecode_core.h new file mode 100644 index 0000000..0e15a0a --- /dev/null +++ b/src/mpdecode_core.h @@ -0,0 +1,54 @@ +/* + FILE...: mpdecode_core.h + AUTHOR.: David Rowe + CREATED: Sep 2016 + + C-callable core functions for MpDecode, so they can be used for + Octave and C programs. Also some convenience functions to help use + the C-callable LDPC decoder in C programs. +*/ + +#ifndef __MPDECODE_CORE__ +#define __MPDECODE_CORE__ + +#include + +#include "comp.h" + +struct LDPC { + int max_iter; + int dec_type; + int q_scale_factor; + int r_scale_factor; + int CodeLength; + int NumberParityBits; + int NumberRowsHcols; + int max_row_weight; + int max_col_weight; + + /* these two are fixed to code params */ + int ldpc_data_bits_per_frame; + int ldpc_coded_bits_per_frame; + + /* these three may vary if we don't use all data bits in code */ + int data_bits_per_frame; + int coded_bits_per_frame; + int coded_syms_per_frame; + + uint16_t *H_rows; + uint16_t *H_cols; +}; + +void encode(struct LDPC *ldpc, unsigned char ibits[], unsigned char pbits[]); + +int run_ldpc_decoder(struct LDPC *ldpc, uint8_t out_char[], float input[], int *parityCheckCount); + +void sd_to_llr(float llr[], double sd[], int n); +void Demod2D(float symbol_likelihood[], COMP r[], COMP S_matrix[], float EsNo, float fading[], float mean_amp, int number_symbols); +void Somap(float bit_likelihood[], float symbol_likelihood[], int number_symbols); +void symbols_to_llrs(float llr[], COMP rx_qpsk_symbols[], float rx_amps[], float EsNo, float mean_amp, int nsyms); + +void ldpc_print_info(struct LDPC *ldpc); + + +#endif diff --git a/src/mpdecode_core_test.c b/src/mpdecode_core_test.c new file mode 100644 index 0000000..7d21035 --- /dev/null +++ b/src/mpdecode_core_test.c @@ -0,0 +1,693 @@ +/* + FILE...: mpdecode_core.c + AUTHOR.: Matthew C. Valenti, Rohit Iyer Seshadri, David Rowe + CREATED: Sep 2016 + + C-callable core functions moved from MpDecode.c, so they can be used for + Octave and C programs. +*/ + +#include +#include +#include +#include +#include + +#include "mpdecode_core_test.h" +#ifndef USE_ORIGINAL_PHI0 +#include "phi0.h" +#endif + +#include "debug_alloc.h" + +#ifdef __EMBEDDED__ +#include "machdep.h" +#endif + +#define QPSK_CONSTELLATION_SIZE 4 +#define QPSK_BITS_PER_SYMBOL 2 + +/* QPSK constellation for symbol likelihood calculations */ + +static COMP S_matrix[] = { + { 1.0f, 0.0f}, + { 0.0f, 1.0f}, + { 0.0f, -1.0f}, + {-1.0f, 0.0f} +}; + +// c_nodes will be an array of NumberParityBits of struct c_node +// Each c_node contains an array of c_sub_node elements +// This structure reduces the indexing caluclations in SumProduct() + +struct c_sub_node { // Order is important here to keep total size small. + uint16_t index; // Values from H_rows (except last 2 entries) + uint16_t socket; // The socket number at the v_node + float message; // modified during operation! +}; + +struct c_node { + int degree; // A count of elements in the following arrays + struct c_sub_node *subs; +}; + +// v_nodes will be an array of CodeLength of struct v_node + +struct v_sub_node { + uint16_t index; // the index of a c_node it is connected to + // Filled with values from H_cols (except last 2 entries) + uint16_t socket; // socket number at the c_node + float message; // Loaded with input data + // modified during operation! + uint8_t sign; // 1 if input is negative + // modified during operation! +}; + +struct v_node { + int degree; // A count of ??? + float initial_value; + struct v_sub_node *subs; +}; + +void encode(struct LDPC *ldpc, unsigned char ibits[], unsigned char pbits[]) { + unsigned int p, i, tmp, par, prev=0; + int ind; + uint16_t *H_rows = ldpc->H_rows; + + for (p=0; pNumberParityBits; p++) { + par = 0; + + for (i=0; imax_row_weight; i++) { + ind = H_rows[p + i*ldpc->NumberParityBits]; + par = par + ibits[ind-1]; + } + + tmp = par + prev; + + tmp &= 1; // only retain the lsb + prev = tmp; + pbits[p] = tmp; + } +} + +#ifdef USE_ORIGINAL_PHI0 +/* Phi function */ +static float phi0( + float x ) +{ + float z; + + if (x>10) + return( 0 ); + else if (x< 9.08e-5 ) + return( 10 ); + else if (x > 9) + return( 1.6881e-4 ); + /* return( 1.4970e-004 ); */ + else if (x > 8) + return( 4.5887e-4 ); + /* return( 4.0694e-004 ); */ + else if (x > 7) + return( 1.2473e-3 ); + /* return( 1.1062e-003 ); */ + else if (x > 6) + return( 3.3906e-3 ); + /* return( 3.0069e-003 ); */ + else if (x > 5) + return( 9.2168e-3 ); + /* return( 8.1736e-003 ); */ + else { + z = (float) exp(x); + return( (float) log( (z+1)/(z-1) ) ); + } +} +#endif + + +/* Values for linear approximation (DecoderType=5) */ + + +#define AJIAN -0.24904163195436 +#define TJIAN 2.50681740420944 + +/* The linear-log-MAP algorithm */ + +static float max_star0( + float delta1, + float delta2 ) +{ + register float diff; + + diff = delta2 - delta1; + + if ( diff > TJIAN ) + return( delta2 ); + else if ( diff < -TJIAN ) + return( delta1 ); + else if ( diff > 0 ) + return( delta2 + AJIAN*(diff-TJIAN) ); + else + return( delta1 - AJIAN*(diff+TJIAN) ); +} + +void init_c_v_nodes(struct c_node *c_nodes, + int shift, + int NumberParityBits, + int max_row_weight, + uint16_t *H_rows, + int H1, + int CodeLength, + struct v_node *v_nodes, + int NumberRowsHcols, + uint16_t *H_cols, + int max_col_weight, + int dec_type, + float *input) +{ + int i, j, k, count, cnt, c_index, v_index; + + /* first determine the degree of each c-node */ + + if (shift ==0){ + for (i=0;i 0 ) { + count++; + } + } + c_nodes[i].degree = count; + if (H1){ + if (i==0){ + c_nodes[i].degree=count+1; + } + else{ + c_nodes[i].degree=count+2; + } + } + } + } + else{ + cnt=0; + for (i=0;i<(NumberParityBits/shift);i++) { + for (k=0;k 0 ) { + count++; + } + } + c_nodes[cnt].degree = count; + if ((i==0)||(i==(NumberParityBits/shift)-1)){ + c_nodes[cnt].degree=count+1; + } + else{ + c_nodes[cnt].degree=count+2; + } + cnt++; + } + } + } + + if (H1) { + + if (shift ==0){ + for (i=0;i0){ + cnt=0; + for (i=0;i<(NumberParityBits/shift);i++){ + + for (k =0;k 0 ) { + count++; + } + } + v_nodes[i].degree = count; + } + + for(i=CodeLength-NumberParityBits+shift;i 0 ) { + count++; + } + } + v_nodes[i].degree = count; + } + } + + if (shift>0){ + v_nodes[CodeLength-1].degree =v_nodes[CodeLength-1].degree+1; + } + + + /* set up v_nodes */ + + for (i=0;i=CodeLength-NumberParityBits+shift)){ + v_nodes[i].subs[j].index=i-(CodeLength-NumberParityBits+shift)+count; + if (shift ==0){ + count=count+1; + } + else{ + count=count+shift; + } + } else { + v_nodes[i].subs[j].index = (H_cols[i+j*NumberRowsHcols] - 1); + } + + /* search the connected c-node for the proper message value */ + for (c_index=0;c_indexindex ].subs[ cp->socket ]; + phi_sum += vp->message; + sign ^= vp->sign; + } + + if (sign==0) ssum++; + +//fprintf(stderr, " up-r: %d: sign=%d, phi_sum=%f\n", j, sign, (double)phi_sum); + + for (i=0;iindex ].subs[ cp->socket ]; + if ( sign ^ vp->sign ) { + cp->message = -phi0( phi_sum - vp->message ); // *r_scale_factor; + } else + cp->message = phi0( phi_sum - vp->message ); // *r_scale_factor; + } + } + + /* update q */ +//#ifdef __EMBEDDED__ +//PROFILE_SAMPLE_AND_LOG(ldpc_SP_upq, ldpc_SP_upr, "ldpc_SP_update_r"); +//#endif + for (i=0;iindex ].subs[ vp->socket ].message; + } + + /* make hard decision */ + if (Qi < 0) { + DecodedBits[i] = 1; + } + + /* now subtract to get the extrinsic information */ + for (j=0;jindex ].subs[ vp->socket ].message; + + vp->message = phi0( fabs( temp_sum ) ); // *q_scale_factor; + if (temp_sum > 0) + vp->sign = 0; + else + vp->sign = 1; + } + } +//#ifdef __EMBEDDED__ +//PROFILE_SAMPLE_AND_LOG(ldpc_SP_misc, ldpc_SP_upq, "ldpc_SP_update_q"); +//#endif + + /* count data bit errors, assuming that it is systematic */ + for (i=0;imax_iter; + q_scale_factor = ldpc->q_scale_factor; + r_scale_factor = ldpc->r_scale_factor; + + CodeLength = ldpc->CodeLength; /* length of entire codeword */ + NumberParityBits = ldpc->NumberParityBits; + NumberRowsHcols = ldpc->NumberRowsHcols; + + char *DecodedBits = CALLOC( CodeLength, sizeof( char ) ); + assert(DecodedBits); + + /* derive some parameters */ + + shift = (NumberParityBits + NumberRowsHcols) - CodeLength; + if (NumberRowsHcols == CodeLength) { + H1=0; + shift=0; + } else { + H1=1; + } + + /* initialize c-node and v-node structures */ + c_nodes = CALLOC( NumberParityBits, sizeof( struct c_node ) ); + assert(c_nodes); + v_nodes = CALLOC( CodeLength, sizeof( struct v_node)); + assert(v_nodes); + + init_c_v_nodes( c_nodes, shift, + NumberParityBits, ldpc->max_row_weight, ldpc->H_rows, H1, CodeLength, + v_nodes, NumberRowsHcols, ldpc->H_cols, ldpc->max_col_weight, ldpc->dec_type, + input); + + int DataLength = CodeLength - NumberParityBits; + int *data_int = CALLOC( DataLength, sizeof(int) ); + + /* Call function to do the actual decoding */ + + int iter = SumProduct(parityCheckCount, DecodedBits, c_nodes, v_nodes, + CodeLength, NumberParityBits, max_iter, + r_scale_factor, q_scale_factor, data_int); + + for (i=0; i 0.0L) - (sd[i] < 0.0L); + x = (sd[i]/mean - sign); + sum += x; + sumsq += x*x; + } + estvar = (n * sumsq - sum * sum) / (n * (n - 1)); + //fprintf(stderr, "mean: %f var: %f\n", mean, estvar); + + estEsN0 = 1.0/(2.0L * estvar + 1E-3); + for(i=0; i> 1; + } + mask = 1 << (bps - 1); + + for (k=0;k> 1; + } + } + for (k=0;k + +#include "comp.h" + +struct LDPC { + int max_iter; + int dec_type; + int q_scale_factor; + int r_scale_factor; + int CodeLength; + int NumberParityBits; + int NumberRowsHcols; + int max_row_weight; + int max_col_weight; + int data_bits_per_frame; + int coded_bits_per_frame; + int coded_syms_per_frame; + uint16_t *H_rows; + uint16_t *H_cols; +}; + +extern void ldpc_init(struct LDPC *ldpc, int *size_common); +extern void ldpc_free_mem(struct LDPC *ldpc); + +extern void encode(struct LDPC *ldpc, unsigned char ibits[], unsigned char pbits[]); + +int run_ldpc_decoder(struct LDPC *ldpc, uint8_t out_char[], float input[], int *parityCheckCount); +extern void ldpc_dump_nodes(struct LDPC *ldpc); + +extern void sd_to_llr(float llr[], double sd[], int n); + +extern void Demod2D(float symbol_likelihood[], COMP r[], COMP S_matrix[], float EsNo, float fading[], float mean_amp, int number_symbols); +extern void Somap(float bit_likelihood[], float symbol_likelihood[], int number_symbols); +extern void symbols_to_llrs(float llr[], COMP rx_qpsk_symbols[], float rx_amps[], float EsNo, float mean_amp, int nsyms); + +#endif diff --git a/src/octave.c b/src/octave.c new file mode 100644 index 0000000..18a8517 --- /dev/null +++ b/src/octave.c @@ -0,0 +1,143 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: octave.c + AUTHOR......: David Rowe + DATE CREATED: April 28 2012 + + Functions to save C arrays in GNU Octave matrix format. The output text + file can be directly read into Octave using "load filename". + +\*---------------------------------------------------------------------------*/ + + +/* + Copyright (C) 2012 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. This program is + distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, see . + */ + +#include +#include + +#include "octave.h" + +#ifdef ARM_MATH_CM4 +#include "Trace.h" +#endif + +#define OCTAVE_BUFSIZE 2048 + + +void flush_buffer(FILE* f, char* buffer,size_t* buf_idx_ptr) +{ +#ifdef ARM_MATH_CM4 + trace_write(buffer,*buf_idx_ptr); +#else + fwrite(buffer,*buf_idx_ptr,1,f); +#endif + *buf_idx_ptr = 0; +} + +void handle_buffer(FILE* f, char* buffer,const size_t max_buf, size_t* buf_idx_ptr, size_t l) +{ + *buf_idx_ptr += l; + if (*buf_idx_ptr > max_buf - 64) + { + flush_buffer(f, buffer,buf_idx_ptr); + } +} + +signed int printf_buffer(FILE* f, char* buffer,const size_t max_buf, size_t* buf_idx_ptr, const char *pFormat, ...) +{ + va_list ap; + signed int rc; + + va_start(ap, pFormat); + rc = vsnprintf(&buffer[*buf_idx_ptr], max_buf - *buf_idx_ptr, pFormat, ap); + va_end(ap); + if (rc>0) + { + handle_buffer(f, buffer,max_buf,buf_idx_ptr,rc); + } + return rc; +} + + +void printf_header(FILE* f, char* buffer,const size_t max_buf, size_t* buf_idx_ptr, const char *name, const char *dtype, int rows, int cols, int isFloat) +{ +#ifdef ARM_MATH_CM4 + printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# hex: %s\n", isFloat?"true":"false"); +#endif + printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# name: %s\n", name); + printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# type: %s\n",dtype); + printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# rows: %d\n", rows); + printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# columns: %d\n", cols); +} +void octave_save_int(FILE *f, char name[], int data[], int rows, int cols) +{ + int r,c; + char buffer[OCTAVE_BUFSIZE]; + size_t buf_idx = 0; + + printf_header(f, buffer, OCTAVE_BUFSIZE, &buf_idx, name, "matrix", rows, cols, 0); + + for(r=0; r. +*/ + +#ifndef __OCTAVE__ +#define __OCTAVE__ + +#include "comp.h" + +void octave_save_int(FILE *f, char name[], int data[], int rows, int cols); +void octave_save_float(FILE *f, char name[], float data[], int rows, int cols, int col_len); +void octave_save_complex(FILE *f, char name[], COMP data[], int rows, int cols, int col_len); + +#endif diff --git a/src/phi0.c b/src/phi0.c new file mode 100644 index 0000000..f4a75e2 --- /dev/null +++ b/src/phi0.c @@ -0,0 +1,218 @@ + +// phi0.c +// +// An approximation of the function +// +// This file is generated by the gen_phi0 scritps +// Any changes should be made to that file, not this one + +#include + +#define SI16(f) ((int32_t)(f * (1<<16))) + +float phi0( float xf ) { + + int32_t x = SI16(xf); + + if (x >= SI16(10.0f)) return(0.0f); + else { + if (x >= SI16(5.0f)) { + int i = 19 - (x >> 15); + switch (i) { + case 0: return(0.000116589f); // (9.5) + case 1: return(0.000192223f); // (9.0) + case 2: return(0.000316923f); // (8.5) + case 3: return(0.000522517f); // (8.0) + case 4: return(0.000861485f); // (7.5) + case 5: return(0.001420349f); // (7.0) + case 6: return(0.002341760f); // (6.5) + case 7: return(0.003860913f); // (6.0) + case 8: return(0.006365583f); // (5.5) + case 9: return(0.010495133f); // (5.0) + } + } + else { + if (x >= SI16(1.0f)) { + int i = 79 - (x >> 12); + switch (i) { + case 0: return(0.013903889f); // (4.9375) + case 1: return(0.014800644f); // (4.8750) + case 2: return(0.015755242f); // (4.8125) + case 3: return(0.016771414f); // (4.7500) + case 4: return(0.017853133f); // (4.6875) + case 5: return(0.019004629f); // (4.6250) + case 6: return(0.020230403f); // (4.5625) + case 7: return(0.021535250f); // (4.5000) + case 8: return(0.022924272f); // (4.4375) + case 9: return(0.024402903f); // (4.3750) + case 10: return(0.025976926f); // (4.3125) + case 11: return(0.027652501f); // (4.2500) + case 12: return(0.029436184f); // (4.1875) + case 13: return(0.031334956f); // (4.1250) + case 14: return(0.033356250f); // (4.0625) + case 15: return(0.035507982f); // (4.0000) + case 16: return(0.037798579f); // (3.9375) + case 17: return(0.040237016f); // (3.8750) + case 18: return(0.042832850f); // (3.8125) + case 19: return(0.045596260f); // (3.7500) + case 20: return(0.048538086f); // (3.6875) + case 21: return(0.051669874f); // (3.6250) + case 22: return(0.055003924f); // (3.5625) + case 23: return(0.058553339f); // (3.5000) + case 24: return(0.062332076f); // (3.4375) + case 25: return(0.066355011f); // (3.3750) + case 26: return(0.070637993f); // (3.3125) + case 27: return(0.075197917f); // (3.2500) + case 28: return(0.080052790f); // (3.1875) + case 29: return(0.085221814f); // (3.1250) + case 30: return(0.090725463f); // (3.0625) + case 31: return(0.096585578f); // (3.0000) + case 32: return(0.102825462f); // (2.9375) + case 33: return(0.109469985f); // (2.8750) + case 34: return(0.116545700f); // (2.8125) + case 35: return(0.124080967f); // (2.7500) + case 36: return(0.132106091f); // (2.6875) + case 37: return(0.140653466f); // (2.6250) + case 38: return(0.149757747f); // (2.5625) + case 39: return(0.159456024f); // (2.5000) + case 40: return(0.169788027f); // (2.4375) + case 41: return(0.180796343f); // (2.3750) + case 42: return(0.192526667f); // (2.3125) + case 43: return(0.205028078f); // (2.2500) + case 44: return(0.218353351f); // (2.1875) + case 45: return(0.232559308f); // (2.1250) + case 46: return(0.247707218f); // (2.0625) + case 47: return(0.263863255f); // (2.0000) + case 48: return(0.281099022f); // (1.9375) + case 49: return(0.299492155f); // (1.8750) + case 50: return(0.319127030f); // (1.8125) + case 51: return(0.340095582f); // (1.7500) + case 52: return(0.362498271f); // (1.6875) + case 53: return(0.386445235f); // (1.6250) + case 54: return(0.412057648f); // (1.5625) + case 55: return(0.439469363f); // (1.5000) + case 56: return(0.468828902f); // (1.4375) + case 57: return(0.500301872f); // (1.3750) + case 58: return(0.534073947f); // (1.3125) + case 59: return(0.570354566f); // (1.2500) + case 60: return(0.609381573f); // (1.1875) + case 61: return(0.651427083f); // (1.1250) + case 62: return(0.696805010f); // (1.0625) + case 63: return(0.745880827f); // (1.0000) + } + } + else { + if (x > SI16(0.007812f)) { + if (x > SI16(0.088388f)) { + if (x > SI16(0.250000f)) { + if (x > SI16(0.500000f)) { + if (x > SI16(0.707107f)) { + return(0.922449644f); + } else { + return(1.241248638f); + } + } else { + if (x > SI16(0.353553f)) { + return(1.573515241f); + } else { + return(1.912825912f); + } + } + } else { + if (x > SI16(0.125000f)) { + if (x > SI16(0.176777f)) { + return(2.255740095f); + } else { + return(2.600476919f); + } + } else { + return(2.946130351f); + } + } + } else { + if (x > SI16(0.022097f)) { + if (x > SI16(0.044194f)) { + if (x > SI16(0.062500f)) { + return(3.292243417f); + } else { + return(3.638586634f); + } + } else { + if (x > SI16(0.031250f)) { + return(3.985045009f); + } else { + return(4.331560985f); + } + } + } else { + if (x > SI16(0.011049f)) { + if (x > SI16(0.015625f)) { + return(4.678105767f); + } else { + return(5.024664952f); + } + } else { + return(5.371231340f); + } + } + } + } else { + if (x > SI16(0.000691f)) { + if (x > SI16(0.001953f)) { + if (x > SI16(0.003906f)) { + if (x > SI16(0.005524f)) { + return(5.717801329f); + } else { + return(6.064373119f); + } + } else { + if (x > SI16(0.002762f)) { + return(6.410945809f); + } else { + return(6.757518949f); + } + } + } else { + if (x > SI16(0.000977f)) { + if (x > SI16(0.001381f)) { + return(7.104092314f); + } else { + return(7.450665792f); + } + } else { + return(7.797239326f); + } + } + } else { + if (x > SI16(0.000173f)) { + if (x > SI16(0.000345f)) { + if (x > SI16(0.000488f)) { + return(8.143812888f); + } else { + return(8.490386464f); + } + } else { + if (x > SI16(0.000244f)) { + return(8.836960047f); + } else { + return(9.183533634f); + } + } + } else { + if (x > SI16(0.000086f)) { + if (x > SI16(0.000122f)) { + return(9.530107222f); + } else { + return(9.876680812f); + } + } else { + return(10.000000000f); + } + } + } + } + } + } + } + return(10.0f); +} diff --git a/src/phi0.h b/src/phi0.h new file mode 100644 index 0000000..0fa71df --- /dev/null +++ b/src/phi0.h @@ -0,0 +1,7 @@ +// phi0.h +#ifndef PHI0_H +#define PHI0_H + +extern float phi0( float xf ); + +#endif